diff options
| -rw-r--r-- | src/plugins/Ui/qsui/qsuivisualization.cpp | 75 | ||||
| -rw-r--r-- | src/plugins/Ui/qsui/qsuivisualization.h | 6 |
2 files changed, 73 insertions, 8 deletions
diff --git a/src/plugins/Ui/qsui/qsuivisualization.cpp b/src/plugins/Ui/qsui/qsuivisualization.cpp index 880e8651c..548578e4f 100644 --- a/src/plugins/Ui/qsui/qsuivisualization.cpp +++ b/src/plugins/Ui/qsui/qsuivisualization.cpp @@ -34,8 +34,8 @@ QSUIVisualization::QSUIVisualization(QWidget *parent) : Visual (parent) { m_pixLabel = new QLabel(this); - //m_drawer = new QSUiAnalyzer; - m_drawer = new QSUiScope; + m_drawer = new QSUiAnalyzer; + //m_drawer = new QSUiScope; createMenu(); m_timer = new QTimer (this); @@ -128,7 +128,38 @@ void QSUIVisualization::createMenu() m_coverAction = m_menu->addAction(tr("Cover")); m_coverAction->setCheckable(true); - m_peaksAction = m_menu->addAction(tr("Peaks")); + QMenu *visMode = m_menu->addMenu(tr("Visualization Mode")); + m_visModeGroup = new QActionGroup(this); + m_visModeGroup->setExclusive(true); + m_visModeGroup->addAction(tr("Analyzer"))->setData("analyzer"); + m_visModeGroup->addAction(tr("Scope"))->setData("scope"); + for(QAction *act : m_visModeGroup->actions()) + { + act->setCheckable(true); + visMode->addAction(act); + } + + QMenu *analyzerMode = m_menu->addMenu(tr("Analyzer Mode")); + m_analyzerModeGroup = new QActionGroup(this); + m_analyzerTypeGroup = new QActionGroup(this); + m_analyzerModeGroup->addAction(tr("Normal"))->setData(0); + m_analyzerModeGroup->addAction(tr("Fire"))->setData(1); + m_analyzerModeGroup->addAction(tr("Vertical Lines"))->setData(2); + m_analyzerTypeGroup->addAction(tr("Lines"))->setData(0); + m_analyzerTypeGroup->addAction(tr("Bars"))->setData(1); + for(QAction *act : m_analyzerModeGroup->actions()) + { + act->setCheckable(true); + analyzerMode->addAction(act); + } + analyzerMode->addSeparator (); + for(QAction *act : m_analyzerTypeGroup->actions()) + { + act->setCheckable(true); + analyzerMode->addAction(act); + } + analyzerMode->addSeparator (); + m_peaksAction = analyzerMode->addAction(tr("Peaks")); m_peaksAction->setCheckable(true); QMenu *refreshRate = m_menu->addMenu(tr("Refresh Rate")); @@ -138,7 +169,7 @@ void QSUIVisualization::createMenu() m_fpsGroup->addAction(tr("25 fps"))->setData(25); m_fpsGroup->addAction(tr("10 fps"))->setData(10); m_fpsGroup->addAction(tr("5 fps"))->setData(5); - for(QAction *act : m_fpsGroup->actions ()) + for(QAction *act : m_fpsGroup->actions()) { act->setCheckable(true); refreshRate->addAction(act); @@ -152,7 +183,7 @@ void QSUIVisualization::createMenu() m_analyzerFalloffGroup->addAction(tr("Medium"))->setData(2.2); m_analyzerFalloffGroup->addAction(tr("Fast"))->setData(2.4); m_analyzerFalloffGroup->addAction(tr("Fastest"))->setData(2.8); - for(QAction *act : m_analyzerFalloffGroup->actions ()) + for(QAction *act : m_analyzerFalloffGroup->actions()) { act->setCheckable(true); analyzerFalloff->addAction(act); @@ -166,7 +197,7 @@ void QSUIVisualization::createMenu() m_peaksFalloffGroup->addAction(tr("Medium"))->setData(0.2); m_peaksFalloffGroup->addAction(tr("Fast"))->setData(0.4); m_peaksFalloffGroup->addAction(tr("Fastest"))->setData(0.8); - for(QAction *act : m_peaksFalloffGroup->actions ()) + for(QAction *act : m_peaksFalloffGroup->actions()) { act->setCheckable(true); peaksFalloff->addAction(act); @@ -203,6 +234,7 @@ void QSUIVisualization::readSettings() //general settings m_show_cover = settings.value("vis_show_cover", true).toBool(); m_timer->setInterval(1000 / settings.value("vis_refresh_rate", 25).toInt()); + QString visName = settings.value("vis_type","analyzer").toString(); //analyzer settings double peaks_falloff = settings.value("vis_peaks_falloff", 0.2).toDouble(); double analyzer_falloff = settings.value("vis_analyzer_falloff", 2.2).toDouble(); @@ -214,6 +246,12 @@ void QSUIVisualization::readSettings() m_coverAction->setChecked(m_show_cover); m_peaksAction->setChecked(show_peaks); + for(QAction *act : m_visModeGroup->actions()) + { + if (visName == act->data().toString()) + act->setChecked(true); + } + for(QAction *act : m_fpsGroup->actions ()) { if (m_timer->interval() == 1000 / act->data().toInt()) @@ -233,8 +271,17 @@ void QSUIVisualization::readSettings() updateCover(); settings.endGroup(); - if(m_drawer) - m_drawer->readSettings(); + if(!m_drawer || m_drawer->name() != visName) + { + if(m_drawer) + delete m_drawer; + + if(visName == "scope") + m_drawer = new QSUiScope; + else + m_drawer = new QSUiAnalyzer; + } + m_drawer->readSettings(); } void QSUIVisualization::writeSettings() @@ -250,6 +297,8 @@ void QSUIVisualization::writeSettings() settings.setValue("vis_analyzer_falloff", act ? act->data().toDouble() : 2.2); settings.setValue("vis_show_peaks", m_peaksAction->isChecked()); settings.setValue("vis_show_cover", m_coverAction->isChecked()); + act = m_visModeGroup->checkedAction (); + settings.setValue("vis_type", act ? act->data().toString() : "none"); settings.endGroup(); } @@ -273,6 +322,11 @@ QSUiScope::~QSUiScope() delete [] m_intern_vis_data; } +QString QSUiScope::name() const +{ + return "scope"; +} + void QSUiScope::process(float *buffer, int width, int height) { int step = (QMMP_VISUAL_NODE_SIZE << 8) / width; @@ -352,6 +406,11 @@ QSUiAnalyzer::~QSUiAnalyzer() delete [] m_x_scale; } +QString QSUiAnalyzer::name() const +{ + return "analyzer"; +} + void QSUiAnalyzer::process(float *buffer, int width, int height) { int rows = qMax((height - 2) / m_cell_size.height(),2); diff --git a/src/plugins/Ui/qsui/qsuivisualization.h b/src/plugins/Ui/qsui/qsuivisualization.h index a8a4b67a5..ed0603b63 100644 --- a/src/plugins/Ui/qsui/qsuivisualization.h +++ b/src/plugins/Ui/qsui/qsuivisualization.h @@ -73,9 +73,12 @@ private: QMenu *m_menu; QAction *m_peaksAction; QAction *m_coverAction; + QActionGroup *m_visModeGroup; QActionGroup *m_fpsGroup; QActionGroup *m_analyzerFalloffGroup; QActionGroup *m_peaksFalloffGroup; + QActionGroup *m_analyzerModeGroup; + QActionGroup *m_analyzerTypeGroup; bool m_running = false; QSUiVisualDrawer *m_drawer = nullptr; }; @@ -84,6 +87,7 @@ class QSUiVisualDrawer { public: virtual ~QSUiVisualDrawer(); + virtual QString name() const = 0; virtual void process(float *buffer, int width, int height) = 0; virtual void draw(QPainter *p, int offset) = 0; virtual void clear() = 0; @@ -95,6 +99,7 @@ class QSUiScope : public QSUiVisualDrawer public: QSUiScope() {} virtual ~QSUiScope(); + QString name() const override; void process(float *buffer, int width, int height) override; void draw(QPainter *p, int offset) override; void clear() override; @@ -114,6 +119,7 @@ class QSUiAnalyzer : public QSUiVisualDrawer public: QSUiAnalyzer() {} virtual ~QSUiAnalyzer(); + QString name() const override; void process(float *buffer, int width, int height) override; void draw(QPainter *p, int offset) override; void clear() override; |
