Example #1
0
	virtual void activate()
	{
		if (g_main_window)
		{
			if (g_icon_created && !cfg_show_systray) destroy_systray_icon();

			if (!is_visible())
			{
				ShowWindow(g_main_window, SW_RESTORE);
				if ((GetWindowLong(g_main_window, GWL_EXSTYLE) & WS_EX_LAYERED))
					RedrawWindow(g_main_window,
					NULL,
					NULL,
					RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN | RDW_UPDATENOW);
			}
			SetForegroundWindow(g_main_window);
		}
	}
	static BOOL CALLBACK ConfigProc(HWND wnd, UINT msg, WPARAM wp, LPARAM lp)
	{

		switch (msg)
		{
		case WM_INITDIALOG:
		{
			refresh_me(wnd);
			initialised = true;
		}

		break;
		case WM_DESTROY:
		{
			initialised = false;
		}
		break;
		case WM_COMMAND:
			switch (wp)
			{


			case (EN_CHANGE << 16) | IDC_STRING:
				main_window::config_notification_icon_script.set(string_utf8_from_window((HWND)lp));
				break;

			case IDC_NOWPL:
			{
				cfg_np = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
			}
			break;
			case IDC_USE_CUSTOM_ICON:
			{
				cfg_custom_icon = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				create_icon_handle(); create_systray_icon();
			}
			break;
			case IDC_BROWSE_ICON:
			{
				pfc::string8 path = cfg_tray_icon_path;
				if (uGetOpenFileName(wnd, "Icon Files (*.ico)|*.ico|All Files (*.*)|*.*", 0, "ico", "Choose Icon", NULL, path, FALSE))
				{
					cfg_tray_icon_path = path;
					if (cfg_custom_icon) { create_icon_handle(); create_systray_icon(); }
				}
			}
			break;


			case IDC_MINIMISE_TO_SYSTRAY:
			{
				cfg_minimise_to_tray = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
			}
			break;
			case IDC_SHOW_SYSTRAY:
			{
				cfg_show_systray = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
				//				EnableWindow(GetDlgItem(wnd, IDC_MINIMISE_TO_SYSTRAY), cfg_show_systray);

				if (g_main_window)
				{
					auto is_iconic = IsIconic(g_main_window) != 0;
					if (cfg_show_systray && !g_icon_created)
					{
						create_systray_icon();
					}
					else if (!cfg_show_systray && g_icon_created && (!is_iconic || !cfg_minimise_to_tray))
					{
						destroy_systray_icon();
						if (is_iconic)
							standard_commands::main_activate();
					}
					if (g_status) update_systray();
				}
			}
			break;
			case IDC_BALLOON:
			{
				cfg_balloon = uSendMessage((HWND)lp, BM_GETCHECK, 0, 0);
			}
			break;
			}
		}
		return 0;
	}