diff options
| -rw-r--r-- | src/plugins/Visual/analyzer/analyzer.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Visual/analyzer/settingsdialog.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/Visual/analyzer/settingsdialog.ui | 8 | ||||
| -rw-r--r-- | src/plugins/Visual/analyzer/visualanalyzerfactory.cpp | 15 | ||||
| -rw-r--r-- | src/plugins/Visual/analyzer/visualanalyzerfactory.h | 4 | ||||
| -rw-r--r-- | src/qmmp/output.cpp | 10 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 60 | ||||
| -rw-r--r-- | src/qmmp/soundcore.h | 25 | ||||
| -rw-r--r-- | src/qmmp/visual.cpp | 209 | ||||
| -rw-r--r-- | src/qmmp/visual.h | 29 | ||||
| -rw-r--r-- | src/qmmp/visualfactory.h | 5 | ||||
| -rw-r--r-- | src/qmmpui/generalhandler.cpp | 2 | ||||
| -rw-r--r-- | src/ui/aboutdialog.cpp | 2 | ||||
| -rw-r--r-- | src/ui/configdialog.cpp | 6 | ||||
| -rw-r--r-- | src/ui/mainvisual.cpp | 24 | ||||
| -rw-r--r-- | src/ui/mainwindow.cpp | 3 | ||||
| -rw-r--r-- | src/ui/pluginitem.cpp | 14 | ||||
| -rw-r--r-- | src/ui/shadedvisual.cpp | 35 | ||||
| -rw-r--r-- | src/ui/shadedvisual.h | 2 | ||||
| -rw-r--r-- | src/ui/titlebar.cpp | 23 | ||||
| -rw-r--r-- | src/ui/visualmenu.cpp | 6 | ||||
| -rw-r--r-- | src/ui/visualmenu.h | 7 |
22 files changed, 241 insertions, 251 deletions
diff --git a/src/plugins/Visual/analyzer/analyzer.cpp b/src/plugins/Visual/analyzer/analyzer.cpp index c47ee71de..90c3c9ac6 100644 --- a/src/plugins/Visual/analyzer/analyzer.cpp +++ b/src/plugins/Visual/analyzer/analyzer.cpp @@ -126,7 +126,7 @@ void Analyzer::timeout() { VisualNode *node = 0; - if ( /*playing &&*/ output()) + //if ( /*playing &&*/ output()) { //output()->mutex()->lock (); //long olat = output()->latency(); diff --git a/src/plugins/Visual/analyzer/settingsdialog.cpp b/src/plugins/Visual/analyzer/settingsdialog.cpp index badadc190..cfbd84594 100644 --- a/src/plugins/Visual/analyzer/settingsdialog.cpp +++ b/src/plugins/Visual/analyzer/settingsdialog.cpp @@ -27,7 +27,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { ui.setupUi(this); - setAttribute(Qt::WA_DeleteOnClose, TRUE); QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); ui.analyzerComboBox->setCurrentIndex(settings.value("Analyzer/analyzer_falloff", 3).toInt()-1); ui.peaksCheckBox->setChecked(settings.value("Analyzer/show_peaks", TRUE).toBool()); diff --git a/src/plugins/Visual/analyzer/settingsdialog.ui b/src/plugins/Visual/analyzer/settingsdialog.ui index 4ddd391a3..b4f0abd35 100644 --- a/src/plugins/Visual/analyzer/settingsdialog.ui +++ b/src/plugins/Visual/analyzer/settingsdialog.ui @@ -280,7 +280,7 @@ <property name="orientation" > <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" > + <property name="sizeHint" stdset="0" > <size> <width>111</width> <height>20</height> @@ -325,7 +325,7 @@ <property name="sizeType" > <enum>QSizePolicy::Minimum</enum> </property> - <property name="sizeHint" > + <property name="sizeHint" stdset="0" > <size> <width>95</width> <height>29</height> @@ -390,8 +390,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel" > - <x>220</x> - <y>286</y> + <x>282</x> + <y>317</y> </hint> <hint type="destinationlabel" > <x>276</x> diff --git a/src/plugins/Visual/analyzer/visualanalyzerfactory.cpp b/src/plugins/Visual/analyzer/visualanalyzerfactory.cpp index ffc2e84a1..e57341d62 100644 --- a/src/plugins/Visual/analyzer/visualanalyzerfactory.cpp +++ b/src/plugins/Visual/analyzer/visualanalyzerfactory.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -33,25 +33,24 @@ const VisualProperties VisualAnalyzerFactory::properties() const return properties; }; -Visual *VisualAnalyzerFactory::create(QWidget *parent) +Visual *VisualAnalyzerFactory::create(QWidget *parent) { return new Analyzer(parent); }; -void VisualAnalyzerFactory::showSettings(QWidget *parent) +QDialog *VisualAnalyzerFactory::createConfigDialog(QWidget *parent) { - SettingsDialog *s = new SettingsDialog(parent); - s -> show(); + return new SettingsDialog(parent); }; -void VisualAnalyzerFactory::showAbout(QWidget *parent) +void VisualAnalyzerFactory::showAbout(QWidget *parent) { - QMessageBox::about (parent, tr("About Analyzer Visual Plugin"), + QMessageBox::about (parent, tr("About Analyzer Visual Plugin"), tr("Qmmp Analyzer Visual Plugin")+"\n"+ tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>")); }; -QTranslator *VisualAnalyzerFactory::createTranslator(QObject *parent) +QTranslator *VisualAnalyzerFactory::createTranslator(QObject *parent) { QTranslator *translator = new QTranslator(parent); QString locale = QLocale::system().name(); diff --git a/src/plugins/Visual/analyzer/visualanalyzerfactory.h b/src/plugins/Visual/analyzer/visualanalyzerfactory.h index 6f8619125..b7b9a3832 100644 --- a/src/plugins/Visual/analyzer/visualanalyzerfactory.h +++ b/src/plugins/Visual/analyzer/visualanalyzerfactory.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -37,7 +37,7 @@ Q_INTERFACES(VisualFactory); public: const VisualProperties properties() const; Visual *create(QWidget *parent); - void showSettings(QWidget *parent); + QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); }; diff --git a/src/qmmp/output.cpp b/src/qmmp/output.cpp index 11e4eb781..5126a9a48 100644 --- a/src/qmmp/output.cpp +++ b/src/qmmp/output.cpp @@ -45,7 +45,7 @@ Output::~Output() visual->setOutput(0); visual->close(); } - foreach (Visual *visual , visuals) //external + /*foreach (Visual *visual , visuals) //external { visual->setOutput(0); }*/ @@ -117,7 +117,7 @@ void Output::dispatchVisual ( Buffer *buffer, unsigned long written, if (!buffer) return; Visual* visual = 0; - foreach (visual , visuals) //external + /*foreach (visual , visuals) //external { visual->mutex()->lock (); visual->add ( buffer, written, chan, prec ); @@ -128,6 +128,12 @@ void Output::dispatchVisual ( Buffer *buffer, unsigned long written, visual->mutex()->lock (); visual->add ( buffer, written, chan, prec ); visual->mutex()->unlock(); + }*/ + foreach (visual, *Visual::visuals()) + { + visual->mutex()->lock (); + visual->add ( buffer, written, chan, prec ); + visual->mutex()->unlock(); } } diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 76fc6db23..be7c124d9 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -56,7 +56,9 @@ SoundCore::SoundCore(QObject *parent) SoundCore::~SoundCore() -{} +{ + stop(); +} bool SoundCore::play(const QString &source) { @@ -281,21 +283,13 @@ Qmmp::State SoundCore::state() const void SoundCore::setState(Qmmp::State state) { - qDebug("new state = %d",state); + QStringList states; + states << "Playing" << "Paused" << "Stopped" << "Buffering" << "NormalError" << "FatalError"; + qDebug("SoundCore: Current state: %s", qPrintable(states.at(state))); m_state = state; emit stateChanged (state); } -/*void SoundCore::addVisualization(Visual *visual) -{ - if (m_visuals.indexOf (visual) == -1) - { - m_visuals.append(visual); - if (m_output) - m_output->addVisual(visual); - } -}*/ - bool SoundCore::decode() { if (!m_input || !m_output) @@ -330,48 +324,6 @@ bool SoundCore::decode() return FALSE; } -/*void SoundCore::showVisualization(QWidget *parent) -{ - if (!m_parentWidget) - { - m_parentWidget = parent; - if (!m_output) - return; - VisualFactory* factory; - foreach(factory, *Visual::visualFactories()) - { - if (Visual::isEnabled(factory)) - m_output->addVisual(factory, m_parentWidget); - } - } -} - -void SoundCore::addVisual(VisualFactory *factory, QWidget *parent) -{ - if (m_output) - m_output->addVisual(factory, parent); - else - Visual::setEnabled(factory, TRUE); -} - -void SoundCore::removeVisual(VisualFactory *factory) -{ - if (m_output) - m_output->removeVisual(factory); - else - Visual::setEnabled(factory, FALSE); -} - -void SoundCore::removeVisual(Visual *visual) -{ - if (m_visuals.indexOf (visual) != -1) - { - m_visuals.removeAll(visual); - if (m_output) - m_output->removeVisual(visual); - } -}*/ - SoundCore* SoundCore::instance() { return m_instance; diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h index c3d52469f..604ae8c65 100644 --- a/src/qmmp/soundcore.h +++ b/src/qmmp/soundcore.h @@ -68,31 +68,6 @@ public: void setEQEnabled(bool on); /*! - * adds visualization \p visual - */ - //void addVisualization(Visual *visual); - - /*! - * shows enabled visualization with the parent widget \p parent - */ - //void showVisualization(QWidget *parent); - - /*! - * adds visualization by factory \p factory - */ - //void addVisual(VisualFactory *factory, QWidget *parent); - - /*! - * removes visualization by factory \p factory - */ - //void removeVisual(VisualFactory *factory); - - /*! - * removes visualization \p visual - */ - //void removeVisual(Visual *visual); - - /*! * reads current volume. * \p left contains volume of the left channel. * \p right contains volume of the right channel. diff --git a/src/qmmp/visual.cpp b/src/qmmp/visual.cpp index c97154baf..453a7abd0 100644 --- a/src/qmmp/visual.cpp +++ b/src/qmmp/visual.cpp @@ -21,6 +21,7 @@ #include <QtGui> #include <QObject> #include <QList> +#include <QMetaObject> #include <QApplication> #include "visualfactory.h" @@ -30,43 +31,6 @@ #include "visual.h" -static QList<VisualFactory*> *factories = 0; -static QStringList files; - -static void checkFactories() -{ - if (! factories) - { - files.clear(); - factories = new QList<VisualFactory *>; - - QDir pluginsDir (qApp->applicationDirPath()); - pluginsDir.cdUp(); - pluginsDir.cd("./"LIB_DIR"/qmmp/Visual"); - foreach (QString fileName, pluginsDir.entryList(QDir::Files)) - { - QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); - QObject *plugin = loader.instance(); - if (loader.isLoaded()) - qDebug("Visual: plugin loaded - %s", qPrintable(fileName)); - else - qWarning("Visual: %s", qPrintable(loader.errorString ())); - - VisualFactory *factory = 0; - if (plugin) - factory = qobject_cast<VisualFactory *>(plugin); - - if (factory) - { - factories->append(factory); - files << pluginsDir.absoluteFilePath(fileName); - qApp->installTranslator(factory->createTranslator(qApp)); - } - } - } -} - - Visual::Visual(QWidget *parent) : QWidget(parent) { setAttribute(Qt::WA_DeleteOnClose, TRUE); @@ -80,50 +44,60 @@ Visual::~Visual() qDebug("Visual::~Visual()"); } -Decoder *Visual::decoder() const -{ - return m_decoder; -} - -void Visual::setDecoder(Decoder *decoder) -{ - m_decoder = decoder; -} - -Output *Visual::output() const +QMutex *Visual::mutex() { - return m_output; + return &m_mutex; } -void Visual::setOutput(Output *output) +void Visual::closeEvent (QCloseEvent *event) { - m_output = output; + m_visuals.removeAll(this); + if (event->spontaneous () && m_vis_map.key(this)) + { + VisualFactory *factory = m_vis_map.key(this); + m_vis_map.remove(factory); + Visual::setEnabled(factory, FALSE); + emit closedByUser(); + } + else + { + if (m_vis_map.key(this)) + { + VisualFactory *factory = m_vis_map.key(this); + m_vis_map.remove(factory); + } + } + QWidget::closeEvent(event); } -QMutex *Visual::mutex() -{ - return &m_mutex; -} +//static members +QList<VisualFactory*> *Visual::m_factories = 0; +QStringList Visual::m_files; +QList<Visual*> Visual::m_visuals; +QMap<VisualFactory*, Visual*> Visual::m_vis_map; +QWidget *Visual::m_parentWidget = 0; +QObject *Visual::m_receiver = 0; +const char *Visual::m_member = 0; -QList<VisualFactory*> *Visual::visualFactories() +QList<VisualFactory*> *Visual::factories() { checkFactories(); - return factories; + return m_factories; } -QStringList Visual::visualFiles() +QStringList Visual::files() { checkFactories(); - return files; + return m_files; } void Visual::setEnabled(VisualFactory* factory, bool enable) { checkFactories(); - if (!factories->contains(factory)) + if (!m_factories->contains(factory)) return; - QString name = files.at(factories->indexOf(factory)).section('/',-1); + QString name = m_files.at(m_factories->indexOf(factory)).section('/',-1); QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); QStringList visList = settings.value("Visualization/plugin_files").toStringList(); @@ -131,25 +105,128 @@ void Visual::setEnabled(VisualFactory* factory, bool enable) { if (!visList.contains(name)) visList << name; + if (!m_vis_map.value(factory) && m_parentWidget) + { + Visual* visual = factory->create(m_parentWidget); + if (m_receiver && m_member) + connect(visual, SIGNAL(closedByUser()), m_receiver, m_member); + visual->setWindowFlags(Qt::Window); + m_vis_map.insert (factory, visual); + m_visuals.append(visual); + visual->show(); + } } else + { visList.removeAll(name); + if (m_vis_map.value(factory)) + { + m_visuals.removeAll(m_vis_map.value(factory)); + m_vis_map.value(factory)->close(); + m_vis_map.remove (factory); + } + } settings.setValue("Visualization/plugin_files", visList); } bool Visual::isEnabled(VisualFactory* factory) { checkFactories(); - if (!factories->contains(factory)) + if (!m_factories->contains(factory)) return FALSE; - QString name = files.at(factories->indexOf(factory)).section('/',-1); + QString name = m_files.at(m_factories->indexOf(factory)).section('/',-1); QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); QStringList visList = settings.value("Visualization/plugin_files").toStringList(); return visList.contains(name); } -void Visual::closeEvent (QCloseEvent *event) +void Visual::add(Visual *visual) { - m_output->processCloseEvent(this, event); - QWidget::closeEvent(event); + if (!m_visuals.contains(visual)) + m_visuals.append(visual); +} + +void Visual::remove(Visual *visual) +{ + m_visuals.removeAll(visual); } + +void Visual::initialize(QWidget *parent , QObject *receiver, const char *member) +{ + m_receiver = receiver; + m_member = member; + m_parentWidget = parent; + foreach(VisualFactory* factory, *factories()) + { + if (isEnabled(factory)) + { + Visual* visual = factory->create(parent); + if (m_receiver && m_member) + connect(visual, SIGNAL(closedByUser()), m_receiver, m_member); + visual->setWindowFlags(Qt::Window); + qDebug("Visual: added visualization: %s", qPrintable(factory->properties().name)); + m_vis_map.insert (factory, visual); + m_visuals.append(visual); + visual->show(); + } + } +} + +QList<Visual*>* Visual::visuals() +{ + return &m_visuals; +} + +void Visual::showSettings(VisualFactory *factory, QWidget *parent) +{ + QDialog *dialog = factory->createConfigDialog(parent); + if (!dialog) + return; + + if (dialog->exec() == QDialog::Accepted && m_vis_map.contains(factory)) + { + Visual *visual = m_vis_map.value(factory); + remove(visual); + visual->close(); + visual = factory->create(m_parentWidget); + visual->setWindowFlags(Qt::Window); + m_vis_map[factory] = visual; + visual->show(); + add(visual); + } + dialog->deleteLater(); +} + +void Visual::checkFactories() +{ + if (!m_factories) + { + m_files.clear(); + m_factories = new QList<VisualFactory *>; + + QDir pluginsDir (qApp->applicationDirPath()); + pluginsDir.cdUp(); + pluginsDir.cd("./"LIB_DIR"/qmmp/Visual"); + foreach (QString fileName, pluginsDir.entryList(QDir::Files)) + { + QPluginLoader loader(pluginsDir.absoluteFilePath(fileName)); + QObject *plugin = loader.instance(); + if (loader.isLoaded()) + qDebug("Visual: plugin loaded - %s", qPrintable(fileName)); + else + qWarning("Visual: %s", qPrintable(loader.errorString ())); + + VisualFactory *factory = 0; + if (plugin) + factory = qobject_cast<VisualFactory *>(plugin); + + if (factory) + { + m_factories->append(factory); + m_files << pluginsDir.absoluteFilePath(fileName); + qApp->installTranslator(factory->createTranslator(qApp)); + } + } + } +} + diff --git a/src/qmmp/visual.h b/src/qmmp/visual.h index ef663bb37..e4159db46 100644 --- a/src/qmmp/visual.h +++ b/src/qmmp/visual.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -44,18 +44,22 @@ public: virtual void add(Buffer *, unsigned long, int, int) = 0; virtual void clear() = 0; - - Decoder *decoder() const; - void setDecoder(Decoder *decoder); - Output *output() const; - void setOutput(Output *output); + //virtual void stop() = 0; QMutex *mutex(); //static methods - static QList<VisualFactory*> *visualFactories(); - static QStringList visualFiles(); + static QList<VisualFactory*> *factories(); + static QStringList files(); static void setEnabled(VisualFactory* factory, bool enable = TRUE); static bool isEnabled(VisualFactory* factory); + static void add(Visual*); + static void remove(Visual*); + static void initialize(QWidget *parent, QObject *receiver = 0, const char *member = 0); + static QList<Visual*>* visuals(); + static void showSettings(VisualFactory *factory, QWidget *parent); + +signals: + void closedByUser(); protected: virtual void closeEvent (QCloseEvent *); @@ -64,6 +68,15 @@ private: Decoder *m_decoder; Output *m_output; QMutex m_mutex; + + static QList<VisualFactory*> *m_factories; + static QStringList m_files; + static void checkFactories(); + static QList<Visual*> m_visuals; + static QMap<VisualFactory*, Visual*> m_vis_map; //internal visualization + static QWidget *m_parentWidget; + static QObject *m_receiver; + static const char *m_member; }; #endif diff --git a/src/qmmp/visualfactory.h b/src/qmmp/visualfactory.h index 6862032bb..723c86970 100644 --- a/src/qmmp/visualfactory.h +++ b/src/qmmp/visualfactory.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,6 +24,7 @@ class QObject; class QWidget; class QTranslator; +class QDialog; class Visual; @@ -40,7 +41,7 @@ public: virtual ~VisualFactory() {} virtual const VisualProperties properties() const = 0; virtual Visual *create(QWidget *parent) = 0; - virtual void showSettings(QWidget *parent) = 0; + virtual QDialog *createConfigDialog(QWidget *parent) = 0; virtual void showAbout(QWidget *parent) = 0; virtual QTranslator *createTranslator(QObject *parent) = 0; }; diff --git a/src/qmmpui/generalhandler.cpp b/src/qmmpui/generalhandler.cpp index 02ca51e15..152a310ec 100644 --- a/src/qmmpui/generalhandler.cpp +++ b/src/qmmpui/generalhandler.cpp @@ -154,7 +154,7 @@ void GeneralHandler::showSettings(GeneralFactory* factory, QWidget* parentWidget general->setSongInfo(m_songInfo); } } - delete dialog; + dialog->deleteLater(); } bool GeneralHandler::visibilityControl() diff --git a/src/ui/aboutdialog.cpp b/src/ui/aboutdialog.cpp index 198b5a47c..128f89bc0 100644 --- a/src/ui/aboutdialog.cpp +++ b/src/ui/aboutdialog.cpp @@ -100,7 +100,7 @@ QString AboutDialog::loadAbout() text.append("</ul>"); text.append("<h5>"+tr("Visual plugins:")+"</h5>"); text.append("<ul type=\"square\">"); - foreach(VisualFactory *fact, *Visual::visualFactories()) + foreach(VisualFactory *fact, *Visual::factories()) { text.append("<li>"); text.append(fact->properties().name); diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp index 185b4bfc0..a27a8cb31 100644 --- a/src/ui/configdialog.cpp +++ b/src/ui/configdialog.cpp @@ -258,8 +258,8 @@ void ConfigDialog::loadPluginsInfo() load visual plugin information */ QList <VisualFactory *> *visuals = 0; - visuals = Visual::visualFactories(); - files = Visual::visualFiles(); + visuals = Visual::factories(); + files = Visual::files(); ui.visualPluginTable->setColumnCount ( 3 ); ui.visualPluginTable->verticalHeader()->hide(); ui.visualPluginTable->setHorizontalHeaderLabels ( QStringList() @@ -434,7 +434,7 @@ void ConfigDialog::showPluginSettings() int row = ui.visualPluginTable->currentRow (); if ( m_visualPluginItems.isEmpty() || row < 0 ) return; - m_visualPluginItems.at(row)->factory()->showSettings ( this ); + Visual::showSettings(m_visualPluginItems.at(row)->factory(), this); break; } case 3: diff --git a/src/ui/mainvisual.cpp b/src/ui/mainvisual.cpp index 056bf79fd..0d491dab5 100644 --- a/src/ui/mainvisual.cpp +++ b/src/ui/mainvisual.cpp @@ -142,20 +142,18 @@ void MainVisual::timeout() { VisualNode *node = 0; - if (output()) + mutex()->lock (); + VisualNode *prev = 0; + while ((!m_nodes.isEmpty())) { - mutex()->lock (); - VisualNode *prev = 0; - while ((!m_nodes.isEmpty())) - { - node = m_nodes.takeFirst(); - if (prev) - delete prev; - prev = node; - } - mutex()->unlock(); - node = prev; + node = m_nodes.takeFirst(); + if (prev) + delete prev; + prev = node; } + mutex()->unlock(); + node = prev; + if (m_vis && node) { m_vis->process (node); @@ -166,7 +164,7 @@ void MainVisual::timeout() update(); m_draw = TRUE; } - else if (m_draw && !(output() && output()->isRunning())) + else if (m_draw) { m_draw = FALSE; m_pixmap = m_bg; diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index d63237df7..fdf2e1bd7 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -26,6 +26,7 @@ #include <math.h> #include <qmmp/soundcore.h> +#include <qmmp/visual.h> #include <qmmpui/generalhandler.h> #include <qmmpui/general.h> #include <qmmpui/playlistparser.h> @@ -138,6 +139,8 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option SLOT(changeTitle(const QString&))); connect(m_core, SIGNAL(bufferingProgress(int)), TextScroller::getPointer(), SLOT(setProgress(int)));*/ + Visual::initialize(this, m_visMenu, SLOT(updateActions())); + Visual::add(m_vis); diff --git a/src/ui/pluginitem.cpp b/src/ui/pluginitem.cpp index f606a7223..bbfdab306 100644 --- a/src/ui/pluginitem.cpp +++ b/src/ui/pluginitem.cpp @@ -80,7 +80,7 @@ bool OutputPluginItem::isSelected() OutputFactory *OutputPluginItem::factory() { - return m_factory; + return m_factory; } /*Visual*/ @@ -95,10 +95,7 @@ VisualPluginItem::~VisualPluginItem() void VisualPluginItem::select(bool on) { - /*if(on) - SoundCore::instance()->addVisual(m_factory, 0); - else - SoundCore::instance()->removeVisual(m_factory);*/ + Visual::setEnabled(m_factory, on); } bool VisualPluginItem::isSelected() @@ -108,7 +105,7 @@ bool VisualPluginItem::isSelected() VisualFactory *VisualPluginItem::factory() { - return m_factory; + return m_factory; } /*Effect*/ @@ -133,7 +130,7 @@ bool EffectPluginItem::isSelected() EffectFactory *EffectPluginItem::factory() { - return m_factory; + return m_factory; } /*General*/ @@ -157,6 +154,5 @@ bool GeneralPluginItem::isSelected() GeneralFactory *GeneralPluginItem::factory() { - return m_factory; + return m_factory; } - diff --git a/src/ui/shadedvisual.cpp b/src/ui/shadedvisual.cpp index 2dea3d419..2c9d0f3fa 100644 --- a/src/ui/shadedvisual.cpp +++ b/src/ui/shadedvisual.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2007-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -99,30 +99,20 @@ void ShadedVisual::timeout() VisualNode *node = 0; m_pixmap.fill(m_skin->getVisColor(0)); - if ( /*playing &&*/ output()) + mutex()->lock (); + VisualNode *prev = 0; + while ((!m_nodes.isEmpty())) { - //output()->mutex()->lock (); - //long olat = output()->latency(); - //long owrt = output()->written(); - //output()->mutex()->unlock(); + node = m_nodes.takeFirst(); + /*if ( node->offset > synctime ) + break;*/ - //long synctime = owrt < olat ? 0 : owrt - olat; - - mutex()->lock (); - VisualNode *prev = 0; - while ((!m_nodes.isEmpty())) - { - node = m_nodes.takeFirst(); - /*if ( node->offset > synctime ) - break;*/ - - if (prev) - delete prev; - prev = node; - } - mutex()->unlock(); - node = prev; + if (prev) + delete prev; + prev = node; } + mutex()->unlock(); + node = prev; if (!node) return; @@ -202,4 +192,3 @@ void ShadedVisual::updateSkin() { clear(); } - diff --git a/src/ui/shadedvisual.h b/src/ui/shadedvisual.h index 0c1d6a37e..b1820a484 100644 --- a/src/ui/shadedvisual.h +++ b/src/ui/shadedvisual.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2007-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/ui/titlebar.cpp b/src/ui/titlebar.cpp index 400c9c2ec..d91bb3032 100644 --- a/src/ui/titlebar.cpp +++ b/src/ui/titlebar.cpp @@ -173,7 +173,7 @@ void TitleBar::shade() connect (m_control, SIGNAL (stopClicked()), parent(), SLOT (stop())); connect (m_control, SIGNAL (ejectClicked()), parent(), SLOT (addFile())); m_visual = new ShadedVisual(this); - //SoundCore::instance()->addVisualization(m_visual); + Visual::add(m_visual); m_visual->show(); m_visual->move(79,5); } @@ -184,7 +184,7 @@ void TitleBar::shade() m_shade2->deleteLater(); m_currentTime->deleteLater(); m_control->deleteLater(); - //SoundCore::instance()->removeVisual(m_visual); + Visual::remove(m_visual); m_visual->deleteLater(); m_shade2 = 0; m_currentTime = 0; @@ -209,25 +209,6 @@ QString TitleBar::formatTime ( int sec ) return str_minutes + ":" + str_seconds; } -//void TitleBar::setInfo(const OutputState &st) -//{ -/*if (!m_currentTime) - return;*/ -/*switch ( ( int ) st.type() ) -{ -case OutputState::Info: -{ - m_currentTime->display(formatTime(st.elapsedSeconds())); - break; -} -case OutputState::Stopped: -{ - m_currentTime->display("--:--"); - break; -} -}*/ -//} - void TitleBar::setTime(qint64 time) { if (!m_currentTime) diff --git a/src/ui/visualmenu.cpp b/src/ui/visualmenu.cpp index c0e0b2d2f..94a116057 100644 --- a/src/ui/visualmenu.cpp +++ b/src/ui/visualmenu.cpp @@ -30,7 +30,7 @@ VisualMenu::VisualMenu(QWidget *parent) : QMenu(tr("Visualization"), parent) { VisualFactory *factory = 0; - foreach(factory, *Visual::visualFactories()) + foreach(factory, *Visual::factories()) { QAction *act = this->addAction(factory->properties().name); act->setCheckable (TRUE); @@ -46,8 +46,8 @@ VisualMenu::~VisualMenu() void VisualMenu::updateActions() { - for(int i = 0; i < Visual::visualFactories()->size(); ++i) + for(int i = 0; i < Visual::factories()->size(); ++i) { - actions()[i]->setChecked(Visual::isEnabled(Visual::visualFactories()->at(i))); + actions()[i]->setChecked(Visual::isEnabled(Visual::factories()->at(i))); } } diff --git a/src/ui/visualmenu.h b/src/ui/visualmenu.h index 9202a8a7d..a4833974d 100644 --- a/src/ui/visualmenu.h +++ b/src/ui/visualmenu.h @@ -23,17 +23,18 @@ #include <QMenu> /** - @author Ilya Kotov <forkotov02@hotmail.ru> + @author Ilya Kotov <forkotov02@hotmail.ru> */ class VisualMenu : public QMenu { -Q_OBJECT + Q_OBJECT public: VisualMenu(QWidget *parent = 0); ~VisualMenu(); -void updateActions(); +public slots: + void updateActions(); }; |
