From 7b7dc0bfb25a24913052068fba1aa4656714be08 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 13 Nov 2009 18:43:08 -0700 Subject: [PATCH] don't change the current project when auto-saving every time auto-save ran, it would change the current project to "recover.mmp". Now it doesn't do this because Song has guiSaveProject(), guiSaveProjectAs(), and saveProjectFile(). (the latter is used for auto-save) (cherry picked from commit 953522f34a7fb751d487abe0b3c05afe8603c36d) --- include/song.h | 7 ++++--- src/core/main.cpp | 2 +- src/core/song.cpp | 22 ++++++++++++++-------- src/gui/MainWindow.cpp | 6 +++--- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/include/song.h b/include/song.h index 52d5dd83a..6037ea07c 100644 --- a/include/song.h +++ b/include/song.h @@ -150,9 +150,10 @@ public: // file management void createNewProject(); void createNewProjectFromTemplate( const QString & _template ); - void loadProject( const QString & _file_name ); - bool saveProject(); - bool saveProjectAs( const QString & _file_name ); + void loadProject( const QString & _filename ); + bool guiSaveProject(); + bool guiSaveProjectAs( const QString & _filename ); + bool saveProjectFile( const QString & _filename ); inline const QString & projectFileName() const { return m_fileName; diff --git a/src/core/main.cpp b/src/core/main.cpp index 17fb61113..90dc2327d 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -489,7 +489,7 @@ int main( int argc, char * * argv ) } else { - engine::getSong()->saveProjectAs( file_to_save ); + engine::getSong()->saveProjectFile( file_to_save ); return( 0 ); } } diff --git a/src/core/song.cpp b/src/core/song.cpp index 504af34fc..4a05a49bb 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -995,10 +995,8 @@ void song::loadProject( const QString & _file_name ) } - - -// save current song -bool song::saveProject() +// only save current song as _filename and do nothing else +bool song::saveProjectFile( const QString & _filename ) { multimediaProject mmp( multimediaProject::SongProject ); @@ -1007,7 +1005,6 @@ bool song::saveProject() m_masterVolumeModel.saveSettings( mmp, mmp.head(), "mastervol" ); m_masterPitchModel.saveSettings( mmp, mmp.head(), "masterpitch" ); - saveState( mmp, mmp.content() ); m_globalAutomationTrack->saveState( mmp, mmp.content() ); @@ -1025,8 +1022,17 @@ bool song::saveProject() saveControllerStates( mmp, mmp.content() ); + return mmp.writeFile( _filename ); +} + + + +// save current song and update the gui +bool song::guiSaveProject() +{ + multimediaProject mmp( multimediaProject::SongProject ); m_fileName = mmp.nameWithExtension( m_fileName ); - if( mmp.writeFile( m_fileName ) == true && engine::hasGUI() ) + if( saveProjectFile( m_fileName ) && engine::hasGUI() ) { textFloat::displayMessage( tr( "Project saved" ), tr( "The project %1 is now saved." @@ -1053,12 +1059,12 @@ bool song::saveProject() // save current song in given filename -bool song::saveProjectAs( const QString & _file_name ) +bool song::guiSaveProjectAs( const QString & _file_name ) { QString o = m_oldFileName; m_oldFileName = m_fileName; m_fileName = _file_name; - if( saveProject() == false ) + if( guiSaveProject() == false ) { m_fileName = m_oldFileName; m_oldFileName = o; diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 7c8d18c63..75cf62d9e 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -731,7 +731,7 @@ bool MainWindow::saveProject( void ) } else { - engine::getSong()->saveProject(); + engine::getSong()->guiSaveProject(); } return( TRUE ); } @@ -760,7 +760,7 @@ bool MainWindow::saveProjectAs( void ) if( sfd.exec () == QFileDialog::Accepted && !sfd.selectedFiles().isEmpty() && sfd.selectedFiles()[0] != "" ) { - engine::getSong()->saveProjectAs( + engine::getSong()->guiSaveProjectAs( sfd.selectedFiles()[0] ); return( TRUE ); } @@ -1048,7 +1048,7 @@ void MainWindow::browseHelp( void ) void MainWindow::autoSave() { QDir work(configManager::inst()->workingDir()); - engine::getSong()->saveProjectAs(work.absoluteFilePath("recover.mmp")); + engine::getSong()->saveProjectFile(work.absoluteFilePath("recover.mmp")); }