traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src core/Project.cpp core/Project.h co...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/Project.cpp core/Project.h co...
Date: Wed, 24 Oct 2007 18:11:41 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/10/24 18:11:41

Modified files:
        src/core       : Project.cpp Project.h ProjectManager.cpp 
        src/traverso   : SpectralMeterWidget.cpp 
        src/traverso/widgets: ResourcesWidget.cpp ResourcesWidget.h 

Log message:
        * Only create GUI elements on first showEvent().
        This reduces cpu (and probably memory consumption) when these widgets 
aren't showed initially after application startup

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Project.cpp?cvsroot=traverso&r1=1.60&r2=1.61
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Project.h?cvsroot=traverso&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ProjectManager.cpp?cvsroot=traverso&r1=1.45&r2=1.46
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/SpectralMeterWidget.cpp?cvsroot=traverso&r1=1.43&r2=1.44
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/ResourcesWidget.cpp?cvsroot=traverso&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/ResourcesWidget.h?cvsroot=traverso&r1=1.9&r2=1.10

Patches:
Index: core/Project.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Project.cpp,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -b -r1.60 -r1.61
--- core/Project.cpp    12 Oct 2007 10:06:30 -0000      1.60
+++ core/Project.cpp    24 Oct 2007 18:11:40 -0000      1.61
@@ -247,6 +247,8 @@
 
        info().information( tr("Project %1 loaded").arg(m_title) );
 
+       emit projectLoadFinished();
+
        return 1;
 }
 

Index: core/Project.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Project.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- core/Project.h      10 Oct 2007 16:41:57 -0000      1.27
+++ core/Project.h      24 Oct 2007 18:11:40 -0000      1.28
@@ -158,6 +158,7 @@
        void overallExportProgressChanged(int );
        void exportFinished();
        void exportStartedForSong(Song* );
+       void projectLoadFinished();
 };
 
 #endif

Index: core/ProjectManager.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ProjectManager.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46

Index: traverso/SpectralMeterWidget.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/SpectralMeterWidget.cpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- traverso/SpectralMeterWidget.cpp    8 Jul 2007 20:51:29 -0000       1.43
+++ traverso/SpectralMeterWidget.cpp    24 Oct 2007 18:11:40 -0000      1.44
@@ -54,18 +54,7 @@
        : ViewPort(parent)
 {
        PENTERCONS;
-       setMinimumWidth(40);
-       setMinimumHeight(10);
-       
-       m_item = new SpectralMeterView(this);
-       
-       QGraphicsScene* scene = new QGraphicsScene(this);
-       setScene(scene);
-       scene->addItem(m_item);
-       m_item->setPos(0,0);
-
-       setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-       setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+       m_item = 0;
 }
 
 SpectralMeterWidget::~SpectralMeterWidget()
@@ -74,18 +63,44 @@
 
 void SpectralMeterWidget::resizeEvent( QResizeEvent *  )
 {
+       if (m_item) {
        m_item->resize();
+       }
 }
 
 void SpectralMeterWidget::hideEvent(QHideEvent * event)
 {
        QWidget::hideEvent(event);
+       if (m_item) {
        m_item->hide_event();
+       }
 }
 
 
 void SpectralMeterWidget::showEvent(QShowEvent * event)
 {
+       if (!m_item) {
+               setMinimumWidth(40);
+               setMinimumHeight(10);
+               
+               m_item = new SpectralMeterView(this);
+               
+               QGraphicsScene* scene = new QGraphicsScene(this);
+               setScene(scene);
+               scene->addItem(m_item);
+               m_item->setPos(0,0);
+               m_item->resize();
+               
+               Project* project = pm().get_project(); 
+               m_item->set_project(project);
+               if (project) {
+                       m_item->set_song(project->get_current_song());
+               }
+       
+               setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+               setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+       }
+       
        QWidget::showEvent(event);
        m_item->show_event();
 }

Index: traverso/widgets/ResourcesWidget.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/ResourcesWidget.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- traverso/widgets/ResourcesWidget.cpp        23 Oct 2007 19:53:43 -0000      
1.31
+++ traverso/widgets/ResourcesWidget.cpp        24 Oct 2007 18:11:41 -0000      
1.32
@@ -44,9 +44,16 @@
        Q_OBJECT
 public:
        
-       FileWidget(QWidget* parent=0)
-       : QWidget(parent)
-       {
+       FileWidget(QWidget* parent=0) : QWidget(parent) {
+               m_dirModel = 0;
+       }
+       
+       void showEvent ( QShowEvent * event ) {
+               
+               if (m_dirModel) {
+                       return;
+               }
+               
                QPalette palette;
                palette.setColor(QPalette::AlternateBase, 
themer()->get_color("ResourcesBin:alternaterowcolor"));
                
@@ -101,7 +108,6 @@
                connect(upButton, SIGNAL(clicked()), this, 
SLOT(dir_up_button_clicked()));
                connect(refreshButton, SIGNAL(clicked()), this, 
SLOT(refresh_button_clicked()));
                connect(m_box, SIGNAL(activated(int)), this, 
SLOT(box_actived(int)));
-               
        }
        
        void set_current_path(const QString& path) const;
@@ -179,6 +185,19 @@
 ResourcesWidget::ResourcesWidget(QWidget * parent)
        : QWidget(parent)
 {
+       sourcesTreeWidget = 0;
+}
+
+ResourcesWidget::~ ResourcesWidget()
+{
+}
+
+void ResourcesWidget::showEvent( QShowEvent * event ) 
+{
+       if (sourcesTreeWidget) {
+               return;
+       }
+       
        setupUi(this);
        
        QPalette palette;
@@ -208,10 +227,11 @@
        connect(songComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(song_combo_box_index_changed(int)));
        connect(songComboBox, SIGNAL(activated(int)), this, 
SLOT(song_combo_box_index_changed(int)));
        connect(&pm(), SIGNAL(projectLoaded(Project*)), this, 
SLOT(set_project(Project*)));
-}
 
-ResourcesWidget::~ ResourcesWidget()
-{
+       set_project(pm().get_project());
+       
+       // Fade a project load finished since we were not able to catch that 
signal!
+       project_load_finished();
 }
 
 void ResourcesWidget::set_project(Project * project)
@@ -230,25 +250,28 @@
        }
        
        songComboBox->setEnabled(true);
+       
+       connect(m_project, SIGNAL(projectLoadFinished()), this, 
SLOT(project_load_finished()));
+}
+
+void ResourcesWidget::project_load_finished()
+{
+       if (!m_project) {
+               return;
+       }
+       
        m_currentSong = m_project->get_current_song();
        
        ResourcesManager* rsmanager = m_project->get_audiosource_manager();
        
-       connect(rsmanager, SIGNAL(stateRestored()), this, 
SLOT(populate_tree()));
-       connect(rsmanager, SIGNAL(clipAdded(AudioClip*)), this, 
SLOT(add_clip(AudioClip*)));
-       connect(rsmanager, SIGNAL(clipRemoved(AudioClip*)), this, 
SLOT(remove_clip(AudioClip*)));
-       connect(rsmanager, SIGNAL(sourceAdded(ReadSource*)), this, 
SLOT(add_source(ReadSource*)));
-       connect(rsmanager, SIGNAL(sourceRemoved(ReadSource*)), this, 
SLOT(remove_source(ReadSource*)));
        connect(m_project, SIGNAL(songAdded(Song*)), this, 
SLOT(song_added(Song*)));
        connect(m_project, SIGNAL(songRemoved(Song*)), this, 
SLOT(song_removed(Song*)));
        connect(m_project, SIGNAL(currentSongChanged(Song*)), this, 
SLOT(set_current_song(Song*)));
-}
 
-void ResourcesWidget::populate_tree()
-{
-       if (!m_project) {
-               return;
-       }
+       connect(rsmanager, SIGNAL(clipAdded(AudioClip*)), this, 
SLOT(add_clip(AudioClip*)));
+       connect(rsmanager, SIGNAL(clipRemoved(AudioClip*)), this, 
SLOT(remove_clip(AudioClip*)));
+       connect(rsmanager, SIGNAL(sourceAdded(ReadSource*)), this, 
SLOT(add_source(ReadSource*)));
+       connect(rsmanager, SIGNAL(sourceRemoved(ReadSource*)), this, 
SLOT(remove_source(ReadSource*)));
        
        foreach(ReadSource* rs, resources_manager()->get_all_audio_sources()) {
                add_source(rs);

Index: traverso/widgets/ResourcesWidget.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/widgets/ResourcesWidget.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- traverso/widgets/ResourcesWidget.h  5 Jun 2007 12:47:09 -0000       1.9
+++ traverso/widgets/ResourcesWidget.h  24 Oct 2007 18:11:41 -0000      1.10
@@ -32,6 +32,7 @@
 class AudioClip;
 class ReadSource;
 class SourceTreeItem;
+class QShowEvent;
 
 class ClipTreeItem : public QObject, public QTreeWidgetItem
 {
@@ -74,6 +75,9 @@
        ResourcesWidget(QWidget* parent=0);
        ~ResourcesWidget();
 
+protected:
+       void showEvent( QShowEvent * event );
+
 private:
        Project* m_project;
        Song* m_currentSong;
@@ -88,7 +92,7 @@
        
 private slots:
        void set_project(Project* project);
-       void populate_tree();
+       void project_load_finished();
        
        void view_combo_box_index_changed(int index);
        void song_combo_box_index_changed(int index);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]