[vlmc-devel] [PATCH] Avoid using setProject functions
Hugo Beauzée-Luyssen
hugo at beauzee.fr
Sat Mar 5 23:59:43 CET 2016
Hi,
On 03/05/2016 06:26 PM, Yikai Lu wrote:
> Instead, these functions are merged into constructors.
> ---
> src/Main/Core.cpp | 8 ++------
> src/Project/AutomaticBackup.cpp | 18 +++++++-----------
> src/Project/AutomaticBackup.h | 3 +--
> src/Project/RecentProjects.cpp | 13 ++++---------
> src/Project/RecentProjects.h | 3 +--
> 5 files changed, 15 insertions(+), 30 deletions(-)
>
> diff --git a/src/Main/Core.cpp b/src/Main/Core.cpp
> index d1fac98..ea7698a 100644
> --- a/src/Main/Core.cpp
> +++ b/src/Main/Core.cpp
> @@ -52,22 +52,18 @@ Core::Core()
> m_logger = new VlmcLogger;
>
> createSettings();
> - m_recentProjects = new RecentProjects( m_settings );
> - m_automaticBackup = new AutomaticBackup( m_settings );
> m_workspace = new Workspace( m_settings );
> m_workflow = new MainWorkflow;
> m_workflowRenderer = new WorkflowRenderer( Backend::getBackend(), m_workflow );
> m_undoStack = new QUndoStack;
> m_library = new Library( m_workspace );
> m_currentProject = new Project;
> + m_recentProjects = new RecentProjects( m_settings, m_currentProject );
> + m_automaticBackup = new AutomaticBackup( m_settings, m_currentProject );
>
> connect( m_undoStack, SIGNAL( cleanChanged( bool ) ), m_currentProject, SLOT( cleanChanged( bool ) ) );
> connect( m_currentProject, SIGNAL( projectSaved() ), m_undoStack, SLOT( setClean() ) );
> connect( m_library, SIGNAL( cleanStateChanged( bool ) ), m_currentProject, SLOT( libraryCleanChanged( bool ) ) );
> -
> - //FIXME: Pass the project through the constructor since it doesn't change anymore
> - m_automaticBackup->setProject( m_currentProject );
> - m_recentProjects->setProject( m_currentProject );
> }
>
> Core::~Core()
> diff --git a/src/Project/AutomaticBackup.cpp b/src/Project/AutomaticBackup.cpp
> index 5018a91..9552a3e 100644
> --- a/src/Project/AutomaticBackup.cpp
> +++ b/src/Project/AutomaticBackup.cpp
> @@ -26,7 +26,7 @@
> #include "Project.h"
> #include "Settings/Settings.h"
>
> -AutomaticBackup::AutomaticBackup( Settings* vlmcSettings, QObject *parent )
> +AutomaticBackup::AutomaticBackup( Settings* vlmcSettings, Project* project, QObject *parent )
> : QObject(parent)
> , m_vlmcSettings( vlmcSettings )
> {
> @@ -42,7 +42,12 @@ AutomaticBackup::AutomaticBackup( Settings* vlmcSettings, QObject *parent )
> "between two automatic save" ), SettingValue::Nothing );
>
> connect( autoBackup, SIGNAL( changed( QVariant ) ), this, SLOT( automaticSaveEnabledChanged( QVariant ) ) );
> - connect( interval, SIGNAL( changed( QVariant ) ), this, SLOT( automaticSaveIntervalChanged( QVariant ) ) );
> + connect( interval, SIGNAL( changed( QVariant ) ), this, SLOT( automaticSaveIntervalChanged( QVariant ) ) );
> +
> + connect( m_timer, SIGNAL( timeout() ), project, SLOT(autoSaveRequired() ) );
> + connect( project, SIGNAL( destroyed() ), m_timer, SLOT( stop() ) );
> + m_timer->setInterval( 5 * 1000 * 60 );
> + m_timer->start();
> }
>
> AutomaticBackup::~AutomaticBackup()
> @@ -51,15 +56,6 @@ AutomaticBackup::~AutomaticBackup()
> }
>
> void
> -AutomaticBackup::setProject( Project* projectManager )
> -{
> - m_timer->disconnect();
> - connect( m_timer, SIGNAL( timeout() ), projectManager, SLOT(autoSaveRequired() ) );
> - connect( projectManager, SIGNAL( destroyed() ), m_timer, SLOT( stop() ) );
> - m_timer->start();
> -}
> -
> -void
> AutomaticBackup::automaticSaveEnabledChanged( const QVariant& val )
> {
> bool enabled = val.toBool();
> diff --git a/src/Project/AutomaticBackup.h b/src/Project/AutomaticBackup.h
> index bbfdc5b..be451df 100644
> --- a/src/Project/AutomaticBackup.h
> +++ b/src/Project/AutomaticBackup.h
> @@ -35,9 +35,8 @@ class AutomaticBackup : public QObject
> Q_OBJECT
>
> public:
> - explicit AutomaticBackup( Settings* vlmcSettings, QObject *parent = 0 );
> + explicit AutomaticBackup( Settings* vlmcSettings, Project *project, QObject *parent = 0 );
> virtual ~AutomaticBackup();
> - void setProject( Project* projectManager );
>
> private:
> Settings* m_vlmcSettings;
> diff --git a/src/Project/RecentProjects.cpp b/src/Project/RecentProjects.cpp
> index 080950d..6e25377 100644
> --- a/src/Project/RecentProjects.cpp
> +++ b/src/Project/RecentProjects.cpp
> @@ -28,24 +28,19 @@
> #include "Settings/Settings.h"
> #include "Tools/VlmcDebug.h"
>
> -RecentProjects::RecentProjects( Settings* vlmcSettings, QObject *parent )
> +RecentProjects::RecentProjects( Settings* vlmcSettings, Project* project, QObject *parent )
> : QObject(parent)
> , m_settings( vlmcSettings )
> - , m_project( NULL )
> + , m_project( project )
> {
> SettingValue* recentProjects = vlmcSettings->createVar( SettingValue::String, "private/RecentsProjects", "",
> "", "", SettingValue::Private );
>
> - connect( recentProjects, SIGNAL( changed( QVariant ) ), this, SLOT( loadRecentProjects( QVariant ) ) );
> -}
> + connect( recentProjects, SIGNAL( changed( QVariant ) ), this, SLOT( loadRecentProjects( QVariant ) ) );
>
> -void
> -RecentProjects::setProject( Project* project )
> -{
> if ( m_project != NULL )
> disconnect( m_project, SIGNAL( projectLoaded( QString, QString ) ) );
The project is guaranteed to be non-null.
Speaking of this, it could be a good idea to start using references for
instances that can't be null, so it's expressed through the language
rather than documentation (when any)
> - m_project = project;
> - connect( project, SIGNAL( projectLoaded( QString, QString ) ),
> + connect( m_project, SIGNAL( projectLoaded( QString, QString ) ),
> this, SLOT( projectLoaded( QString, QString ) ) );
> }
>
> diff --git a/src/Project/RecentProjects.h b/src/Project/RecentProjects.h
> index 4bdf3e2..f7aa377 100644
> --- a/src/Project/RecentProjects.h
> +++ b/src/Project/RecentProjects.h
> @@ -40,9 +40,8 @@ class RecentProjects : public QObject
> };
> typedef QList<RecentProject> List;
>
> - explicit RecentProjects(Settings* vlmcSettings, QObject *parent = 0 );
> + explicit RecentProjects(Settings* vlmcSettings, Project *project, QObject *parent = 0 );
>
> - void setProject(Project* projectManager );
> void remove( const QString& projectFile );
> const List& list() const;
>
>
LGTM otherwise!
--
Hugo Beauzée-Luyssen
www.beauzee.fr
More information about the Vlmc-devel
mailing list