bool DataFile::writeFile( const QString& filename ) { const QString fullName = nameWithExtension( filename ); const QString fullNameTemp = fullName + ".new"; const QString fullNameBak = fullName + ".bak"; QFile outfile( fullNameTemp ); if( !outfile.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) { if( Engine::hasGUI() ) { QMessageBox::critical( NULL, SongEditor::tr( "Could not write file" ), SongEditor::tr( "Could not open %1 for writing. You probably are not permitted to " "write to this file. Please make sure you have write-access to " "the file and try again." ).arg( fullName ) ); } return false; } if( fullName.section( '.', -1 ) == "mmpz" ) { QString xml; QTextStream ts( &xml ); write( ts ); outfile.write( qCompress( xml.toUtf8() ) ); } else { QTextStream ts( &outfile ); write( ts ); } outfile.close(); // make sure the file has been written correctly if( QFileInfo( outfile.fileName() ).size() > 0 ) { if( ConfigManager::inst()->value( "app", "disablebackup" ).toInt() ) { // remove current file QFile::remove( fullName ); } else { // remove old backup file QFile::remove( fullNameBak ); // move current file to backup file QFile::rename( fullName, fullNameBak ); } // move temporary file to current file QFile::rename( fullNameTemp, fullName ); return true; } return false; }
bool multimediaProject::writeFile( const QString & _fn ) { if( type() == SongProject || type() == SongProjectTemplate || type() == InstrumentTrackSettings ) { cleanMetaNodes( documentElement() ); } QString fn = nameWithExtension( _fn ); QFile outfile( fn ); if( !outfile.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) { QMessageBox::critical( NULL, songEditor::tr( "Could not write file" ), songEditor::tr( "Could not write file " "%1. You probably are " "not permitted to " "write to this file.\n" "Please make sure you " "have write-access to " "the file and try " "again." ).arg( fn ) ); return false; } QString xml = "<?xml version=\"1.0\"?>\n" + toString( 2 ); if( fn.section( '.', -1 ) == "mmpz" ) { outfile.write( qCompress( xml.toUtf8() ) ); } else { QTextStream( &outfile ) << xml; } outfile.close(); return true; }