Browse Source

Ask to minimize on Win32app close

This closes #413
pull/414/head
Mikhail Titov 9 years ago
parent
commit
59f99ea9bb
  1. 1
      Config.cpp
  2. 23
      Win32/Win32App.cpp

1
Config.cpp

@ -126,6 +126,7 @@ namespace config { @@ -126,6 +126,7 @@ namespace config {
#ifdef _WIN32
("svcctl", value<std::string>()->default_value(""), "Windows service management ('install' or 'remove')")
("insomnia", value<bool>()->zero_tokens()->default_value(false), "Prevent system from sleeping")
("close", value<std::string>()->default_value("ask"), "On close action") // minimize, exit, ask TODO: add custom validator or something
#endif
;

23
Win32/Win32App.cpp

@ -119,6 +119,29 @@ namespace win32 @@ -119,6 +119,29 @@ namespace win32
ShowWindow(hWnd, SW_HIDE);
return 0;
}
case SC_CLOSE:
{
std::string close; i2p::config::GetOption("close", close);
if (0 == close.compare("ask"))
switch(::MessageBox(hWnd, "Would you like to minimize instead of exiting?"
" You can add 'close' configuration option. Valid values are: ask, minimize, exit.",
"Minimize instead of exiting?", MB_ICONQUESTION | MB_YESNOCANCEL | MB_DEFBUTTON1))
{
case IDYES: close = "minimize"; break;
case IDNO: close = "exit"; break;
default: return 0;
}
if (0 == close.compare("minimize"))
{
ShowWindow(hWnd, SW_HIDE);
return 0;
}
if (0 != close.compare("exit"))
{
::MessageBox(hWnd, close.c_str(), "Unknown close action in config", MB_OK | MB_ICONWARNING);
return 0;
}
}
}
}
case WM_TRAYICON:

Loading…
Cancel
Save