Author: ssawant
Date: Tue Jul 25 21:48:51 2017
New Revision: 75405
URL:
http://svn.reactos.org/svn/reactos?rev=75405&view=rev
Log:
[STOBJECT]
-Fixed bugs related to strings and localization (needs further improvement).
-Fixed ContextMenu Position bug (for both power and volume).
-Now battery tooltip is as dynamic as its icon.
Modified:
branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/lang/en-US.rc
branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/power.cpp
branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/stobject.rc
branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/volume.cpp
Modified: branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/lang/en-US.rc
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/shellext/reactos/dll/…
==============================================================================
--- branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/lang/en-US.rc [iso-8859-1]
(original)
+++ branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/lang/en-US.rc [iso-8859-1]
Tue Jul 25 21:48:51 2017
@@ -17,8 +17,8 @@
//Power related strings
IDS_PWR_PROPERTIES "&Adjust Power Properties"
IDS_PWR_METER "&Open Power Meter"
- IDS_PWR_PERCENT_REMAINING "%1!u!%% remaining"
- IDS_PWR_CHARGING " (charging)"
+ IDS_PWR_PERCENT_REMAINING "%.2f%% remaining"
+ IDS_PWR_CHARGING "%.2f%% and charging"
IDS_PWR_UNKNOWN_REMAINING "Unknown remaining"
IDS_PWR_AC "On AC power"
IDS_PWR_HOURS_REMAINING "%1!u!:%2!02u! hours (%3!u!%%) remaining"
Modified: branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/power.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/shellext/reactos/dll/…
==============================================================================
--- branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/power.cpp [iso-8859-1]
(original)
+++ branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/power.cpp [iso-8859-1] Tue
Jul 25 21:48:51 2017
@@ -18,12 +18,10 @@
#include <mmsystem.h>
#include <mmddk.h>
+#include <atlstr.h>
#define GBS_HASBATTERY 0x1
#define GBS_ONBATTERY 0x2
-
-#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
-#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
WINE_DEFAULT_DEBUG_CHANNEL(stobject);
@@ -37,10 +35,9 @@
UINT uiLast;
} PWRSCHEMECONTEXT, *PPWRSCHEMECONTEXT;
+CString g_strTooltip;
static float g_batCap = 0;
static HICON g_hIconBattery = NULL;
-static HICON g_hIconAC = NULL;
-
static BOOL g_IsRunning = FALSE;
/*** This function enumerates the available battery devices and provides the remaining
capacity
@@ -168,56 +165,67 @@
return i - 1;
}
+/*** This function returns the respective icon as per the current battery capacity.
+ It also does the work of setting global parameters of battery capacity and
tooltips.
+@param hinst: instance handle
+@return : icon handle
+*/
static HICON DynamicLoadIcon(HINSTANCE hinst)
-{
+{
HICON hBatIcon;
float cap = 0;
DWORD dw = 0;
UINT index = -1;
HRESULT hr = GetBatteryState(cap, dw);
+
if (!FAILED(hr) && (dw & GBS_HASBATTERY))
{
index = Quantize(cap, 4);
g_batCap = cap;
}
+ else
+ {
+ g_batCap = 0;
+ hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_BATTCAP_ERR));
+ g_strTooltip.LoadStringW(IDS_PWR_UNKNOWN_REMAINING);
+ return hBatIcon;
+ }
if (dw & GBS_ONBATTERY)
- hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(index<0 ? IDI_BATTCAP_ERR :
br_icons[index]));
+ {
+ hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(br_icons[index]));
+ g_strTooltip.Format(IDS_PWR_PERCENT_REMAINING, cap);
+
+ }
else
- hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(index<0 ? IDI_BATTCAP_ERR :
bc_icons[index]));
+ {
+ hBatIcon = LoadIcon(hinst, MAKEINTRESOURCE(bc_icons[index]));
+ g_strTooltip.Format(IDS_PWR_CHARGING, cap);
+ }
return hBatIcon;
}
HRESULT STDMETHODCALLTYPE Power_Init(_In_ CSysTray * pSysTray)
-{
- WCHAR strTooltip[128];
- HICON icon;
-
- TRACE("Power_Init\n");
-
+{
+ TRACE("Power_Init\n");
+ g_hIconBattery = DynamicLoadIcon(g_hInstance);
+ g_IsRunning = TRUE;
+
+ return pSysTray->NotifyIcon(NIM_ADD, ID_ICON_POWER, g_hIconBattery,
g_strTooltip);
+}
+
+HRESULT STDMETHODCALLTYPE Power_Update(_In_ CSysTray * pSysTray)
+{
+ TRACE("Power_Update\n");
g_hIconBattery = DynamicLoadIcon(g_hInstance);
- swprintf(strTooltip, L"%.2f %% Remaining", g_batCap);
- g_IsRunning = TRUE;
-
- return pSysTray->NotifyIcon(NIM_ADD, ID_ICON_POWER, g_hIconBattery, strTooltip);
-}
-
-HRESULT STDMETHODCALLTYPE Power_Update(_In_ CSysTray * pSysTray)
-{
- TRACE("Power_Update\n");
-
- WCHAR strTooltip[128];
- g_hIconBattery = DynamicLoadIcon(g_hInstance);
- swprintf(strTooltip, L"%.2f %% Remaining", g_batCap);
-
- return pSysTray->NotifyIcon(NIM_MODIFY, ID_ICON_POWER, g_hIconBattery,
strTooltip);
+
+ return pSysTray->NotifyIcon(NIM_MODIFY, ID_ICON_POWER, g_hIconBattery,
g_strTooltip);
}
HRESULT STDMETHODCALLTYPE Power_Shutdown(_In_ CSysTray * pSysTray)
{
TRACE("Power_Shutdown\n");
-
g_IsRunning = FALSE;
return pSysTray->NotifyIcon(NIM_DELETE, ID_ICON_POWER, NULL, NULL);
@@ -230,22 +238,18 @@
static void _ShowContextMenu(CSysTray * pSysTray)
{
- WCHAR strOpen[128];
-
- LoadStringW(g_hInstance, IDS_PWR_PROPERTIES, strOpen, _countof(strOpen));
-
- HMENU hPopup = CreatePopupMenu();
- AppendMenuW(hPopup, MF_STRING, IDS_PWR_PROPERTIES, strOpen);
-
+ CString strOpen((LPCSTR)IDS_PWR_PROPERTIES);
+ HMENU hPopup = CreatePopupMenu();
+ AppendMenuW(hPopup, MF_STRING, IDS_PWR_PROPERTIES, strOpen);
+
+ SetForegroundWindow(pSysTray->GetHWnd());
DWORD flags = TPM_RETURNCMD | TPM_NONOTIFY | TPM_RIGHTALIGN | TPM_BOTTOMALIGN;
- DWORD msgPos = GetMessagePos();
-
- SetForegroundWindow(pSysTray->GetHWnd());
+ POINT pt;
+ GetCursorPos(&pt);
+
DWORD id = TrackPopupMenuEx(hPopup, flags,
- GET_X_LPARAM(msgPos), GET_Y_LPARAM(msgPos),
- pSysTray->GetHWnd(), NULL);
-
- DestroyMenu(hPopup);
+ pt.x, pt.y,
+ pSysTray->GetHWnd(), NULL);
switch (id)
{
@@ -253,6 +257,7 @@
_RunPower();
break;
}
+ DestroyMenu(hPopup);
}
static
@@ -287,8 +292,8 @@
{
PWRSCHEMECONTEXT PowerSchemeContext = {NULL, 0, 0};
UINT uiActiveScheme;
- DWORD id, msgPos;
-
+ DWORD id;
+ POINT pt;
PowerSchemeContext.hPopup = CreatePopupMenu();
EnumPwrSchemes(PowerSchemesEnumProc, (LPARAM)&PowerSchemeContext);
@@ -301,13 +306,13 @@
MF_BYCOMMAND);
}
- msgPos = GetMessagePos();
-
SetForegroundWindow(pSysTray->GetHWnd());
+ GetCursorPos(&pt);
+
id = TrackPopupMenuEx(PowerSchemeContext.hPopup,
TPM_RETURNCMD | TPM_NONOTIFY | TPM_RIGHTALIGN |
TPM_BOTTOMALIGN,
- GET_X_LPARAM(msgPos),
- GET_Y_LPARAM(msgPos),
+ pt.x,
+ pt.y,
pSysTray->GetHWnd(),
NULL);
@@ -363,7 +368,7 @@
break;
case WM_RBUTTONUP:
- _ShowContextMenu(pSysTray);
+ _ShowContextMenu(pSysTray);
break;
case WM_RBUTTONDBLCLK:
Modified: branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/stobject.rc
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/shellext/reactos/dll/…
==============================================================================
--- branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/stobject.rc [iso-8859-1]
(original)
+++ branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/stobject.rc [iso-8859-1] Tue
Jul 25 21:48:51 2017
@@ -31,7 +31,7 @@
#include <reactos/manifest_dll.rc>
// Strings common to all languages
-STRINGTABLE
+/*STRINGTABLE
BEGIN
// Power related strings
IDS_PWR_RUN "shell32.dll,Control_RunDLL PowerCfg.cpl"
@@ -41,7 +41,7 @@
// Volume related strings
IDS_VOL_RUN "SNDVOL32.EXE"
-END
+END*/
/* UTF-8 */
#pragma code_page(65001)
Modified: branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/volume.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2017/shellext/reactos/dll/…
==============================================================================
--- branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/volume.cpp [iso-8859-1]
(original)
+++ branches/GSoC_2017/shellext/reactos/dll/shellext/stobject/volume.cpp [iso-8859-1] Tue
Jul 25 21:48:51 2017
@@ -243,11 +243,12 @@
AppendMenuW(hPopup, MF_STRING, IDS_VOL_ADJUST, strAdjust);
DWORD flags = TPM_RETURNCMD | TPM_NONOTIFY | TPM_RIGHTALIGN | TPM_BOTTOMALIGN;
- DWORD msgPos = GetMessagePos();
-
+ POINT pt;
SetForegroundWindow(pSysTray->GetHWnd());
+ GetCursorPos(&pt);
+
DWORD id = TrackPopupMenuEx(hPopup, flags,
- GET_X_LPARAM(msgPos), GET_Y_LPARAM(msgPos),
+ pt.x, pt.y,
pSysTray->GetHWnd(), NULL);
DestroyMenu(hPopup);