Make preset saving oblivious to mute/solo/muteBeforeSolo states (#6214)

This commit is contained in:
Lior Merkel
2021-12-27 04:23:19 +02:00
committed by GitHub
parent 7b1cc36880
commit 98786dd84f
3 changed files with 37 additions and 11 deletions

View File

@@ -186,6 +186,11 @@ public:
{
return m_hasColor;
}
bool isMutedBeforeSolo() const
{
return m_mutedBeforeSolo;
}
BoolModel* getMutedModel();
@@ -196,6 +201,11 @@ public slots:
emit nameChanged();
}
void setMutedBeforeSolo(const bool muted)
{
m_mutedBeforeSolo = muted;
}
void toggleSolo();
void setColor(const QColor& c);
@@ -209,6 +219,7 @@ private:
protected:
BoolModel m_mutedModel;
private:
BoolModel m_soloModel;
bool m_mutedBeforeSolo;
@@ -230,7 +241,6 @@ signals:
void nameChanged();
void trackContentObjectAdded( TrackContentObject * );
void colorChanged();
} ;

View File

@@ -387,20 +387,20 @@ void InstrumentTrackWindow::modelChanged()
void InstrumentTrackWindow::saveSettingsBtnClicked()
{
FileDialog sfd( this, tr( "Save preset" ), "", tr( "XML preset file (*.xpf)" ) );
FileDialog sfd(this, tr("Save preset"), "", tr("XML preset file (*.xpf)"));
QString presetRoot = ConfigManager::inst()->userPresetsDir();
if( !QDir( presetRoot ).exists() )
if(!QDir(presetRoot).exists())
{
QDir().mkdir( presetRoot );
QDir().mkdir(presetRoot);
}
if( !QDir( presetRoot + m_track->instrumentName() ).exists() )
if(!QDir(presetRoot + m_track->instrumentName()).exists())
{
QDir( presetRoot ).mkdir( m_track->instrumentName() );
QDir(presetRoot).mkdir(m_track->instrumentName());
}
sfd.setAcceptMode( FileDialog::AcceptSave );
sfd.setDirectory( presetRoot + m_track->instrumentName() );
sfd.setAcceptMode(FileDialog::AcceptSave);
sfd.setDirectory(presetRoot + m_track->instrumentName());
sfd.setFileMode( FileDialog::AnyFile );
QString fname = m_track->name();
sfd.selectFile(fname.remove(QRegExp(FILENAME_FILTER)));
@@ -410,11 +410,17 @@ void InstrumentTrackWindow::saveSettingsBtnClicked()
!sfd.selectedFiles().isEmpty() &&
!sfd.selectedFiles().first().isEmpty() )
{
DataFile dataFile( DataFile::InstrumentTrackSettings );
DataFile dataFile(DataFile::InstrumentTrackSettings);
QDomElement& content(dataFile.content());
m_track->setSimpleSerializing();
m_track->saveSettings( dataFile, dataFile.content() );
m_track->saveSettings(dataFile, content);
//We don't want to save muted & solo settings when we're saving a preset
content.setAttribute("muted", 0);
content.setAttribute("solo", 0);
content.setAttribute("mutedBeforeSolo", 0);
QString f = sfd.selectedFiles()[0];
dataFile.writeFile( f );
dataFile.writeFile(f);
}
}

View File

@@ -986,8 +986,18 @@ void InstrumentTrack::replaceInstrument(DataFile dataFile)
InstrumentTrack::removeMidiPortNode(dataFile);
setSimpleSerializing();
//Replacing an instrument shouldn't change the solo/mute state.
bool oldMute = isMuted();
bool oldSolo = isSolo();
bool oldMutedBeforeSolo = isMutedBeforeSolo();
loadSettings(dataFile.content().toElement());
setMuted(oldMute);
setSolo(oldSolo);
setMutedBeforeSolo(oldMutedBeforeSolo);
m_effectChannelModel.setValue(effectChannel);
Engine::getSong()->setModified();
}