mirror of https://github.com/OpenVPN/openvpn-gui
Show a mark against profiles that are in connecting state
Currently we show a check mark on connected profiles with no indication on profiles that may be in the connecting state. Change this by adding a mark against connecting/reconnecting profiles. The yellow connecting state icon is used to generate this mark although a custom designed check mark may look better. In case of nested configs, the parent menus are marked with a tick mark and only the profile is marked with the connecting icon. No change in behaviour for profiles that are connected or disconnected. Trac #1241 Signed-off-by: Selva Nair <selva.nair@gmail.com>pull/391/head
parent
bcdda39660
commit
70b07c82d9
|
@ -242,7 +242,7 @@ ShowLocalizedMsg(const UINT stringId, ...)
|
||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static HICON
|
HICON
|
||||||
LoadLocalizedIconEx(const UINT iconId, int cxDesired, int cyDesired)
|
LoadLocalizedIconEx(const UINT iconId, int cxDesired, int cyDesired)
|
||||||
{
|
{
|
||||||
LANGID langId = GetGUILanguage();
|
LANGID langId = GetGUILanguage();
|
||||||
|
|
|
@ -27,6 +27,7 @@ PTSTR LoadLocalizedString(const UINT, ...);
|
||||||
int LoadLocalizedStringBuf(PTSTR, const int, const UINT, ...);
|
int LoadLocalizedStringBuf(PTSTR, const int, const UINT, ...);
|
||||||
void ShowLocalizedMsg(const UINT, ...);
|
void ShowLocalizedMsg(const UINT, ...);
|
||||||
int ShowLocalizedMsgEx(const UINT, LPCTSTR, const UINT, ...);
|
int ShowLocalizedMsgEx(const UINT, LPCTSTR, const UINT, ...);
|
||||||
|
HICON LoadLocalizedIconEx(const UINT, int cx, int cy);
|
||||||
HICON LoadLocalizedIcon(const UINT);
|
HICON LoadLocalizedIcon(const UINT);
|
||||||
HICON LoadLocalizedSmallIcon(const UINT);
|
HICON LoadLocalizedSmallIcon(const UINT);
|
||||||
LPCDLGTEMPLATE LocalizedDialogResource(const UINT);
|
LPCDLGTEMPLATE LocalizedDialogResource(const UINT);
|
||||||
|
|
37
tray.c
37
tray.c
|
@ -45,12 +45,32 @@ HMENU hMenu;
|
||||||
HMENU hMenuConn[MAX_CONFIGS];
|
HMENU hMenuConn[MAX_CONFIGS];
|
||||||
HMENU hMenuService;
|
HMENU hMenuService;
|
||||||
|
|
||||||
|
HBITMAP hbmpConnecting;
|
||||||
|
|
||||||
NOTIFYICONDATA ni;
|
NOTIFYICONDATA ni;
|
||||||
extern options_t o;
|
extern options_t o;
|
||||||
|
|
||||||
#define USE_NESTED_CONFIG_MENU ((o.config_menu_view == CONFIG_VIEW_AUTO && o.num_configs > 25) \
|
#define USE_NESTED_CONFIG_MENU ((o.config_menu_view == CONFIG_VIEW_AUTO && o.num_configs > 25) \
|
||||||
|| (o.config_menu_view == CONFIG_VIEW_NESTED))
|
|| (o.config_menu_view == CONFIG_VIEW_NESTED))
|
||||||
|
|
||||||
|
|
||||||
|
/* Create menu check bitmaps */
|
||||||
|
static void
|
||||||
|
CreateBitmaps()
|
||||||
|
{
|
||||||
|
if (hbmpConnecting)
|
||||||
|
return;
|
||||||
|
int cx = GetSystemMetrics(SM_CXMENUCHECK);
|
||||||
|
int cy = GetSystemMetrics(SM_CYMENUCHECK);
|
||||||
|
if (!hbmpConnecting)
|
||||||
|
{
|
||||||
|
HICON icon = LoadLocalizedIconEx(ID_ICO_CONNECTING, cx, cy);
|
||||||
|
ICONINFO iconinfo;
|
||||||
|
GetIconInfo(icon, &iconinfo);
|
||||||
|
hbmpConnecting = iconinfo.hbmColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Create popup menus */
|
/* Create popup menus */
|
||||||
void
|
void
|
||||||
CreatePopupMenus()
|
CreatePopupMenus()
|
||||||
|
@ -61,6 +81,8 @@ CreatePopupMenus()
|
||||||
*/
|
*/
|
||||||
assert(o.num_groups > 0);
|
assert(o.num_groups > 0);
|
||||||
|
|
||||||
|
CreateBitmaps();
|
||||||
|
|
||||||
for (int i = 0; i < o.num_configs; i++)
|
for (int i = 0; i < o.num_configs; i++)
|
||||||
{
|
{
|
||||||
hMenuConn[i] = CreatePopupMenu();
|
hMenuConn[i] = CreatePopupMenu();
|
||||||
|
@ -425,7 +447,10 @@ void
|
||||||
SetMenuStatusById(int i, conn_state_t state)
|
SetMenuStatusById(int i, conn_state_t state)
|
||||||
{
|
{
|
||||||
connection_t *c = &o.conn[i];
|
connection_t *c = &o.conn[i];
|
||||||
BOOL checked = (state == connected || state == disconnecting);
|
int checked = 0;
|
||||||
|
|
||||||
|
if (state == connected || state == disconnecting) checked = 1;
|
||||||
|
else if (state != disconnected) checked = 2;
|
||||||
|
|
||||||
if (o.num_configs == 1)
|
if (o.num_configs == 1)
|
||||||
{
|
{
|
||||||
|
@ -463,6 +488,16 @@ SetMenuStatusById(int i, conn_state_t state)
|
||||||
if (USE_NESTED_CONFIG_MENU && CONFIG_GROUP(c))
|
if (USE_NESTED_CONFIG_MENU && CONFIG_GROUP(c))
|
||||||
parent = CONFIG_GROUP(c);
|
parent = CONFIG_GROUP(c);
|
||||||
|
|
||||||
|
if (checked == 1)
|
||||||
|
{
|
||||||
|
/* Connected: use system-default check mark */
|
||||||
|
SetMenuItemBitmaps(parent->menu, pos, MF_BYPOSITION, NULL, NULL);
|
||||||
|
}
|
||||||
|
else if (checked == 2)
|
||||||
|
{
|
||||||
|
/* Connecting: use our custom check mark */
|
||||||
|
SetMenuItemBitmaps(parent->menu, pos, MF_BYPOSITION, NULL, hbmpConnecting);
|
||||||
|
}
|
||||||
CheckMenuItem(parent->menu, pos, MF_BYPOSITION | (checked ? MF_CHECKED : MF_UNCHECKED));
|
CheckMenuItem(parent->menu, pos, MF_BYPOSITION | (checked ? MF_CHECKED : MF_UNCHECKED));
|
||||||
|
|
||||||
PrintDebug(L"Setting state of config %s checked = %d, parent %s, pos %d",
|
PrintDebug(L"Setting state of config %s checked = %d, parent %s, pos %d",
|
||||||
|
|
Loading…
Reference in New Issue