summaryrefslogtreecommitdiffstats
path: root/kmix/kmixdockwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmix/kmixdockwidget.cpp')
-rw-r--r--kmix/kmixdockwidget.cpp103
1 files changed, 72 insertions, 31 deletions
diff --git a/kmix/kmixdockwidget.cpp b/kmix/kmixdockwidget.cpp
index 1402191c..7b3ea1fa 100644
--- a/kmix/kmixdockwidget.cpp
+++ b/kmix/kmixdockwidget.cpp
@@ -22,17 +22,18 @@
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-#include <tdeaction.h>
-#include <tdelocale.h>
-#include <tdeapplication.h>
#include <kpanelapplet.h>
-#include <tdepopupmenu.h>
-#include <tdeglobalsettings.h>
#include <kdialog.h>
#include <kaudioplayer.h>
#include <kiconloader.h>
#include <kdebug.h>
+#include <khelpmenu.h>
#include <twin.h>
+#include <tdeaction.h>
+#include <tdeapplication.h>
+#include <tdelocale.h>
+#include <tdepopupmenu.h>
+#include <tdeglobalsettings.h>
#include <tqapplication.h>
#include <tqcursor.h>
@@ -45,7 +46,6 @@
#include "mixer.h"
#include "mixdevicewidget.h"
#include "kmixdockwidget.h"
-#include "twin.h"
#include "viewdockareapopup.h"
KMixDockWidget::KMixDockWidget( Mixer *mixer, TQWidget *parent, const char *name, bool volumePopup, bool dockIconMuting )
@@ -80,30 +80,53 @@ KMixDockWidget::~KMixDockWidget()
void KMixDockWidget::createActions()
{
- // Put "Mute" selector in context menu
- (void)new TDEToggleAction( i18n( "M&ute" ), 0, TQT_TQOBJECT(this), TQT_SLOT( dockMute() ),
- actionCollection(), "dock_mute" );
- TDEAction *a = actionCollection()->action( "dock_mute" );
- TDEPopupMenu *popupMenu = contextMenu();
- if ( a ) a->plug( popupMenu );
-
- // Put "Select Master Channel" dialog in context menu
- if ( m_mixer != 0 ) {
- (void)new TDEAction( i18n("Select Master Channel..."), 0, TQT_TQOBJECT(this), TQT_SLOT(selectMaster()),
- actionCollection(), "select_master");
- TDEAction *a2 = actionCollection()->action( "select_master" );
- if (a2) a2->plug( popupMenu );
- }
+ TDEPopupMenu *popupMenu = contextMenu();
- // Setup volume preview
- if ( _playBeepOnVolumeChange ) {
- _audioPlayer = new KAudioPlayer("KDE_Beep_Digital_1.ogg");
- }
-}
+ // Put "Mute" selector in context menu
+ (void)new TDEToggleAction(i18n("M&ute"), 0, TQT_TQOBJECT(this), TQT_SLOT(dockMute()),
+ actionCollection(), "dock_mute");
+ TDEAction *a = actionCollection()->action("dock_mute");
+ if (a)
+ {
+ a->plug(popupMenu);
+ }
+
+ // Put "Select Master Channel" dialog in context menu
+ if (m_mixer)
+ {
+ (void)new TDEAction(i18n("Select Master Channel..."), 0, TQT_TQOBJECT(this), TQT_SLOT(selectMaster()),
+ actionCollection(), "select_master");
+ a = actionCollection()->action("select_master");
+ if (a)
+ {
+ a->plug(popupMenu);
+ }
+ }
+ // Show/hide mixer window (use "minimizeRestore" action
+ a = actionCollection()->action("minimizeRestore");
+ if (a)
+ {
+ a->plug(popupMenu);
+ }
+
+ // Help and quit
+ popupMenu->insertSeparator();
+ popupMenu->insertItem(SmallIcon("help"), KStdGuiItem::help().text(), (new KHelpMenu(this, TDEGlobal::instance()->aboutData(), false))->menu(), false);
+ popupMenu->insertSeparator();
+ a = actionCollection()->action(KStdAction::name(KStdAction::Quit));
+ if (a)
+ {
+ a->plug(popupMenu);
+ }
+ // Setup volume preview
+ if (_playBeepOnVolumeChange)
+ {
+ _audioPlayer = new KAudioPlayer("KDE_Beep_Digital_1.ogg");
+ }
+}
-void
-KMixDockWidget::createMasterVolWidget()
+void KMixDockWidget::createMasterVolWidget()
{
// Reset flags, so that the dock icon will be reconstructed
_oldToolTipValue = -1;
@@ -117,6 +140,11 @@ KMixDockWidget::createMasterVolWidget()
return;
}
// create devices
+ if (_dockAreaPopup)
+ {
+ // Delete the old popup widget if we are changing the channel
+ deleteMasterVolWidget();
+ }
_dockAreaPopup = new ViewDockAreaPopup(0, "dockArea", m_mixer, 0, this);
_dockAreaPopup->createDeviceWidgets();
@@ -134,9 +162,22 @@ KMixDockWidget::createMasterVolWidget()
* Refreshing the Icon
*
*/
- // connect( m_mixer, TQT_SIGNAL(newVolumeLevels()), _dockAreaPopup, TQT_SLOT(refreshVolumeLevels()) );
- connect( m_mixer, TQT_SIGNAL(newVolumeLevels()), TQT_TQOBJECT(this), TQT_SLOT(setVolumeTip() ) );
- connect( m_mixer, TQT_SIGNAL(newVolumeLevels()), TQT_TQOBJECT(this), TQT_SLOT(slotUpdatePixmap() ) );
+ connect(m_mixer, TQT_SIGNAL(newVolumeLevels()), TQT_TQOBJECT(this), TQT_SLOT(setVolumeTip()));
+ connect(m_mixer, TQT_SIGNAL(newVolumeLevels()), TQT_TQOBJECT(this), TQT_SLOT(slotUpdatePixmap()));
+}
+
+void KMixDockWidget::deleteMasterVolWidget()
+{
+ if (_dockAreaPopup)
+ {
+ delete _dockAreaPopup;
+ _dockAreaPopup = NULL;
+ }
+ if (m_mixer)
+ {
+ disconnect(m_mixer, TQT_SIGNAL(newVolumeLevels()), TQT_TQOBJECT(this), TQT_SLOT(setVolumeTip()));
+ disconnect(m_mixer, TQT_SIGNAL(newVolumeLevels()), TQT_TQOBJECT(this), TQT_SLOT(slotUpdatePixmap()));
+ }
}
void KMixDockWidget::slotUpdatePixmap()
@@ -161,6 +202,7 @@ void KMixDockWidget::handleNewMaster(int soundcard_id, TQString& channel_id) //
kdError(67100) << "KMixDockWidget::createPage(): Invalid Mixer (soundcard_id=" << soundcard_id << ")" << endl;
return; // can not happen
}
+ deleteMasterVolWidget();
m_mixer = mixer;
Mixer::setMasterCard(mixer->id()); // We must save this information "somewhere".
Mixer::setMasterCardDevice( channel_id );
@@ -263,7 +305,6 @@ void KMixDockWidget::resizeEvent ( TQResizeEvent * )
void KMixDockWidget::showEvent ( TQShowEvent *se )
{
updatePixmap(true);
- KSystemTray::showEvent(se);
}
void