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),
|
||||
ScanningScopeCurrentFile).toInt());
|
||||
if (scanningScope >= ScanningScopeMax)
|
||||
scanningScope = ScanningScopeCurrentFile;
|
||||
|
||||
KeywordList newKeywords;
|
||||
const int keywordsSize = settings->beginReadArray(QLatin1String(Constants::KEYWORDS_LIST));
|
||||
|
||||
@@ -36,13 +36,14 @@ namespace Internal {
|
||||
enum ScanningScope {
|
||||
ScanningScopeCurrentFile,
|
||||
ScanningScopeProject,
|
||||
ScanningScopeSubProject
|
||||
ScanningScopeSubProject,
|
||||
ScanningScopeMax
|
||||
};
|
||||
|
||||
class Settings {
|
||||
public:
|
||||
KeywordList keywords;
|
||||
ScanningScope scanningScope;
|
||||
ScanningScope scanningScope = ScanningScopeCurrentFile;
|
||||
void save(QSettings *settings) const;
|
||||
void load(QSettings *settings);
|
||||
void setDefault();
|
||||
|
||||
@@ -56,7 +56,6 @@ TodoPlugin::TodoPlugin() :
|
||||
|
||||
TodoPlugin::~TodoPlugin()
|
||||
{
|
||||
m_settings.save(Core::ICore::settings());
|
||||
}
|
||||
|
||||
bool TodoPlugin::initialize(const QStringList& args, QString *errMsg)
|
||||
@@ -80,6 +79,8 @@ bool TodoPlugin::initialize(const QStringList& args, QString *errMsg)
|
||||
return widget;
|
||||
});
|
||||
ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory);
|
||||
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
|
||||
this, [this] { m_settings.save(Core::ICore::settings()); });
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user