[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kmix/kmix-improvements] src/gui2: Add mute support
From:       Trever Fischer <tdfischer () fedoraproject ! org>
Date:       2012-09-25 0:36:28
Message-ID: 20120925003628.3B3C5A60A6 () git ! kde ! org
[Download RAW message or body]

Git commit 6abb46a368c3759f3de3f046b1c19d3d07f9da36 by Trever Fischer.
Committed on 25/09/2012 at 00:18.
Pushed by tdfischer into branch 'kmix-improvements'.

Add mute support

M  +29   -1    src/gui2/ControlSlider.cpp
M  +4    -0    src/gui2/ControlSlider.h

http://commits.kde.org/kmix/6abb46a368c3759f3de3f046b1c19d3d07f9da36

diff --git a/src/gui2/ControlSlider.cpp b/src/gui2/ControlSlider.cpp
index a532fe5..254f9cf 100644
--- a/src/gui2/ControlSlider.cpp
+++ b/src/gui2/ControlSlider.cpp
@@ -4,6 +4,7 @@
 #include <QtGui/QSlider>
 #include <QtCore/QSignalMapper>
 #include <KDE/KIcon>
+#include <QtGui/QPushButton>
 
 #include "control_interface.h"
 
@@ -40,10 +41,17 @@ ControlSlider::ControlSlider(org::kde::KMix::Control *control, QWidget *parent)
         m_sliders << slider;
         connect(slider, SIGNAL(valueChanged(int)), mapper, SLOT(map()));
     }
-    connect(control, SIGNAL(volumeChanged(int)), this, SLOT(volumeChange(int)));
+
+    m_mute = new QPushButton(this);
+    connect(m_mute, SIGNAL(clicked(bool)), this, SLOT(toggleMute()));
 
     layout->addWidget(labelContainer);
     layout->addWidget(sliderContainer);
+    layout->addWidget(m_mute);
+
+    updateMute();
+    connect(control, SIGNAL(volumeChanged(int)), this, SLOT(volumeChange(int)));
+    connect(control, SIGNAL(muteChanged(bool)), this, SLOT(updateMute()));
 }
 
 ControlSlider::~ControlSlider()
@@ -61,5 +69,25 @@ void ControlSlider::updateVolume(int channel)
     m_control->setVolume(channel, m_sliders[channel]->value());
 }
 
+void ControlSlider::updateMute()
+{
+    if (m_mute) {
+        KIcon icon;
+        if (m_control->mute()) {
+            icon = KIcon("audio-volume-muted");
+        } else {
+            icon = KIcon("audio-volume-high");
+        }
+        m_mute->setIcon(icon);
+    }
+}
+
+void ControlSlider::toggleMute()
+{
+    if (m_mute) {
+        m_control->setMute(!m_control->mute());
+    }
+}
+
 
 #include "ControlSlider.moc"
diff --git a/src/gui2/ControlSlider.h b/src/gui2/ControlSlider.h
index c5d5949..9d544d6 100644
--- a/src/gui2/ControlSlider.h
+++ b/src/gui2/ControlSlider.h
@@ -33,6 +33,7 @@ namespace org {
 }
 
 class QSlider;
+class QPushButton;
 
 class ControlSlider : public QWidget
 {
@@ -44,7 +45,10 @@ public:
 private slots:
     void volumeChange(int channel);
     void updateVolume(int channel);
+    void updateMute();
+    void toggleMute();
 private:
+    QPushButton *m_mute;
     org::kde::KMix::Control *m_control;
     QList<QSlider*> m_sliders;
 };

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic