diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/CrashDumper/src/ui.cpp | 18 | ||||
-rw-r--r-- | plugins/MyDetails/src/options.cpp | 195 | ||||
-rw-r--r-- | plugins/MyDetails/src/services.cpp | 331 | ||||
-rw-r--r-- | plugins/MyDetails/src/stdafx.h | 1 |
4 files changed, 288 insertions, 257 deletions
diff --git a/plugins/CrashDumper/src/ui.cpp b/plugins/CrashDumper/src/ui.cpp index 5730518fd9..c1a81ee321 100644 --- a/plugins/CrashDumper/src/ui.cpp +++ b/plugins/CrashDumper/src/ui.cpp @@ -62,7 +62,7 @@ class CViewVersionInfo : public CDlgBase }
public:
- CViewVersionInfo::CViewVersionInfo(DWORD flags) :
+ CViewVersionInfo(DWORD flags) :
CDlgBase(g_plugin, IDD_VIEWVERSION),
m_btnCancel(this, IDCANCEL),
m_btnCopyClip(this, IDC_CLIPVER),
@@ -76,7 +76,7 @@ public: m_redtViewVersionInfo.OnBuildMenu = Callback(this, &CViewVersionInfo::OnViewVersionInfoBuildMenu);
}
- bool CViewVersionInfo::OnInitDialog() override
+ bool OnInitDialog() override
{
Window_SetIcon_IcoLib(m_hwnd, GetIconHandle(IDI_VI));
{
@@ -99,7 +99,7 @@ public: return true;
}
- bool CViewVersionInfo::OnClose() override
+ bool OnClose() override
{
Window_FreeIcon_IcoLib(m_hwnd);
Utils_SaveWindowPosition(m_hwnd, NULL, MODULENAME, "ViewInfo_");
@@ -111,7 +111,7 @@ public: }
- INT_PTR CViewVersionInfo::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override
+ INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override
{
if (msg == WM_GETMINMAXINFO) {
LPMINMAXINFO mmi = (LPMINMAXINFO)lParam;
@@ -123,7 +123,7 @@ public: return CDlgBase::DlgProc(msg, wParam, lParam);
}
- int CViewVersionInfo::Resizer(UTILRESIZECONTROL *) override
+ int Resizer(UTILRESIZECONTROL *) override
{
RECT rc;
GetWindowRect(m_btnCopyFile.GetHwnd(), &rc);
@@ -140,22 +140,22 @@ public: return 0;
}
- void CViewVersionInfo::OnCancelClick(CCtrlBase*)
+ void OnCancelClick(CCtrlBase*)
{
Close();
}
- void CViewVersionInfo::OnCopyClipClick(CCtrlBase*)
+ void OnCopyClipClick(CCtrlBase*)
{
CallService(MS_CRASHDUMPER_STORETOCLIP, 0, m_flags);
}
- void CViewVersionInfo::OnCopyFileClick(CCtrlBase*)
+ void OnCopyFileClick(CCtrlBase*)
{
CallService(MS_CRASHDUMPER_STORETOFILE, 0, m_flags);
}
- void CViewVersionInfo::OnViewVersionInfoBuildMenu(CCtrlBase*)
+ void OnViewVersionInfoBuildMenu(CCtrlBase*)
{
RECT rc;
GetWindowRect(m_redtViewVersionInfo.GetHwnd(), &rc);
diff --git a/plugins/MyDetails/src/options.cpp b/plugins/MyDetails/src/options.cpp index f4d123bbc9..0ddc30a187 100644 --- a/plugins/MyDetails/src/options.cpp +++ b/plugins/MyDetails/src/options.cpp @@ -70,101 +70,154 @@ void LoadOptions() RefreshFrameAndCalcRects();
}
-static INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+class COptDialog : public CDlgBase
{
- BOOL ret = SaveOptsDlgProc(pageControls, _countof(pageControls), MODULENAME, hwndDlg, msg, wParam, lParam);
+ CCtrlCheck m_chkTextRTL, m_chkTextAlignRight, m_chkResizeFrame, m_chkUseCLSmilies, m_chkReplaceSmilies, m_chkResizeSmilies, m_chkGlobalAvatar, m_chkGlobalNickname, m_chkGlobalStatus,
+ m_chkGlobalStatusMessage, m_chkShowProtoName, m_chkShowCycleProtoBtn, m_chkCycleProtos, m_chkAvatarCustomSize, m_chkAvatarGrow, m_chkAvatarBorder, m_chkAvatarRound, m_chkAvatarCustomCorn,
+ m_chkAvatarFreeSpace;
+ CCtrlEdit m_edtCycleTime, m_edtAvatarCustomSize, m_edtAvatarCustomCorn, m_edtBorderTop, m_edtBorderBottom, m_edtBorderLeft, m_edtBorderRight;
+ CCtrlSpin m_spnCycleTime, m_spnAvatarCustomSize, m_spnAvatarCustomCorn, m_spnBorderTop, m_spnBorderBottom, m_spnBorderLeft, m_spnBorderRight;
+public:
+ COptDialog() :
+ CDlgBase(g_plugin, IDD_OPTS),
+ m_chkTextRTL(this, IDC_TEXT_RTL),
+ m_chkTextAlignRight(this, IDC_TEXT_ALIGN_RIGHT),
+ m_chkResizeFrame(this, IDC_RESIZE_FRAME),
+ m_chkUseCLSmilies(this, IDC_USE_CONTACT_LIST_SMILEYS),
+ m_chkReplaceSmilies(this, IDC_REPLACE_SMILEYS),
+ m_chkResizeSmilies(this, IDC_RESIZE_SMILEYS),
+ m_chkGlobalAvatar(this, IDC_GLOBAL_ON_AVATAR),
+ m_chkGlobalNickname(this, IDC_GLOBAL_ON_NICKNAME),
+ m_chkGlobalStatus(this, IDC_GLOBAL_ON_STATUS),
+ m_chkGlobalStatusMessage(this, IDC_GLOBAL_ON_STATUS_MESSAGE),
+ m_chkShowProtoName(this, IDC_SHOW_PROTO_NAME),
+ m_chkShowCycleProtoBtn(this, IDC_SHOW_CYCLE_PROTO_BUTTON),
+ m_chkCycleProtos(this, IDC_CYCLE_THROUGH_PROTOS),
+ m_edtCycleTime(this, IDC_CYCLE_TIME),
+ m_spnCycleTime(this, IDC_CYCLE_TIME_SPIN),
+ m_chkAvatarCustomSize(this, IDC_AVATAR_CUSTOM_SIZE_CHK),
+ m_edtAvatarCustomSize(this, IDC_AVATAR_CUSTOM_SIZE),
+ m_spnAvatarCustomSize(this, IDC_AVATAR_CUSTOM_SIZE_SPIN),
+ m_chkAvatarGrow(this, IDC_AVATAR_ALLOW_TO_GROW),
+ m_chkAvatarBorder(this, IDC_AVATAR_DRAW_BORDER),
+ m_chkAvatarRound(this, IDC_AVATAR_ROUND_CORNERS),
+ m_chkAvatarCustomCorn(this, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK),
+ m_edtAvatarCustomCorn(this, IDC_AVATAR_CUSTOM_CORNER_SIZE),
+ m_spnAvatarCustomCorn(this, IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN),
+ m_chkAvatarFreeSpace(this, IDC_AVATAR_USE_FREE_SPACE),
+ m_edtBorderTop(this, IDC_BORDER_TOP),
+ m_spnBorderTop(this, IDC_BORDER_TOP_SPIN),
+ m_edtBorderBottom(this, IDC_BORDER_BOTTOM),
+ m_spnBorderBottom(this, IDC_BORDER_BOTTOM_SPIN),
+ m_edtBorderLeft(this, IDC_BORDER_LEFT),
+ m_spnBorderLeft(this, IDC_BORDER_LEFT_SPIN),
+ m_edtBorderRight(this, IDC_BORDER_RIGHT),
+ m_spnBorderRight(this, IDC_BORDER_RIGHT_SPIN)
+ {
+ m_chkAvatarRound.OnChange = Callback(this, &COptDialog::OnAvatarRoundChange);
+ m_chkAvatarCustomCorn.OnChange = Callback(this, &COptDialog::OnAvatarCustomCornChange);
+ m_chkShowProtoName.OnChange = Callback(this, &COptDialog::OnShowProtoNameChange);
+ m_chkAvatarCustomSize.OnChange = Callback(this, &COptDialog::OnAvatarCustomSizeChange);
+ m_chkCycleProtos.OnChange = Callback(this, &COptDialog::OnCycleProtosChange);
+ m_chkReplaceSmilies.OnChange = Callback(this, &COptDialog::OnReplaceSmiliesChange);
+ }
- switch (msg) {
- case WM_INITDIALOG:
- if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_AVATAR_ROUND_CORNERS)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK), FALSE);
- }
+ bool OnInitDialog() override
+ {
+ if (!m_chkAvatarRound.IsChecked())
+ m_chkAvatarCustomCorn.Disable();
- if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_AVATAR_ROUND_CORNERS) || BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN), FALSE);
+ if (!m_chkAvatarRound.IsChecked() || !m_chkAvatarCustomCorn.IsChecked()) {
+ m_edtAvatarCustomCorn.Disable();
+ m_spnAvatarCustomCorn.Disable();
}
- if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_SHOW_PROTO_NAME))
- EnableWindow(GetDlgItem(hwndDlg, IDC_SHOW_CYCLE_PROTO_BUTTON), FALSE);
+ if (!m_chkShowProtoName.IsChecked())
+ m_chkShowCycleProtoBtn.Disable();
- if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_AVATAR_CUSTOM_SIZE_CHK)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_SIZE), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_SIZE_SPIN), FALSE);
+ if (!m_chkAvatarCustomSize.IsChecked()) {
+ m_edtAvatarCustomSize.Disable();
+ m_spnAvatarCustomSize.Disable();
}
- if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_CYCLE_THROUGH_PROTOS)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLE_TIME), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLE_TIME_SPIN), FALSE);
+ if (!m_chkCycleProtos.IsChecked()) {
+ m_edtCycleTime.Disable();
+ m_spnCycleTime.Disable();
}
- if (BST_UNCHECKED == IsDlgButtonChecked(hwndDlg, IDC_REPLACE_SMILEYS)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_USE_CONTACT_LIST_SMILEYS), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RESIZE_SMILEYS), FALSE);
+ if (!m_chkReplaceSmilies.IsChecked()) {
+ m_chkUseCLSmilies.Disable();
+ m_chkResizeSmilies.Disable();
}
if (!ServiceExists(MS_SMILEYADD_BATCHPARSE)) {
- EnableWindow(GetDlgItem(hwndDlg, IDC_REPLACE_SMILEYS), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_USE_CONTACT_LIST_SMILEYS), FALSE);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RESIZE_SMILEYS), FALSE);
+ m_chkReplaceSmilies.Disable();
+ m_chkUseCLSmilies.Disable();
+ m_chkResizeSmilies.Disable();
}
if (!ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS))
- EnableWindow(GetDlgItem(hwndDlg, IDC_RESIZE_FRAME), FALSE);
+ m_chkResizeFrame.Disable();
- break;
+ return true;
+ }
- case WM_COMMAND:
- if (LOWORD(wParam) == IDC_AVATAR_ROUND_CORNERS || LOWORD(wParam) == IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK) {
- BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_AVATAR_ROUND_CORNERS);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK), enabled);
- enabled = enabled && IsDlgButtonChecked(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE), enabled);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN), enabled);
- }
- else if (LOWORD(wParam) == IDC_SHOW_PROTO_NAME) {
- BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_SHOW_PROTO_NAME);
- EnableWindow(GetDlgItem(hwndDlg, IDC_SHOW_CYCLE_PROTO_BUTTON), enabled);
- }
- else if (LOWORD(wParam) == IDC_AVATAR_CUSTOM_SIZE_CHK) {
- BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_AVATAR_CUSTOM_SIZE_CHK);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_SIZE), enabled);
- EnableWindow(GetDlgItem(hwndDlg, IDC_AVATAR_CUSTOM_SIZE_SPIN), enabled);
- }
- else if (LOWORD(wParam) == IDC_CYCLE_THROUGH_PROTOS) {
- BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_CYCLE_THROUGH_PROTOS);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLE_TIME), enabled);
- EnableWindow(GetDlgItem(hwndDlg, IDC_CYCLE_TIME_SPIN), enabled);
- }
- else if (LOWORD(wParam) == IDC_REPLACE_SMILEYS) {
- BOOL enabled = IsDlgButtonChecked(hwndDlg, IDC_REPLACE_SMILEYS);
- EnableWindow(GetDlgItem(hwndDlg, IDC_USE_CONTACT_LIST_SMILEYS), enabled);
- EnableWindow(GetDlgItem(hwndDlg, IDC_RESIZE_SMILEYS), enabled);
- }
- break;
-
- case WM_NOTIFY:
- switch (((LPNMHDR)lParam)->idFrom) {
- case 0:
- switch (((LPNMHDR)lParam)->code) {
- case PSN_APPLY:
- LoadOptions();
- return TRUE;
- }
- break;
- }
- break;
+ bool OnApply() override
+ {
+ LoadOptions();
+ return true;
}
- return ret;
-}
+ void OnAvatarRoundChange(CCtrlBase*)
+ {
+ BOOL enabled = m_chkAvatarRound.IsChecked();
+ m_chkAvatarCustomCorn.Enable(enabled);
+ enabled = enabled && m_chkAvatarCustomCorn.IsChecked();
+ m_edtAvatarCustomCorn.Enable(enabled);
+ m_spnAvatarCustomCorn.Enable(enabled);
+ }
+
+ void OnAvatarCustomCornChange(CCtrlBase*)
+ {
+ BOOL enabled = m_chkAvatarRound.IsChecked();
+ m_chkAvatarCustomCorn.Enable(enabled);
+ enabled = enabled && m_chkAvatarCustomCorn.IsChecked();
+ m_edtAvatarCustomCorn.Enable(enabled);
+ m_spnAvatarCustomCorn.Enable(enabled);
+ }
+
+ void OnShowProtoNameChange(CCtrlBase*)
+ {
+ BOOL enabled = m_chkShowProtoName.IsChecked();
+ m_chkShowCycleProtoBtn.Enable(enabled);
+ }
+
+ void OnAvatarCustomSizeChange(CCtrlBase*)
+ {
+ BOOL enabled = m_chkAvatarCustomSize.IsChecked();
+ m_edtAvatarCustomSize.Enable(enabled);
+ m_spnAvatarCustomSize.Enable(enabled);
+ }
+
+ void OnCycleProtosChange(CCtrlBase*)
+ {
+ BOOL enabled = m_chkCycleProtos.IsChecked();
+ m_edtCycleTime.Enable(enabled);
+ m_spnCycleTime.Enable(enabled);
+ }
+
+ void OnReplaceSmiliesChange(CCtrlBase*)
+ {
+ BOOL enabled = m_chkReplaceSmilies.IsChecked();
+ m_chkUseCLSmilies.Enable(enabled);
+ m_chkResizeSmilies.Enable(enabled);
+ }
+};
int InitOptionsCallback(WPARAM wParam, LPARAM)
{
OPTIONSDIALOGPAGE odp = {};
- odp.position = -200000000;
- odp.pfnDlgProc = DlgProcOpts;
- odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTS);
+ odp.pDialog = new COptDialog;
odp.szGroup.w = LPGENW("Contact list");
odp.szTitle.w = LPGENW("My details");
odp.flags = ODPF_BOLDGROUPS | ODPF_UNICODE;
diff --git a/plugins/MyDetails/src/services.cpp b/plugins/MyDetails/src/services.cpp index 9b543bf53a..89c84fb860 100644 --- a/plugins/MyDetails/src/services.cpp +++ b/plugins/MyDetails/src/services.cpp @@ -19,108 +19,98 @@ Boston, MA 02111-1307, USA. #include "stdafx.h"
-static long nickname_dialog_open;
-static HWND hwndSetNickname;
-
-static long status_msg_dialog_open;
-static HWND hwndSetStatusMsg;
+CDlgBase *pSetNickDialog = nullptr, *pSetStatusMessageDialog = nullptr;
// Set nickname ///////////////////////////////////////////////////////////////////////////////////
-#define WMU_SETDATA (WM_USER + 1)
-
-static INT_PTR CALLBACK DlgProcSetNickname(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM)
+class CSetNickDialog : public CDlgBase
{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE - 1, 0);
- return TRUE;
-
- case WMU_SETDATA:
- {
- int proto_num = (int)wParam;
-
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, proto_num);
-
- if (proto_num == -1) {
- Window_SetSkinIcon_IcoLib(hwndDlg, SKINICON_OTHER_MIRANDA);
-
- // All protos have the same nick?
- if (protocols->GetSize() > 0) {
- wchar_t *nick = protocols->Get(0)->nickname;
-
- bool foundDefNick = true;
- for (int i = 1; foundDefNick && i < protocols->GetSize(); i++) {
- if (mir_wstrcmpi(protocols->Get(i)->nickname, nick) != 0) {
- foundDefNick = false;
- break;
- }
- }
-
- if (foundDefNick)
- if (mir_wstrcmpi(protocols->default_nick, nick) != 0)
- mir_wstrcpy(protocols->default_nick, nick);
- }
+ int m_protonum;
+
+ CCtrlEdit m_edtNickname;
+ CCtrlButton m_btnOk, m_btnCancel;
+public:
+ CSetNickDialog(int protoparam) :
+ CDlgBase(g_plugin, IDD_SETNICKNAME),
+ m_edtNickname(this, IDC_NICKNAME),
+ m_btnOk(this, IDOK),
+ m_btnCancel(this, IDCANCEL)
+ {
+ m_protonum = protoparam;
+ m_btnOk.OnClick = Callback(this, &CSetNickDialog::OnOkClick);
+ m_btnCancel.OnClick = Callback(this, &CSetNickDialog::OnCancelClick);
+ }
- SetDlgItemText(hwndDlg, IDC_NICKNAME, protocols->default_nick);
- SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, 0);
- }
- else {
- Protocol *proto = protocols->Get(proto_num);
+ bool OnInitDialog() override
+ {
+ m_edtNickname.SendMsg(EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE - 1, 0);
- wchar_t tmp[128];
- mir_snwprintf(tmp, TranslateT("Set my nickname for %s"), proto->description);
+ if (m_protonum == -1) {
+ Window_SetSkinIcon_IcoLib(m_hwnd, SKINICON_OTHER_MIRANDA);
- SetWindowText(hwndDlg, tmp);
+ // All protos have the same nick?
+ if (protocols->GetSize() > 0) {
+ wchar_t *nick = protocols->Get(0)->nickname;
- HICON hIcon = (HICON)CallProtoService(proto->name, PS_LOADICON, PLI_PROTOCOL, 0);
- if (hIcon != nullptr) {
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
- DestroyIcon(hIcon);
+ bool foundDefNick = true;
+ for (int i = 1; foundDefNick && i < protocols->GetSize(); i++) {
+ if (mir_wstrcmpi(protocols->Get(i)->nickname, nick) != 0) {
+ foundDefNick = false;
+ break;
+ }
}
- SetDlgItemText(hwndDlg, IDC_NICKNAME, proto->nickname);
- SendDlgItemMessage(hwndDlg, IDC_NICKNAME, EM_LIMITTEXT,
- min(MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, proto->GetNickMaxLength()), 0);
+ if (foundDefNick)
+ if (mir_wstrcmpi(protocols->default_nick, nick) != 0)
+ mir_wstrcpy(protocols->default_nick, nick);
}
- return TRUE;
+ m_edtNickname.SetText(protocols->default_nick);
+ m_edtNickname.SendMsg(EM_LIMITTEXT, MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, 0);
}
+ else {
+ Protocol *proto = protocols->Get(m_protonum);
- case WM_COMMAND:
- switch (wParam) {
- case IDOK:
- {
- wchar_t tmp[MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE];
- GetDlgItemText(hwndDlg, IDC_NICKNAME, tmp, _countof(tmp));
+ wchar_t tmp[128];
+ mir_snwprintf(tmp, TranslateT("Set my nickname for %s"), proto->description);
- LONG_PTR proto_num = GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
- if (proto_num == -1)
- protocols->SetNicks(tmp);
- else
- protocols->Get(proto_num)->SetNick(tmp);
+ SetWindowText(m_hwnd, tmp);
- DestroyWindow(hwndDlg);
- break;
+ HICON hIcon = (HICON)CallProtoService(proto->name, PS_LOADICON, PLI_PROTOCOL, 0);
+ if (hIcon != nullptr) {
+ SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
+ DestroyIcon(hIcon);
}
- case IDCANCEL:
- DestroyWindow(hwndDlg);
- break;
+
+ m_edtNickname.SetText(proto->nickname);
+ m_edtNickname.SendMsg(EM_LIMITTEXT, min(MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE, proto->GetNickMaxLength()), 0);
}
- break;
+ return true;
+ }
- case WM_CLOSE:
- DestroyWindow(hwndDlg);
- break;
+ void OnOkClick(CCtrlBase*)
+ {
+ wchar_t tmp[MS_MYDETAILS_GETMYNICKNAME_BUFFER_SIZE];
+ m_edtNickname.GetText(tmp, _countof(tmp));
- case WM_DESTROY:
- InterlockedExchange(&nickname_dialog_open, 0);
- break;
+ if (m_protonum == -1)
+ protocols->SetNicks(tmp);
+ else
+ protocols->Get(m_protonum)->SetNick(tmp);
}
- return FALSE;
-}
+ void OnCancelClick(CCtrlBase*)
+ {
+ Close();
+ }
+
+ bool OnClose() override
+ {
+ if (pSetNickDialog == this)
+ pSetNickDialog = nullptr;
+ return true;
+ }
+};
INT_PTR PluginCommand_SetMyNicknameUI(WPARAM, LPARAM lParam)
{
@@ -144,17 +134,14 @@ INT_PTR PluginCommand_SetMyNicknameUI(WPARAM, LPARAM lParam) }
- if (!nickname_dialog_open) {
- InterlockedExchange(&nickname_dialog_open, 1);
-
- hwndSetNickname = CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_SETNICKNAME), nullptr, DlgProcSetNickname);
-
- SendMessage(hwndSetNickname, WMU_SETDATA, proto_num, 0);
+ if (pSetNickDialog == nullptr) {
+ pSetNickDialog = new CSetNickDialog(proto_num);
+ pSetNickDialog->Show();
+ }
+ else {
+ SetForegroundWindow(pSetNickDialog->GetHwnd());
+ SetFocus(pSetNickDialog->GetHwnd());
}
-
- SetForegroundWindow(hwndSetNickname);
- SetFocus(hwndSetNickname);
- ShowWindow(hwndSetNickname, SW_SHOW);
return 0;
}
@@ -306,96 +293,91 @@ struct SetStatusMessageData int proto_num;
};
-static INT_PTR CALLBACK DlgProcSetStatusMessage(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+class CSetStatusMessageDialog : public CDlgBase
{
- switch (msg) {
- case WM_INITDIALOG:
- TranslateDialogDefault(hwndDlg);
- SendDlgItemMessage(hwndDlg, IDC_STATUSMESSAGE, EM_LIMITTEXT, MS_MYDETAILS_GETMYSTATUSMESSAGE_BUFFER_SIZE - 1, 0);
- mir_subclassWindow(GetDlgItem(hwndDlg, IDC_STATUSMESSAGE), StatusMsgEditSubclassProc);
- return TRUE;
-
- case WMU_SETDATA:
- {
- SetStatusMessageData *data = (SetStatusMessageData *)malloc(sizeof(SetStatusMessageData));
- data->status = (int)wParam;
- data->proto_num = (int)lParam;
-
- SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)data);
-
- if (data->proto_num >= 0) {
- Protocol *proto = protocols->Get(data->proto_num);
-
- HICON hIcon = (HICON)CallProtoService(proto->name, PS_LOADICON, PLI_PROTOCOL, 0);
- if (hIcon != nullptr) {
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
- DestroyIcon(hIcon);
- }
-
- wchar_t title[256];
- mir_snwprintf(title, TranslateT("Set my status message for %s"), proto->description);
- SetWindowText(hwndDlg, title);
-
- SetDlgItemText(hwndDlg, IDC_STATUSMESSAGE, proto->GetStatusMsg());
- }
- else if (data->status != 0) {
- Window_SetProtoIcon_IcoLib(hwndDlg, nullptr, data->status);
+ SetStatusMessageData *m_data;
+
+ CCtrlEdit m_edtStatusMessage;
+ CCtrlButton m_btnOk, m_btnCancel;
+public:
+ CSetStatusMessageDialog(int protoparam, int statusparam) :
+ CDlgBase(g_plugin, IDD_SETSTATUSMESSAGE),
+ m_edtStatusMessage(this, IDC_STATUSMESSAGE),
+ m_btnOk(this, IDOK),
+ m_btnCancel(this, IDCANCEL)
+ {
+ m_data = (SetStatusMessageData *)mir_alloc(sizeof(SetStatusMessageData));
+ m_data->proto_num = protoparam;
+ m_data->status = statusparam;
+
+ m_btnOk.OnClick = Callback(this, &CSetStatusMessageDialog::OnOkClick);
+ m_btnCancel.OnClick = Callback(this, &CSetStatusMessageDialog::OnCancelClick);
+ }
- wchar_t title[256];
- mir_snwprintf(title, TranslateT("Set my status message for %s"), Clist_GetStatusModeDescription(data->status, 0));
- SetWindowText(hwndDlg, title);
+ bool OnInitDialog() override
+ {
+ m_edtStatusMessage.SendMsg(EM_LIMITTEXT, MS_MYDETAILS_GETMYSTATUSMESSAGE_BUFFER_SIZE - 1, 0);
+ mir_subclassWindow(m_edtStatusMessage.GetHwnd(), StatusMsgEditSubclassProc);
- SetDlgItemText(hwndDlg, IDC_STATUSMESSAGE, protocols->GetDefaultStatusMsg(data->status));
- }
- else {
- Window_SetSkinIcon_IcoLib(hwndDlg, SKINICON_OTHER_MIRANDA);
+ if (m_data->proto_num >= 0) {
+ Protocol *proto = protocols->Get(m_data->proto_num);
- SetDlgItemText(hwndDlg, IDC_STATUSMESSAGE, protocols->GetDefaultStatusMsg());
+ HICON hIcon = (HICON)CallProtoService(proto->name, PS_LOADICON, PLI_PROTOCOL, 0);
+ if (hIcon != nullptr) {
+ SendMessage(m_hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
+ DestroyIcon(hIcon);
}
- }
- return TRUE;
- case WM_COMMAND:
- switch (wParam) {
- case IDOK:
- {
- wchar_t tmp[MS_MYDETAILS_GETMYSTATUSMESSAGE_BUFFER_SIZE];
- GetDlgItemText(hwndDlg, IDC_STATUSMESSAGE, tmp, _countof(tmp));
+ wchar_t title[256];
+ mir_snwprintf(title, TranslateT("Set my status message for %s"), proto->description);
+ SetWindowText(m_hwnd, title);
- SetStatusMessageData *data = (SetStatusMessageData *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
+ m_edtStatusMessage.SetText(proto->GetStatusMsg());
+ }
+ else if (m_data->status != 0) {
+ Window_SetProtoIcon_IcoLib(m_hwnd, nullptr, m_data->status);
- if (data->proto_num >= 0)
- protocols->Get(data->proto_num)->SetStatusMsg(tmp);
- else if (data->status == 0)
- protocols->SetStatusMsgs(tmp);
- else
- protocols->SetStatusMsgs(data->status, tmp);
+ wchar_t title[256];
+ mir_snwprintf(title, TranslateT("Set my status message for %s"), Clist_GetStatusModeDescription(m_data->status, 0));
+ SetWindowText(m_hwnd, title);
- DestroyWindow(hwndDlg);
- }
- break;
+ m_edtStatusMessage.SetText(protocols->GetDefaultStatusMsg(m_data->status));
+ }
+ else {
+ Window_SetSkinIcon_IcoLib(m_hwnd, SKINICON_OTHER_MIRANDA);
- case IDCANCEL:
- DestroyWindow(hwndDlg);
- break;
+ m_edtStatusMessage.SetText(protocols->GetDefaultStatusMsg());
}
- break;
+ return true;
+ }
- case WM_CLOSE:
- DestroyWindow(hwndDlg);
- break;
+ void OnOkClick(CCtrlBase*)
+ {
+ wchar_t tmp[MS_MYDETAILS_GETMYSTATUSMESSAGE_BUFFER_SIZE];
+ m_edtStatusMessage.GetText(tmp, _countof(tmp));
- case WM_DESTROY:
- SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_STATUSMESSAGE), GWLP_WNDPROC,
- GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_STATUSMESSAGE), GWLP_USERDATA));
- free((SetStatusMessageData *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA));
- Window_FreeIcon_IcoLib(hwndDlg);
- InterlockedExchange(&status_msg_dialog_open, 0);
- break;
+ if (m_data->proto_num >= 0)
+ protocols->Get(m_data->proto_num)->SetStatusMsg(tmp);
+ else if (m_data->status == 0)
+ protocols->SetStatusMsgs(tmp);
+ else
+ protocols->SetStatusMsgs(m_data->status, tmp);
}
- return FALSE;
-}
+ void OnCancelClick(CCtrlBase*)
+ {
+ Close();
+ }
+
+ bool OnClose() override
+ {
+ mir_free(m_data);
+ Window_FreeIcon_IcoLib(m_hwnd);
+ if (pSetStatusMessageDialog == this)
+ pSetStatusMessageDialog = nullptr;
+ return true;
+ }
+};
INT_PTR PluginCommand_SetMyStatusMessageUI(WPARAM wParam, LPARAM lParam)
{
@@ -434,25 +416,20 @@ INT_PTR PluginCommand_SetMyStatusMessageUI(WPARAM wParam, LPARAM lParam) } // fallthrough
if (proto == nullptr || proto->status != ID_STATUS_OFFLINE) {
- if (!status_msg_dialog_open) {
- InterlockedExchange(&status_msg_dialog_open, 1);
-
- hwndSetStatusMsg = CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_SETSTATUSMESSAGE), nullptr, DlgProcSetStatusMessage);
-
- SendMessage(hwndSetStatusMsg, WMU_SETDATA, status, proto_num);
+ if (pSetStatusMessageDialog == nullptr) {
+ pSetStatusMessageDialog = new CSetStatusMessageDialog(proto_num, status);
+ pSetStatusMessageDialog->Show();
+ }
+ else {
+ SetForegroundWindow(pSetStatusMessageDialog->GetHwnd());
+ SetFocus(pSetStatusMessageDialog->GetHwnd());
}
-
- SetForegroundWindow(hwndSetStatusMsg);
- SetFocus(hwndSetStatusMsg);
- ShowWindow(hwndSetStatusMsg, SW_SHOW);
-
return 0;
}
return -3;
}
-
INT_PTR PluginCommand_CycleThroughtProtocols(WPARAM wParam, LPARAM)
{
db_set_b(0, "MyDetails", "CicleThroughtProtocols", (BYTE)wParam);
diff --git a/plugins/MyDetails/src/stdafx.h b/plugins/MyDetails/src/stdafx.h index af7275116a..c1a073d0eb 100644 --- a/plugins/MyDetails/src/stdafx.h +++ b/plugins/MyDetails/src/stdafx.h @@ -39,6 +39,7 @@ Boston, MA 02111-1307, USA. #include <m_icolib.h>
#include <m_cluiframes.h>
#include <win2k.h>
+#include <m_gui.h>
#include <m_proto_listeningto.h>
#include <m_listeningto.h>
|