Fixed: Check profile details in backup profiles if deleted

--HG--
branch : develop
This commit is contained in:
kervala 2019-03-09 13:00:59 +01:00
parent 21f15a47bc
commit 78c39850ae
3 changed files with 21 additions and 3 deletions

View file

@ -264,6 +264,16 @@ const CServer& CConfigFile::getServer(const QString &id) const
return getServer();
}
CProfile CConfigFile::getBackupProfile(const QString &id) const
{
for (int i = 0; i < m_backupProfiles.size(); ++i)
{
if (m_backupProfiles[i].id == id) return m_backupProfiles[i];
}
return NoProfile;
}
void CConfigFile::backupProfiles()
{
m_backupProfiles = m_profiles;

View file

@ -53,6 +53,7 @@ public:
void setProfiles(const CProfiles &profiles) { m_profiles = profiles; }
CProfiles getBackupProfiles() const { return m_backupProfiles; }
CProfile getBackupProfile(const QString &id) const;
void backupProfiles();
QString getLanguage() const { return m_language; }

View file

@ -1105,6 +1105,9 @@ void COperationDialog::deleteComponentsProfiles()
CConfigFile *config = CConfigFile::getInstance();
// some profiles have been removed, use backup profiles
bool useBackup = !config->getBackupProfiles().isEmpty();
int i = 0;
foreach(const QString &profileId, m_removeComponents.profiles)
@ -1115,7 +1118,11 @@ void COperationDialog::deleteComponentsProfiles()
return;
}
const CProfile &profile = config->getProfile(profileId);
// only search in backup profiles, because they are already deleted in profiles
const CProfile &profile = useBackup ? config->getBackupProfile(profileId):config->getProfile(profileId);
// already deleted profile
if (profile.id.isEmpty()) continue;
emit progress(i++, profile.name);
@ -1134,8 +1141,8 @@ void COperationDialog::deleteComponentsProfiles()
profile.deleteShortcuts();
// delete profile
config->removeProfile(profileId);
// delete profile if still used
if (!useBackup) config->removeProfile(profileId);
}
emit success(m_removeComponents.profiles.size());