diff options
Diffstat (limited to 'plugins/StatusManager/src')
| -rw-r--r-- | plugins/StatusManager/src/ss_options.cpp | 489 | ||||
| -rw-r--r-- | plugins/StatusManager/src/ss_profiles.cpp | 18 | ||||
| -rw-r--r-- | plugins/StatusManager/src/startupstatus.cpp | 4 | ||||
| -rw-r--r-- | plugins/StatusManager/src/startupstatus.h | 9 | ||||
| -rw-r--r-- | plugins/StatusManager/src/version.h | 2 | 
5 files changed, 265 insertions, 257 deletions
diff --git a/plugins/StatusManager/src/ss_options.cpp b/plugins/StatusManager/src/ss_options.cpp index 2ef03d852a..1a0ff8dbaf 100644 --- a/plugins/StatusManager/src/ss_options.cpp +++ b/plugins/StatusManager/src/ss_options.cpp @@ -47,7 +47,7 @@ static char* GetStatusDesc(int status)  	return "offline";  } -static char* GetCMDLArguments(TProtoSettings& protoSettings) +static char* GetCMDLArguments(TProtoSettings &protoSettings)  {  	if (protoSettings.getCount() == 0)  		return nullptr; @@ -83,7 +83,7 @@ static char* GetCMDLArguments(TProtoSettings& protoSettings)  	return cmdl;  } -static char* GetCMDL(TProtoSettings& protoSettings) +static char* GetCMDL(TProtoSettings &protoSettings)  {  	char path[MAX_PATH];  	GetModuleFileNameA(nullptr, path, MAX_PATH); @@ -103,7 +103,7 @@ static char* GetCMDL(TProtoSettings& protoSettings)  /////////////////////////////////////////////////////////////////////////////////////////  // Link processing -static wchar_t* GetLinkDescription(TProtoSettings& protoSettings) +static wchar_t* GetLinkDescription(TProtoSettings &protoSettings)  {  	if (protoSettings.getCount() == 0)  		return nullptr; @@ -132,6 +132,9 @@ static wchar_t* GetLinkDescription(TProtoSettings& protoSettings)  	return mir_wstrndup(result, result.GetLength());  } +///////////////////////////////////////////////////////////////////////////////////////// +// Command line options +  class CCmdlDlg : public CDlgBase  {  	TProtoSettings ps; @@ -139,8 +142,8 @@ class CCmdlDlg : public CDlgBase  	CCtrlButton btnLink, btnCopy;  public: -	CCmdlDlg(int iProfileNo) -		: CDlgBase(g_plugin, IDD_CMDLOPTIONS), +	CCmdlDlg(int iProfileNo) : +		CDlgBase(g_plugin, IDD_CMDLOPTIONS),  		btnCopy(this, IDC_COPY),  		btnLink(this, IDC_SHORTCUT),  		ps(protoList) @@ -211,249 +214,281 @@ public:  	}  }; -static INT_PTR CALLBACK StartupStatusOptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +///////////////////////////////////////////////////////////////////////////////////////// +// basic class for all SS options + +class CSSOptionsBaseDlg : public CDlgBase  { -	static BOOL bInitDone = FALSE; - -	switch (msg) { -	case WM_INITDIALOG: -		bInitDone = FALSE; - -		TranslateDialogDefault(hwndDlg); -		CheckDlgButton(hwndDlg, IDC_SETPROFILE, db_get_b(0, SSMODULENAME, SETTING_SETPROFILE, 1) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_OVERRIDE, db_get_b(0, SSMODULENAME, SETTING_OVERRIDE, 1) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_SHOWDIALOG, db_get_b(0, SSMODULENAME, SETTING_SHOWDIALOG, 0) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_SETWINSTATE, db_get_b(0, SSMODULENAME, SETTING_SETWINSTATE, 0) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_SETWINLOCATION, db_get_b(0, SSMODULENAME, SETTING_SETWINLOCATION, 0) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_SETDOCKED, db_get_b(0, SSMODULENAME, SETTING_SETDOCKED, 0) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_SETWINSIZE, db_get_b(0, SSMODULENAME, SETTING_SETWINSIZE, 0) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_OFFLINECLOSE, db_get_b(0, SSMODULENAME, SETTING_OFFLINECLOSE, 1) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_AUTODIAL, db_get_b(0, SSMODULENAME, SETTING_AUTODIAL, 0) ? BST_CHECKED : BST_UNCHECKED); -		CheckDlgButton(hwndDlg, IDC_AUTOHANGUP, db_get_b(0, SSMODULENAME, SETTING_AUTOHANGUP, 0) ? BST_CHECKED : BST_UNCHECKED); -		SetDlgItemInt(hwndDlg, IDC_SETPROFILEDELAY, db_get_dw(0, SSMODULENAME, SETTING_SETPROFILEDELAY, 500), FALSE); -		SetDlgItemInt(hwndDlg, IDC_DLGTIMEOUT, db_get_dw(0, SSMODULENAME, SETTING_DLGTIMEOUT, 5), FALSE); -		SetDlgItemInt(hwndDlg, IDC_XPOS, db_get_dw(0, SSMODULENAME, SETTING_XPOS, 0), TRUE); -		SetDlgItemInt(hwndDlg, IDC_YPOS, db_get_dw(0, SSMODULENAME, SETTING_YPOS, 0), TRUE); -		SetDlgItemInt(hwndDlg, IDC_WIDTH, db_get_dw(0, SSMODULENAME, SETTING_WIDTH, 0), FALSE); -		SetDlgItemInt(hwndDlg, IDC_HEIGHT, db_get_dw(0, SSMODULENAME, SETTING_HEIGHT, 0), FALSE); -		{ -			int val = db_get_b(0, SSMODULENAME, SETTING_DOCKED, DOCKED_NONE); -			int item = SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_ADDSTRING, 0, (LPARAM)TranslateT("Left")); -			SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_SETITEMDATA, (WPARAM)item, (LPARAM)DOCKED_LEFT); -			if (val == DOCKED_LEFT) -				SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_SETCURSEL, (WPARAM)item, 0); - -			item = SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_ADDSTRING, 0, (LPARAM)TranslateT("Right")); -			SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_SETITEMDATA, (WPARAM)item, (LPARAM)DOCKED_RIGHT); -			if (val == DOCKED_RIGHT) -				SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_SETCURSEL, (WPARAM)item, 0); - -			item = SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_ADDSTRING, 0, (LPARAM)TranslateT("None")); -			SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_SETITEMDATA, (WPARAM)item, (LPARAM)DOCKED_NONE); -			if (val == DOCKED_NONE) -				SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_SETCURSEL, (WPARAM)item, 0); +	void OnFinishWizard(void*) +	{ +		if (hTTBModuleLoadedHook) { +			RemoveTopToolbarButtons(); +			CreateTopToolbarButtons(0, 0);  		} -		EnableWindow(GetDlgItem(hwndDlg, IDC_PROFILE), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE) || IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_SETPROFILEDELAY), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_OVERRIDE), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_DLGTIMEOUT), IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_WINSTATE), IsDlgButtonChecked(hwndDlg, IDC_SETWINSTATE)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_XPOS), IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_YPOS), IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION)); -		SendMessage(hwndDlg, UM_REINITPROFILES, 0, 0); -		SendMessage(hwndDlg, UM_REINITDOCKED, 0, 0); -		SendMessage(hwndDlg, UM_REINITWINSTATE, 0, 0); -		SendMessage(hwndDlg, UM_REINITWINSIZE, 0, 0); -		SetTimer(hwndDlg, 0, 100, nullptr); -		bInitDone = TRUE; -		break; - -	case WM_TIMER: -		if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION) && BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_SETWINSIZE)) { -			SetDlgItemTextA(hwndDlg, IDC_CURWINSIZE, ""); -			SetDlgItemTextA(hwndDlg, IDC_CURWINLOC, ""); -			break; -		} -		else { -			wchar_t text[128]; -			mir_snwprintf(text, TranslateT("size: %d x %d"), -				db_get_dw(0, MODULE_CLIST, SETTING_WIDTH, 0), -				db_get_dw(0, MODULE_CLIST, SETTING_HEIGHT, 0)); -			SetDlgItemText(hwndDlg, IDC_CURWINSIZE, text); - -			mir_snwprintf(text, TranslateT("loc: %d x %d"), -				db_get_dw(0, MODULE_CLIST, SETTING_XPOS, 0), -				db_get_dw(0, MODULE_CLIST, SETTING_YPOS, 0)); -			SetDlgItemText(hwndDlg, IDC_CURWINLOC, text); -		} -		break; +		UnregisterHotKeys(); +		RegisterHotKeys(); +	} -	case UM_REINITPROFILES: -		// creates profile combo box according to 'dat' -		SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_RESETCONTENT, 0, 0); -		{ -			int defProfile; -			int profileCount = GetProfileCount((WPARAM)&defProfile, 0); +protected: +	CSSOptionsBaseDlg(int iDlg) : +		CDlgBase(g_plugin, iDlg) +	{ +		m_OnFinishWizard = Callback(this, &CSSOptionsBaseDlg::OnFinishWizard); +	} +}; + +///////////////////////////////////////////////////////////////////////////////////////// +// Main SS options dialog + +class CSSMainOptDlg : public CSSOptionsBaseDlg +{ +	// creates profile combo box according to 'dat' +	void ReinitProfiles() +	{	 +		profiles.ResetContent(); + +		int defProfile; +		int profileCount = GetProfileCount((WPARAM)&defProfile, 0); +		if (profileCount > 0) {  			for (int i = 0; i < profileCount; i++) {  				wchar_t profileName[128];  				if (GetProfileName(i, (LPARAM)profileName))  					continue; -				int item = SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_ADDSTRING, 0, (LPARAM)profileName); -				SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_SETITEMDATA, item, i); +				profiles.AddString(profileName, i);  			} -			SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_SETCURSEL, defProfile, 0);  		} -		break; - -	case UM_REINITDOCKED: -		EnableWindow(GetDlgItem(hwndDlg, IDC_SETDOCKED), db_get_b(0, MODULE_CLIST, SETTING_TOOLWINDOW, 1)); -		if (!IsWindowEnabled(GetDlgItem(hwndDlg, IDC_SETDOCKED))) -			CheckDlgButton(hwndDlg, IDC_SETDOCKED, BST_UNCHECKED); - -		EnableWindow(GetDlgItem(hwndDlg, IDC_DOCKED), IsDlgButtonChecked(hwndDlg, IDC_SETDOCKED)); -		break; - -	case UM_REINITWINSTATE: -		{ -			int val = db_get_b(0, SSMODULENAME, SETTING_WINSTATE, SETTING_STATE_NORMAL); -			SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_RESETCONTENT, 0, 0); - -			int item = SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_ADDSTRING, 0, (LPARAM)TranslateT("Hidden")); -			SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_SETITEMDATA, item, (LPARAM)SETTING_STATE_HIDDEN); -			if (val == SETTING_STATE_HIDDEN) -				SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_SETCURSEL, item, 0); - -			if (!db_get_b(0, MODULE_CLIST, SETTING_TOOLWINDOW, 0)) { -				item = SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_ADDSTRING, 0, (LPARAM)TranslateT("Minimized")); -				SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_SETITEMDATA, item, SETTING_STATE_MINIMIZED); -				if (val == SETTING_STATE_MINIMIZED) -					SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_SETCURSEL, item, 0); -			} -			item = SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_ADDSTRING, 0, (LPARAM)TranslateT("Normal")); -			SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_SETITEMDATA, item, SETTING_STATE_NORMAL); -			if (val == SETTING_STATE_NORMAL || (val == SETTING_STATE_MINIMIZED) && db_get_b(0, MODULE_CLIST, SETTING_TOOLWINDOW, 0)) -				SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_SETCURSEL, item, 0); +		else profiles.AddString(TranslateT("default")); +		profiles.SetCurSel(defProfile); + +		chkSetDocked.Enable(db_get_b(0, MODULE_CLIST, SETTING_TOOLWINDOW, 1)); +		if (!chkSetDocked.Enabled()) +			chkSetDocked.SetState(false); +		onChange_Docked(0); + +		int val = db_get_b(0, SSMODULENAME, SETTING_WINSTATE, SETTING_STATE_NORMAL); +		SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_RESETCONTENT, 0, 0); + +		int item = SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_ADDSTRING, 0, (LPARAM)TranslateT("Hidden")); +		SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_SETITEMDATA, item, (LPARAM)SETTING_STATE_HIDDEN); +		if (val == SETTING_STATE_HIDDEN) +			SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_SETCURSEL, item, 0); + +		if (!db_get_b(0, MODULE_CLIST, SETTING_TOOLWINDOW, 0)) { +			item = SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_ADDSTRING, 0, (LPARAM)TranslateT("Minimized")); +			SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_SETITEMDATA, item, SETTING_STATE_MINIMIZED); +			if (val == SETTING_STATE_MINIMIZED) +				SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_SETCURSEL, item, 0);  		} -		break; - -	case UM_REINITWINSIZE: -		EnableWindow(GetDlgItem(hwndDlg, IDC_WIDTH), IsDlgButtonChecked(hwndDlg, IDC_SETWINSIZE)); -		EnableWindow(GetDlgItem(hwndDlg, IDC_HEIGHT), !db_get_b(0, MODULE_CLUI, SETTING_AUTOSIZE, 0) && IsDlgButtonChecked(hwndDlg, IDC_SETWINSIZE)); - -	case WM_COMMAND: -		if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == LBN_SELCHANGE || HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == EN_CHANGE) -			if (bInitDone) -				SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - -		switch (LOWORD(wParam)) { -		case IDC_SETPROFILE: -			EnableWindow(GetDlgItem(hwndDlg, IDC_PROFILE), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE) || IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)); -			EnableWindow(GetDlgItem(hwndDlg, IDC_SETPROFILEDELAY), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE)); -			EnableWindow(GetDlgItem(hwndDlg, IDC_OVERRIDE), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE)); -			break; -		case IDC_SHOWDIALOG: -			EnableWindow(GetDlgItem(hwndDlg, IDC_PROFILE), IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE) || IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)); -			EnableWindow(GetDlgItem(hwndDlg, IDC_DLGTIMEOUT), IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)); -			break; -		case IDC_SETWINSTATE: -			EnableWindow(GetDlgItem(hwndDlg, IDC_WINSTATE), IsDlgButtonChecked(hwndDlg, IDC_SETWINSTATE)); -			break; -		case IDC_SETDOCKED: -			EnableWindow(GetDlgItem(hwndDlg, IDC_DOCKED), IsDlgButtonChecked(hwndDlg, IDC_SETDOCKED)); -			break; -		case IDC_SETWINLOCATION: -			EnableWindow(GetDlgItem(hwndDlg, IDC_XPOS), IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION)); -			EnableWindow(GetDlgItem(hwndDlg, IDC_YPOS), IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION)); -			break; -		case IDC_SETWINSIZE: -			SendMessage(hwndDlg, UM_REINITWINSIZE, 0, 0); -			break; -		case IDC_SHOWCMDL: -			{ -				int defProfile = (int)SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_GETITEMDATA, -					SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_GETCURSEL, 0, 0), 0); -				CCmdlDlg *pDlg = new CCmdlDlg(defProfile); -				pDlg->Show(); -				break; -			} -		} -		break; +		 +		item = SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_ADDSTRING, 0, (LPARAM)TranslateT("Normal")); +		SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_SETITEMDATA, item, SETTING_STATE_NORMAL); +		if (val == SETTING_STATE_NORMAL || (val == SETTING_STATE_MINIMIZED) && db_get_b(0, MODULE_CLIST, SETTING_TOOLWINDOW, 0)) +			SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_SETCURSEL, item, 0); -	case WM_SHOWWINDOW: -		if (wParam == FALSE) -			break; +		onChange_SetWinSize(0); +	} -		bInitDone = FALSE; -		SendMessage(hwndDlg, UM_REINITPROFILES, 0, 0); -		SendMessage(hwndDlg, UM_REINITDOCKED, 0, 0); -		SendMessage(hwndDlg, UM_REINITWINSTATE, 0, 0); -		SendMessage(hwndDlg, UM_REINITWINSIZE, 0, 0); -		bInitDone = TRUE; -		break; - -	case WM_NOTIFY: -		switch (((LPNMHDR)lParam)->code) { -		case PSN_WIZFINISH: -			SSLoadMainOptions(); -			break; +	CCtrlButton btnShowCmdl; +	CCtrlCheck chkSetProfile, chkShowDialog, chkSetWinSize, chkSetWinState, chkSetWinLocation, chkSetDocked; +	CCtrlCombo profiles; +	CTimer timer; + +public: +	CSSMainOptDlg() : +		CSSOptionsBaseDlg(IDD_OPT_STARTUPSTATUS), +		timer(this, 10), +		profiles(this, IDC_PROFILE), +		btnShowCmdl(this, IDC_SHOWCMDL), +		chkSetDocked(this, IDC_SETDOCKED), +		chkSetProfile(this, IDC_SETPROFILE), +		chkShowDialog(this, IDC_SHOWDIALOG), +		chkSetWinSize(this, IDC_SETWINSIZE), +		chkSetWinState(this, IDC_SETWINSTATE), +		chkSetWinLocation(this, IDC_SETWINLOCATION) +	{ +		btnShowCmdl.OnClick = Callback(this, &CSSMainOptDlg::onClick_Show); -		case PSN_APPLY: -			db_set_b(0, SSMODULENAME, SETTING_SETPROFILE, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE)); -			if (IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE)) -				db_set_dw(0, SSMODULENAME, SETTING_SETPROFILEDELAY, GetDlgItemInt(hwndDlg, IDC_SETPROFILEDELAY, nullptr, FALSE)); +		timer.OnEvent = Callback(this, &CSSMainOptDlg::onTimer); -			if (IsDlgButtonChecked(hwndDlg, IDC_SETPROFILE) || IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)) { -				int val = (int)SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_PROFILE, CB_GETCURSEL, 0, 0), 0); -				db_set_w(0, SSMODULENAME, SETTING_DEFAULTPROFILE, (WORD)val); -			} -			db_set_b(0, SSMODULENAME, SETTING_OVERRIDE, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_OVERRIDE)); -			db_set_b(0, SSMODULENAME, SETTING_SHOWDIALOG, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)); -			if (IsDlgButtonChecked(hwndDlg, IDC_SHOWDIALOG)) -				db_set_dw(0, SSMODULENAME, SETTING_DLGTIMEOUT, GetDlgItemInt(hwndDlg, IDC_DLGTIMEOUT, nullptr, FALSE)); - -			db_set_b(0, SSMODULENAME, SETTING_SETWINSTATE, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SETWINSTATE)); -			if (IsDlgButtonChecked(hwndDlg, IDC_SETWINSTATE)) { -				int val = (int)SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_WINSTATE, CB_GETCURSEL, 0, 0), 0); -				db_set_b(0, SSMODULENAME, SETTING_WINSTATE, (BYTE)val); -			} -			db_set_b(0, SSMODULENAME, SETTING_SETDOCKED, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SETDOCKED)); -			if (IsDlgButtonChecked(hwndDlg, IDC_SETDOCKED)) { -				int val = (int)SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_GETITEMDATA, SendDlgItemMessage(hwndDlg, IDC_DOCKED, CB_GETCURSEL, 0, 0), 0); -				db_set_b(0, SSMODULENAME, SETTING_DOCKED, (BYTE)val); -			} -			db_set_b(0, SSMODULENAME, SETTING_SETWINLOCATION, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION)); -			if (IsDlgButtonChecked(hwndDlg, IDC_SETWINLOCATION)) { -				db_set_dw(0, SSMODULENAME, SETTING_XPOS, GetDlgItemInt(hwndDlg, IDC_XPOS, nullptr, TRUE)); -				db_set_dw(0, SSMODULENAME, SETTING_YPOS, GetDlgItemInt(hwndDlg, IDC_YPOS, nullptr, TRUE)); -			} -			db_set_b(0, SSMODULENAME, SETTING_SETWINSIZE, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SETWINSIZE)); -			if (IsDlgButtonChecked(hwndDlg, IDC_SETWINSIZE)) { -				db_set_dw(0, SSMODULENAME, SETTING_WIDTH, GetDlgItemInt(hwndDlg, IDC_WIDTH, nullptr, FALSE)); -				db_set_dw(0, SSMODULENAME, SETTING_HEIGHT, GetDlgItemInt(hwndDlg, IDC_HEIGHT, nullptr, FALSE)); -			} -			db_set_b(0, SSMODULENAME, SETTING_OFFLINECLOSE, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_OFFLINECLOSE)); -			db_set_b(0, SSMODULENAME, SETTING_AUTODIAL, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_AUTODIAL)); -			db_set_b(0, SSMODULENAME, SETTING_AUTOHANGUP, (BYTE)IsDlgButtonChecked(hwndDlg, IDC_AUTOHANGUP)); +		chkSetDocked.OnChange = Callback(this, &CSSMainOptDlg::onChange_Docked); +		chkSetProfile.OnChange = Callback(this, &CSSMainOptDlg::onChange_SetProfile); +		chkShowDialog.OnChange = Callback(this, &CSSMainOptDlg::onChange_ShowDialog); +		chkSetWinSize.OnChange = Callback(this, &CSSMainOptDlg::onChange_SetWinSize); +		chkSetWinState.OnChange = Callback(this, &CSSMainOptDlg::onChange_SetWinState); +		chkSetWinLocation.OnChange = Callback(this, &CSSMainOptDlg::onChange_SetWinLocation); +	} + +	void OnInitDialog() override +	{ +		CheckDlgButton(m_hwnd, IDC_SETPROFILE, db_get_b(0, SSMODULENAME, SETTING_SETPROFILE, 1) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_OVERRIDE, db_get_b(0, SSMODULENAME, SETTING_OVERRIDE, 1) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_SHOWDIALOG, db_get_b(0, SSMODULENAME, SETTING_SHOWDIALOG, 0) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_SETWINSTATE, db_get_b(0, SSMODULENAME, SETTING_SETWINSTATE, 0) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_SETWINLOCATION, db_get_b(0, SSMODULENAME, SETTING_SETWINLOCATION, 0) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_SETDOCKED, db_get_b(0, SSMODULENAME, SETTING_SETDOCKED, 0) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_SETWINSIZE, db_get_b(0, SSMODULENAME, SETTING_SETWINSIZE, 0) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_OFFLINECLOSE, db_get_b(0, SSMODULENAME, SETTING_OFFLINECLOSE, 1) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_AUTODIAL, db_get_b(0, SSMODULENAME, SETTING_AUTODIAL, 0) ? BST_CHECKED : BST_UNCHECKED); +		CheckDlgButton(m_hwnd, IDC_AUTOHANGUP, db_get_b(0, SSMODULENAME, SETTING_AUTOHANGUP, 0) ? BST_CHECKED : BST_UNCHECKED); +		SetDlgItemInt(m_hwnd, IDC_SETPROFILEDELAY, db_get_dw(0, SSMODULENAME, SETTING_SETPROFILEDELAY, 500), FALSE); +		SetDlgItemInt(m_hwnd, IDC_DLGTIMEOUT, db_get_dw(0, SSMODULENAME, SETTING_DLGTIMEOUT, 5), FALSE); +		SetDlgItemInt(m_hwnd, IDC_XPOS, db_get_dw(0, SSMODULENAME, SETTING_XPOS, 0), TRUE); +		SetDlgItemInt(m_hwnd, IDC_YPOS, db_get_dw(0, SSMODULENAME, SETTING_YPOS, 0), TRUE); +		SetDlgItemInt(m_hwnd, IDC_WIDTH, db_get_dw(0, SSMODULENAME, SETTING_WIDTH, 0), FALSE); +		SetDlgItemInt(m_hwnd, IDC_HEIGHT, db_get_dw(0, SSMODULENAME, SETTING_HEIGHT, 0), FALSE); + +		int val = db_get_b(0, SSMODULENAME, SETTING_DOCKED, DOCKED_NONE); +		int item = SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_ADDSTRING, 0, (LPARAM)TranslateT("Left")); +		SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_SETITEMDATA, (WPARAM)item, (LPARAM)DOCKED_LEFT); +		if (val == DOCKED_LEFT) +			SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_SETCURSEL, (WPARAM)item, 0); + +		item = SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_ADDSTRING, 0, (LPARAM)TranslateT("Right")); +		SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_SETITEMDATA, (WPARAM)item, (LPARAM)DOCKED_RIGHT); +		if (val == DOCKED_RIGHT) +			SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_SETCURSEL, (WPARAM)item, 0); + +		item = SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_ADDSTRING, 0, (LPARAM)TranslateT("None")); +		SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_SETITEMDATA, (WPARAM)item, (LPARAM)DOCKED_NONE); +		if (val == DOCKED_NONE) +			SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_SETCURSEL, (WPARAM)item, 0); + +		onChange_SetProfile(0); +		onChange_ShowDialog(0); +		onChange_SetWinState(0); +		onChange_SetWinLocation(0); + +		ReinitProfiles(); +		timer.Start(100); +	} + +	void OnApply() override +	{ +		bool bChecked = chkSetProfile.GetState(); +		db_set_b(0, SSMODULENAME, SETTING_SETPROFILE, bChecked); +		if (bChecked) +			db_set_dw(0, SSMODULENAME, SETTING_SETPROFILEDELAY, GetDlgItemInt(m_hwnd, IDC_SETPROFILEDELAY, nullptr, FALSE)); + +		if (bChecked || chkShowDialog.GetState()) +			db_set_w(0, SSMODULENAME, SETTING_DEFAULTPROFILE, (WORD)profiles.GetItemData(profiles.GetCurSel())); + +		db_set_b(0, SSMODULENAME, SETTING_OVERRIDE, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_OVERRIDE)); +		db_set_b(0, SSMODULENAME, SETTING_SHOWDIALOG, bChecked = chkShowDialog.GetState()); +		if (bChecked) +			db_set_dw(0, SSMODULENAME, SETTING_DLGTIMEOUT, GetDlgItemInt(m_hwnd, IDC_DLGTIMEOUT, nullptr, FALSE)); + +		db_set_b(0, SSMODULENAME, SETTING_SETWINSTATE, bChecked = chkSetWinState.GetState()); +		if (bChecked) { +			int val = (int)SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_GETITEMDATA, SendDlgItemMessage(m_hwnd, IDC_WINSTATE, CB_GETCURSEL, 0, 0), 0); +			db_set_b(0, SSMODULENAME, SETTING_WINSTATE, (BYTE)val); +		} +		 +		db_set_b(0, SSMODULENAME, SETTING_SETDOCKED, bChecked = chkSetDocked.GetState()); +		if (bChecked) { +			int val = (int)SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_GETITEMDATA, SendDlgItemMessage(m_hwnd, IDC_DOCKED, CB_GETCURSEL, 0, 0), 0); +			db_set_b(0, SSMODULENAME, SETTING_DOCKED, (BYTE)val); +		} +		 +		db_set_b(0, SSMODULENAME, SETTING_SETWINLOCATION, bChecked = chkSetWinLocation.GetState()); +		if (bChecked) { +			db_set_dw(0, SSMODULENAME, SETTING_XPOS, GetDlgItemInt(m_hwnd, IDC_XPOS, nullptr, TRUE)); +			db_set_dw(0, SSMODULENAME, SETTING_YPOS, GetDlgItemInt(m_hwnd, IDC_YPOS, nullptr, TRUE)); +		} +		 +		db_set_b(0, SSMODULENAME, SETTING_SETWINSIZE, bChecked = chkSetWinSize.GetState()); +		if (bChecked) { +			db_set_dw(0, SSMODULENAME, SETTING_WIDTH, GetDlgItemInt(m_hwnd, IDC_WIDTH, nullptr, FALSE)); +			db_set_dw(0, SSMODULENAME, SETTING_HEIGHT, GetDlgItemInt(m_hwnd, IDC_HEIGHT, nullptr, FALSE));  		} -		break; +		 +		db_set_b(0, SSMODULENAME, SETTING_OFFLINECLOSE, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_OFFLINECLOSE)); +		db_set_b(0, SSMODULENAME, SETTING_AUTODIAL, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_AUTODIAL)); +		db_set_b(0, SSMODULENAME, SETTING_AUTOHANGUP, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_AUTOHANGUP));  	} -	return FALSE; -} +	INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override +	{ +		if (msg == WM_SHOWWINDOW && wParam) +			ReinitProfiles(); + +		return CDlgBase::DlgProc(msg, wParam, lParam); +	} + +	void onClick_Show(CCtrlButton*) +	{ +		CCmdlDlg *pDlg = new CCmdlDlg(profiles.GetItemData(profiles.GetCurSel())); +		pDlg->Show(); +	} + +	void onChange_SetProfile(CCtrlCheck*) +	{ +		bool bChecked = chkSetProfile.GetState(); +		profiles.Enable(bChecked || chkShowDialog.GetState()); +		EnableWindow(GetDlgItem(m_hwnd, IDC_SETPROFILEDELAY), bChecked); +		EnableWindow(GetDlgItem(m_hwnd, IDC_OVERRIDE), bChecked); +	} + +	void onChange_ShowDialog(CCtrlCheck*) +	{ +		bool bChecked = chkShowDialog.GetState(); +		profiles.Enable(chkSetProfile.GetState() || bChecked); +		EnableWindow(GetDlgItem(m_hwnd, IDC_DLGTIMEOUT), bChecked); +	} + +	void onChange_SetWinState(CCtrlCheck*) +	{ +		EnableWindow(GetDlgItem(m_hwnd, IDC_WINSTATE), chkSetWinState.GetState()); +	} + +	void onChange_SetWinLocation(CCtrlCheck*) +	{ +		bool bChecked = chkSetWinLocation.GetState(); +		EnableWindow(GetDlgItem(m_hwnd, IDC_XPOS), bChecked); +		EnableWindow(GetDlgItem(m_hwnd, IDC_YPOS), bChecked); +	} + +	void onChange_SetWinSize(CCtrlCheck*) +	{ +		bool bChecked = chkSetWinSize.GetState(); +		EnableWindow(GetDlgItem(m_hwnd, IDC_WIDTH), bChecked); +		EnableWindow(GetDlgItem(m_hwnd, IDC_HEIGHT), !db_get_b(0, MODULE_CLUI, SETTING_AUTOSIZE, 0) && bChecked); +	} + +	void onChange_Docked(CCtrlCheck*) +	{ +		EnableWindow(GetDlgItem(m_hwnd, IDC_DOCKED), chkSetDocked.GetState()); +	} + +	void onTimer(CTimer*) +	{ +		if (chkSetWinLocation.GetState() && chkSetWinSize.GetState()) { +			SetDlgItemTextA(m_hwnd, IDC_CURWINSIZE, ""); +			SetDlgItemTextA(m_hwnd, IDC_CURWINLOC, ""); +		} +		else { +			wchar_t text[128]; +			mir_snwprintf(text, TranslateT("size: %d x %d"), db_get_dw(0, MODULE_CLIST, SETTING_WIDTH, 0), db_get_dw(0, MODULE_CLIST, SETTING_HEIGHT, 0)); +			SetDlgItemText(m_hwnd, IDC_CURWINSIZE, text); + +			mir_snwprintf(text, TranslateT("loc: %d x %d"), db_get_dw(0, MODULE_CLIST, SETTING_XPOS, 0), db_get_dw(0, MODULE_CLIST, SETTING_YPOS, 0)); +			SetDlgItemText(m_hwnd, IDC_CURWINLOC, text); +		} +	} +};  /////////////////////////////////////////////////////////////////////////////////////////  // new profile dialog -class CAddProfileDlg : public CDlgBase +class CAddProfileDlg : public CSSOptionsBaseDlg  {  	CCtrlEdit edtProfile;  	CCtrlButton btnOk;  public: -	CAddProfileDlg() -		: CDlgBase(g_plugin, IDD_ADDPROFILE), +	CAddProfileDlg() : +		CSSOptionsBaseDlg(IDD_ADDPROFILE),  		btnOk(this, IDOK),  		edtProfile(this, IDC_PROFILENAME)  	{ @@ -623,13 +658,6 @@ public:  		lstStatus.OnSelChange = Callback(this, &CSSAdvancedOptDlg::onChange_Status);  		lstAccount.OnSelChange = Callback(this, &CSSAdvancedOptDlg::onChange_Account); - -		m_OnFinishWizard = Callback(this, &CSSAdvancedOptDlg::OnFinishWizard); -	} - -	void OnFinishWizard(void*) -	{ -		SSLoadMainOptions();  	}  	virtual void OnInitDialog() override @@ -837,7 +865,7 @@ public:  		edtHotkey.Enable(chkRegHotkey.GetState());  	} -	virtual INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override +	INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override  	{  		switch (msg) {  		case UM_ADDPROFILE: @@ -866,13 +894,10 @@ int StartupStatusOptionsInit(WPARAM wparam, LPARAM)  	odp.flags = ODPF_BOLDGROUPS;  	odp.szTab.a = LPGEN("General"); -	odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_STARTUPSTATUS); -	odp.pfnDlgProc = StartupStatusOptDlgProc; +	odp.pDialog = new CSSMainOptDlg();  	Options_AddPage(wparam, &odp, SSLangPack);  	odp.szTab.a = LPGEN("Status profiles"); -	odp.pszTemplate = nullptr; -	odp.pfnDlgProc = nullptr;  	odp.pDialog = new CSSAdvancedOptDlg();  	Options_AddPage(wparam, &odp, SSLangPack);  	return 0; diff --git a/plugins/StatusManager/src/ss_profiles.cpp b/plugins/StatusManager/src/ss_profiles.cpp index f678db190d..2898136d83 100644 --- a/plugins/StatusManager/src/ss_profiles.cpp +++ b/plugins/StatusManager/src/ss_profiles.cpp @@ -242,7 +242,7 @@ static DWORD CALLBACK MessageWndProc(HWND, UINT msg, WPARAM wParam, LPARAM)  	return TRUE;  } -static int UnregisterHotKeys() +void UnregisterHotKeys()  {  	if (hkInfo != nullptr) {  		for (int i = 0; i < hkiCount; i++) { @@ -256,12 +256,10 @@ static int UnregisterHotKeys()  	hkiCount = 0;  	hkInfo = nullptr;  	hMessageWindow = nullptr; - -	return 0;  }  // assumes UnregisterHotKeys was called before -static int RegisterHotKeys() +int RegisterHotKeys()  {  	hMessageWindow = CreateWindowEx(0, L"STATIC", nullptr, 0, 0, 0, 0, 0, nullptr, nullptr, nullptr, nullptr);  	SetWindowLongPtr(hMessageWindow, GWLP_WNDPROC, (LONG_PTR)MessageWndProc); @@ -293,18 +291,6 @@ static int RegisterHotKeys()  	return 0;  } -int SSLoadMainOptions() -{ -	if (hTTBModuleLoadedHook) { -		RemoveTopToolbarButtons(); -		CreateTopToolbarButtons(0, 0); -	} - -	UnregisterHotKeys(); -	RegisterHotKeys(); -	return 0; -} -  int LoadProfileModule()  {  	CreateServiceFunction(MS_SS_LOADANDSETPROFILE, LoadAndSetProfile); diff --git a/plugins/StatusManager/src/startupstatus.cpp b/plugins/StatusManager/src/startupstatus.cpp index f315ddfc97..6adac7c061 100644 --- a/plugins/StatusManager/src/startupstatus.cpp +++ b/plugins/StatusManager/src/startupstatus.cpp @@ -72,7 +72,7 @@ static int IsValidStatusDesc(char* statusDesc)  	return 0;  } -static void ProcessCommandLineOptions(TProtoSettings& protoSettings) +static void ProcessCommandLineOptions(TProtoSettings &protoSettings)  {  	if (protoSettings.getCount() == 0)  		return; @@ -183,7 +183,7 @@ static int CSStatusChangeEx(WPARAM wParam, LPARAM)  		return 0;  	if (wParam != 0) { -		PROTOCOLSETTINGEX** ps = *(PROTOCOLSETTINGEX***)wParam; +		PROTOCOLSETTINGEX **ps = *(PROTOCOLSETTINGEX***)wParam;  		if (ps == nullptr)  			return -1; diff --git a/plugins/StatusManager/src/startupstatus.h b/plugins/StatusManager/src/startupstatus.h index 5d16d50843..17e606cff6 100644 --- a/plugins/StatusManager/src/startupstatus.h +++ b/plugins/StatusManager/src/startupstatus.h @@ -47,11 +47,7 @@ typedef struct {  	int profile;  } HKINFO; -#define UM_REINITPROFILES   WM_USER + 1  #define UM_ADDPROFILE       WM_USER + 5 -#define UM_REINITDOCKED     WM_USER + 7 -#define UM_REINITWINSTATE   WM_USER + 8 -#define UM_REINITWINSIZE    WM_USER + 9  #define CLUIINTM_REDRAW (WM_USER+100) @@ -116,8 +112,6 @@ char* OptName(int i, const char *setting);  void StartupStatusLoad();  void StartupStatusUnload(); -int SSLoadMainOptions(); -  // profile  void FillStatus(SMProto &ps, int profile);  int GetProfile(int profileID, TProtoSettings &arSettings); @@ -131,6 +125,9 @@ extern HANDLE hTTBModuleLoadedHook;  void RemoveTopToolbarButtons();  int  CreateTopToolbarButtons(WPARAM wParam, LPARAM lParam); +int RegisterHotKeys(); +void UnregisterHotKeys(); +  int LoadProfileModule();  int InitProfileModule();  int DeinitProfilesModule(); diff --git a/plugins/StatusManager/src/version.h b/plugins/StatusManager/src/version.h index d1ad4fa6a4..4c5ff450f9 100644 --- a/plugins/StatusManager/src/version.h +++ b/plugins/StatusManager/src/version.h @@ -2,7 +2,7 @@  #define __MAJOR_VERSION          1  #define __MINOR_VERSION          2  #define __RELEASE_NUM            0 -#define __BUILD_NUM              3 +#define __BUILD_NUM              4  // other stuff for Version resource  #include <stdver.h>  | 
