diff options
Diffstat (limited to 'kmix')
-rw-r--r-- | kmix/CMakeL10n.txt | 6 | ||||
-rw-r--r-- | kmix/CMakeLists.txt | 33 | ||||
-rw-r--r-- | kmix/kmix.cpp | 22 | ||||
-rw-r--r-- | kmix/kmix.desktop | 83 | ||||
-rw-r--r-- | kmix/kmixapplet.cpp | 6 | ||||
-rw-r--r-- | kmix/kmixapplet.desktop | 102 | ||||
-rw-r--r-- | kmix/kmixctrl_restore.desktop | 66 | ||||
-rw-r--r-- | kmix/kmixdockwidget.cpp | 103 | ||||
-rw-r--r-- | kmix/kmixdockwidget.h | 9 | ||||
-rw-r--r-- | kmix/ksmallslider.cpp | 8 | ||||
-rw-r--r-- | kmix/ksmallslider.h | 1 | ||||
-rw-r--r-- | kmix/mdwenum.h | 1 | ||||
-rw-r--r-- | kmix/mdwslider.h | 1 | ||||
-rw-r--r-- | kmix/mdwswitch.h | 1 | ||||
-rw-r--r-- | kmix/mixdevicewidget.h | 1 | ||||
-rw-r--r-- | kmix/mixer.cpp | 83 | ||||
-rw-r--r-- | kmix/mixer.h | 3 | ||||
-rw-r--r-- | kmix/mixer_alsa9.cpp | 109 | ||||
-rw-r--r-- | kmix/mixer_backend.h | 1 | ||||
-rw-r--r-- | kmix/mixer_oss.h | 2 | ||||
-rw-r--r-- | kmix/mixer_oss4.h | 2 | ||||
-rw-r--r-- | kmix/mixertoolbox.cpp | 20 | ||||
-rw-r--r-- | kmix/restore_kmix_volumes.desktop | 51 | ||||
-rw-r--r-- | kmix/viewbase.cpp | 41 | ||||
-rw-r--r-- | kmix/viewbase.h | 2 | ||||
-rw-r--r-- | kmix/viewdockareapopup.cpp | 8 | ||||
-rw-r--r-- | kmix/volume.h | 1 |
27 files changed, 279 insertions, 487 deletions
diff --git a/kmix/CMakeL10n.txt b/kmix/CMakeL10n.txt index eae68bc2..b0e05b53 100644 --- a/kmix/CMakeL10n.txt +++ b/kmix/CMakeL10n.txt @@ -1,3 +1,9 @@ ##### create translation templates ############## tde_l10n_create_template( "kmix" ) + +tde_l10n_create_template( + CATALOG "desktop_files/kmix-desktops/" + SOURCES *.desktop + DESTINATION "${CMAKE_SOURCE_DIR}/translations" +) diff --git a/kmix/CMakeLists.txt b/kmix/CMakeLists.txt index 08006206..139b2535 100644 --- a/kmix/CMakeLists.txt +++ b/kmix/CMakeLists.txt @@ -25,12 +25,35 @@ link_directories( ##### other data ################################ -install( FILES kmix.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) -install( FILES kmix.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} ) +tde_create_translated_desktop( + SOURCE kmix.desktop + PO_DIR kmix-desktops +) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/kmix.desktop + DESTINATION ${AUTOSTART_INSTALL_DIR} +) + install( FILES kmixui.rc DESTINATION ${DATA_INSTALL_DIR}/kmix ) -install( FILES restore_kmix_volumes.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} ) -install( FILES kmixapplet.desktop DESTINATION ${DATA_INSTALL_DIR}/kicker/applets ) -install( FILES kmixctrl_restore.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) + +tde_create_translated_desktop( + SOURCE restore_kmix_volumes.desktop + DESTINATION ${AUTOSTART_INSTALL_DIR} + PO_DIR kmix-desktops +) + +tde_create_translated_desktop( + SOURCE kmixapplet.desktop + DESTINATION ${DATA_INSTALL_DIR}/kicker/applets + PO_DIR kmix-desktops +) + +tde_create_translated_desktop( + SOURCE kmixctrl_restore.desktop + DESTINATION ${SERVICES_INSTALL_DIR} + PO_DIR kmix-desktops +) ##### kmix_panelapplet (module) ################# diff --git a/kmix/kmix.cpp b/kmix/kmix.cpp index fc33d671..66a7692e 100644 --- a/kmix/kmix.cpp +++ b/kmix/kmix.cpp @@ -46,7 +46,6 @@ #include <tdeaccel.h> #include <kglobalaccel.h> #include <kkeydialog.h> -#include <tdepopupmenu.h> // application specific includes #include "mixertoolbox.h" @@ -119,7 +118,7 @@ KMixWindow::initActions() (void) new TDEAction( i18n( "Hardware &Information" ), 0, TQT_TQOBJECT(this), TQT_SLOT( slotHWInfo() ), actionCollection(), "hwinfo" ); (void) new TDEAction( i18n( "Hide Mixer Window" ), Key_Escape, TQT_TQOBJECT(this), TQT_SLOT(hide()), actionCollection(), "hide_kmixwindow" ); - m_globalAccel = new TDEGlobalAccel( TQT_TQOBJECT(this) ); + m_globalAccel = new TDEGlobalAccel(this, "KMix"); m_globalAccel->insert( "Increase volume", i18n( "Increase Volume of Master Channel"), TQString(), TDEShortcut(TQString("XF86AudioRaiseVolume")), TDEShortcut(TQString("XF86AudioRaiseVolume")), TQT_TQOBJECT(this), TQT_SLOT( increaseVolume() ) ); m_globalAccel->insert( "Decrease volume", i18n( "Decrease Volume of Master Channel"), TQString(), @@ -194,27 +193,8 @@ KMixWindow::updateDocking() if (m_showDockWidget) { - // create dock widget - // !! This should be a View in the future m_dockWidget = new KMixDockWidget( Mixer::mixers().first(), this, "mainDockWidget", m_volumeWidget, m_dockIconMuting ); - -/* Belongs in KMixDockWidget - // create RMB menu - TDEPopupMenu *menu = m_dockWidget->contextMenu(); - - // !! check this - TDEAction *a = actionCollection()->action( "dock_mute" ); - if ( a ) a->plug( menu ); -*/ - - /* - * Mail from 31.1.2005: "make sure your features are at least string complete" - * Preparation for fixing Bug #55078 - scheduled for KDE3.4.1 . - * This text will be plugged into the dock-icon popup menu. - */ - TQString selectChannel = i18n("Select Channel"); // This text will be used in KDE3.4.1 !!! - m_dockWidget->show(); } } diff --git a/kmix/kmix.desktop b/kmix/kmix.desktop index 7b5a68af..c2d55119 100644 --- a/kmix/kmix.desktop +++ b/kmix/kmix.desktop @@ -7,86 +7,11 @@ Type=Application MimeType= Terminal=false Icon=kmix -GenericName=Sound Mixer -GenericName[af]=Klank Menger -GenericName[ar]=مازج الصوت -GenericName[bg]=Аудио миксер -GenericName[br]=Mesker ar Son -GenericName[bs]=Zvučni mikser -GenericName[ca]=Mesclador de so -GenericName[cs]=Zvukový směšovač -GenericName[cy]=Cymysgydd Sŵn -GenericName[da]=Lydmikser -GenericName[de]=Lautstärkeregler -GenericName[el]=Μείκτης ήχου -GenericName[eo]=Sonormiksilo -GenericName[es]=Un mezclador audio -GenericName[et]=Helimikser -GenericName[eu]=Soinu nahasgailua -GenericName[fa]=مخلوطکن صدا -GenericName[fi]=Äänimikseri -GenericName[fr]=Console de mixage -GenericName[ga]=Meascthóir Fuaime -GenericName[gl]=Mesturador de Son -GenericName[he]=מערבל צליל -GenericName[hi]=ध्वनि मिक्सर -GenericName[hr]=Mikser zvuka -GenericName[hu]=Hangkeverő -GenericName[is]=Hljóðblöndun -GenericName[it]=Mixer audio -GenericName[ja]=サウンドミキサー -GenericName[kk]=Дыбыс микшері -GenericName[km]=កម្មវិធីលាយសំឡេង -GenericName[ko]=소리 믹서 -GenericName[lt]=Garsų maišiklis -GenericName[lv]=Skaņas Mikšeris -GenericName[mk]=Миксета за звук -GenericName[ms]=Pengadun Bunyi -GenericName[nb]=Lydmikser -GenericName[nds]=Klangmischer -GenericName[ne]=ध्वनि मिक्सर -GenericName[nl]=Geluidsmixer -GenericName[nn]=Lydmiksar -GenericName[pa]=ਧੁਨੀ ਮਿਕਸਰ -GenericName[pl]=Ustawienia głośności -GenericName[pt]=Mesa de Mistura de Áudio -GenericName[pt_BR]=Mixagem de som -GenericName[ro]=Mixer de sunet -GenericName[ru]=Звуковой микшер -GenericName[se]=Jietnamixer -GenericName[sk]=Zvukový mixér -GenericName[sl]=Mešalnik zvoka -GenericName[sr]=Звучна миксета -GenericName[sr@Latn]=Zvučna mikseta -GenericName[sv]=Ljudmixer -GenericName[ta]=ஒலி ஒன்றுசேர்ப்பான் -GenericName[tg]=Омехтакунаки Овоз -GenericName[th]=โปรแกรมผสมเสียง -GenericName[tr]=Ses Denetimleri -GenericName[uk]=Аудіомікшер -GenericName[uz]=Audio mikser -GenericName[uz@cyrillic]=Аудио миксер -GenericName[ven]=Tshitanganisi tsha mubvumo -GenericName[wa]=Maxheu d' sons -GenericName[xh]=Umxubi WokuvakalayoU -GenericName[zh_CN]=混音器 -GenericName[zh_HK]=聲音混音器 -GenericName[zh_TW]=音效混音器 -GenericName[zu]=Umxubi Womsindo + Name=KMix -Name[af]=Kmix -Name[bn]=কে-মিক্স -Name[ca]=Kmix -Name[eo]=Miksilo -Name[hi]=के-मिक्स -Name[lv]=KMiks -Name[ne]=केडीई मिक्स -Name[pa]=ਕੇ-ਮਿਕਸ -Name[sv]=Kmix -Name[ta]=கேமிக்ஸ் -Name[tg]=KОмезиш -Name[ven]=U tanganisa ha K -Name[zh_TW]=KMix 混音器 + +GenericName=Sound Mixer + X-TDE-StartupNotify=true X-DCOP-ServiceType=Unique X-TDE-autostart-phase=2 diff --git a/kmix/kmixapplet.cpp b/kmix/kmixapplet.cpp index 23c3768f..0bcdd3f2 100644 --- a/kmix/kmixapplet.cpp +++ b/kmix/kmixapplet.cpp @@ -32,7 +32,7 @@ #include <tqpushbutton.h> #include <tqradiobutton.h> #include <tqwmatrix.h> - +#include <tqtooltip.h> // KDE #include <tdeaboutapplication.h> @@ -206,6 +206,7 @@ KMixApplet::KMixApplet( const TQString& configFile, Type t, // We do NOT know which mixer to use => ask the User m_errorLabel = new TQPushButton( i18n("Select Mixer"), this ); m_errorLabel->setGeometry(0, 0, m_errorLabel->sizeHint().width(), m_errorLabel->sizeHint().height() ); + TQToolTip::add(m_errorLabel, "Select one of the available mixers"); resize( m_errorLabel->sizeHint() ); connect( m_errorLabel, TQT_SIGNAL(clicked()), this, TQT_SLOT(selectMixer()) ); } @@ -287,6 +288,7 @@ void KMixApplet::loadConfig( TDEConfig *config, const TQString &grp ) if ( m_mixerWidget ) { //config->setGroup( grp ); KMixToolBox::loadConfig(m_mixerWidget->_mdws, config, grp, "PanelApplet" ); + connect(m_mixerWidget, TQT_SIGNAL(selectMixer()), this, TQT_SLOT(selectMixer())); } } @@ -322,7 +324,7 @@ void KMixApplet::selectMixer() bool ok = FALSE; TQString res = KInputDialog::getItem( i18n("Mixers"), i18n("Available mixers:"), - lst, 1, FALSE, &ok, this ); + lst, 0, FALSE, &ok, this ); if ( ok ) { Mixer *mixer = Mixer::mixers().at( lst.findIndex( res ) ); diff --git a/kmix/kmixapplet.desktop b/kmix/kmixapplet.desktop index ea61a672..179517dc 100644 --- a/kmix/kmixapplet.desktop +++ b/kmix/kmixapplet.desktop @@ -1,110 +1,8 @@ [Desktop Entry] Type=Plugin Name=Sound Mixer -Name[bg]=Аудио миксер -Name[br]=Mesker ar Son -Name[bs]=Zvučni mikser -Name[ca]=Mesclador de so -Name[cs]=Zvukový směšovač -Name[cy]=Cymysgydd Sŵn -Name[da]=Lydmikser -Name[de]=Lautstärkeregler -Name[el]=Μείκτης ήχου -Name[eo]=Sonmiksilo -Name[es]=Mezclador de audio -Name[et]=Helimikser -Name[eu]=Soinu nahasgailua -Name[fa]=مخلوطکن صدا -Name[fi]=Äänimikseri -Name[fr]=Console de mixage -Name[ga]=Meascthóir Fuaime -Name[gl]=Mesturador de Son -Name[he]=מערבל צליל -Name[hi]=ध्वनि मिक्सर -Name[hr]=Mixer zvuka -Name[hu]=Hangkeverő -Name[is]=Hljóðblöndun -Name[it]=Mixer sonoro -Name[ja]=サウンドミキサー -Name[kk]=Дыбыс микшері -Name[km]=កម្មវិធីលាយសំឡេង -Name[ko]=소리 믹서 -Name[mk]=Миксета за звук -Name[ms]=Pengadun Bunyi -Name[nb]=Lydmikser -Name[nds]=Klangmischer -Name[ne]=ध्वनि मिक्सर -Name[nl]=Geluidsmixer -Name[nn]=Lydmiksar -Name[pa]=ਸਾਊਂਡ ਮਿਕਸਰ -Name[pl]=Mikser dźwięku -Name[pt]=Mistura de Áudio -Name[pt_BR]=Mixagem de som -Name[ro]=Mixer de sunet -Name[ru]=Микшер -Name[sk]=Zvukový mixér -Name[sl]=Mešalnik zvoka -Name[sr]=Звучна миксета -Name[sr@Latn]=Zvučna mikseta -Name[sv]=Ljudmixer -Name[ta]=ஒலிக் ஒன்றுசேர்ப்பான் -Name[tg]=Омехтакунаки Овоз -Name[th]=ปรับแต่งผสมเสียง -Name[tr]=Ses Karıştırıcı -Name[uk]=Аудіомікшер -Name[uz]=Audio mikser -Name[uz@cyrillic]=Аудио миксер -Name[wa]=Maxheu d' sons -Name[zh_CN]=混音器 -Name[zh_HK]=聲音混音器 -Name[zh_TW]=音效混音器 Comment=Volume and sound channel mixer control -Comment[bg]=Управление на силата на звука и каналите -Comment[br]=Renadur meskañ kanol ha nerzh -Comment[bs]=Kontrola miksera kanala glasnoće i zvuka -Comment[ca]=Control i mesclador de volum i canals de so -Comment[cs]=Ovládání hlasitosti a zvukových kanálů -Comment[da]=Mikserkontrol for lydstyrke og lydkanal -Comment[de]=Kontrolle der Lautstärke -Comment[el]=Στοιχείο μείκτη ήχων και έντασης καναλιών -Comment[eo]=Stirado de volumo kaj sonkanalmiksilo -Comment[es]=Control del volumen y los canales de sonido del mezclador -Comment[et]=Helitugevuse ja helikanalite seadistamine -Comment[eu]=Bolumena eta soinu-kanalen nahasketarako kontrola -Comment[fa]=کنترل مخلوطکن مجرای صدا و حجم صدا -Comment[fi]=Äänenvoimakkuuden ja äänikanavien mikserin hallinta -Comment[fr]=Contrôle du volume et des canaux de la console de mixage -Comment[gl]=Control do volume e da canle de son do mesturador -Comment[he]=שינוי הגדרות עוצמת קול של כרטיס הקול -Comment[hu]=Hangerőbeállító és keverő -Comment[is]=Stjórnun á styrk og hljóðrása blöndun -Comment[it]=Controllo del volume e del mixer sonoro -Comment[ja]=ボリュームおよびサウンドチャンネルミキサー制御 -Comment[kk]=Дыбыс үнділігі мен арналарды басқару -Comment[km]=ឧបករណ៍លាយឆានែលកម្រិតសំឡេង និងសំឡេង -Comment[ko]=음량과 사운드 채널 믹서 조정 -Comment[lt]=Garso ir garso kanalų maišyklės valdymas -Comment[nb]=Miksekontroll for lydnivået og lydkanalene -Comment[nds]=Kuntrull för den Luutstärk- un Klangkanaalmischer -Comment[ne]=भोल्युम र ध्वनि च्यानल मिक्सर नियन्त्रण -Comment[nl]=Bedieningspaneel voor het regelen van het volume en de geluidskanalen -Comment[nn]=Lydstyrke- og kanalmiksarkontroll -Comment[pl]=Sterowanie mikserem dźwięku i kanałów -Comment[pt]=Controlo de volume e canais de som -Comment[pt_BR]=Controle de volume e mixer de canais de som -Comment[ru]=Управление громкостью и звуковыми каналами -Comment[sk]=Riadenie hlasitosti a zvukového kanálu mixéru -Comment[sl]=Nadzor glasnosti in mešalnik zvočnih kanalov -Comment[sr]=Контрола јачине и миксета звучних канала -Comment[sr@Latn]=Kontrola jačine i mikseta zvučnih kanala -Comment[sv]=Volymkontroll och ljudkanalmixer -Comment[th]=โปรแกรมควบคุมช่องเสียงและระดับเสียง -Comment[tr]=Ses düzeyi ve ses kanalı karıştırıcısını kontrol edin -Comment[uk]=Керування гучністю і міксером звукових каналів -Comment[zh_CN]=音量和声道混音器控制 -Comment[zh_HK]=音量與聲道混音控制器 -Comment[zh_TW]=音量與聲道混音器控制 Icon=kmix X-TDE-Library=kmix_panelapplet diff --git a/kmix/kmixctrl_restore.desktop b/kmix/kmixctrl_restore.desktop index 52e25fc8..6469cefe 100644 --- a/kmix/kmixctrl_restore.desktop +++ b/kmix/kmixctrl_restore.desktop @@ -1,70 +1,4 @@ [Desktop Entry] Type=Service Name=Restore Mixer Settings -Name[af]=Herstel Menger Instellings -Name[az]=Qarışdırıcı Qurğularını Yenidən Yükle -Name[bg]=Възстановяване на настройките на миксера -Name[bn]=মিক্সার সেটিংস পুনঃস্থাপন করে -Name[br]=Assav kefluniadur ar mesker -Name[bs]=Vrati postavke miksera -Name[ca]=Restaura l'arranjament del mesclador -Name[cs]=Obnovit nastavení směšovače -Name[cy]=Adfer Gosodiadau Cymysgydd -Name[da]=Genopret mikseropsætning -Name[de]=Lautstärkeeinstellungen wiederherstellen -Name[el]=Αποκατάσταση ρυθμίσεων μείκτη -Name[eo]=Restarigu Miksilagordon -Name[es]=Restaurar opciones del mezclador -Name[et]=Mikseri seadistuste taastamine -Name[eu]=Nahasgailuaren ezarpenak berreskuratu -Name[fa]=بازگردانی تنظیمات مخلوطکن -Name[fi]=Palauta mikserin asetukset -Name[fr]=Restaurer la configuration du mixage -Name[gl]=Restaura-los Parámetros do Mesturador -Name[he]=שיחזור הגדרות המערבל -Name[hi]=मिक्सर विन्यास बहाल करें -Name[hr]=Vrati postavke miksera -Name[hu]=A hangkeverő beállításainak visszatöltése -Name[id]=Kembalikan seting Mixer -Name[is]=Sækja aftur stillingar hljóðrása -Name[it]=Ripristina le impostazioni del mixer -Name[ja]=ミキサーの設定を復元 -Name[kk]=Микшер баптауларын қалпына келтіру -Name[km]=ស្ដារការកំណត់ឧបករណ៍លាយឡើងវិញ -Name[ko]=믹서 설정 복원 -Name[lt]=Gražinti mikšerio parametrus -Name[lv]=Atjauno Miksera Uzstādījumus -Name[mk]=Враќање на поставувањата на миксетата -Name[ms]=Pulihkan Tetapan Pengadun -Name[mt]=Reġġa' lura setings tal-Mixer -Name[nb]=Gjennopprett mikserinnstillinger -Name[nds]=Mischerinstellen wedderherstellen -Name[ne]=मिक्सर सेटिङ पूर्वावस्थामा ल्याउनुहोस् -Name[nl]=Mixerinstellingen herstellen -Name[nn]=Gjenopprett miksarinnstillingar -Name[pl]=Odtwarzanie ustawień miksera -Name[pt]=Repor a Configuração do Volume -Name[pt_BR]=Restaurar preferências do mixer -Name[ro]=Reface setările mixerului -Name[ru]=Восстанавливает настройки микшера -Name[se]=Máhcat mixerheivehusat -Name[sk]=Obnov Nastavenia Mixéra -Name[sl]=Obnovi nastavitve mešalnika -Name[sr]=Поврати поставке миксете -Name[sr@Latn]=Povrati postavke miksete -Name[sv]=Återställ mixerinställningar -Name[ta]=ஒன்றுசேர்க்கும் அமைப்புகளை மீட்கவும் -Name[tg]=Аз нав захиракунии Гузоришҳои Омехтакунак -Name[th]=เรียกคืนค่าที่ตั้งไว้ของมิกเซอร์ -Name[tr]=Karıştırıcı Ayarlarını Yeniden Yükle -Name[uk]=Відновити параметри мікшера -Name[uz]=Mikserning moslamalarini qayta tiklash -Name[uz@cyrillic]=Миксернинг мосламаларини қайта тиклаш -Name[ven]=Vhuedzedzani vhuvha ha tshitanganisi -Name[wa]=Rimete come divant les apontiaedjes d maxheu d' sons -Name[xh]=Gcina kwakhona izicwangciso zoMxubi -Name[zh_CN]=恢复混音器设置 -Name[zh_HK]=回復混音器設置 -Name[zh_TW]=回復混音器設定 -Name[zu]=Gcina futhi izilungiso zoMxubi Exec=kmixctrl --restore 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 diff --git a/kmix/kmixdockwidget.h b/kmix/kmixdockwidget.h index 0899d28f..79a734c0 100644 --- a/kmix/kmixdockwidget.h +++ b/kmix/kmixdockwidget.h @@ -30,7 +30,7 @@ class TQString; #include <ksystemtray.h> -class Mixer; +class DialogSelectMaster; class KAudioPlayer; class MixDeviceWidget; class Mixer; @@ -62,14 +62,15 @@ class KMixDockWidget : public KSystemTray { protected: void createMasterVolWidget(); + void deleteMasterVolWidget(); void createActions(); void mousePressEvent(TQMouseEvent *); void mouseReleaseEvent(TQMouseEvent *); void wheelEvent(TQWheelEvent *); - void contextMenuAboutToShow( TDEPopupMenu* menu ); + void contextMenuAboutToShow(TDEPopupMenu *menu); void toggleMinimizeRestore(); - void resizeEvent ( TQResizeEvent * ); - void showEvent ( TQShowEvent * ); + void resizeEvent(TQResizeEvent *); + void showEvent(TQShowEvent *); private: bool _playBeepOnVolumeChange; diff --git a/kmix/ksmallslider.cpp b/kmix/ksmallslider.cpp index c976d3cb..5a67a8b6 100644 --- a/kmix/ksmallslider.cpp +++ b/kmix/ksmallslider.cpp @@ -165,7 +165,7 @@ void gradient( TQPainter &p, bool hor, const TQRect &rect, const TQColor &ca, co int rDiff, gDiff, bDiff; int rca, gca, bca, rcb, gcb, bcb; - register int x, y; + int x, y; if ((rect.width()<=0) || (rect.height()<=0)) return; @@ -173,9 +173,9 @@ void gradient( TQPainter &p, bool hor, const TQRect &rect, const TQColor &ca, co gDiff = (gcb = cb.green()) - (gca = ca.green()); bDiff = (bcb = cb.blue()) - (bca = ca.blue()); - register int rl = rca << 16; - register int gl = gca << 16; - register int bl = bca << 16; + int rl = rca << 16; + int gl = gca << 16; + int bl = bca << 16; int rcdelta = ((1<<16) / ((!hor) ? rect.height() : rect.width())) * rDiff; int gcdelta = ((1<<16) / ((!hor) ? rect.height() : rect.width())) * gDiff; diff --git a/kmix/ksmallslider.h b/kmix/ksmallslider.h index 16b11b70..e2949ab3 100644 --- a/kmix/ksmallslider.h +++ b/kmix/ksmallslider.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * diff --git a/kmix/mdwenum.h b/kmix/mdwenum.h index 30e3b1a4..34018729 100644 --- a/kmix/mdwenum.h +++ b/kmix/mdwenum.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * diff --git a/kmix/mdwslider.h b/kmix/mdwslider.h index 72b9546c..374cc28e 100644 --- a/kmix/mdwslider.h +++ b/kmix/mdwslider.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * diff --git a/kmix/mdwswitch.h b/kmix/mdwswitch.h index e7759546..1a4f4cf9 100644 --- a/kmix/mdwswitch.h +++ b/kmix/mdwswitch.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * diff --git a/kmix/mixdevicewidget.h b/kmix/mixdevicewidget.h index 676199e1..1ee0d8d3 100644 --- a/kmix/mixdevicewidget.h +++ b/kmix/mixdevicewidget.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * diff --git a/kmix/mixer.cpp b/kmix/mixer.cpp index ba3bfee8..f2f3d188 100644 --- a/kmix/mixer.cpp +++ b/kmix/mixer.cpp @@ -372,7 +372,7 @@ TQString& Mixer::id() return _id; } -void Mixer::setMasterCard(TQString& ref_id) +void Mixer::setMasterCard(const TQString& ref_id) { // The value is taken over without checking on existance. This allows the User to define // a MasterCard that is not always available (e.g. it is an USB hotplugging device). @@ -528,6 +528,11 @@ void Mixer::setVolume( int deviceidx, int percentage ) void Mixer::commitVolumeChange( MixDevice* md ) { _mixerBackend->writeVolumeToHW(md->num(), md->getVolume() ); _mixerBackend->setEnumIdHW(md->num(), md->enumId() ); + + // Muting/unmuting PulseAudio directly does not send back any notification to the mixer + // so we make sure we always update the tray icon after each operation. + readSetFromHWforceUpdate(); + TQTimer::singleShot(50, this, TQT_SLOT(readSetFromHW())); } // @dcop only @@ -563,7 +568,9 @@ int Mixer::volume( int deviceidx ) } else { - return ( vol.getVolume( Volume::LEFT )*100) / volumeRange ; + // Make sure to round correctly, otherwise the volume level will always be 1% too low + // and increments of 1% of top of the value read will result in no change to the actual level + return ((100.0 * vol.getVolume(Volume::LEFT) + volumeRange / 2) / volumeRange); } } @@ -625,51 +632,42 @@ int Mixer::masterVolume() void Mixer::increaseVolume( int deviceidx ) { MixDevice *mixdev= mixDeviceByType( deviceidx ); - if (mixdev != 0) { - Volume vol=mixdev->getVolume(); - double fivePercent = (vol.maxVolume()-vol.minVolume()+1) / 20; - for (unsigned int i=Volume::CHIDMIN; i <= Volume::CHIDMAX; i++) { - int volToChange = vol.getVolume((Volume::ChannelID)i); - if ( fivePercent < 1 ) fivePercent = 1; - volToChange += (int)fivePercent; - vol.setVolume((Volume::ChannelID)i, volToChange); - } - _mixerBackend->writeVolumeToHW(deviceidx, vol); + if (mixdev != 0) + { + Volume vol = mixdev->getVolume(); + long inc = vol.maxVolume() / 20; + if (inc == 0) + { + inc = 1; + } + for (int i = 0; i < vol.count(); i++) + { + long newVal = (vol[i]) + inc; + mixdev->setVolume(i, newVal < vol.maxVolume() ? newVal : vol.maxVolume()); + } + commitVolumeChange(mixdev); } - - /* see comment at the end of decreaseVolume() - int vol=volume(deviceidx); - setVolume(deviceidx, vol+5); - */ } // @dcop void Mixer::decreaseVolume( int deviceidx ) { MixDevice *mixdev= mixDeviceByType( deviceidx ); - if (mixdev != 0) { - Volume vol=mixdev->getVolume(); - double fivePercent = (vol.maxVolume()-vol.minVolume()+1) / 20; - for (unsigned int i=Volume::CHIDMIN; i <= Volume::CHIDMAX; i++) { - int volToChange = vol.getVolume((Volume::ChannelID)i); - //std::cout << "Mixer::decreaseVolume(): before: volToChange " <<i<< "=" <<volToChange << std::endl; - if ( fivePercent < 1 ) fivePercent = 1; - volToChange -= (int)fivePercent; - //std::cout << "Mixer::decreaseVolume(): after: volToChange " <<i<< "=" <<volToChange << std::endl; - vol.setVolume((Volume::ChannelID)i, volToChange); - //int volChanged = vol.getVolume((Volume::ChannelID)i); - //std::cout << "Mixer::decreaseVolume(): check: volChanged " <<i<< "=" <<volChanged << std::endl; - } // for - _mixerBackend->writeVolumeToHW(deviceidx, vol); + if (mixdev != 0) + { + Volume vol = mixdev->getVolume(); + long inc = vol.maxVolume() / 20; + if (inc == 0) + { + inc = 1; + } + for (int i = 0; i < vol.count(); i++) + { + long newVal = (vol[i]) - inc; + mixdev->setVolume(i, newVal > 0 ? newVal : 0); + } + commitVolumeChange(mixdev); } - - /************************************************************ - It is important, not to implement this method like this: - int vol=volume(deviceidx); - setVolume(deviceidx, vol-5); - It creates too big rounding errors. If you don't beleive me, then - do a decreaseVolume() and increaseVolume() with "vol.maxVolume() == 31". - ***********************************************************/ } // @dcop @@ -699,11 +697,8 @@ void Mixer::toggleMute( int deviceidx ) MixDevice *mixdev= mixDeviceByType( deviceidx ); if (!mixdev) return; - bool previousState= mixdev->isMuted(); - - mixdev->setMuted( !previousState ); - - _mixerBackend->writeVolumeToHW(deviceidx, mixdev->getVolume() ); + mixdev->setMuted(!mixdev->isMuted()); + commitVolumeChange(mixdev); } // @dcop only diff --git a/kmix/mixer.h b/kmix/mixer.h index d9566e81..22f1458a 100644 --- a/kmix/mixer.h +++ b/kmix/mixer.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * @@ -97,7 +96,7 @@ class Mixer : public TQObject, virtual public MixerIface /// The KMix global master card. Please note that KMix and KMixPanelApplet can have a /// different MasterCard's at the moment (but actually KMixPanelApplet does not read/save this yet). /// At the moment it is only used for selecting the Mixer to use in KMix's DockIcon. - static void setMasterCard(TQString& ref_id); + static void setMasterCard(const TQString& ref_id); static Mixer* masterCard(); /// The global Master Device inside the current MasterCard (as returned by masterCard()). static void setMasterCardDevice(TQString& ref_id); diff --git a/kmix/mixer_alsa9.cpp b/kmix/mixer_alsa9.cpp index 46d98d41..22303b43 100644 --- a/kmix/mixer_alsa9.cpp +++ b/kmix/mixer_alsa9.cpp @@ -199,9 +199,10 @@ Mixer_ALSA::open() sid = (snd_mixer_selem_id_t*)malloc(snd_mixer_selem_id_sizeof()); // I believe *we* must malloc it for ourself snd_mixer_selem_get_id( elem, sid ); - bool canRecord = false; - bool canMute = false; + bool canPlay = false; bool canCapture = false; + bool hasPlaySwitch = false; + bool hasCaptureSwitch = false; long maxVolumePlay= 0, minVolumePlay= 0; long maxVolumeRec = 0, minVolumeRec = 0; validDevice = true; @@ -261,6 +262,7 @@ Mixer_ALSA::open() ? Volume::MLEFT : (Volume::ChannelMask)(Volume::MLEFT | Volume::MRIGHT); chn = (Volume::ChannelMask) (chn | chnTmp); cc = MixDevice::SLIDER; + canPlay = true; volPlay = new Volume( chn, maxVolumePlay, minVolumePlay ); } else { volPlay = new Volume(); @@ -283,72 +285,83 @@ Mixer_ALSA::open() mixer_sid_list.append( sid ); if ( snd_mixer_selem_has_playback_switch ( elem ) ) { - //kdDebug(67100) << "has_playback_switch()" << endl; - canMute = true; + //kdDebug(67100) << "has_playback_switch()" << endl; + hasPlaySwitch = true; } if ( snd_mixer_selem_has_capture_switch ( elem ) ) { - //kdDebug(67100) << "has_capture_switch()" << endl; - canRecord = true; + //kdDebug(67100) << "has_capture_switch()" << endl; + hasCaptureSwitch = true; } if ( snd_mixer_selem_has_common_switch ( elem ) ) { - //kdDebug(67100) << "has_common_switch()" << endl; - canMute = true; - canRecord = true; + //kdDebug(67100) << "has_common_switch()" << endl; + hasPlaySwitch = true; + hasCaptureSwitch = true; } - if ( /*snd_mixer_selem_has_common_switch ( elem ) || */ - cc == MixDevice::UNDEFINED ) + if (cc == MixDevice::UNDEFINED ) { // Everything unknown is handled as switch cc = MixDevice::SWITCH; } } // is ordinary mixer element (NOT an enum) + if (canPlay || cc == MixDevice::SWITCH || cc == MixDevice::ENUM) + { MixDevice* md = new MixDevice( mixerIdx, - canCapture ? *volCapture : *volPlay, - canCapture ? true : canRecord, - canMute, - snd_mixer_selem_id_get_name( sid ), - ct, - cc ); - - m_mixDevices.append( md ); - + *volPlay, + false, + hasPlaySwitch, + snd_mixer_selem_id_get_name( sid ), + ct, + cc ); + m_mixDevices.append( md ); if (!masterChosen && ct==MixDevice::VOLUME) { - // Determine a nicer MasterVolume - m_recommendedMaster = md; - masterChosen = true; + // Determine a nicer MasterVolume + m_recommendedMaster = md; + masterChosen = true; } if ( enumList.count() > 0 ) { - int maxEnumId= enumList.count(); - TQPtrList<TQString>& enumValuesRef = md->enumValues(); // retrieve a ref - for (int i=0; i<maxEnumId; i++ ) { - // we have an enum. Lets set the names of the enum items in the MixDevice - // the enum names are assumed to be static! - enumValuesRef.append(enumList.at(i) ); - } + int maxEnumId= enumList.count(); + TQPtrList<TQString>& enumValuesRef = md->enumValues(); // retrieve a ref + for (int i=0; i<maxEnumId; i++ ) { + // we have an enum. Lets set the names of the enum items in the MixDevice + // the enum names are assumed to be static! + enumValuesRef.append(enumList.at(i) ); + } } - //kdDebug(67100) << "ALSA create MDW, vol= " << *vol << endl; - delete volPlay; - delete volCapture; - } // virginOpen - else + } + if (canCapture) { - MixDevice* md; - bool found = false; - for ( md = m_mixDevices.first(); md != 0; md = m_mixDevices.next() ) { - if ( md->num() == mixerIdx ) { - found = true; - writeVolumeToHW( mixerIdx, md->getVolume() ); - } - } - if( !found ) - { - return Mixer::ERR_INCOMPATIBLESET; - } - } // !virginOpen + MixDevice* md = new MixDevice( mixerIdx, + *volCapture, + true, + hasCaptureSwitch, + snd_mixer_selem_id_get_name( sid ), + ct, + cc ); + m_mixDevices.append( md ); + } + //kdDebug(67100) << "ALSA create MDW, vol= " << *vol << endl; + delete volPlay; + delete volCapture; + } // virginOpen + else + { + MixDevice* md; + bool found = false; + for ( md = m_mixDevices.first(); md != 0; md = m_mixDevices.next() ) { + if ( md->num() == mixerIdx ) { + found = true; + writeVolumeToHW( mixerIdx, md->getVolume() ); + } + } + if( !found ) + { + return Mixer::ERR_INCOMPATIBLESET; + } + } // !virginOpen } // for all elems /************************************************************************************** diff --git a/kmix/mixer_backend.h b/kmix/mixer_backend.h index d5a9ed18..d2725eb5 100644 --- a/kmix/mixer_backend.h +++ b/kmix/mixer_backend.h @@ -1,4 +1,3 @@ -//-*-C++-*- /* * KMix -- KDE's full featured mini mixer * diff --git a/kmix/mixer_oss.h b/kmix/mixer_oss.h index 7bedf7f5..b1ed17d0 100644 --- a/kmix/mixer_oss.h +++ b/kmix/mixer_oss.h @@ -1,5 +1,3 @@ -//-*-C++-*- - #ifndef MIXER_OSS_H #define MIXER_OSS_H diff --git a/kmix/mixer_oss4.h b/kmix/mixer_oss4.h index 40f14785..8ce23f54 100644 --- a/kmix/mixer_oss4.h +++ b/kmix/mixer_oss4.h @@ -1,5 +1,3 @@ -//-*-C++-*- - #ifndef MIXER_OSS4_H #define MIXER_OSS4_H diff --git a/kmix/mixertoolbox.cpp b/kmix/mixertoolbox.cpp index b474eca6..4a19673b 100644 --- a/kmix/mixertoolbox.cpp +++ b/kmix/mixertoolbox.cpp @@ -213,13 +213,25 @@ void MixerToolBox::initMixer(TQPtrList<Mixer> &mixers, bool multiDriverMode, TQS } // loop over sound card devices of current driver } // loop over soundcard drivers - if ( Mixer::masterCard() == 0 ) { + if (Mixer::masterCard() == 0) + { // We have no master card yet. This actually only happens when there was // not one defined in the kmixrc. // So lets just set the first card as master card. - if ( Mixer::mixers().count() > 0 ) { - Mixer::setMasterCard( Mixer::mixers().first()->id()); - } + if (Mixer::mixers().count() > 0) + { + Mixer *mixer = Mixer::mixers().first(); + Mixer::setMasterCard(mixer->id()); + MixSet ms = mixer->getMixSet(); + for (MixDevice *md = ms.first(); md != 0; md = ms.next()) + { + if (!md->isRecordable() && !md->isSwitch() && !md->isEnum()) + { + Mixer::setMasterCardDevice(md->getPK()); + break; + } + } + } } ref_hwInfoString = i18n("Sound drivers supported:"); diff --git a/kmix/restore_kmix_volumes.desktop b/kmix/restore_kmix_volumes.desktop index dfa95c0c..152708ad 100644 --- a/kmix/restore_kmix_volumes.desktop +++ b/kmix/restore_kmix_volumes.desktop @@ -5,54 +5,3 @@ Type=Application Exec=kmixctrl --restore OnlyShowIn=TDE; Name=Restore Mixer Volumes -Name[bg]=Възстановяване на стойностите на миксера -Name[bn]=মিক্সার ভলিউম পুনঃস্থাপন করে -Name[br]=Assav pep tolzennad mesker -Name[bs]=Vrati jačine miksera -Name[ca]=Restaura els volums del mesclador -Name[cs]=Obnovit nastavení hlasitosti -Name[cy]=Adfer Lefelau Sain y Cymysgydd -Name[da]=Genopret mikser lydstyrke -Name[de]=Lautstärken wiederherstellen -Name[el]=Επαναφορά των εντάσεων του μείκτη -Name[eo]=Restarigu Miksilagordon -Name[es]=Restaurar opciones del mezclador -Name[et]=Mikseri helitugevuste taastamine -Name[eu]=Nahasgailuaren bolumenak berreskuratu -Name[fa]=بازگردانی حجم صداهای مخلوطکن -Name[fi]=Palauta mikserin äänivoimakkuudet -Name[fr]=Restaurer les volumes du mixage -Name[gl]=Restaurar os Volumes do Mesturador -Name[he]=שיחזור עוצמות הקול של המערבל -Name[hu]=A hangkeverő hangerőinek visszaállítása -Name[is]=Sækja aftur stillingar hljóðrása -Name[it]=Ripristina i volumi del Mixer -Name[ja]=ミキサーの音量設定を復元する -Name[kk]=Микшер деңгейлерін қалпына келтіру -Name[km]=ស្ដារសំឡេងឧបករណ៍លាយ -Name[ko]=믹서 음량 복원 -Name[lt]=Atstatyti maišytuvo garso lygius -Name[mk]=Враќање на гласностите на миксетата -Name[nb]=Gjenopprett lydstyrkene til mikser -Name[nds]=Mischerluutstärken wedderherstellen -Name[ne]=मिक्सर भोल्युम पूर्वावस्थामा ल्यानुहोस् -Name[nl]=Mixervolumes herstellen -Name[nn]=Gjenopprett miksarlydstyrkar -Name[pl]=Odtwarzanie głośności miksera -Name[pt]=Repor os Volumes -Name[pt_BR]=Restaurar volumes do mixer -Name[ro]=Reface volumele mixerului -Name[ru]=Восстановление настроек микшера -Name[sk]=Obnoviť nastavenia mixéra -Name[sl]=Obnovi nastavitve mešalnika -Name[sr]=Обнови јачине миксете -Name[sr@Latn]=Obnovi jačine miksete -Name[sv]=Återställ mixervolymer -Name[ta]=ஒன்றுசேர்க்கும் ஒலியளவு மீட்கவும் -Name[th]=เรียกคืนระดับเสียงของมิกเซอร์ -Name[tr]=Karıştırıcı Seslerini Yenile -Name[uk]=Відновити параметри мікшера -Name[zh_CN]=恢复混音器设置 -Name[zh_HK]=回復混音器音量 -Name[zh_TW]=回復混音器音量 - diff --git a/kmix/viewbase.cpp b/kmix/viewbase.cpp index 11bb06a8..86d1524c 100644 --- a/kmix/viewbase.cpp +++ b/kmix/viewbase.cpp @@ -60,6 +60,7 @@ ViewBase::ViewBase(TQWidget* parent, const char* name, const TQString & caption, } } new TDEAction(i18n("&Channels"), 0, TQT_TQOBJECT(this), TQT_SLOT(configureView()), _actions, "toggle_channels"); + new TDEAction(i18n("&Select Mixer"), 0, TQT_TQOBJECT(this), TQT_SLOT(selectMixerSlot()), _actions, "select_mixer"); connect ( _mixer, TQT_SIGNAL(newVolumeLevels()), this, TQT_SLOT(refreshVolumeLevels()) ); } @@ -129,15 +130,28 @@ TDEPopupMenu* ViewBase::getPopup() void ViewBase::popupReset() { TDEAction *a; - _popMenu = new TDEPopupMenu( this ); - _popMenu->insertTitle( SmallIcon( "kmix" ), i18n("Device Settings") ); + TDEAction *smb = _actions->action( "options_show_menubar" ); + + if (!smb && Mixer::mixers().count() > 1) + { + _popMenu->insertTitle( SmallIcon( "kmix" ), i18n("General") ); + a = _actions->action( "select_mixer" ); + a->plug(_popMenu); + } + + _popMenu->insertTitle( SmallIcon( "kmix" ), i18n("Device Settings") ); a = _actions->action( "toggle_channels" ); - if ( a ) a->plug( _popMenu ); + if (a) + { + a->plug(_popMenu); + } - a = _actions->action( "options_show_menubar" ); - if ( a ) a->plug( _popMenu ); + if (smb) + { + smb->plug(_popMenu); + } } @@ -161,7 +175,8 @@ void ViewBase::refreshVolumeLevels() // is virtual } -Mixer* ViewBase::getMixer() { +Mixer* ViewBase::getMixer() +{ return _mixer; } @@ -169,19 +184,27 @@ Mixer* ViewBase::getMixer() { * Open the View configuration dialog. The user can select which channels he wants * to see and which not. */ -void ViewBase::configureView() { - +void ViewBase::configureView() +{ DialogViewConfiguration* dvc = new DialogViewConfiguration(0, *this); dvc->show(); // !! The dialog is modal. Does it delete itself? } -void ViewBase::toggleMenuBarSlot() { +void ViewBase::toggleMenuBarSlot() +{ //kdDebug(67100) << "ViewBase::toggleMenuBarSlot() start\n"; emit toggleMenuBar(); //kdDebug(67100) << "ViewBase::toggleMenuBarSlot() done\n"; } +void ViewBase::selectMixerSlot() +{ + //kdDebug(67100) << "ViewBase::selectMixerSlot() start\n"; + emit selectMixer(); + //kdDebug(67100) << "ViewBase::selectMixerSlot() done\n"; +} + // ---------- Popup stuff END --------------------- #include "viewbase.moc" diff --git a/kmix/viewbase.h b/kmix/viewbase.h index 96840d88..79f4220b 100644 --- a/kmix/viewbase.h +++ b/kmix/viewbase.h @@ -107,12 +107,14 @@ public slots: virtual void refreshVolumeLevels(); virtual void configureView(); void toggleMenuBarSlot(); + void selectMixerSlot(); protected slots: void mousePressEvent( TQMouseEvent *e ); signals: void toggleMenuBar(); + void selectMixer(); private: TQString _caption; diff --git a/kmix/viewdockareapopup.cpp b/kmix/viewdockareapopup.cpp index 081aec18..e9cd9155 100644 --- a/kmix/viewdockareapopup.cpp +++ b/kmix/viewdockareapopup.cpp @@ -130,14 +130,14 @@ TQWidget* ViewDockAreaPopup::add(MixDevice *md) Qt::Vertical, // Direction: only 1 device, so doesn't matter _frame, // parent 0, // Is "NULL", so that there is no RMB-popup - _dockDevice->name().latin1() ); + _dockDevice->name().local8Bit()); _layoutMDW->addItem( new TQSpacerItem( 5, 20 ), 0, 2 ); _layoutMDW->addItem( new TQSpacerItem( 5, 20 ), 0, 0 ); _layoutMDW->addWidget( _mdw, 0, 1 ); - // Add button to show main panel - _showPanelBox = new TQPushButton( i18n("Mixer"), _frame, "MixerPanel" ); - connect ( _showPanelBox, TQT_SIGNAL( clicked() ), TQT_SLOT( showPanelSlot() ) ); + // Add button to show main panel + _showPanelBox = new TQPushButton( i18n("Mixer"), _frame, "MixerPanel" ); + connect ( _showPanelBox, TQT_SIGNAL( clicked() ), TQT_SLOT( showPanelSlot() ) ); _layoutMDW->addMultiCellWidget( _showPanelBox, 1, 1, 0, 2 ); return _mdw; diff --git a/kmix/volume.h b/kmix/volume.h index 9051ed0c..8f3b8537 100644 --- a/kmix/volume.h +++ b/kmix/volume.h @@ -1,4 +1,3 @@ -// -*-C++-*- #ifndef VOLUME_H #define VOLUME_H |