Todo: Avoid issues with screwing up or screwed settings

If for some reason the todo settings are borked, do not crash/assert.
Also, avoid overwriting existing settings with default settings, if
for some reason the todo plugin is never initialized (because a
dependency fails to load).

Change-Id: Id7815b799adaff3dcdf00fedb9ade3ced01e23b9
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Eike Ziller
2016-08-31 15:19:27 +02:00
parent a249f89020
commit 1fe874e65e
3 changed files with 7 additions and 3 deletions

View File

@@ -76,6 +76,8 @@ void Settings::load(QSettings *settings)
scanningScope = static_cast<ScanningScope>(settings->value(QLatin1String(Constants::SCANNING_SCOPE), scanningScope = static_cast<ScanningScope>(settings->value(QLatin1String(Constants::SCANNING_SCOPE),
ScanningScopeCurrentFile).toInt()); ScanningScopeCurrentFile).toInt());
if (scanningScope >= ScanningScopeMax)
scanningScope = ScanningScopeCurrentFile;
KeywordList newKeywords; KeywordList newKeywords;
const int keywordsSize = settings->beginReadArray(QLatin1String(Constants::KEYWORDS_LIST)); const int keywordsSize = settings->beginReadArray(QLatin1String(Constants::KEYWORDS_LIST));

View File

@@ -36,13 +36,14 @@ namespace Internal {
enum ScanningScope { enum ScanningScope {
ScanningScopeCurrentFile, ScanningScopeCurrentFile,
ScanningScopeProject, ScanningScopeProject,
ScanningScopeSubProject ScanningScopeSubProject,
ScanningScopeMax
}; };
class Settings { class Settings {
public: public:
KeywordList keywords; KeywordList keywords;
ScanningScope scanningScope; ScanningScope scanningScope = ScanningScopeCurrentFile;
void save(QSettings *settings) const; void save(QSettings *settings) const;
void load(QSettings *settings); void load(QSettings *settings);
void setDefault(); void setDefault();

View File

@@ -56,7 +56,6 @@ TodoPlugin::TodoPlugin() :
TodoPlugin::~TodoPlugin() TodoPlugin::~TodoPlugin()
{ {
m_settings.save(Core::ICore::settings());
} }
bool TodoPlugin::initialize(const QStringList& args, QString *errMsg) bool TodoPlugin::initialize(const QStringList& args, QString *errMsg)
@@ -80,6 +79,8 @@ bool TodoPlugin::initialize(const QStringList& args, QString *errMsg)
return widget; return widget;
}); });
ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory); ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory);
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
this, [this] { m_settings.save(Core::ICore::settings()); });
return true; return true;
} }