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 = ShowSymbolsAuto; + showSymbols = Plot::Auto; QObject::connect(&zoomer, &Zoomer::unzoomed, this, &Plot::unzoomed); @@ -252,11 +252,11 @@ void Plot::setSymbols(ShowSymbols shown) { showSymbols = shown; - if (showSymbols == ShowSymbolsAuto) + if (showSymbols == Plot::Auto) { calcSymbolSize(); } - else if (showSymbols == ShowSymbolsAlways) + else if (showSymbols == Plot::Show) { symbolSize = SYMBOL_SIZE_MAX; } @@ -271,7 +271,7 @@ void Plot::setSymbols(ShowSymbols shown) void Plot::onXScaleChanged() { - if (showSymbols == ShowSymbolsAuto) + if (showSymbols == Plot::Auto) { calcSymbolSize(); updateSymbols(); diff --git a/src/plot.h b/src/plot.h --- a/src/plot.h +++ b/src/plot.h @@ -33,13 +33,6 @@ #include "scalezoomer.h" #include "plotsnapshotoverlay.h" -enum ShowSymbols -{ - ShowSymbolsAuto, - ShowSymbolsAlways, - ShowSymbolsNever -}; - class Plot : public QwtPlot { Q_OBJECT @@ -47,6 +40,15 @@ class Plot : public QwtPlot friend class PlotManager; public: + // Note: this naming is also used as setting values + enum ShowSymbols + { + Auto, + Show, + Hide + }; + 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 @@ -18,6 +18,8 @@ */ #include +#include +#include #include "qwt_symbol.h" #include "plot.h" @@ -42,7 +44,7 @@ PlotManager::PlotManager(QWidget* plotAr isDemoShown = false; _infoModel = infoModel; _numOfSamples = 1; - showSymbols = ShowSymbolsAuto; + showSymbols = Plot::Auto; // initalize layout and single widget isMulti = false; @@ -77,27 +79,27 @@ PlotManager::PlotManager(QWidget* plotAr showMinorGridAction.setEnabled(false); // setup symbols menu - auto setSymbolAutoAct = setSymbolsMenu.addAction("Show When Zoomed"); + setSymbolAutoAct = setSymbolsMenu.addAction("Show When Zoomed"); setSymbolAutoAct->setCheckable(true); setSymbolAutoAct->setChecked(true); connect(setSymbolAutoAct, SELECT::OVERLOAD_OF(&QAction::triggered), [this](bool checked) { - if (checked) setSymbols(ShowSymbolsAuto); + if (checked) setSymbols(Plot::Auto); }); - auto setSymbolAlwaysAct = setSymbolsMenu.addAction("Always Show"); + setSymbolAlwaysAct = setSymbolsMenu.addAction("Always Show"); setSymbolAlwaysAct->setCheckable(true); connect(setSymbolAlwaysAct, SELECT::OVERLOAD_OF(&QAction::triggered), [this](bool checked) { - if (checked) setSymbols(ShowSymbolsAlways); + if (checked) setSymbols(Plot::Show); }); - auto setSymbolHideAct = setSymbolsMenu.addAction("Always Hide"); + setSymbolHideAct = setSymbolsMenu.addAction("Always Hide"); setSymbolHideAct->setCheckable(true); connect(setSymbolHideAct, SELECT::OVERLOAD_OF(&QAction::triggered), [this](bool checked) { - if (checked) setSymbols(ShowSymbolsNever); + if (checked) setSymbols(Plot::Hide); }); setSymbolsAction.setMenu(&setSymbolsMenu); @@ -453,7 +455,7 @@ void PlotManager::darkBackground(bool en } } -void PlotManager::setSymbols(ShowSymbols shown) +void PlotManager::setSymbols(Plot::ShowSymbols shown) { showSymbols = shown; for (auto plot : plotWidgets) @@ -524,6 +526,8 @@ 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)); settings->endGroup(); } @@ -546,5 +550,36 @@ void PlotManager::loadSettings(QSettings showMultiAction.setChecked( settings->value(SG_Plot_MultiPlot, showMultiAction.isChecked()).toBool()); setMulti(showMultiAction.isChecked()); + + // symbol setting + { + 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; + } + } + settings->endGroup(); } diff --git a/src/plotmanager.h b/src/plotmanager.h --- a/src/plotmanager.h +++ b/src/plotmanager.h @@ -91,7 +91,7 @@ private: double _xMin; double _xMax; unsigned _numOfSamples; - ShowSymbols showSymbols; + Plot::ShowSymbols showSymbols; // menu actions QAction showGridAction; @@ -101,7 +101,10 @@ private: QAction showLegendAction; QAction showMultiAction; QAction setSymbolsAction; - QMenu setSymbolsMenu; + QMenu setSymbolsMenu; + QAction* setSymbolAutoAct; + QAction* setSymbolAlwaysAct; + QAction* setSymbolHideAct; void setupLayout(bool multiPlot); /// Inserts a new plot widget to the current layout. @@ -110,7 +113,7 @@ private: Plot* plotWidget(unsigned curveIndex); /// Common part of overloaded `addCurve` functions void _addCurve(QwtPlotCurve* curve); - void setSymbols(ShowSymbols shown); + void setSymbols(Plot::ShowSymbols shown); private slots: void showGrid(bool show = true); diff --git a/src/setting_defines.h b/src/setting_defines.h --- a/src/setting_defines.h +++ b/src/setting_defines.h @@ -87,6 +87,7 @@ const char SG_Plot_Grid[] = "grid"; const char SG_Plot_MinorGrid[] = "minorGrid"; const char SG_Plot_Legend[] = "legend"; const char SG_Plot_MultiPlot[] = "multiPlot"; +const char SG_Plot_Symbols[] = "symbols"; // command setting keys const char SG_Commands_Command[] = "command";