summaryrefslogtreecommitdiff
path: root/plugins/ProxySwitch/src/opt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ProxySwitch/src/opt.cpp')
-rw-r--r--plugins/ProxySwitch/src/opt.cpp191
1 files changed, 191 insertions, 0 deletions
diff --git a/plugins/ProxySwitch/src/opt.cpp b/plugins/ProxySwitch/src/opt.cpp
new file mode 100644
index 0000000000..44273f705e
--- /dev/null
+++ b/plugins/ProxySwitch/src/opt.cpp
@@ -0,0 +1,191 @@
+/*
+proxySwitch
+
+The plugin watches IP address changes, reports them via popups and adjusts
+the proxy settings of Miranda and Internet Explorer accordingly.
+*/
+
+#include "stdafx.h"
+
+int help_shown;
+
+void ShowHelp( HWND hdlg, int showhide_help ) {
+ int showhide_others = showhide_help == SW_SHOW ? SW_HIDE : SW_SHOW;
+ help_shown = showhide_help;
+
+ ShowWindow(GetDlgItem(hdlg, IDC_HELP_1), showhide_help);
+ ShowWindow(GetDlgItem(hdlg, IDC_HELP_2), showhide_help);
+ ShowWindow(GetDlgItem(hdlg, IDC_HELP_3), showhide_help);
+
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_MIRANDA), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_IE), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_FIREFOX), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_PROXYIPMENU), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_SHOWMYIPMENU), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_DEFAULTCOLORS), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_SHOWPROXYSTATUS), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_ALWAY_RECONNECT), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_CHECK_POPUPS), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_BGCOLOR), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_TEXTCOLOR), showhide_others);
+ ShowWindow(GetDlgItem(hdlg, IDC_EDIT_HIDEINTF), showhide_others);
+}
+
+
+BOOL CALLBACK OptionsProc(HWND hdlg,UINT msg,WPARAM wparam,LPARAM lparam) {
+
+ switch(msg) {
+
+ case WM_INITDIALOG:
+ opt_startup = TRUE;
+ LoadSettings();
+ ShowHelp( hdlg, SW_HIDE );
+ SetDlgItemText(hdlg, IDC_EDIT_USEPROXY, opt_useProxy);
+ SetDlgItemText(hdlg, IDC_EDIT_NOPROXY, opt_noProxy);
+ CheckDlgButton(hdlg, IDC_CHECK_MIRANDA, opt_miranda ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_IE, opt_ie ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_FIREFOX, opt_firefox ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_SHOWMYIPMENU, opt_showMyIP ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_PROXYIPMENU, opt_showProxyIP ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_ALWAY_RECONNECT, opt_alwayReconnect ? BST_CHECKED : BST_UNCHECKED);
+ SetDlgItemText(hdlg, IDC_EDIT_HIDEINTF, opt_hideIntf);
+ SendDlgItemMessage(hdlg,IDC_BGCOLOR,CPM_SETCOLOUR,0,opt_bgColor);
+ SendDlgItemMessage(hdlg,IDC_TEXTCOLOR,CPM_SETCOLOUR,0,opt_txtColor);
+ CheckDlgButton(hdlg, IDC_CHECK_POPUPS, opt_popups ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_DEFAULTCOLORS, opt_defaultColors ? BST_CHECKED : BST_UNCHECKED);
+ CheckDlgButton(hdlg, IDC_CHECK_SHOWPROXYSTATUS, opt_showProxyState ? BST_CHECKED : BST_UNCHECKED);
+ EnableWindow(GetDlgItem(hdlg, IDC_CHECK_FIREFOX), Firefox_Installed());
+ EnableWindow(GetDlgItem(hdlg, IDC_CHECK_POPUPS), opt_popupPluginInstalled);
+ EnableWindow(GetDlgItem(hdlg, IDC_BGCOLOR), opt_popupPluginInstalled && opt_popups && !opt_defaultColors);
+ EnableWindow(GetDlgItem(hdlg, IDC_TEXTCOLOR), opt_popupPluginInstalled && opt_popups && !opt_defaultColors);
+ EnableWindow(GetDlgItem(hdlg, IDC_CHECK_DEFAULTCOLORS), opt_popupPluginInstalled && opt_popups);
+ EnableWindow(GetDlgItem(hdlg, IDC_CHECK_SHOWPROXYSTATUS), opt_popupPluginInstalled && opt_popups);
+ ShowWindow(GetDlgItem(hdlg, IDC_RESTARTREQUIRED), opt_not_restarted ? SW_SHOW : SW_HIDE);
+ TranslateDialogDefault(hdlg);
+ opt_startup = FALSE;
+ return 1;
+
+ case WM_NOTIFY:
+ switch (((LPNMHDR)lparam)->code) {
+ case PSN_APPLY:
+ opt_not_restarted = opt_not_restarted || IsDlgButtonChecked(hdlg,IDC_CHECK_PROXYIPMENU) != opt_showProxyIP || IsDlgButtonChecked(hdlg,IDC_CHECK_SHOWMYIPMENU) != opt_showMyIP;
+ ShowWindow(GetDlgItem(hdlg, IDC_RESTARTREQUIRED), opt_not_restarted ? SW_SHOW : SW_HIDE);
+ GetDlgItemText(hdlg,IDC_EDIT_NOPROXY,opt_noProxy,MAX_IPLIST_LENGTH);
+ GetDlgItemText(hdlg,IDC_EDIT_USEPROXY,opt_useProxy,MAX_IPLIST_LENGTH);
+ GetDlgItemText(hdlg,IDC_EDIT_HIDEINTF,opt_hideIntf,MAX_IPLIST_LENGTH);
+ opt_miranda = IsDlgButtonChecked(hdlg,IDC_CHECK_MIRANDA);
+ opt_ie = IsDlgButtonChecked(hdlg,IDC_CHECK_IE);
+ opt_firefox = IsDlgButtonChecked(hdlg,IDC_CHECK_FIREFOX);
+ opt_showMyIP = IsDlgButtonChecked(hdlg,IDC_CHECK_SHOWMYIPMENU);
+ opt_showProxyIP = IsDlgButtonChecked(hdlg,IDC_CHECK_PROXYIPMENU);
+ opt_alwayReconnect = IsDlgButtonChecked(hdlg,IDC_CHECK_ALWAY_RECONNECT);
+ opt_popups = IsDlgButtonChecked(hdlg,IDC_CHECK_POPUPS);
+ opt_defaultColors = IsDlgButtonChecked(hdlg,IDC_CHECK_DEFAULTCOLORS);
+ opt_showProxyState = IsDlgButtonChecked(hdlg,IDC_CHECK_SHOWPROXYSTATUS);
+ opt_bgColor = SendDlgItemMessage(hdlg,IDC_BGCOLOR,CPM_GETCOLOUR,0,0);
+ opt_txtColor = SendDlgItemMessage(hdlg,IDC_TEXTCOLOR,CPM_GETCOLOUR,0,0);
+ SaveSettings();
+ UpdatePopupMenu(opt_popups);
+ return 1;
+ }
+ break;
+
+ case WM_COMMAND:
+ if (opt_startup) return 0;
+ if (HIWORD(wparam)==BN_CLICKED && GetFocus()==(HWND)lparam && LOWORD(wparam)!=IDC_BTN_HELP) SendMessage(GetParent(hdlg),PSM_CHANGED,0,0);
+ switch(LOWORD(wparam)) {
+
+ case IDC_BTN_HELP:
+ ShowHelp( hdlg, help_shown == SW_SHOW ? SW_HIDE : SW_SHOW );
+ break;
+
+ case IDC_EDIT_USEPROXY:
+ case IDC_EDIT_NOPROXY:
+ case IDC_EDIT_HIDEINTF:
+ if (HIWORD(wparam) == EN_CHANGE && (HWND)lparam == GetFocus()) SendMessage(GetParent(hdlg),PSM_CHANGED,0,0);
+ break;
+
+ case IDC_BGCOLOR:
+ case IDC_TEXTCOLOR:
+ if (HIWORD(wparam) == CPN_COLOURCHANGED) SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
+ break;
+
+ case IDC_CHECK_PROXYIPMENU:
+ case IDC_CHECK_SHOWMYIPMENU:
+ ShowWindow(GetDlgItem(hdlg, IDC_RESTARTREQUIRED), opt_not_restarted || (IsDlgButtonChecked(hdlg,IDC_CHECK_PROXYIPMENU) != opt_showProxyIP || IsDlgButtonChecked(hdlg,IDC_CHECK_SHOWMYIPMENU) != opt_showMyIP) ? SW_SHOW : SW_HIDE );
+ break;
+
+ case IDC_CHECK_DEFAULTCOLORS:
+ case IDC_CHECK_POPUPS:
+ if ( ! opt_popupPluginInstalled ) break;
+ EnableWindow(GetDlgItem(hdlg, IDC_BGCOLOR), IsDlgButtonChecked(hdlg,IDC_CHECK_POPUPS) && !IsDlgButtonChecked(hdlg,IDC_CHECK_DEFAULTCOLORS));
+ EnableWindow(GetDlgItem(hdlg, IDC_TEXTCOLOR), IsDlgButtonChecked(hdlg,IDC_CHECK_POPUPS) && !IsDlgButtonChecked(hdlg,IDC_CHECK_DEFAULTCOLORS));
+ EnableWindow(GetDlgItem(hdlg, IDC_CHECK_DEFAULTCOLORS), IsDlgButtonChecked(hdlg,IDC_CHECK_POPUPS));
+ EnableWindow(GetDlgItem(hdlg, IDC_CHECK_SHOWPROXYSTATUS), IsDlgButtonChecked(hdlg,IDC_CHECK_POPUPS));
+ SendMessage(GetParent(hdlg), PSM_CHANGED, 0, 0);
+ break;
+ }
+ break;
+
+ case WM_CLOSE:
+ EndDialog(hdlg,0);
+ break;
+ }
+ return 0;
+}
+
+
+int OptInit(WPARAM wParam,LPARAM lParam) {
+ OPTIONSDIALOGPAGE odp = { 0 };
+
+ //ZeroMemory(&odp,sizeof(odp));
+ //odp.cbSize=sizeof(odp);
+ odp.position=95600;
+ odp.hInstance= g_plugin.getInst();
+ odp.pszTemplate=MAKEINTRESOURCEA(IDD_OPTIONS);
+ odp.pfnDlgProc=OptionsProc;
+ odp.szGroup.w=LPGENW("Network");
+ odp.szTitle.w= LPGENW("proxySwitch");
+ odp.flags=ODPF_BOLDGROUPS | ODPF_UNICODE;
+ g_plugin.addOptions(wParam, &odp);
+
+ return 0;
+}
+
+void LoadSettings(void) {
+ DBVARIANT dbv;
+ if (db_get(NULL, MODULENAME,"UseProxyIPNets",&dbv)) lstrcpy(opt_useProxy, L""); else lstrcpy(opt_useProxy, dbv.pwszVal);
+ db_free(&dbv);
+ if (db_get(NULL, MODULENAME,"NoProxyIPNets",&dbv)) lstrcpy(opt_noProxy, L""); else lstrcpy(opt_noProxy, dbv.pwszVal);
+ db_free(&dbv);
+ if (db_get(NULL, MODULENAME,"HideInterfaces",&dbv)) lstrcpy(opt_hideIntf, L""); else lstrcpy(opt_hideIntf, dbv.pwszVal);
+ db_free(&dbv);
+ opt_miranda = db_get_b(NULL, MODULENAME,"ManageMirandaProxy",TRUE);
+ opt_ie = db_get_b(NULL,MODULENAME,"ManageIEProxy",FALSE);
+ opt_firefox = db_get_b(NULL,MODULENAME,"ManageFirefoxProxy",FALSE) && Firefox_Installed();
+ opt_alwayReconnect = db_get_b(NULL,MODULENAME,"AlwaysReconnect",FALSE);
+ opt_showMyIP = db_get_b(NULL,MODULENAME,"ShowMyIP",TRUE);
+ opt_showProxyIP = db_get_b(NULL,MODULENAME,"ShowProxyIP",TRUE);
+ opt_popups = db_get_b(NULL,MODULENAME,"PopupEnabled",TRUE);
+ opt_defaultColors = db_get_b(NULL,MODULENAME,"PopupDefaultColors",TRUE);
+ opt_showProxyState = db_get_b(NULL,MODULENAME,"ShowProxyStatus",TRUE);
+ opt_bgColor = db_get_dw(NULL,MODULENAME,"PopupBgColor",GetSysColor(COLOR_BTNFACE));
+ opt_txtColor = db_get_dw(NULL,MODULENAME,"PopupTxtColor",GetSysColor(COLOR_WINDOWTEXT));
+}
+
+void SaveSettings(void) {
+ db_set_ws(NULL, MODULENAME, "UseProxyIPNets", opt_useProxy);
+ db_set_ws(NULL, MODULENAME, "NoProxyIPNets", opt_noProxy);
+ db_set_ws(NULL, MODULENAME, "HideInterfaces", opt_hideIntf);
+ db_set_b(NULL, MODULENAME, "ManageMirandaProxy", (BYTE)opt_miranda );
+ db_set_b(NULL, MODULENAME, "ManageIEProxy", (BYTE)opt_ie );
+ db_set_b(NULL, MODULENAME, "ManageFirefoxProxy", (BYTE)opt_firefox );
+ db_set_b(NULL, MODULENAME, "AlwaysReconnect", (BYTE)opt_alwayReconnect);
+ db_set_b(NULL, MODULENAME, "ShowMyIP", (BYTE)opt_showMyIP );
+ db_set_b(NULL, MODULENAME, "ShowProxyIP", (BYTE)opt_showProxyIP );
+ db_set_b(NULL, MODULENAME, "PopupEnabled", (BYTE)opt_popups );
+ db_set_b(NULL, MODULENAME, "PopupDefaultColors", (BYTE)opt_defaultColors );
+ db_set_b(NULL, MODULENAME, "ShowProxyStatus", (BYTE)opt_showProxyState);
+ db_set_dw(NULL, MODULENAME, "PopupBgColor", (DWORD)opt_bgColor );
+ db_set_dw(NULL, MODULENAME, "PopupTxtColor", (DWORD)opt_txtColor );
+}