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); | ||||
| } | ||||
| 
 | ||||
| static HICON | ||||
| HICON | ||||
| LoadLocalizedIconEx(const UINT iconId, int cxDesired, int cyDesired) | ||||
| { | ||||
|     LANGID langId = GetGUILanguage(); | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ PTSTR LoadLocalizedString(const UINT, ...); | |||
| int LoadLocalizedStringBuf(PTSTR, const int, const UINT, ...); | ||||
| void ShowLocalizedMsg(const UINT, ...); | ||||
| int ShowLocalizedMsgEx(const UINT, LPCTSTR, const UINT, ...); | ||||
| HICON LoadLocalizedIconEx(const UINT, int cx, int cy); | ||||
| HICON LoadLocalizedIcon(const UINT); | ||||
| HICON LoadLocalizedSmallIcon(const UINT); | ||||
| LPCDLGTEMPLATE LocalizedDialogResource(const UINT); | ||||
|  |  | |||
							
								
								
									
										37
									
								
								tray.c
								
								
								
								
							
							
						
						
									
										37
									
								
								tray.c
								
								
								
								
							|  | @ -45,12 +45,32 @@ HMENU hMenu; | |||
| HMENU hMenuConn[MAX_CONFIGS]; | ||||
| HMENU hMenuService; | ||||
| 
 | ||||
| HBITMAP hbmpConnecting; | ||||
| 
 | ||||
| NOTIFYICONDATA ni; | ||||
| extern options_t o; | ||||
| 
 | ||||
| #define USE_NESTED_CONFIG_MENU ((o.config_menu_view == CONFIG_VIEW_AUTO && o.num_configs > 25)   \ | ||||
|                                  || (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 */ | ||||
| void | ||||
| CreatePopupMenus() | ||||
|  | @ -61,6 +81,8 @@ CreatePopupMenus() | |||
|      */ | ||||
|     assert(o.num_groups > 0); | ||||
| 
 | ||||
|     CreateBitmaps(); | ||||
| 
 | ||||
|     for (int i = 0; i < o.num_configs; i++) | ||||
|     { | ||||
|         hMenuConn[i] = CreatePopupMenu(); | ||||
|  | @ -425,7 +447,10 @@ void | |||
| SetMenuStatusById(int i, conn_state_t state) | ||||
| { | ||||
|     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) | ||||
|     { | ||||
|  | @ -463,6 +488,16 @@ SetMenuStatusById(int i, conn_state_t state) | |||
|         if (USE_NESTED_CONFIG_MENU && 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)); | ||||
| 
 | ||||
|         PrintDebug(L"Setting state of config %s checked = %d, parent %s, pos %d", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Selva Nair
						Selva Nair