aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-04-11 20:44:47 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-04-11 20:44:47 +0000
commit86ca407a01d6a79dc66a86f51328997803b87f43 (patch)
treea3d040bf7fd150df0faa29a830541d3892a49766 /src
parente77cfee0a11312973195d236a6635af7e3eaef81 (diff)
downloadqmmp-86ca407a01d6a79dc66a86f51328997803b87f43.tar.gz
qmmp-86ca407a01d6a79dc66a86f51328997803b87f43.tar.bz2
qmmp-86ca407a01d6a79dc66a86f51328997803b87f43.zip
disable visual plugin if it was closed by user
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@340 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/output.cpp14
-rw-r--r--src/qmmp/output.h5
-rw-r--r--src/qmmp/visual.cpp2
-rw-r--r--src/ui/mainwindow.cpp6
4 files changed, 21 insertions, 6 deletions
diff --git a/src/qmmp/output.cpp b/src/qmmp/output.cpp
index 7c64c66ef..a7ae2d8ed 100644
--- a/src/qmmp/output.cpp
+++ b/src/qmmp/output.cpp
@@ -152,7 +152,6 @@ void Output::error ( const QString &e )
emit stateChanged ( OutputState ( e ) );
}
-
void Output::addVisual ( Visual *v )
{
if (visuals.indexOf (v) == -1)
@@ -171,10 +170,21 @@ void Output::removeVisual (Visual *v)
{
VisualFactory *factory = m_vis_map.key(v);
m_vis_map.remove(factory);
- //Visual::setEnabled(factory, FALSE);
}
}
+void Output::processCloseEvent(Visual *v, QCloseEvent *event)
+{
+ if(event->spontaneous () && m_vis_map.key(v))
+ {
+ VisualFactory *factory = m_vis_map.key(v);
+ m_vis_map.remove(factory);
+ Visual::setEnabled(factory, FALSE);
+ dispatch(OutputState::VisualRemoved);
+ }
+ removeVisual (v);
+}
+
void Output::addVisual(VisualFactory *factory, QWidget *parent)
{
if (m_vis_map.value(factory))
diff --git a/src/qmmp/output.h b/src/qmmp/output.h
index f5ea1cf50..6bc3487b3 100644
--- a/src/qmmp/output.h
+++ b/src/qmmp/output.h
@@ -28,7 +28,7 @@ class OutputState
{
public:
- enum Type { Playing, Buffering, Info, Paused, Stopped, Volume, Error };
+ enum Type { Playing, Buffering, Info, Paused, Stopped, Volume, Error, VisualRemoved };
OutputState()
: m_type(Stopped), m_error_msg(0), m_elasped_seconds(0),
@@ -161,6 +161,7 @@ public:
void removeVisual(Visual*);
void addVisual(VisualFactory *factory, QWidget *parent);
void removeVisual(VisualFactory *factory);
+ void processCloseEvent(Visual *v, QCloseEvent *event);
// abstract
virtual bool isInitialized() const = 0;
@@ -173,7 +174,7 @@ public:
virtual long latency() = 0;
virtual void seek(long) = 0;
virtual void setVolume(int, int){};
- virtual void volume(int*, int*){};
+ virtual void volume(int *, int *){};
static void registerFactory(OutputFactory *);
static Output *create(QObject *);
diff --git a/src/qmmp/visual.cpp b/src/qmmp/visual.cpp
index cabf8f5bc..4347626de 100644
--- a/src/qmmp/visual.cpp
+++ b/src/qmmp/visual.cpp
@@ -147,6 +147,6 @@ bool Visual::isEnabled(VisualFactory* factory)
void Visual::closeEvent (QCloseEvent *event)
{
- m_output->removeVisual(this);
+ m_output->processCloseEvent(this, event);
QWidget::closeEvent(event);
}
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp
index d35499282..e177426f1 100644
--- a/src/ui/mainwindow.cpp
+++ b/src/ui/mainwindow.cpp
@@ -369,9 +369,13 @@ void MainWindow::showOutputState(const OutputState &st)
case OutputState::Volume:
{
m_generalHandler->setVolume(st.leftVolume(), st.rightVolume());
+ break;
+ }
+ case OutputState::VisualRemoved:
+ {
+ m_visMenu->updateActions();
}
}
-
}
void MainWindow::showDecoderState(const DecoderState &st)
{