--Boundary-00=_giNC9kOnRBmWXjX Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Content-Disposition: inline On Thursday 13 June 2002 02:41 am, Nadeem Hasan wrote: > Hi all, > > The following patch adds the mute option to the KMix tray icon context > menu, allowing a user to mute the master volume with ease. It also displays > a different icon and tooltip in the tray when muted to provide visual > feedback. The patch also adds a new image file which is attached too. Ok....found an unfinished thing with the earlier patch. Please use this one instead. I am not subscribed to kde-mm. Cheers, -- Nadeem Hasan nhasan@nadmm.com http://www.nadmm.com/ --Boundary-00=_giNC9kOnRBmWXjX Content-Type: text/x-diff; charset="iso-8859-1"; name=" " Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="kmix1.diff" ? .kmix.cpp.swp ? pics/.xvpics Index: kmix.cpp =================================================================== RCS file: /home/kde/kdemultimedia/kmix/kmix.cpp,v retrieving revision 1.122 diff -u -r1.122 kmix.cpp --- kmix.cpp 2002/05/21 21:54:03 1.122 +++ kmix.cpp 2002/06/13 06:53:06 @@ -141,9 +141,12 @@ KStdAction::quit( this, SLOT(quit()), actionCollection()); // settings menu - KAction *a = KStdAction::showMenubar( this, SLOT(toggleMenuBar()), actionCollection()); + KStdAction::showMenubar( this, SLOT(toggleMenuBar()), actionCollection()); KStdAction::preferences( this, SLOT(showSettings()), actionCollection()); + ( void ) new KToggleAction( i18n( "M&ute" ), 0, this, SLOT( dockMute() ), + actionCollection(), "dock_mute" ); + createGUI( "kmixui.rc" ); } @@ -211,7 +214,7 @@ // create dock widget m_dockWidget = new KMixDockWidget( m_mixers.first(), this ); - m_dockWidget->setPixmap( BarIcon("kmixdocked") ); + updateDockIcon(); // create RMB menu QPopupMenu *menu = m_dockWidget->contextMenu(); @@ -219,19 +222,48 @@ KAction *a = actionCollection()->action("options_configure"); if (a) a->plug( menu ); - menu->insertSeparator(); - a = actionCollection()->action("help_about_app"); if (a) a->plug( menu ); a = actionCollection()->action("help"); if (a) a->plug( menu ); + menu->insertSeparator(); + + a = actionCollection()->action( "dock_mute" ); + if ( a ) a->plug( menu ); + m_dockWidget->show(); } } +void KMixWindow::dockMute() +{ + Mixer *mixer = m_mixers.first(); + + MixDevice *masterDevice = ( *mixer )[ mixer->masterDevice() ]; + + masterDevice->setMuted( !masterDevice->isMuted() ); + mixer->writeVolumeToHW( masterDevice->num(), masterDevice->getVolume() ); + + updateDockIcon(); +} + +void KMixWindow::updateDockIcon() +{ + Mixer *mixer = m_mixers.first(); + + MixDevice *masterDevice = ( *mixer )[ mixer->masterDevice() ]; + // Required if muted from mixer widget + KToggleAction *a = static_cast + ( actionCollection()->action( "dock_mute" ) ); + if ( a ) a->setChecked( masterDevice->isMuted() ); + + m_dockWidget->updatePixmap(); + m_dockWidget->setVolumeTip( 0, masterDevice->getVolume() ); +} + void KMixWindow::saveConfig() { KConfig *config = kapp->config(); @@ -349,7 +381,9 @@ mw->setTicks( m_showTicks ); mw->setLabels( m_showLabels ); mw->show(); + connect( mw, SIGNAL(updateLayout()), this, SLOT(updateLayout()) ); + connect( mw, SIGNAL( masterMuted( bool ) ), SLOT( updateDockIcon() ) ); KAction *a = actionCollection()->action( "file_close_tab" ); if ( a ) a->setEnabled( m_visibleTabs>1 ); Index: kmix.h =================================================================== RCS file: /home/kde/kdemultimedia/kmix/kmix.h,v retrieving revision 1.53 diff -u -r1.53 kmix.h --- kmix.h 2002/05/18 11:50:17 1.53 +++ kmix.h 2002/06/13 06:53:06 @@ -91,6 +91,7 @@ void loadVolumes(); void saveVolumes(); virtual void applyPrefs( KMixPrefDlg *prefDlg ); + void updateDockIcon(); private: KAccel *m_keyAccel; @@ -120,6 +121,7 @@ void insertMixerWidget( KMixerWidget *mw ); void removeMixerWidget( KMixerWidget *mw ); void updateLayout(); + void dockMute(); void toggleVisibility(); }; Index: kmixdockwidget.cpp =================================================================== RCS file: /home/kde/kdemultimedia/kmix/kmixdockwidget.cpp,v retrieving revision 1.17 diff -u -r1.17 kmixdockwidget.cpp --- kmixdockwidget.cpp 2002/03/18 21:24:05 1.17 +++ kmixdockwidget.cpp 2002/06/13 06:53:06 @@ -75,8 +75,23 @@ void KMixDockWidget::setVolumeTip(int, Volume vol) { + MixDevice *masterDevice = ( *m_mixer )[ m_mixer->masterDevice() ]; + QString tip = i18n("Volume at %1%").arg(vol.getVolume(0)); + if ( masterDevice->isMuted() ) + tip += i18n( " (Muted)" ); + QToolTip::remove(this); - QToolTip::add(this, i18n("Volume at %1%").arg(vol.getVolume(0))); + QToolTip::add(this, tip); +} + +void KMixDockWidget::updatePixmap() +{ + MixDevice *masterDevice = ( *m_mixer )[ m_mixer->masterDevice() ]; + + if ( masterDevice->isMuted() ) + setPixmap( BarIcon( "kmixdocked_mute" ) ); + else + setPixmap( BarIcon( "kmixdocked" ) ); } void KMixDockWidget::mousePressEvent(QMouseEvent *me) @@ -131,8 +146,8 @@ QWidget::mouseReleaseEvent(me); // KSystemTray's shouldn't do the default action for this return; default: - masterVol->hide(); - KSystemTray::mouseReleaseEvent(me); + //masterVol->hide(); + //KSystemTray::mouseReleaseEvent(me); return; } } Index: kmixdockwidget.h =================================================================== RCS file: /home/kde/kdemultimedia/kmix/kmixdockwidget.h,v retrieving revision 1.5 diff -u -r1.5 kmixdockwidget.h --- kmixdockwidget.h 2001/08/11 21:08:17 1.5 +++ kmixdockwidget.h 2002/06/13 06:53:06 @@ -37,7 +37,9 @@ KMixDockWidget(Mixer *, QWidget *parent=0, const char *name=0); ~KMixDockWidget(); - protected slots: + void updatePixmap(); + + public slots: void setVolumeTip(int, Volume); protected: Index: kmixerwidget.cpp =================================================================== RCS file: /home/kde/kdemultimedia/kmix/kmixerwidget.cpp,v retrieving revision 1.24 diff -u -r1.24 kmixerwidget.cpp --- kmixerwidget.cpp 2002/05/19 09:50:04 1.24 +++ kmixerwidget.cpp 2002/06/13 06:53:07 @@ -119,6 +119,9 @@ new MixDeviceWidget( m_mixer, mixDevice, !m_small, !m_small, m_small, m_direction, this, mixDevice->name().latin1() ); + connect( mdw, SIGNAL( masterMuted( bool ) ), + SIGNAL( masterMuted( bool ) ) ); + connect( mdw, SIGNAL(updateLayout()), this, SLOT(updateSize())); m_devLayout->addWidget( mdw, 0 ); Index: kmixerwidget.h =================================================================== RCS file: /home/kde/kdemultimedia/kmix/kmixerwidget.h,v retrieving revision 1.8 diff -u -r1.8 kmixerwidget.h --- kmixerwidget.h 2001/10/25 22:47:25 1.8 +++ kmixerwidget.h 2002/06/13 06:53:07 @@ -63,6 +63,7 @@ signals: void updateLayout(); + void masterMuted( bool ); public slots: void setTicks( bool on ); Index: mixdevicewidget.cpp =================================================================== RCS file: /home/kde/kdemultimedia/kmix/mixdevicewidget.cpp,v retrieving revision 1.29 diff -u -r1.29 mixdevicewidget.cpp --- mixdevicewidget.cpp 2002/05/10 05:52:58 1.29 +++ mixdevicewidget.cpp 2002/06/13 06:53:07 @@ -310,6 +310,9 @@ m_mixdevice->setMuted( value ); update(); emit newVolume( m_mixdevice->num(), m_mixdevice->getVolume() ); + + if ( m_mixdevice->num()==m_mixer->masterDevice() ) + emit masterMuted( value ); } void MixDeviceWidget::toggleMuted() Index: mixdevicewidget.h =================================================================== RCS file: /home/kde/kdemultimedia/kmix/mixdevicewidget.h,v retrieving revision 1.7 diff -u -r1.7 mixdevicewidget.h --- mixdevicewidget.h 2001/10/25 22:47:25 1.7 +++ mixdevicewidget.h 2002/06/13 06:53:07 @@ -83,6 +83,7 @@ void defineKeys(); signals: void newVolume( int num, Volume volume ); + void masterMuted( bool ); void newRecsrc( int num, bool on ); void updateLayout(); void rightMouseClick(); Index: pics/Makefile.am =================================================================== RCS file: /home/kde/kdemultimedia/kmix/pics/Makefile.am,v retrieving revision 1.14 diff -u -r1.14 Makefile.am --- pics/Makefile.am 2001/05/13 02:12:24 1.14 +++ pics/Makefile.am 2002/06/13 06:53:07 @@ -2,7 +2,8 @@ picsdir = $(kde_datadir)/kmix/pics pics_DATA = mix_audio.png mix_bass.png mix_cd.png mix_ext.png \ mix_microphone.png mix_midi.png mix_recmon.png mix_treble.png \ - mix_unknown.png mix_volume.png mix_surround.png mix_video.png kmixdocked.png + mix_unknown.png mix_volume.png mix_surround.png mix_video.png \ + kmixdocked.png kmixdocked_mute.png EXTRA_DIST = $(pics_DATA) Index: pics/kmixdocked_mute.png =================================================================== RCS file: kmixdocked_mute.png diff -N kmixdocked_mute.png Binary files /dev/null and kmixdocked_mute.png differ --Boundary-00=_giNC9kOnRBmWXjX Content-Type: image/png; name="kmixdocked_mute.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kmixdocked_mute.png" iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI WXMAAAuHAAALhwGTQIdTAAAAB3RJTUUH0gYNAyszJe4Y3wAABAlJREFUeJyVlW1IW1cYx/83uefe m9w4Y6ZD1FSGRStaRZmgHyxjKhsbZejabhZhUnDOUbtS6aBdwQ9jtKhQars4cMqEQcsKY3MvdZtC ZaM62Eg3dNnq6PRmqYkvMTUxucnNvWcfNm9jvN3L8+me//mf33nOPYfnYQBQ/BUM/iXO9fUVaTw/ ZLbZ6qiqymo4fPV8T8+JNBvdhtEU8aHw030X281O52h+3j6GxDZBBCuibAKS+wdvf3fXnlRoKugf 4Sff6m80FZV8Vb23lLl24Qw0OQq73Y66g0dgKdsP9+QNzzunjpemMkwGsNRNAAAryLj6eGEZ43rj VQS8S1AUBclkEvPTE9CWlpAOBQBTupAOz2l+TapufDZ7bnIcqz4JlFJomgZN06CqKl45+BSMGKng XXD2uVNy8dMvOQvynfj6g3dRUlKCjo4OVFVVAQCGh4d18wuXbuDlc31F6acFAOS1dDQyVc9rf2dM AdD+uRjtGfmU1tTU0EAgQFVVpZRSusNz2UXbRr6lrWcHBg0z3jJnjorPHGXKr/+qa6fLLfjNPYuu ri7YbDZomgaGeXCw3t5eQN4CzyQhq6g1BBfuqy3oOtyMtqpiuHwP7vCTK2+jqakJ8XgchBBdn5mZ AcuyYFkWmVYWwSRfugt8+OzF9ty8bCY/i0CWk/CtxvGmO6pDnE4nHA6HPg6FQnA4HCCEgBACGgkh oaj6PLv9EdjcyF9ZlPDj7z5olAKUwmwy4cQ3axisz95xF16vF5FIBBzHgRACjuOgaQnISQOwbyOI QGAe390tgMMqgmcJBEKAR3ZCASAYDMJkMkFRFAiCAI7joMpAIpnYDd5MRH1RfwB3A16sZ9jBmgky LTZ83rx/F7iyshJTU1OIxWIQBAE8z0NOcIgrmu7R//Hq9dH36YpE6b1F3F/xYX0ziJ+PHdCNLpcL Y2Nj+rihoQHhcBiCIEAQBKzAAtkIDACCYP5Dnb8N+CXIZ9p0vf3KNfj9fkiShIGBAV1vbW2FxWIB z/OY826AMDGPITgrK+OY+oubyu9d0DXnyCwkMReiKGJhYQEejwednZ36fEtLCyLEBn8gCM1MZw3B 925+OUn9i/rrZ4ur48vTE7hFcmDNfgwVFRWw2+0oLy/H+Pi4vu5I0wHE/MvQaPLStpZeIneVT8sT T0pKU7fzUJkdh4QN/d1yHAee51FfX4/0NekZG9bk2Pc39zA/Ta19dieELSEToijCZrNBFEVYrVYc /8JtmJgJwKMPg25HbrZYu3Vrmp73cQhzog79aN2EoYnbEFte96TY/19ryjl6sn1tWRnli4qZvSWF uB+KwHdnCXzc742NXzZsTf+5mTpf7C7aVJih6FayjuWwYbWwH69/OGjYTP8EHJOdbraQ5FkAAAAA SUVORK5CYII= --Boundary-00=_giNC9kOnRBmWXjX-- _______________________________________________ kde-multimedia mailing list kde-multimedia@mail.kde.org http://mail.kde.org/mailman/listinfo/kde-multimedia