|
|
@ -2,6 +2,7 @@ |
|
|
|
#include <windows.h> |
|
|
|
#include <windows.h> |
|
|
|
#include <shellapi.h> |
|
|
|
#include <shellapi.h> |
|
|
|
#include "../Config.h" |
|
|
|
#include "../Config.h" |
|
|
|
|
|
|
|
#include "../RouterContext.h" |
|
|
|
#include "../version.h" |
|
|
|
#include "../version.h" |
|
|
|
#include "resource.h" |
|
|
|
#include "resource.h" |
|
|
|
#include "Win32App.h" |
|
|
|
#include "Win32App.h" |
|
|
@ -15,10 +16,13 @@ |
|
|
|
#define ID_EXIT 2001 |
|
|
|
#define ID_EXIT 2001 |
|
|
|
#define ID_CONSOLE 2002 |
|
|
|
#define ID_CONSOLE 2002 |
|
|
|
#define ID_APP 2003 |
|
|
|
#define ID_APP 2003 |
|
|
|
|
|
|
|
#define ID_GRACEFUL_SHUTDOWN 2004 |
|
|
|
|
|
|
|
|
|
|
|
#define ID_TRAY_ICON 2050 |
|
|
|
#define ID_TRAY_ICON 2050 |
|
|
|
#define WM_TRAYICON (WM_USER + 1) |
|
|
|
#define WM_TRAYICON (WM_USER + 1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define IDT_GRACEFUL_SHUTDOWN_TIMER 2100 |
|
|
|
|
|
|
|
|
|
|
|
namespace i2p |
|
|
|
namespace i2p |
|
|
|
{ |
|
|
|
{ |
|
|
|
namespace win32 |
|
|
|
namespace win32 |
|
|
@ -30,6 +34,7 @@ namespace win32 |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_APP, "Show app"); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_APP, "Show app"); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_ABOUT, "&About..."); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_ABOUT, "&About..."); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_SEPARATOR, NULL, NULL); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_SEPARATOR, NULL, NULL); |
|
|
|
|
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_GRACEFUL_SHUTDOWN, "&Graceful shutdown"); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_EXIT, "E&xit"); |
|
|
|
InsertMenu (hPopup, -1, MF_BYPOSITION | MF_STRING, ID_EXIT, "E&xit"); |
|
|
|
SetMenuDefaultItem (hPopup, ID_CONSOLE, FALSE); |
|
|
|
SetMenuDefaultItem (hPopup, ID_CONSOLE, FALSE); |
|
|
|
SendMessage (hWnd, WM_INITMENUPOPUP, (WPARAM)hPopup, 0); |
|
|
|
SendMessage (hWnd, WM_INITMENUPOPUP, (WPARAM)hPopup, 0); |
|
|
@ -82,6 +87,7 @@ namespace win32 |
|
|
|
case WM_CLOSE: |
|
|
|
case WM_CLOSE: |
|
|
|
{ |
|
|
|
{ |
|
|
|
RemoveTrayIcon (hWnd); |
|
|
|
RemoveTrayIcon (hWnd); |
|
|
|
|
|
|
|
KillTimer (hWnd, IDT_GRACEFUL_SHUTDOWN_TIMER); |
|
|
|
PostQuitMessage (0); |
|
|
|
PostQuitMessage (0); |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
@ -101,6 +107,12 @@ namespace win32 |
|
|
|
PostMessage (hWnd, WM_CLOSE, 0, 0); |
|
|
|
PostMessage (hWnd, WM_CLOSE, 0, 0); |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
case ID_GRACEFUL_SHUTDOWN: |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
i2p::context.SetAcceptsTunnels (false); |
|
|
|
|
|
|
|
SetTimer (hWnd, IDT_GRACEFUL_SHUTDOWN_TIMER, 10*60*1000, nullptr); // 10 minutes
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
|
|
} |
|
|
|
case ID_CONSOLE: |
|
|
|
case ID_CONSOLE: |
|
|
|
{ |
|
|
|
{ |
|
|
|
char buf[30]; |
|
|
|
char buf[30]; |
|
|
@ -167,6 +179,15 @@ namespace win32 |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
case WM_TIMER: |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (wParam == IDT_GRACEFUL_SHUTDOWN_TIMER) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
PostMessage (hWnd, WM_CLOSE, 0, 0); // exit
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return DefWindowProc( hWnd, uMsg, wParam, lParam); |
|
|
|
return DefWindowProc( hWnd, uMsg, wParam, lParam); |
|
|
|
} |
|
|
|
} |
|
|
|