forked from qt-creator/qt-creator
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:
@@ -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));
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user