# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-04-30 12:04:27 # Node ID 1c69ffd0aa9d29c5f69b9facabe9ccda170e3ba9 # Parent 020e7830b9d28fb0773219c66f175991b33cec61 refactor symbol setting saving diff --git a/src/plot.cpp b/src/plot.cpp --- a/src/plot.cpp +++ b/src/plot.cpp @@ -39,7 +39,7 @@ Plot::Plot(QWidget* parent) : isAutoScaled = true; symbolSize = 0; numOfSamples = 1; - showSymbols = Plot::Auto; + showSymbols = Plot::ShowSymbolsAuto; QObject::connect(&zoomer, &Zoomer::unzoomed, this, &Plot::unzoomed); @@ -252,11 +252,11 @@ void Plot::setSymbols(ShowSymbols shown) { showSymbols = shown; - if (showSymbols == Plot::Auto) + if (showSymbols == Plot::ShowSymbolsAuto) { calcSymbolSize(); } - else if (showSymbols == Plot::Show) + else if (showSymbols == Plot::ShowSymbolsShow) { symbolSize = SYMBOL_SIZE_MAX; } @@ -271,7 +271,7 @@ void Plot::setSymbols(ShowSymbols shown) void Plot::onXScaleChanged() { - if (showSymbols == Plot::Auto) + if (showSymbols == Plot::ShowSymbolsAuto) { calcSymbolSize(); updateSymbols(); diff --git a/src/plot.h b/src/plot.h --- a/src/plot.h +++ b/src/plot.h @@ -40,14 +40,12 @@ class Plot : public QwtPlot friend class PlotManager; public: - // Note: this naming is also used as setting values enum ShowSymbols { - Auto, - Show, - Hide + ShowSymbolsAuto, + ShowSymbolsShow, + ShowSymbolsHide }; - Q_ENUM(ShowSymbols); Plot(QWidget* parent = 0); ~Plot(); diff --git a/src/plotmanager.cpp b/src/plotmanager.cpp --- a/src/plotmanager.cpp +++ b/src/plotmanager.cpp @@ -44,7 +44,7 @@ PlotManager::PlotManager(QWidget* plotAr isDemoShown = false; _infoModel = infoModel; _numOfSamples = 1; - showSymbols = Plot::Auto; + showSymbols = Plot::ShowSymbolsAuto; // initalize layout and single widget isMulti = false; @@ -79,35 +79,35 @@ PlotManager::PlotManager(QWidget* plotAr showMinorGridAction.setEnabled(false); // setup symbols menu - setSymbolAutoAct = setSymbolsMenu.addAction("Show When Zoomed"); - setSymbolAutoAct->setCheckable(true); - setSymbolAutoAct->setChecked(true); - connect(setSymbolAutoAct, SELECT::OVERLOAD_OF(&QAction::triggered), + setSymbolsAutoAct = setSymbolsMenu.addAction("Show When Zoomed"); + setSymbolsAutoAct->setCheckable(true); + setSymbolsAutoAct->setChecked(true); + connect(setSymbolsAutoAct, SELECT::OVERLOAD_OF(&QAction::triggered), [this](bool checked) { - if (checked) setSymbols(Plot::Auto); + if (checked) setSymbols(Plot::ShowSymbolsAuto); }); - setSymbolAlwaysAct = setSymbolsMenu.addAction("Always Show"); - setSymbolAlwaysAct->setCheckable(true); - connect(setSymbolAlwaysAct, SELECT::OVERLOAD_OF(&QAction::triggered), + setSymbolsShowAct = setSymbolsMenu.addAction("Always Show"); + setSymbolsShowAct->setCheckable(true); + connect(setSymbolsShowAct, SELECT::OVERLOAD_OF(&QAction::triggered), [this](bool checked) { - if (checked) setSymbols(Plot::Show); + if (checked) setSymbols(Plot::ShowSymbolsShow); }); - setSymbolHideAct = setSymbolsMenu.addAction("Always Hide"); - setSymbolHideAct->setCheckable(true); - connect(setSymbolHideAct, SELECT::OVERLOAD_OF(&QAction::triggered), + setSymbolsHideAct = setSymbolsMenu.addAction("Always Hide"); + setSymbolsHideAct->setCheckable(true); + connect(setSymbolsHideAct, SELECT::OVERLOAD_OF(&QAction::triggered), [this](bool checked) { - if (checked) setSymbols(Plot::Hide); + if (checked) setSymbols(Plot::ShowSymbolsHide); }); setSymbolsAction.setMenu(&setSymbolsMenu); // add symbol actions to same group so that they appear as radio buttons auto group = new QActionGroup(this); - group->addAction(setSymbolAutoAct); - group->addAction(setSymbolAlwaysAct); - group->addAction(setSymbolHideAct); + group->addAction(setSymbolsAutoAct); + group->addAction(setSymbolsShowAct); + group->addAction(setSymbolsHideAct); connect(&showGridAction, SELECT::OVERLOAD_OF(&QAction::triggered), this, &PlotManager::showGrid); @@ -526,8 +526,22 @@ void PlotManager::saveSettings(QSettings settings->setValue(SG_Plot_MinorGrid, showMinorGridAction.isChecked()); settings->setValue(SG_Plot_Legend, showLegendAction.isChecked()); settings->setValue(SG_Plot_MultiPlot, showMultiAction.isChecked()); - settings->setValue(SG_Plot_Symbols, - QMetaEnum::fromType().valueToKey(showSymbols)); + + QString showSymbolsStr; + if (showSymbols == Plot::ShowSymbolsAuto) + { + showSymbolsStr = "auto"; + } + else if (showSymbols == Plot::ShowSymbolsShow) + { + showSymbolsStr = "show"; + } + else + { + showSymbolsStr = "hide"; + } + settings->setValue(SG_Plot_Symbols, showSymbolsStr); + settings->endGroup(); } @@ -551,34 +565,25 @@ void PlotManager::loadSettings(QSettings settings->value(SG_Plot_MultiPlot, showMultiAction.isChecked()).toBool()); setMulti(showMultiAction.isChecked()); - // symbol setting + QString showSymbolsStr = settings->value(SG_Plot_Symbols, QString()).toString(); + if (showSymbolsStr == "auto") + { + setSymbols(Plot::ShowSymbolsAuto); + setSymbolsAutoAct->setChecked(true); + } + else if (showSymbolsStr == "show") { - bool ok = false; - QString curStr = QMetaEnum::fromType().valueToKey(showSymbols); - QString settStr = settings->value(SG_Plot_Symbols, curStr).toString(); - Plot::ShowSymbols settValue = - (Plot::ShowSymbols) QMetaEnum::fromType().\ - keyToValue(settStr.toLatin1().constData(), &ok); - if (ok) - { - if (settValue == Plot::Auto) - { - setSymbolAutoAct->setChecked(true); - } - else if (settValue == Plot::Show) - { - setSymbolAlwaysAct->setChecked(true); - } - else - { - setSymbolHideAct->setChecked(true); - } - setSymbols(settValue); - } - else - { - qCritical() << "Invalid symbol setting:" << settStr; - } + setSymbols(Plot::ShowSymbolsShow); + setSymbolsShowAct->setChecked(true); + } + else if (showSymbolsStr == "hide") + { + setSymbols(Plot::ShowSymbolsHide); + setSymbolsHideAct->setChecked(true); + } + else + { + qCritical() << "Invalid symbol setting:" << showSymbolsStr; } settings->endGroup(); diff --git a/src/plotmanager.h b/src/plotmanager.h --- a/src/plotmanager.h +++ b/src/plotmanager.h @@ -102,9 +102,9 @@ private: QAction showMultiAction; QAction setSymbolsAction; QMenu setSymbolsMenu; - QAction* setSymbolAutoAct; - QAction* setSymbolAlwaysAct; - QAction* setSymbolHideAct; + QAction* setSymbolsAutoAct; + QAction* setSymbolsShowAct; + QAction* setSymbolsHideAct; void setupLayout(bool multiPlot); /// Inserts a new plot widget to the current layout.