[SNDVOL32] Move the advanced controls dialog to a separate file and update its title...
authorEric Kohl <eric.kohl@reactos.org>
Thu, 21 Feb 2019 21:26:58 +0000 (22:26 +0100)
committerEric Kohl <eric.kohl@reactos.org>
Thu, 21 Feb 2019 21:27:44 +0000 (22:27 +0100)
34 files changed:
base/applications/sndvol32/CMakeLists.txt
base/applications/sndvol32/advanced.c [new file with mode: 0644]
base/applications/sndvol32/lang/bg-BG.rc
base/applications/sndvol32/lang/cs-CZ.rc
base/applications/sndvol32/lang/de-DE.rc
base/applications/sndvol32/lang/el-GR.rc
base/applications/sndvol32/lang/en-US.rc
base/applications/sndvol32/lang/es-ES.rc
base/applications/sndvol32/lang/fr-FR.rc
base/applications/sndvol32/lang/he-IL.rc
base/applications/sndvol32/lang/hu-HU.rc
base/applications/sndvol32/lang/id-ID.rc
base/applications/sndvol32/lang/it-IT.rc
base/applications/sndvol32/lang/ja-JP.rc
base/applications/sndvol32/lang/ko-KR.rc
base/applications/sndvol32/lang/lt-LT.rc
base/applications/sndvol32/lang/nl-NL.rc
base/applications/sndvol32/lang/no-NO.rc
base/applications/sndvol32/lang/pl-PL.rc
base/applications/sndvol32/lang/pt-BR.rc
base/applications/sndvol32/lang/ro-RO.rc
base/applications/sndvol32/lang/ru-RU.rc
base/applications/sndvol32/lang/sk-SK.rc
base/applications/sndvol32/lang/sq-AL.rc
base/applications/sndvol32/lang/sv-SE.rc
base/applications/sndvol32/lang/th-TH.rc
base/applications/sndvol32/lang/tr-TR.rc
base/applications/sndvol32/lang/uk-UA.rc
base/applications/sndvol32/lang/zh-CN.rc
base/applications/sndvol32/lang/zh-TW.rc
base/applications/sndvol32/mixer.c
base/applications/sndvol32/resources.h
base/applications/sndvol32/sndvol32.c
base/applications/sndvol32/sndvol32.h

index dd18273..c6c757a 100644 (file)
@@ -1,5 +1,6 @@
 
 list(APPEND SOURCE
+    advanced.c
     dialog.c
     misc.c
     mixer.c
diff --git a/base/applications/sndvol32/advanced.c b/base/applications/sndvol32/advanced.c
new file mode 100644 (file)
index 0000000..34d1d62
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * COPYRIGHT:   See COPYING in the top level directory
+ * PROJECT:     ReactOS Sound Volume Control
+ * FILE:        base/applications/sndvol32/advanced.c
+ * PROGRAMMERS: Eric Kohl <eric.kohl@reactos.org>
+ */
+
+#include "sndvol32.h"
+
+static
+VOID
+OnInitDialog(
+    HWND hwndDlg,
+    PADVANCED_CONTEXT Context)
+{
+    WCHAR szRawTitle[256], szCookedTitle[256];
+    LPMIXERCONTROL Control = NULL;
+    UINT ControlCount = 0, Index, i;
+
+    /* Set the dialog title */
+    LoadStringW(hAppInstance, IDS_ADVANCED_CONTROLS, szRawTitle, ARRAYSIZE(szRawTitle));
+//    swprintf(szCookedTitle, szRawTitle, Context->LineName);
+    StringCchPrintfW(szCookedTitle, ARRAYSIZE(szCookedTitle), szRawTitle, Context->LineName);
+    SetWindowTextW(hwndDlg, szCookedTitle);
+
+    /* Disable the tone controls */
+    for (i = IDC_ADV_BASS_LOW; i<= IDC_ADV_TREBLE_SLIDER; i++)
+        EnableWindow(GetDlgItem(hwndDlg, i), FALSE);
+
+    /* Hide the other controls */
+    for (i = IDC_ADV_OTHER_CONTROLS; i<= IDC_ADV_OTHER_CHECK2; i++)
+        ShowWindow(GetDlgItem(hwndDlg, i), SW_HIDE);
+
+    if (SndMixerQueryControls(Context->Mixer, &ControlCount, Context->Line, &Control))
+    {
+        for (Index = 0; Index < ControlCount; Index++)
+        {
+            if (Control[Index].dwControlType == MIXERCONTROL_CONTROLTYPE_BASS)
+            {
+                for (i = IDC_ADV_BASS_LOW; i<= IDC_ADV_BASS_SLIDER; i++)
+                    EnableWindow(GetDlgItem(hwndDlg, i), TRUE);
+
+            }
+            else if (Control[Index].dwControlType == MIXERCONTROL_CONTROLTYPE_TREBLE)
+            {
+                for (i = IDC_ADV_TREBLE_LOW; i<= IDC_ADV_TREBLE_SLIDER; i++)
+                    EnableWindow(GetDlgItem(hwndDlg, i), TRUE);
+
+            }
+            else if (Control[Index].dwControlType != MIXERCONTROL_CONTROLTYPE_VOLUME &&
+                     Control[Index].dwControlType != MIXERCONTROL_CONTROLTYPE_MUTE)
+            {
+                ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CONTROLS), SW_SHOWNORMAL);
+                ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_TEXT), SW_SHOWNORMAL);
+
+            }
+        }
+
+        /* free controls */
+        HeapFree(GetProcessHeap(), 0, Control);
+    }
+}
+
+
+INT_PTR
+CALLBACK
+AdvancedDlgProc(
+    HWND hwndDlg,
+    UINT uMsg,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    PADVANCED_CONTEXT Context;
+
+    switch (uMsg)
+    {
+        case WM_INITDIALOG:
+            SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)lParam);
+            Context = (PADVANCED_CONTEXT)((LONG_PTR)lParam);
+            OnInitDialog(hwndDlg, Context);
+            return TRUE;
+
+        case WM_COMMAND:
+            switch (LOWORD(wParam))
+            {
+                case IDOK:
+                    EndDialog(hwndDlg, IDOK);
+                    break;
+            }
+            break;
+
+        case WM_CLOSE:
+            EndDialog(hwndDlg, IDCANCEL);
+            break;
+    }
+
+    return FALSE;
+}
+
+/* EOF */
index 0d835b0..2dbe8d9 100644 (file)
@@ -25,6 +25,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Сила на звука"
     IDS_NOMIXERDEVICES "Не са открити работещи смесителни устройства! Приложението ще се затвори."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 12aaf2b..db619d7 100644 (file)
@@ -27,6 +27,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Ovládání hlasitosti"
     IDS_NOMIXERDEVICES "Nejsou dostupná žádná směšovací zařízení! Aplikace se nyní ukončí."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index b6897fe..8e03fd2 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Lautstärke-Einstellungen"
     IDS_NOMIXERDEVICES "Es sind keine aktiven Mixer vorhanden! Die Anwendung wird jetzt beendet."
+    IDS_SELECT "&Auswählen"
+    IDS_ADVANCED_CONTROLS "Erweiterte Einstellungen für %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index e10c9ab..31d62ec 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Έλεγχος έντασης"
     IDS_NOMIXERDEVICES "There are no active mixer devices available! The application will now exit."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 05ebf89..136684d 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Volume Control"
     IDS_NOMIXERDEVICES "There are no active mixer devices available! The application will now exit."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 2480eef..fa9de20 100644 (file)
@@ -24,6 +24,10 @@ BEGIN
     IDS_SNDVOL32 "Control de volumen"
     IDS_NOMIXERDEVICES "¡No hay dispositivos mezcladores activos en este momento! \n\
 La aplicación se cerrará ahora."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index c0e7ec4..afd60f5 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Contrôle du volume"
     IDS_NOMIXERDEVICES "Il n'y a pas de périphérique de mixage disponible ! L'application va se terminer."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index d892921..0d95097 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "בקרת עוצמה"
     IDS_NOMIXERDEVICES "אין התקני ערבול פעילים זמינים! היישום יצא עכשיו"
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index dfc2ae7..6de5aeb 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Hangerõ szabályozó"
     IDS_NOMIXERDEVICES "Nincsenek elérhetõ keverõ eszközök. A program kilép."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 11d52ca..466e5b7 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Kontrol Volume"
     IDS_NOMIXERDEVICES "Tidak ada device mixer yang aktif yang tersedia! Aplikasi akan keluar sekarang."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 7e97dab..2db5896 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32       "Controllo Volume"
     IDS_NOMIXERDEVICES "Non ci sono dispositivi mixer disponibili! Il programma si chiuderà."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 2e6753a..cf0eb20 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "ボリューム コントロール"
     IDS_NOMIXERDEVICES "アクティブなミキサーが利用できません ! アプリケーションを終了します。"
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index ee8173a..cc4a57b 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "볼륨 컨트롤"
     IDS_NOMIXERDEVICES "사용 가능한 믹서 장치가 없습니다! 이 프로그램은 종료됩니다."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index a660ec3..84eec68 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Garso valdiklis"
     IDS_NOMIXERDEVICES "Šiuo metu nėra aktyvių garso maišymo įrenginių! Programa darbą baigė."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index f6ac02a..d355838 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Volume Control"
     IDS_NOMIXERDEVICES "Er zijn geen actieve mixerapparaten beschikbaar! Deze toepassing wordt nu afgesloten."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 4f4ae53..27f53ce 100644 (file)
@@ -21,6 +21,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Volumkontroll"
     IDS_NOMIXERDEVICES "Det er ingen aktive mikser enheter tilgjengelig! Programmet vil nå avsluttes."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 11ec96a..7a66874 100644 (file)
@@ -29,6 +29,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Regulacja głośności"
     IDS_NOMIXERDEVICES "Nie jest dostępne żadne aktywne urządzenie miksujące! Program zostanie zamknięty."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index e95b05e..08ca374 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Controle de Volume"
     IDS_NOMIXERDEVICES "Não há dispositivos de mixagem disponíveis! O aplicativo irá sair agora."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 12467c7..d0973e5 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Reglaj de volum"
     IDS_NOMIXERDEVICES "Nu există dispozitive active de mixaj! Aplicația va fi închisă."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 7effc43..c7f05d2 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Управление громкостью"
     IDS_NOMIXERDEVICES "Нет доступных микшерных устройств! Приложение будет завершено."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index d4dcafa..643de2d 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Ovládanie hlasitosti"
     IDS_NOMIXERDEVICES "Nie sú dostupné žiadne zariadenie zmiešavača! Program sa teraz ukončí."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 5affa0f..f0fbba6 100644 (file)
@@ -25,6 +25,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Kontroll Volumi"
     IDS_NOMIXERDEVICES "Nuk ka pajisje aktive mikseri ne dispozicion! Programi tani do te dale."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index d7af170..c91e57a 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Volymkontroll"
     IDS_NOMIXERDEVICES "Det finns inga ljudmixningsenheter tillgängliga! Programmet kommer nu att avslutas."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 956fc6f..3aab609 100644 (file)
@@ -29,6 +29,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "แผงควบคุมระบบเสียง"
     IDS_NOMIXERDEVICES "ไม่พบอุปกรณ์ผสมเสียงใดๆเหลืออยู่เลย! โปรแกรมนี้จะถูกปิดทันที"
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index a516c10..a1ffaa4 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Ses Düzeyi Denetimi"
     IDS_NOMIXERDEVICES "Burada etkin karıştırıcı aygıt yok. Uygulama şimdi çıkacak."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 6e3d029..b887b77 100644 (file)
@@ -29,6 +29,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "Регулятор гучності"
     IDS_NOMIXERDEVICES "Активні пристрої-мікшери недоступні! Додаток закінчує роботу."
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index bdf7864..da63254 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "音量控制"
     IDS_NOMIXERDEVICES "没有可用的混音器设备!程序即将退出。"
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index c91d7c8..5f0e3b1 100644 (file)
@@ -23,6 +23,10 @@ STRINGTABLE
 BEGIN
     IDS_SNDVOL32 "音量控制"
     IDS_NOMIXERDEVICES "沒有可用的混音器設備!這個程式即將結束。"
+    IDS_SELECT "&Select"
+    IDS_ADVANCED_CONTROLS "Advanced Controls for %s"
+    IDS_OTHER_CONTROLS1 "&1  %s"
+    IDS_OTHER_CONTROLS2 "&2  %s"
 END
 
 IDD_PREFERENCES DIALOGEX 0, 0, 224, 250
index 147d3c4..cd1dcc1 100644 (file)
@@ -610,3 +610,41 @@ SndMixerIsDisplayControl(PSND_MIXER Mixer,
 
     return FALSE;
 }
+
+LPMIXERLINE
+SndMixerGetLineByName(PSND_MIXER Mixer,
+                      DWORD LineID,
+                      LPWSTR LineName)
+{
+    PSND_MIXER_DESTINATION Line;
+    PSND_MIXER_CONNECTION Connection;
+
+    if (Mixer->hmx == 0)
+        return NULL;
+
+    for (Line = Mixer->Lines; Line != NULL; Line = Line->Next)
+    {
+        if (Line->Info.dwLineID == LineID)
+        {
+            if (Line->DisplayControls != 0)
+            {
+                if (wcsicmp(Line->Info.szName, LineName) == 0)
+                {
+                    return &Line->Info;
+                }
+            }
+
+            for (Connection = Line->Connections; Connection != NULL; Connection = Connection->Next)
+            {
+                if (wcsicmp(Connection->Info.szName, LineName) == 0)
+                {
+                    return &Connection->Info;
+                }
+            }
+
+            return NULL;
+        }
+    }
+
+    return NULL;
+}
\ No newline at end of file
index eaa0585..952e19b 100644 (file)
 #define IDC_ADV_OTHER_CHECK1   1029
 #define IDC_ADV_OTHER_CHECK2   1030
 
-#define IDS_SNDVOL32       100
-#define IDS_NOMIXERDEVICES 101
+#define IDS_SNDVOL32          100
+#define IDS_NOMIXERDEVICES    101
+#define IDS_SELECT            102
+#define IDS_ADVANCED_CONTROLS 103
+#define IDS_OTHER_CONTROLS1   104
+#define IDS_OTHER_CONTROLS2   105
 
 #define IDD_NORMAL_MASTER 200
 #define IDD_NORMAL_LINE   201
index ada7deb..8398151 100644 (file)
@@ -591,56 +591,6 @@ DlgPreferencesProc(HWND hwndDlg,
     return 0;
 }
 
-
-static
-INT_PTR
-CALLBACK
-AdvancedDlgProc(
-    HWND hwndDlg,
-    UINT uMsg,
-    WPARAM wParam,
-    LPARAM lParam)
-{
-    switch (uMsg)
-    {
-        case WM_INITDIALOG:
-            /* FIXME: Update the dialog title */
-
-            /* Disable the tone controls */
-            EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_BASS_LOW), FALSE);
-            EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_BASS_HIGH), FALSE);
-            EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_BASS_SLIDER), FALSE);
-            EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_TREBLE_LOW), FALSE);
-            EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_TREBLE_HIGH), FALSE);
-            EnableWindow(GetDlgItem(hwndDlg, IDC_ADV_TREBLE_SLIDER), FALSE);
-
-            /* Hide the other controls */
-            ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CONTROLS), SW_HIDE);
-            ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_TEXT), SW_HIDE);
-            ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CHECK1), SW_HIDE);
-            ShowWindow(GetDlgItem(hwndDlg, IDC_ADV_OTHER_CHECK2), SW_HIDE);
-
-            /* FIXME */
-            return TRUE;
-
-        case WM_COMMAND:
-            switch (LOWORD(wParam))
-            {
-                case IDOK:
-                    EndDialog(hwndDlg, IDOK);
-                    break;
-            }
-            break;
-
-        case WM_CLOSE:
-            EndDialog(hwndDlg, IDCANCEL);
-            break;
-    }
-
-    return FALSE;
-}
-
-
 /******************************************************************************/
 
 static VOID
@@ -1064,13 +1014,29 @@ MainWindowProc(HWND hwnd,
                         }
                         else if (CtrlID % IDC_LINE_ADVANCED == 0)
                         {
-                            if (DialogBoxParam(hAppInstance,
-                                               MAKEINTRESOURCE(IDD_ADVANCED),
-                                               hwnd,
-                                               AdvancedDlgProc,
-                                               (LPARAM)NULL) == IDOK)
-                            {
+                            ADVANCED_CONTEXT AdvancedContext;
+
+                            /* compute line offset */
+                            LineOffset = CtrlID / IDC_LINE_ADVANCED;
+
+                            /* compute window id of line name static control */
+                            CtrlID = LineOffset * IDC_LINE_NAME;
 
+                            /* get line name */
+                            if (GetDlgItemTextW(hwnd, CtrlID, AdvancedContext.LineName, MIXER_LONG_NAME_CHARS) != 0)
+                            {
+                                AdvancedContext.Mixer = Preferences.MixerWindow->Mixer;
+                                AdvancedContext.Line = SndMixerGetLineByName(Preferences.MixerWindow->Mixer,
+                                                                             Preferences.SelectedLine,
+                                                                             AdvancedContext.LineName);
+                                if (AdvancedContext.Line)
+                                {
+                                    DialogBoxParam(hAppInstance,
+                                                   MAKEINTRESOURCE(IDD_ADVANCED),
+                                                   hwnd,
+                                                   AdvancedDlgProc,
+                                                   (LPARAM)&AdvancedContext);
+                                }
                             }
                         }
                     }
index 201e4f0..e324584 100644 (file)
@@ -10,6 +10,7 @@
 #include <mmsystem.h>
 #include <commctrl.h>
 #include <tchar.h>
+#include <strsafe.h>
 #include <assert.h>
 
 #include "resources.h"
@@ -123,6 +124,14 @@ typedef struct _SET_VOLUME_CONTEXT
     BOOL bSwitch;
 } SET_VOLUME_CONTEXT, *PSET_VOLUME_CONTEXT;
 
+typedef struct _ADVANCED_CONTEXT
+{
+    WCHAR LineName[MIXER_LONG_NAME_CHARS];
+    PSND_MIXER Mixer;
+    LPMIXERLINE Line;
+} ADVANCED_CONTEXT, *PADVANCED_CONTEXT;
+
+
 /* NOTE: do NOT modify SNDVOL_REG_LINESTATE for binary compatibility with XP! */
 typedef struct _SNDVOL_REG_LINESTATE
 {
@@ -150,6 +159,18 @@ BOOL SndMixerEnumLines(PSND_MIXER Mixer, PFNSNDMIXENUMLINES EnumProc, PVOID Cont
 BOOL SndMixerEnumConnections(PSND_MIXER Mixer, DWORD LineID, PFNSNDMIXENUMCONNECTIONS EnumProc, PVOID Context);
 BOOL SndMixerIsDisplayControl(PSND_MIXER Mixer, LPMIXERCONTROL Control);
 BOOL SndMixerQueryControls(PSND_MIXER Mixer, PUINT DisplayControls, LPMIXERLINE LineInfo, LPMIXERCONTROL *Controls);
+LPMIXERLINE SndMixerGetLineByName(PSND_MIXER Mixer, DWORD LineID, LPWSTR LineName);
+
+/* advanced.c */
+
+INT_PTR
+CALLBACK
+AdvancedDlgProc(
+    HWND hwndDlg,
+    UINT uMsg,
+    WPARAM wParam,
+    LPARAM lParam);
+
 
 /*
  * dialog.c