[STOBJECT]
[reactos.git] / reactos / dll / shellext / stobject / volume.cpp
index f848468..f82e6e0 100644 (file)
@@ -11,9 +11,6 @@
 #include <mmsystem.h>
 #include <mmddk.h>
 
-#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
-#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
-
 WINE_DEFAULT_DEBUG_CHANNEL(stobject);
 
 HICON g_hIconVolume;
@@ -116,7 +113,7 @@ static HRESULT __stdcall Volume_FindMixerControl(CSysTray * pSysTray)
     return S_OK;
 }
 
-HRESULT Volume_IsMute()
+HRESULT Volume_IsMute(VOID)
 {
 #if 0
     MIXERCONTROLDETAILS mixerControlDetails;
@@ -220,10 +217,10 @@ HRESULT Volume_OnDeviceChange(_In_ CSysTray * pSysTray, WPARAM wParam, LPARAM lP
     return Volume_FindMixerControl(pSysTray);
 }
 
-static void _RunVolume()
+static void _RunVolume(BOOL bSmall)
 {
     // FIXME: ensure we are loading the right one
-    ShellExecuteW(NULL, NULL, L"sndvol32.exe", NULL, NULL, SW_SHOWNORMAL);
+    ShellExecuteW(NULL, NULL, L"sndvol32.exe", bSmall ? L"/t" : NULL, NULL, SW_SHOWNORMAL);
 }
 
 static void _RunMMCpl()
@@ -241,6 +238,7 @@ static void _ShowContextMenu(CSysTray * pSysTray)
     HMENU hPopup = CreatePopupMenu();
     AppendMenuW(hPopup, MF_STRING, IDS_VOL_OPEN, strOpen);
     AppendMenuW(hPopup, MF_STRING, IDS_VOL_ADJUST, strAdjust);
+    SetMenuDefaultItem(hPopup, IDS_VOL_OPEN, FALSE);
 
     DWORD flags = TPM_RETURNCMD | TPM_NONOTIFY | TPM_RIGHTALIGN | TPM_BOTTOMALIGN;
     DWORD msgPos = GetMessagePos();
@@ -255,7 +253,7 @@ static void _ShowContextMenu(CSysTray * pSysTray)
     switch (id)
     {
     case IDS_VOL_OPEN:
-        _RunVolume();
+        _RunVolume(FALSE);
         break;
     case IDS_VOL_ADJUST:
         _RunMMCpl();
@@ -298,14 +296,15 @@ HRESULT STDMETHODCALLTYPE Volume_Message(_In_ CSysTray * pSysTray, UINT uMsg, WP
             switch (lParam)
             {
                 case WM_LBUTTONDOWN:
+                    SetTimer(pSysTray->GetHWnd(), VOLUME_TIMER_ID, 500, NULL);
                     break;
 
                 case WM_LBUTTONUP:
-                    TRACE("TODO: display volume slider\n");
                     break;
 
                 case WM_LBUTTONDBLCLK:
-                    _RunVolume();
+                    KillTimer(pSysTray->GetHWnd(), VOLUME_TIMER_ID);
+                    _RunVolume(FALSE);
                     break;
 
                 case WM_RBUTTONDOWN:
@@ -330,3 +329,11 @@ HRESULT STDMETHODCALLTYPE Volume_Message(_In_ CSysTray * pSysTray, UINT uMsg, WP
 
     return S_FALSE;
 }
+
+VOID
+Volume_OnTimer(HWND hWnd)
+{
+    TRACE("Volume_OnTimer\n!");
+    KillTimer(hWnd, VOLUME_TIMER_ID);
+    _RunVolume(TRUE);
+}