[SNDVOL32] Disable the Mute checkbox for all lines that do not have a mute switch...
authorEric Kohl <eric.kohl@reactos.org>
Sat, 16 Feb 2019 11:57:19 +0000 (12:57 +0100)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 16 Feb 2019 11:59:01 +0000 (12:59 +0100)
base/applications/sndvol32/dialog.c
base/applications/sndvol32/sndvol32.c
base/applications/sndvol32/sndvol32.h

index a93a638..b8173ab 100644 (file)
@@ -66,13 +66,14 @@ LoadDialogResource(
 LPWORD
 AddDialogControl(
     IN HWND hwndDialog,
-    IN HWND * OutWnd,
+    OUT HWND *OutWnd,
     IN LPRECT DialogOffset,
     IN PDLGITEMTEMPLATE DialogItem,
     IN DWORD DialogIdMultiplier,
     IN HFONT hFont,
-    UINT xBaseUnit,
-    UINT yBaseUnit)
+    IN UINT xBaseUnit,
+    IN UINT yBaseUnit,
+    IN UINT MixerId)
 {
     RECT rect;
     LPWORD Offset;
@@ -211,9 +212,23 @@ AddDialogControl(
                 SendMessage(hwnd, TBM_SETTIC, 0, (LPARAM)i);
         }
     }
-    else if (!wcsicmp(ClassName, L"static") || !wcsicmp(ClassName, L"button"))
+    else if (!wcsicmp(ClassName, L"static"))
     {
-        /* set font */
+        /* Set font */
+        SendMessageW(hwnd, WM_SETFONT, (WPARAM)hFont, TRUE);
+    }
+    else if (!wcsicmp(ClassName, L"button"))
+    {
+        if (DialogItem->style & BS_AUTOCHECKBOX)
+        {
+            if (MixerId == PLAY_MIXER)
+            {
+                /* Disable checkboxes by default, if we are in play mode */
+                EnableWindow(hwnd, FALSE);
+            }
+        }
+
+        /* Set font */
         SendMessageW(hwnd, WM_SETFONT, (WPARAM)hFont, TRUE);
     }
 
@@ -275,7 +290,15 @@ LoadDialogControls(
     for (Index = 0; Index < ItemCount; Index++)
     {
         /* add controls */
-        Offset = AddDialogControl(MixerWindow->hWnd, &MixerWindow->Window[MixerWindow->WindowCount], DialogOffset, DialogItem, DialogIdMultiplier, MixerWindow->hFont, xBaseUnit, yBaseUnit);
+        Offset = AddDialogControl(MixerWindow->hWnd,
+                                  &MixerWindow->Window[MixerWindow->WindowCount],
+                                  DialogOffset,
+                                  DialogItem,
+                                  DialogIdMultiplier,
+                                  MixerWindow->hFont,
+                                  xBaseUnit,
+                                  yBaseUnit,
+                                  MixerWindow->MixerId);
 
         /* sanity check */
         assert(Offset);
@@ -480,6 +503,10 @@ EnumConnectionsCallback(
 
                               if (hDlgCtrl != NULL)
                               {
+                                  /* Enable the 'Mute' checkbox, if we are in play mode */
+                                  if (Mixer->MixerId == PLAY_MIXER)
+                                      EnableWindow(hDlgCtrl, TRUE);
+
                                   /* check state */
                                   if (SendMessageW(hDlgCtrl, BM_GETCHECK, 0, 0) != Details.fValue)
                                   {
index 011bec2..7f3d118 100644 (file)
@@ -1328,7 +1328,7 @@ HandleCommandLine(LPTSTR cmdline,
 {
     TCHAR option;
 
-    *pMixerId = 0;
+    *pMixerId = PLAY_MIXER;
     *pMode = (dwStyle & 0x20) ? SMALL_MODE : NORMAL_MODE;
 
     while (*cmdline == _T(' ') || *cmdline == _T('-') || *cmdline == _T('/'))
@@ -1348,6 +1348,11 @@ HandleCommandLine(LPTSTR cmdline,
             case 'D':
                 break;
 
+            case 'n': /* Small size */
+            case 'N':
+                *pMode = NORMAL_MODE;
+                break;
+
             case 's': /* Small size */
             case 'S':
                 *pMode = SMALL_MODE;
@@ -1360,12 +1365,12 @@ HandleCommandLine(LPTSTR cmdline,
 
             case 'p': /* Play mode */
             case 'P':
-                *pMixerId = 0;
+                *pMixerId = PLAY_MIXER;
                 break;
 
             case 'r': /* Record mode */
             case 'R':
-                *pMixerId = 1;
+                *pMixerId = RECORD_MIXER;
                 break;
 
             default:
index 65fcb36..7ff11d8 100644 (file)
@@ -25,6 +25,9 @@
 #define BALANCE_TICKS        1
 #define BALANCE_PAGE_SIZE   12
 
+#define PLAY_MIXER           0
+#define RECORD_MIXER         1
+
 typedef enum _WINDOW_MODE
 {
     NORMAL_MODE,