summaryrefslogtreecommitdiff
path: root/protocols/JabberG
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-06-04 17:03:28 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-06-04 17:03:28 +0300
commitf531ff887729783a7fe7a3e12ad12f658eefc7b0 (patch)
tree9e1844429448b6527ef7ca87163e44eafce250d8 /protocols/JabberG
parent1c2e5d128a7176ae827dda1e2a8fcc64e772a148 (diff)
UI classes:
- CDlgBase::m_bSucceeded variable introduced to check whether IDOK was pressed or not; - unused/useless buttons with id=IDOK or IDCANCEL removed; - brnOk.OnClick replaced with OnApply calls; - unused/useless calls of EndDialog/EndModal removed; - minor code cleaning
Diffstat (limited to 'protocols/JabberG')
-rw-r--r--protocols/JabberG/res/jabber.rc4
-rw-r--r--protocols/JabberG/src/jabber_adhoc.cpp30
-rw-r--r--protocols/JabberG/src/jabber_agent.cpp122
-rw-r--r--protocols/JabberG/src/jabber_captcha.cpp2
-rw-r--r--protocols/JabberG/src/jabber_form.cpp28
-rw-r--r--protocols/JabberG/src/jabber_groupchat.cpp31
-rw-r--r--protocols/JabberG/src/jabber_notes.cpp32
-rwxr-xr-xprotocols/JabberG/src/jabber_opt.cpp39
-rw-r--r--protocols/JabberG/src/jabber_privacy.cpp138
-rw-r--r--protocols/JabberG/src/jabber_svc.cpp34
-rw-r--r--protocols/JabberG/src/jabber_xstatus.cpp458
-rw-r--r--protocols/JabberG/src/resource.h1
-rwxr-xr-xprotocols/JabberG/src/stdafx.h5
13 files changed, 407 insertions, 517 deletions
diff --git a/protocols/JabberG/res/jabber.rc b/protocols/JabberG/res/jabber.rc
index 3c0930ad1a..6280d2c403 100644
--- a/protocols/JabberG/res/jabber.rc
+++ b/protocols/JabberG/res/jabber.rc
@@ -182,7 +182,7 @@ BEGIN
CONTROL "",IDC_FRAME2,"Static",SS_ETCHEDHORZ,0,197,258,1
LTEXT "",IDC_FRAME,0,28,250,168,WS_TABSTOP
SCROLLBAR IDC_VSCROLL,246,28,11,167,SBS_VERT
- DEFPUSHBUTTON "Submit",IDC_SUBMIT,146,203,50,14,WS_DISABLED
+ DEFPUSHBUTTON "Submit",IDOK,146,203,50,14,WS_DISABLED
PUSHBUTTON "Cancel",IDCANCEL,200,203,50,14
DEFPUSHBUTTON "Next",IDC_NEXT,50,203,40,14,NOT WS_VISIBLE | WS_DISABLED
DEFPUSHBUTTON "Back",IDC_PREV,6,203,42,14,NOT WS_VISIBLE | WS_DISABLED
@@ -657,7 +657,7 @@ BEGIN
EDITTEXT IDC_INSTRUCTION,17,16,233,8,ES_MULTILINE | ES_READONLY | NOT WS_BORDER
CONTROL "",IDC_FRAME1,"Static",SS_ETCHEDHORZ,0,26,258,1
CONTROL "",IDC_FRAME2,"Static",SS_ETCHEDHORZ,0,197,258,1
- DEFPUSHBUTTON "Submit",IDC_SUBMIT,146,203,50,14
+ DEFPUSHBUTTON "Submit",IDOK,146,203,50,14
PUSHBUTTON "Cancel",IDCANCEL,200,203,50,14
END
diff --git a/protocols/JabberG/src/jabber_adhoc.cpp b/protocols/JabberG/src/jabber_adhoc.cpp
index 7148fdc748..b4e5bac799 100644
--- a/protocols/JabberG/src/jabber_adhoc.cpp
+++ b/protocols/JabberG/src/jabber_adhoc.cpp
@@ -121,8 +121,8 @@ void CJabberProto::AdHoc_ExecuteCommand(HWND hwndDlg, char*, JabberAdHocData *da
XmlNodeIq(AddIQ(&CJabberProto::OnIqResult_CommandExecution, JABBER_IQ_TYPE_SET, jid2, hwndDlg))
<< XCHILDNS("command", JABBER_FEAT_COMMANDS) << XATTR("node", node) << XATTR("action", "execute"));
- EnableDlgItem(hwndDlg, IDC_SUBMIT, FALSE);
- SetDlgItemText(hwndDlg, IDC_SUBMIT, TranslateT("OK"));
+ EnableDlgItem(hwndDlg, IDOK, FALSE);
+ SetDlgItemText(hwndDlg, IDOK, TranslateT("OK"));
}
}
}
@@ -174,7 +174,7 @@ void CJabberProto::AdHoc_OnJAHMCommandListResult(HWND hwndDlg, TiXmlElement *iqN
JabberFormSetInstruction(hwndDlg, TranslateU("Select Command"));
ShowDlgItem(hwndDlg, IDC_FRAME, SW_SHOW);
ShowDlgItem(hwndDlg, IDC_VSCROLL, SW_SHOW);
- EnableDlgItem(hwndDlg, IDC_SUBMIT, TRUE);
+ EnableDlgItem(hwndDlg, IDOK, TRUE);
}
else JabberFormSetInstruction(hwndDlg, TranslateU("Not supported"));
}
@@ -235,7 +235,7 @@ void CJabberProto::AdHoc_OnJAHMProcessResult(HWND hwndDlg, TiXmlElement *workNod
ShowDlgItem(hwndDlg, IDC_PREV, (XmlFirstChild(actionsNode, "prev") != nullptr) ? SW_SHOW : SW_HIDE);
ShowDlgItem(hwndDlg, IDC_NEXT, (XmlFirstChild(actionsNode, "next") != nullptr) ? SW_SHOW : SW_HIDE);
ShowDlgItem(hwndDlg, IDC_COMPLETE, (XmlFirstChild(actionsNode, "complete") != nullptr) ? SW_SHOW : SW_HIDE);
- ShowDlgItem(hwndDlg, IDC_SUBMIT, SW_HIDE);
+ ShowDlgItem(hwndDlg, IDOK, SW_HIDE);
int toEnable[] = { IDC_PREV, IDC_NEXT, IDC_COMPLETE, 0 };
sttEnableControls(hwndDlg, TRUE, toEnable);
@@ -244,18 +244,18 @@ void CJabberProto::AdHoc_OnJAHMProcessResult(HWND hwndDlg, TiXmlElement *workNod
int toHide[] = { IDC_PREV, IDC_NEXT, IDC_COMPLETE, 0 };
sttShowControls(hwndDlg, FALSE, toHide);
- ShowDlgItem(hwndDlg, IDC_SUBMIT, SW_SHOW);
- EnableDlgItem(hwndDlg, IDC_SUBMIT, TRUE);
+ ShowDlgItem(hwndDlg, IDOK, SW_SHOW);
+ EnableDlgItem(hwndDlg, IDOK, TRUE);
}
if (!status || mir_strcmp(status, "executing")) {
- ShowDlgItem(hwndDlg, IDC_SUBMIT, SW_HIDE);
+ ShowDlgItem(hwndDlg, IDOK, SW_HIDE);
SetDlgItemText(hwndDlg, IDCANCEL, TranslateT("Done"));
}
}
else if (!mir_strcmp(type, "error")) {
// error occurred here
- int toHide[] = { IDC_FRAME, IDC_VSCROLL, IDC_PREV, IDC_NEXT, IDC_COMPLETE, IDC_SUBMIT, 0 };
+ int toHide[] = { IDC_FRAME, IDC_VSCROLL, IDC_PREV, IDC_NEXT, IDC_COMPLETE, IDOK, 0 };
sttShowControls(hwndDlg, FALSE, toHide);
const char *code = "";
@@ -296,7 +296,7 @@ void CJabberProto::AdHoc_SubmitCommandForm(HWND hwndDlg, JabberAdHocData *dat, c
JabberFormSetInstruction(hwndDlg, TranslateU("In progress. Please Wait..."));
- static const int toDisable[] = { IDC_SUBMIT, IDC_PREV, IDC_NEXT, IDC_COMPLETE, 0 };
+ static const int toDisable[] = { IDOK, IDC_PREV, IDC_NEXT, IDC_COMPLETE, 0 };
sttEnableControls(hwndDlg, FALSE, toDisable);
}
@@ -350,14 +350,14 @@ static INT_PTR CALLBACK JabberAdHoc_CommandDlgProc(HWND hwndDlg, UINT msg, WPARA
int toHide[] = { IDC_FRAME, IDC_VSCROLL, IDC_PREV, IDC_NEXT, IDC_COMPLETE, 0 };
sttShowControls(hwndDlg, FALSE, toHide);
- int toShow[] = { IDC_INSTRUCTION, IDC_SUBMIT, IDCANCEL, 0 };
+ int toShow[] = { IDC_INSTRUCTION, IDOK, IDCANCEL, 0 };
sttShowControls(hwndDlg, TRUE, toShow);
EnableDlgItem(hwndDlg, IDC_VSCROLL, TRUE);
SetWindowPos(GetDlgItem(hwndDlg, IDC_VSCROLL), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
- SetDlgItemText(hwndDlg, IDC_SUBMIT, TranslateT("Execute"));
+ SetDlgItemText(hwndDlg, IDOK, TranslateT("Execute"));
JabberFormSetInstruction(hwndDlg, TranslateU("Requesting command list. Please wait..."));
char Caption[512];
@@ -372,8 +372,8 @@ static INT_PTR CALLBACK JabberAdHoc_CommandDlgProc(HWND hwndDlg, UINT msg, WPARA
<< XCHILDNS("command", JABBER_FEAT_COMMANDS)
<< XATTR("node", pStartupParams->m_szNode) << XATTR("action", "execute"));
- EnableDlgItem(hwndDlg, IDC_SUBMIT, FALSE);
- SetDlgItemText(hwndDlg, IDC_SUBMIT, TranslateT("OK"));
+ EnableDlgItem(hwndDlg, IDOK, FALSE);
+ SetDlgItemText(hwndDlg, IDOK, TranslateT("OK"));
mir_snprintf(Caption, TranslateU("Sending Ad-Hoc command to %s"), dat->ResponderJID);
}
@@ -401,8 +401,8 @@ static INT_PTR CALLBACK JabberAdHoc_CommandDlgProc(HWND hwndDlg, UINT msg, WPARA
case IDC_COMPLETE:
dat->proto->AdHoc_SubmitCommandForm(hwndDlg, dat, "complete");
return TRUE;
- case IDC_SUBMIT:
- if (!dat->AdHocNode && dat->CommandsNode && LOWORD(wParam) == IDC_SUBMIT)
+ case IDOK:
+ if (!dat->AdHocNode && dat->CommandsNode && LOWORD(wParam) == IDOK)
dat->proto->AdHoc_ExecuteCommand(hwndDlg, dat->ResponderJID, dat);
else
dat->proto->AdHoc_SubmitCommandForm(hwndDlg, dat, nullptr);
diff --git a/protocols/JabberG/src/jabber_agent.cpp b/protocols/JabberG/src/jabber_agent.cpp
index 55e5532bb6..de17dc3bab 100644
--- a/protocols/JabberG/src/jabber_agent.cpp
+++ b/protocols/JabberG/src/jabber_agent.cpp
@@ -39,7 +39,6 @@ public:
m_ok(this, IDOK)
{
SetParent(_owner);
- m_ok.OnClick = Callback(this, &CAgentRegProgressDlg::OnOk);
}
bool OnInitDialog() override
@@ -50,6 +49,11 @@ public:
return true;
}
+ void OnDestroy() override
+ {
+ m_proto->m_hwndRegProgress = nullptr;
+ }
+
INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override
{
if (msg == WM_JABBER_REGDLG_UPDATE) {
@@ -66,12 +70,6 @@ public:
return CJabberDlgBase::DlgProc(msg, wParam, lParam);
}
-
- void OnOk(CCtrlButton*)
- {
- m_proto->m_hwndRegProgress = nullptr;
- EndDialog(m_hwnd, 0);
- }
};
/////////////////////////////////////////////////////////////////////////////////////////
@@ -86,17 +84,14 @@ class CAgentRegDlg : public CJabberDlgBase
TiXmlElement *m_agentRegIqNode;
char *m_jid;
- CCtrlButton m_submit;
HWND m_statusBar;
public:
CAgentRegDlg(CJabberProto *_ppro, char *_jid) :
CJabberDlgBase(_ppro, IDD_FORM),
- m_submit(this, IDC_SUBMIT),
m_jid(_jid),
m_agentRegIqNode(nullptr)
{
- m_submit.OnClick = Callback(this, &CAgentRegDlg::OnSubmit);
}
bool OnInitDialog() override
@@ -104,7 +99,7 @@ public:
EnableWindow(GetParent(m_hwnd), FALSE);
m_proto->m_hwndAgentRegInput = m_hwnd;
SetWindowText(m_hwnd, TranslateT("Jabber Agent Registration"));
- SetDlgItemText(m_hwnd, IDC_SUBMIT, TranslateT("Register"));
+ SetDlgItemText(m_hwnd, IDOK, TranslateT("Register"));
m_statusBar = CreateWindowExW(0, STATUSCLASSNAME, nullptr, WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0, m_hwnd, nullptr, g_plugin.getInst(), nullptr);
SendMessage(m_statusBar, WM_SIZE, 0, 0);
@@ -121,6 +116,57 @@ public:
return true;
}
+ bool OnApply() override
+ {
+ if (m_agentRegIqNode == nullptr)
+ return true;
+
+ auto *queryNode = XmlFirstChild(m_agentRegIqNode, "query");
+ const char *from = XmlGetAttr(m_agentRegIqNode, "from");
+ if (from == nullptr || queryNode == nullptr)
+ return true;
+
+ HWND hwndFrame = GetDlgItem(m_hwnd, IDC_FRAME);
+ wchar_t *str2 = (wchar_t *)alloca(sizeof(wchar_t) * 128);
+ int id = 0;
+
+ XmlNodeIq iq(m_proto->AddIQ(&CJabberProto::OnIqResultSetRegister, JABBER_IQ_TYPE_SET, from));
+ TiXmlElement *query = iq << XQUERY(JABBER_FEAT_REGISTER);
+
+ if (auto *xNode = XmlFirstChild(queryNode, "x")) {
+ // use new jabber:x:data form
+ JabberFormGetData(hwndFrame, query, xNode);
+ }
+ else {
+ // use old registration information form
+ for (auto *n : TiXmlEnum(queryNode)) {
+ const char *pszName = n->Name();
+ if (pszName) {
+ if (!mir_strcmp(pszName, "key")) {
+ // field that must be passed along with the registration
+ if (n->GetText())
+ XmlAddChildA(query, pszName, n->GetText());
+ else
+ XmlAddChild(query, pszName);
+ }
+ else if (!mir_strcmp(pszName, "registered") || !mir_strcmp(pszName, "instructions")) {
+ // do nothing, we will skip these
+ }
+ else {
+ GetDlgItemText(hwndFrame, id, str2, 128);
+ XmlAddChildA(query, pszName, T2Utf(str2).get());
+ id++;
+ }
+ }
+ }
+ }
+
+ m_proto->m_ThreadInfo->send(iq);
+
+ CAgentRegProgressDlg(m_proto, m_hwnd).DoModal();
+ return true;
+ }
+
void OnDestroy() override
{
JabberFormDestroyUI(GetDlgItem(m_hwnd, IDC_FRAME));
@@ -200,7 +246,7 @@ public:
m_curPos = 0;
}
- EnableWindow(GetDlgItem(m_hwnd, IDC_SUBMIT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDOK), TRUE);
}
else if (wParam == 0) {
// lParam = error message
@@ -230,58 +276,6 @@ public:
return CJabberDlgBase::DlgProc(msg, wParam, lParam);
}
-
- void OnSubmit(CCtrlButton*)
- {
- if (m_agentRegIqNode == nullptr)
- return;
-
- auto *queryNode = XmlFirstChild(m_agentRegIqNode, "query");
- const char *from = XmlGetAttr(m_agentRegIqNode, "from");
- if (from == nullptr || queryNode == nullptr)
- return;
-
- HWND hwndFrame = GetDlgItem(m_hwnd, IDC_FRAME);
- wchar_t *str2 = (wchar_t*)alloca(sizeof(wchar_t) * 128);
- int id = 0;
-
- XmlNodeIq iq(m_proto->AddIQ(&CJabberProto::OnIqResultSetRegister, JABBER_IQ_TYPE_SET, from));
- TiXmlElement *query = iq << XQUERY(JABBER_FEAT_REGISTER);
-
- if (auto *xNode = XmlFirstChild(queryNode, "x")) {
- // use new jabber:x:data form
- JabberFormGetData(hwndFrame, query, xNode);
- }
- else {
- // use old registration information form
- for (auto *n : TiXmlEnum(queryNode)) {
- const char *pszName = n->Name();
- if (pszName) {
- if (!mir_strcmp(pszName, "key")) {
- // field that must be passed along with the registration
- if (n->GetText())
- XmlAddChildA(query, pszName, n->GetText());
- else
- XmlAddChild(query, pszName);
- }
- else if (!mir_strcmp(pszName, "registered") || !mir_strcmp(pszName, "instructions")) {
- // do nothing, we will skip these
- }
- else {
- GetDlgItemText(hwndFrame, id, str2, 128);
- XmlAddChildA(query, pszName, T2Utf(str2).get());
- id++;
- }
- }
- }
- }
-
- m_proto->m_ThreadInfo->send(iq);
-
- CAgentRegProgressDlg(m_proto, m_hwnd).DoModal();
-
- Close();
- }
};
void CJabberProto::RegisterAgent(HWND, char *jid)
diff --git a/protocols/JabberG/src/jabber_captcha.cpp b/protocols/JabberG/src/jabber_captcha.cpp
index 89f8c118b9..9f77ba6456 100644
--- a/protocols/JabberG/src/jabber_captcha.cpp
+++ b/protocols/JabberG/src/jabber_captcha.cpp
@@ -92,7 +92,7 @@ INT_PTR CALLBACK JabberCaptchaFormDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam,
EndDialog(hwndDlg, 0);
return TRUE;
- case IDC_SUBMIT:
+ case IDOK:
GetDlgItemText(hwndDlg, IDC_VALUE, params->Result, _countof(params->Result));
EndDialog(hwndDlg, 1);
return TRUE;
diff --git a/protocols/JabberG/src/jabber_form.cpp b/protocols/JabberG/src/jabber_form.cpp
index 3f49a7312b..eb6c147b88 100644
--- a/protocols/JabberG/src/jabber_form.cpp
+++ b/protocols/JabberG/src/jabber_form.cpp
@@ -569,16 +569,11 @@ void JabberFormGetData(HWND hwndStatic, TiXmlElement *xRoot, const TiXmlElement
CJabberFormDlg::CJabberFormDlg(CJabberProto *ppro, const TiXmlElement *xNode, char *defTitle, JABBER_FORM_SUBMIT_FUNC pfnSubmit, void *userdata) :
CSuper(ppro, IDD_FORM),
- btnSubmit(this, IDC_SUBMIT),
- btnCancel(this, IDCANCEL),
m_pfnSubmit(pfnSubmit),
m_pUserdata(userdata),
m_defTitle(mir_strdup(defTitle))
{
m_xNode = xNode->DeepClone(&m_doc)->ToElement();
-
- btnSubmit.OnClick = Callback(this, &CJabberFormDlg::onClick_Submit);
- btnCancel.OnClick = Callback(this, &CJabberFormDlg::onClick_Cancel);
}
bool CJabberFormDlg::OnInitDialog()
@@ -625,12 +620,21 @@ bool CJabberFormDlg::OnInitDialog()
SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_FRAME), GWL_EXSTYLE, frameExStyle);
if (m_pfnSubmit != nullptr)
- EnableWindow(GetDlgItem(m_hwnd, IDC_SUBMIT), TRUE);
+ EnableWindow(GetDlgItem(m_hwnd, IDOK), TRUE);
+ return true;
+}
+
+bool CJabberFormDlg::OnApply()
+{
+ (m_proto->*(m_pfnSubmit))(this, m_pUserdata);
return true;
}
void CJabberFormDlg::OnDestroy()
{
+ if (!m_bSucceeded && m_pfnCancel)
+ (m_proto->*(m_pfnCancel))(this, m_pUserdata);
+
JabberFormDestroyUI(GetDlgItem(m_hwnd, IDC_FRAME));
mir_free(m_pUserdata);
}
@@ -691,18 +695,6 @@ INT_PTR CJabberFormDlg::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam)
return CSuper::DlgProc(msg, wParam, lParam);
}
-void CJabberFormDlg::onClick_Submit(CCtrlButton*)
-{
- (m_proto->*(m_pfnSubmit))(this, m_pUserdata);
- Close();
-}
-
-void CJabberFormDlg::onClick_Cancel(CCtrlButton*)
-{
- if (m_pfnCancel)
- (m_proto->*(m_pfnCancel))(this, m_pUserdata);
-}
-
static void CALLBACK JabberFormCreateDialogApcProc(void *param)
{
((CJabberFormDlg*)param)->Show();
diff --git a/protocols/JabberG/src/jabber_groupchat.cpp b/protocols/JabberG/src/jabber_groupchat.cpp
index 7b5cd15de6..aff88618b9 100644
--- a/protocols/JabberG/src/jabber_groupchat.cpp
+++ b/protocols/JabberG/src/jabber_groupchat.cpp
@@ -382,15 +382,11 @@ class CJabberDlgGcJoin : public CJabberDlgBase
char *m_jid;
- CCtrlButton btnOk;
-
public:
CJabberDlgGcJoin(CJabberProto *proto, char *jid) :
CSuper(proto, IDD_GROUPCHAT_JOIN),
- btnOk(this, IDOK),
m_jid(mir_strdup(jid))
{
- btnOk.OnClick = Callback(this, &CJabberDlgGcJoin::OnBtnOk);
}
~CJabberDlgGcJoin()
@@ -463,18 +459,7 @@ public:
return true;
}
- void OnDestroy() override
- {
- IcoLib_ReleaseIcon((HICON)SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BM_SETIMAGE, IMAGE_ICON, 0));
- m_proto->m_pDlgJabberJoinGroupchat = nullptr;
- DeleteObject((HFONT)SendDlgItemMessage(m_hwnd, IDC_TXT_RECENT, WM_GETFONT, 0, 0));
-
- CSuper::OnDestroy();
-
- mir_free(m_jid); m_jid = nullptr;
- }
-
- void OnBtnOk(CCtrlButton*)
+ bool OnApply() override
{
wchar_t text[128];
GetDlgItemText(m_hwnd, IDC_SERVER, text, _countof(text));
@@ -491,6 +476,18 @@ public:
GetDlgItemText(m_hwnd, IDC_PASSWORD, text, _countof(text));
T2Utf password(text);
m_proto->GroupchatJoinRoom(server, room, nick, password);
+ return true;
+ }
+
+ void OnDestroy() override
+ {
+ IcoLib_ReleaseIcon((HICON)SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BM_SETIMAGE, IMAGE_ICON, 0));
+ m_proto->m_pDlgJabberJoinGroupchat = nullptr;
+ DeleteObject((HFONT)SendDlgItemMessage(m_hwnd, IDC_TXT_RECENT, WM_GETFONT, 0, 0));
+
+ CSuper::OnDestroy();
+
+ mir_free(m_jid); m_jid = nullptr;
}
INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override
@@ -683,7 +680,7 @@ public:
if (GetAsyncKeyState(VK_CONTROL))
break;
- OnBtnOk(nullptr);
+ UIEmulateBtnClick(m_hwnd, IDOK);
Close();
}
break;
diff --git a/protocols/JabberG/src/jabber_notes.cpp b/protocols/JabberG/src/jabber_notes.cpp
index 8f1a4eef1e..c7065598cb 100644
--- a/protocols/JabberG/src/jabber_notes.cpp
+++ b/protocols/JabberG/src/jabber_notes.cpp
@@ -147,7 +147,6 @@ class CJabberDlgNoteItem : public CJabberDlgBase
CCtrlEdit m_txtTitle;
CCtrlEdit m_txtText;
CCtrlEdit m_txtTags;
- CCtrlButton m_btnOk;
public:
CJabberDlgNoteItem(CJabberDlgBase *parent, CNoteItem *pNote) :
@@ -156,11 +155,9 @@ public:
m_fnProcess(nullptr),
m_txtTitle(this, IDC_TXT_TITLE),
m_txtText(this, IDC_TXT_TEXT),
- m_txtTags(this, IDC_TXT_TAGS),
- m_btnOk(this, IDOK)
+ m_txtTags(this, IDC_TXT_TAGS)
{
SetParent(parent->GetHwnd());
- m_btnOk.OnClick = Callback(this, &CJabberDlgNoteItem::btnOk_OnClick);
}
CJabberDlgNoteItem(CJabberProto *proto, CNoteItem *pNote, TFnProcessNote fnProcess) :
@@ -169,10 +166,8 @@ public:
m_fnProcess(fnProcess),
m_txtTitle(this, IDC_TXT_TITLE),
m_txtText(this, IDC_TXT_TEXT),
- m_txtTags(this, IDC_TXT_TAGS),
- m_btnOk(this, IDOK)
+ m_txtTags(this, IDC_TXT_TAGS)
{
- m_btnOk.OnClick = Callback(this, &CJabberDlgNoteItem::btnOk_OnClick);
}
bool OnInitDialog() override
@@ -196,6 +191,18 @@ public:
return true;
}
+ bool OnApply() override
+ {
+ T2Utf szTitle(ptrW(m_txtTitle.GetText()));
+ T2Utf szTags(ptrW(m_txtTags.GetText()));
+ m_pNote->SetData(szTitle, m_pNote->GetFrom(), ptrW(m_txtText.GetText()), szTags);
+
+ m_autoClose = false;
+ if (m_fnProcess)
+ (m_proto->*m_fnProcess)(m_pNote, true);
+ return true;
+ }
+
int Resizer(UTILRESIZECONTROL *urc) override
{
switch (urc->wId) {
@@ -215,17 +222,6 @@ public:
return CSuper::Resizer(urc);
}
- void btnOk_OnClick(CCtrlButton*)
- {
- T2Utf szTitle(ptrW(m_txtTitle.GetText()));
- T2Utf szTags(ptrW(m_txtTags.GetText()));
- m_pNote->SetData(szTitle, m_pNote->GetFrom(), ptrW(m_txtText.GetText()), szTags);
-
- m_autoClose = false;
- if (m_fnProcess) (m_proto->*m_fnProcess)(m_pNote, true);
- EndDialog(m_hwnd, TRUE);
- }
-
bool OnClose() override
{
if (m_fnProcess)
diff --git a/protocols/JabberG/src/jabber_opt.cpp b/protocols/JabberG/src/jabber_opt.cpp
index fda71360fd..e6a44883e1 100755
--- a/protocols/JabberG/src/jabber_opt.cpp
+++ b/protocols/JabberG/src/jabber_opt.cpp
@@ -239,8 +239,6 @@ public:
m_btnOk(this, IDOK)
{
SetParent(hwndParent);
- m_autoClose = CLOSE_ON_CANCEL;
- m_btnOk.OnClick = Callback(this, &CJabberDlgRegister::btnOk_OnClick);
}
bool OnInitDialog() override
@@ -250,6 +248,23 @@ public:
return true;
}
+ bool OnApply() override
+ {
+ if (m_bProcessStarted) {
+ Close();
+ return true;
+ }
+
+ ShowWindow(GetDlgItem(m_hwnd, IDC_PROGRESS_REG), SW_SHOW);
+
+ m_regInfo->reg_hwndDlg = m_hwnd;
+ m_proto->ForkThread((CJabberProto::MyThreadFunc) & CJabberProto::ServerThread, m_regInfo);
+
+ m_btnOk.SetText(TranslateT("Cancel"));
+ m_bProcessStarted = true;
+ return false;
+ }
+
INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override
{
switch (msg) {
@@ -270,22 +285,6 @@ public:
return CSuper::DlgProc(msg, wParam, lParam);
}
-
- void btnOk_OnClick(CCtrlButton*)
- {
- if (m_bProcessStarted) {
- Close();
- return;
- }
-
- ShowWindow(GetDlgItem(m_hwnd, IDC_PROGRESS_REG), SW_SHOW);
-
- m_regInfo->reg_hwndDlg = m_hwnd;
- m_proto->ForkThread((CJabberProto::MyThreadFunc)&CJabberProto::ServerThread, m_regInfo);
-
- m_btnOk.SetText(TranslateT("Cancel"));
- m_bProcessStarted = true;
- }
};
/////////////////////////////////////////////////////////////////////////////////////////
@@ -507,7 +506,7 @@ protected:
void OnChange(CCtrlBase*)
{
- if (m_initialized)
+ if (m_bInitialized)
CheckRegistration();
}
@@ -1213,7 +1212,7 @@ protected:
void OnChange(CCtrlBase*)
{
- if (m_initialized)
+ if (m_bInitialized)
CheckRegistration();
}
diff --git a/protocols/JabberG/src/jabber_privacy.cpp b/protocols/JabberG/src/jabber_privacy.cpp
index f789dd0a82..ce16d1ae0c 100644
--- a/protocols/JabberG/src/jabber_privacy.cpp
+++ b/protocols/JabberG/src/jabber_privacy.cpp
@@ -287,40 +287,32 @@ void CJabberProto::OnIqResultPrivacyLists(const TiXmlElement *iqNode, CJabberIqI
/////////////////////////////////////////////////////////////////////////////////////////
// Add privacy list box
+
class CJabberDlgPrivacyAddList : public CJabberDlgBase
{
- typedef CJabberDlgBase CSuper;
+ CCtrlEdit m_txtName;
public:
char szLine[512];
CJabberDlgPrivacyAddList(CJabberProto *proto, HWND hwndParent) :
CJabberDlgBase(proto, IDD_PRIVACY_ADD_LIST),
- m_txtName(this, IDC_EDIT_NAME),
- m_btnOk(this, IDOK),
- m_btnCancel(this, IDCANCEL)
+ m_txtName(this, IDC_EDIT_NAME)
{
SetParent(hwndParent);
-
- m_btnOk.OnClick = Callback(this, &CJabberDlgPrivacyAddList::btnOk_OnClick);
- m_btnCancel.OnClick = Callback(this, &CJabberDlgPrivacyAddList::btnCancel_OnClick);
}
- void btnOk_OnClick(CCtrlButton*)
+ bool OnApply() override
{
m_txtName.GetTextU(szLine, _countof(szLine));
- EndDialog(m_hwnd, 1);
+ return true;
}
- void btnCancel_OnClick(CCtrlButton*)
+
+ bool OnClose() override
{
- szLine[0] = 0;
- EndDialog(m_hwnd, 0);
+ EndModal(m_bSucceeded);
+ return true;
}
-
-private:
- CCtrlEdit m_txtName;
- CCtrlButton m_btnOk;
- CCtrlButton m_btnCancel;
};
/////////////////////////////////////////////////////////////////////////////////////////
@@ -329,8 +321,6 @@ class CJabberDlgPrivacyRule : public CJabberDlgBase
{
typedef CJabberDlgBase CSuper;
- CCtrlButton m_btnOk;
- CCtrlButton m_btnCancel;
CCtrlCombo m_cbType;
public:
@@ -338,16 +328,12 @@ public:
CJabberDlgPrivacyRule(CJabberProto *proto, HWND hwndParent, CPrivacyListRule *pRule) :
CJabberDlgBase(proto, IDD_PRIVACY_RULE),
- m_btnOk(this, IDOK),
- m_btnCancel(this, IDCANCEL),
m_cbType(this, IDC_COMBO_TYPE)
{
SetParent(hwndParent);
m_pRule = pRule;
m_cbType.OnChange = Callback(this, &CJabberDlgPrivacyRule::cbType_OnChange);
- m_btnOk.OnClick = Callback(this, &CJabberDlgPrivacyRule::btnOk_OnClick);
- m_btnCancel.OnClick = Callback(this, &CJabberDlgPrivacyRule::btnCancel_OnClick);
}
bool OnInitDialog() override
@@ -401,6 +387,56 @@ public:
return true;
}
+ bool OnApply() override
+ {
+ LRESULT nItemData = -1;
+ LRESULT nCurSel = SendDlgItemMessage(m_hwnd, IDC_COMBO_TYPE, CB_GETCURSEL, 0, 0);
+ if (nCurSel != CB_ERR)
+ nItemData = SendDlgItemMessage(m_hwnd, IDC_COMBO_TYPE, CB_GETITEMDATA, nCurSel, 0);
+
+ switch (nItemData) {
+ case Jid:
+ case Group:
+ wchar_t szText[512];
+ GetDlgItemText(m_hwnd, IDC_COMBO_VALUES, szText, _countof(szText));
+ m_pRule->SetValue(T2Utf(szText));
+ break;
+
+ case Subscription:
+ nCurSel = SendDlgItemMessage(m_hwnd, IDC_COMBO_VALUE, CB_GETCURSEL, 0, 0);
+ if (nCurSel != CB_ERR)
+ m_pRule->SetValue((char *)SendDlgItemMessage(m_hwnd, IDC_COMBO_VALUE, CB_GETITEMDATA, nCurSel, 0));
+ else
+ m_pRule->SetValue("none");
+ break;
+
+ default:
+ m_pRule->SetValue(nullptr);
+ break;
+ }
+
+ m_pRule->SetType((PrivacyListRuleType)nItemData);
+ nCurSel = SendDlgItemMessage(m_hwnd, IDC_COMBO_ACTION, CB_GETCURSEL, 0, 0);
+ if (nCurSel == CB_ERR)
+ nCurSel = 1;
+ m_pRule->SetAction(nCurSel ? TRUE : FALSE);
+
+ DWORD dwPackets = 0;
+ if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_MESSAGES))
+ dwPackets |= JABBER_PL_RULE_TYPE_MESSAGE;
+ if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_PRESENCE_IN))
+ dwPackets |= JABBER_PL_RULE_TYPE_PRESENCE_IN;
+ if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_PRESENCE_OUT))
+ dwPackets |= JABBER_PL_RULE_TYPE_PRESENCE_OUT;
+ if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_QUERIES))
+ dwPackets |= JABBER_PL_RULE_TYPE_IQ;
+ if (!dwPackets)
+ dwPackets = JABBER_PL_RULE_TYPE_ALL;
+
+ m_pRule->SetPackets(dwPackets);
+ return true;
+ }
+
void OnDestroy() override
{
IcoLib_ReleaseIcon((HICON)SendDlgItemMessage(m_hwnd, IDC_ICO_MESSAGE, STM_SETICON, 0, 0));
@@ -488,62 +524,6 @@ public:
break;
}
}
-
- void btnOk_OnClick(CCtrlButton*)
- {
- LRESULT nItemData = -1;
- LRESULT nCurSel = SendDlgItemMessage(m_hwnd, IDC_COMBO_TYPE, CB_GETCURSEL, 0, 0);
- if (nCurSel != CB_ERR)
- nItemData = SendDlgItemMessage(m_hwnd, IDC_COMBO_TYPE, CB_GETITEMDATA, nCurSel, 0);
-
- switch (nItemData) {
- case Jid:
- case Group:
- wchar_t szText[512];
- GetDlgItemText(m_hwnd, IDC_COMBO_VALUES, szText, _countof(szText));
- m_pRule->SetValue(T2Utf(szText));
- break;
-
- case Subscription:
- nCurSel = SendDlgItemMessage(m_hwnd, IDC_COMBO_VALUE, CB_GETCURSEL, 0, 0);
- if (nCurSel != CB_ERR)
- m_pRule->SetValue((char*)SendDlgItemMessage(m_hwnd, IDC_COMBO_VALUE, CB_GETITEMDATA, nCurSel, 0));
- else
- m_pRule->SetValue("none");
- break;
-
- default:
- m_pRule->SetValue(nullptr);
- break;
- }
-
- m_pRule->SetType((PrivacyListRuleType)nItemData);
- nCurSel = SendDlgItemMessage(m_hwnd, IDC_COMBO_ACTION, CB_GETCURSEL, 0, 0);
- if (nCurSel == CB_ERR)
- nCurSel = 1;
- m_pRule->SetAction(nCurSel ? TRUE : FALSE);
-
- DWORD dwPackets = 0;
- if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_MESSAGES))
- dwPackets |= JABBER_PL_RULE_TYPE_MESSAGE;
- if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_PRESENCE_IN))
- dwPackets |= JABBER_PL_RULE_TYPE_PRESENCE_IN;
- if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_PRESENCE_OUT))
- dwPackets |= JABBER_PL_RULE_TYPE_PRESENCE_OUT;
- if (BST_CHECKED == IsDlgButtonChecked(m_hwnd, IDC_CHECK_QUERIES))
- dwPackets |= JABBER_PL_RULE_TYPE_IQ;
- if (!dwPackets)
- dwPackets = JABBER_PL_RULE_TYPE_ALL;
-
- m_pRule->SetPackets(dwPackets);
-
- EndDialog(m_hwnd, 1);
- }
-
- void btnCancel_OnClick(CCtrlButton*)
- {
- EndDialog(m_hwnd, 0);
- }
};
/////////////////////////////////////////////////////////////////////////////////////////
diff --git a/protocols/JabberG/src/jabber_svc.cpp b/protocols/JabberG/src/jabber_svc.cpp
index 0b4848614a..fd41daf761 100644
--- a/protocols/JabberG/src/jabber_svc.cpp
+++ b/protocols/JabberG/src/jabber_svc.cpp
@@ -553,18 +553,17 @@ class CJabberDlgHttpAuth : public CJabberDlgBase
{
typedef CJabberDlgBase CSuper;
+ CCtrlEdit m_txtInfo;
+
+ CJabberHttpAuthParams *m_pParams;
+
public:
CJabberDlgHttpAuth(CJabberProto *proto, HWND hwndParent, CJabberHttpAuthParams *pParams) :
CSuper(proto, IDD_HTTP_AUTH),
m_txtInfo(this, IDC_EDIT_HTTP_AUTH_INFO),
- m_btnAuth(this, IDOK),
- m_btnDeny(this, IDCANCEL),
m_pParams(pParams)
{
SetParent(hwndParent);
-
- m_btnAuth.OnClick = Callback(this, &CJabberDlgHttpAuth::btnAuth_OnClick);
- m_btnDeny.OnClick = Callback(this, &CJabberDlgHttpAuth::btnDeny_OnClick);
}
bool OnInitDialog() override
@@ -580,24 +579,12 @@ public:
return true;
}
- BOOL SendReply(BOOL bAuthorized)
+ bool OnClose() override
{
- BOOL bRetVal = m_proto->SendHttpAuthReply(m_pParams, bAuthorized);
+ m_proto->SendHttpAuthReply(m_pParams, m_bSucceeded);
m_pParams->Free();
mir_free(m_pParams);
- m_pParams = nullptr;
- return bRetVal;
- }
-
- void btnAuth_OnClick(CCtrlButton*)
- {
- SendReply(TRUE);
- Close();
- }
- void btnDeny_OnClick(CCtrlButton*)
- {
- SendReply(FALSE);
- Close();
+ return true;
}
UI_MESSAGE_MAP(CJabberDlgHttpAuth, CSuper);
@@ -608,13 +595,6 @@ public:
{
return (INT_PTR)GetSysColorBrush(COLOR_WINDOW);
}
-
-private:
- CCtrlEdit m_txtInfo;
- CCtrlButton m_btnAuth;
- CCtrlButton m_btnDeny;
-
- CJabberHttpAuthParams *m_pParams;
};
// XEP-0070 support (http auth)
diff --git a/protocols/JabberG/src/jabber_xstatus.cpp b/protocols/JabberG/src/jabber_xstatus.cpp
index a9955b335d..826c1e733a 100644
--- a/protocols/JabberG/src/jabber_xstatus.cpp
+++ b/protocols/JabberG/src/jabber_xstatus.cpp
@@ -34,84 +34,65 @@ static CIconPool g_MoodIcons, g_ActivityIcons;
class CJabberDlgPepBase : public CJabberDlgBase
{
typedef CJabberDlgBase CSuper;
-public:
- CJabberDlgPepBase(CJabberProto *proto, int id);
+
+ int m_time = 5;
+ CTimer timer;
protected:
CPepService *m_pepService;
- CCtrlButton m_btnOk;
- CCtrlButton m_btnCancel;
-
- bool OnInitDialog() override;
- int Resizer(UTILRESIZECONTROL *urc) override;
- INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override;
-
- void StopTimer();
-
-private:
- int m_time;
-};
-
-CJabberDlgPepBase::CJabberDlgPepBase(CJabberProto *proto, int id) :
- CJabberDlgBase(proto, id),
- m_btnOk(this, IDOK),
- m_btnCancel(this, IDCANCEL),
- m_time(5)
-{
-}
+ CCtrlButton btnOk;
-bool CJabberDlgPepBase::OnInitDialog()
-{
- CSuper::OnInitDialog();
+public:
+ CJabberDlgPepBase(CJabberProto *proto, int id) :
+ CJabberDlgBase(proto, id),
+ timer(this, 1),
+ btnOk(this, IDOK)
+ {
+ timer.OnEvent = Callback(this, &CJabberDlgPepBase::OnTimer);
+ }
- SetTimer(m_hwnd, 1, 1000, nullptr);
+ bool OnInitDialog() override
+ {
+ CSuper::OnInitDialog();
- wchar_t buf[128];
- mir_snwprintf(buf, TranslateT("OK (%d)"), m_time);
- m_btnOk.SetText(buf);
- return true;
-}
+ timer.Start(1000);
-int CJabberDlgPepBase::Resizer(UTILRESIZECONTROL *urc)
-{
- switch (urc->wId) {
- case IDOK:
- case IDCANCEL:
- return RD_ANCHORX_RIGHT | RD_ANCHORY_BOTTOM;
+ wchar_t buf[128];
+ mir_snwprintf(buf, TranslateT("OK (%d)"), m_time);
+ btnOk.SetText(buf);
+ return true;
}
- return CSuper::Resizer(urc);
-}
+ int Resizer(UTILRESIZECONTROL *urc) override
+ {
+ switch (urc->wId) {
+ case IDOK:
+ case IDCANCEL:
+ return RD_ANCHORX_RIGHT | RD_ANCHORY_BOTTOM;
+ }
-INT_PTR CJabberDlgPepBase::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg) {
- case WM_TIMER:
- if (wParam == 1) {
- wchar_t buf[128];
- mir_snwprintf(buf, TranslateT("OK (%d)"), --m_time);
- m_btnOk.SetText(buf);
+ return CSuper::Resizer(urc);
+ }
- if (m_time < 0) {
- KillTimer(m_hwnd, 1);
- UIEmulateBtnClick(m_hwnd, IDOK);
- }
+ void OnTimer(CTimer *)
+ {
+ wchar_t buf[128];
+ mir_snwprintf(buf, TranslateT("OK (%d)"), --m_time);
+ btnOk.SetText(buf);
- return TRUE;
+ if (m_time < 0) {
+ timer.Stop();
+ UIEmulateBtnClick(m_hwnd, IDOK);
}
-
- break;
}
- return CSuper::DlgProc(msg, wParam, lParam);
-}
-
-void CJabberDlgPepBase::StopTimer()
-{
- KillTimer(m_hwnd, 1);
- m_btnOk.SetText(TranslateT("OK"));
-}
+ void StopTimer()
+ {
+ timer.Stop();
+ btnOk.SetText(TranslateT("OK"));
+ }
+};
///////////////////////////////////////////////////////////////////////////////
// Simple PEP status
@@ -119,32 +100,7 @@ void CJabberDlgPepBase::StopTimer()
class CJabberDlgPepSimple : public CJabberDlgPepBase
{
typedef CJabberDlgPepBase CSuper;
-public:
- CJabberDlgPepSimple(CJabberProto *proto, wchar_t *title);
- ~CJabberDlgPepSimple();
-
- bool OkClicked() { return m_bOkClicked; }
- void AddStatusMode(LPARAM id, char *name, HICON hIcon, wchar_t *title, bool subitem = false);
- void SetActiveStatus(LPARAM id, wchar_t *text);
- LPARAM GetStatusMode();
- wchar_t *GetStatusText();
-protected:
- CCtrlCombo m_cbModes;
- CCtrlEdit m_txtDescription;
-
- bool OnInitDialog() override;
- int Resizer(UTILRESIZECONTROL *urc);
-
- UI_MESSAGE_MAP(CJabberDlgPepSimple, CSuper);
- UI_MESSAGE(WM_MEASUREITEM, OnWmMeasureItem);
- UI_MESSAGE(WM_DRAWITEM, OnWmDrawItem);
- UI_MESSAGE_MAP_END();
-
- BOOL OnWmMeasureItem(UINT msg, WPARAM wParam, LPARAM lParam);
- BOOL OnWmDrawItem(UINT msg, WPARAM wParam, LPARAM lParam);
-
-private:
struct CStatusMode
{
LPARAM m_id;
@@ -163,207 +119,209 @@ private:
int m_time;
int m_prevSelected;
int m_selected;
- bool m_bOkClicked;
LPARAM m_active;
wchar_t *m_activeText;
- void btnOk_OnClick(CCtrlButton*btn);
- void global_OnChange(CCtrlData *);
- void cbModes_OnChange(CCtrlData *);
-};
+ void global_OnChange(CCtrlData *)
+ {
+ StopTimer();
+ }
-CJabberDlgPepSimple::CJabberDlgPepSimple(CJabberProto *proto, wchar_t *title) :
- CJabberDlgPepBase(proto, IDD_PEP_SIMPLE),
- m_cbModes(this, IDC_CB_MODES),
- m_txtDescription(this, IDC_TXT_DESCRIPTION),
- m_modes(10),
- m_text(nullptr),
- m_selected(0),
- m_prevSelected(-1),
- m_active(-1),
- m_bOkClicked(false),
- m_title(title)
-{
- SetMinSize(200, 200);
+ void cbModes_OnChange(CCtrlData *)
+ {
+ StopTimer();
- m_btnOk.OnClick = Callback(this, &CJabberDlgPepSimple::btnOk_OnClick);
- m_cbModes.OnChange = Callback(this, &CJabberDlgPepSimple::cbModes_OnChange);
- m_cbModes.OnDropdown =
- m_txtDescription.OnChange = Callback(this, &CJabberDlgPepSimple::global_OnChange);
+ if (m_prevSelected == m_cbModes.GetCurSel())
+ return;
- m_modes.insert(new CStatusMode(-1, "<none>", Skin_LoadIcon(SKINICON_OTHER_SMALLDOT), TranslateT("None"), false));
-}
+ char szSetting[128];
-CJabberDlgPepSimple::~CJabberDlgPepSimple()
-{
- mir_free(m_text);
-}
+ CStatusMode *pMode = (CStatusMode *)m_cbModes.GetItemData(m_prevSelected);
+ if (m_prevSelected >= 0 && pMode->m_id >= 0) {
+ wchar_t *txt = m_txtDescription.GetText();
+ mir_snprintf(szSetting, "PepMsg_%s", pMode->m_name);
+ m_proto->setWString(szSetting, txt);
+ mir_free(txt);
+ }
-void CJabberDlgPepSimple::AddStatusMode(LPARAM id, char *name, HICON hIcon, wchar_t *title, bool subitem)
-{
- m_modes.insert(new CStatusMode(id, name, hIcon, title, subitem));
-}
+ m_prevSelected = m_cbModes.GetCurSel();
+ pMode = (CStatusMode *)m_cbModes.GetItemData(m_prevSelected);
+ if (m_prevSelected >= 0 && pMode->m_id >= 0) {
+ mir_snprintf(szSetting, "PepMsg_%s", pMode->m_name);
-void CJabberDlgPepSimple::SetActiveStatus(LPARAM id, wchar_t *text)
-{
- m_active = id;
- m_activeText = text;
-}
+ ptrW szDescr(m_proto->getWStringA(szSetting));
+ m_txtDescription.SetText((szDescr != nullptr) ? szDescr : L"");
+ m_txtDescription.Enable(true);
+ }
+ else {
+ m_txtDescription.SetTextA("");
+ m_txtDescription.Enable(false);
+ }
+ }
-LPARAM CJabberDlgPepSimple::GetStatusMode()
-{
- return m_modes[m_selected].m_id;
-}
+ CCtrlCombo m_cbModes;
+ CCtrlEdit m_txtDescription;
-wchar_t* CJabberDlgPepSimple::GetStatusText()
-{
- return m_text;
-}
+ UI_MESSAGE_MAP(CJabberDlgPepSimple, CSuper);
+ UI_MESSAGE(WM_MEASUREITEM, OnWmMeasureItem);
+ UI_MESSAGE(WM_DRAWITEM, OnWmDrawItem);
+ UI_MESSAGE_MAP_END();
-bool CJabberDlgPepSimple::OnInitDialog()
-{
- CSuper::OnInitDialog();
+public:
+ CJabberDlgPepSimple(CJabberProto *proto, wchar_t *title) :
+ CJabberDlgPepBase(proto, IDD_PEP_SIMPLE),
+ m_cbModes(this, IDC_CB_MODES),
+ m_txtDescription(this, IDC_TXT_DESCRIPTION),
+ m_modes(10),
+ m_text(nullptr),
+ m_selected(0),
+ m_prevSelected(-1),
+ m_active(-1),
+ m_title(title)
+ {
+ SetMinSize(200, 200);
- Window_SetIcon_IcoLib(m_hwnd, m_proto->m_hProtoIcon);
- SetWindowText(m_hwnd, m_title);
+ m_cbModes.OnChange = Callback(this, &CJabberDlgPepSimple::cbModes_OnChange);
+ m_cbModes.OnDropdown =
+ m_txtDescription.OnChange = Callback(this, &CJabberDlgPepSimple::global_OnChange);
- m_txtDescription.Enable(false);
- for (auto &it : m_modes) {
- int idx = m_cbModes.AddString(it->m_title, (LPARAM)it);
- if (it->m_id == m_active || !idx) {
- m_prevSelected = idx;
- m_cbModes.SetCurSel(idx);
- if (idx)
- m_txtDescription.Enable();
- }
+ m_modes.insert(new CStatusMode(-1, "<none>", Skin_LoadIcon(SKINICON_OTHER_SMALLDOT), TranslateT("None"), false));
}
- if (m_activeText)
- m_txtDescription.SetText(m_activeText);
- return true;
-}
-
-int CJabberDlgPepSimple::Resizer(UTILRESIZECONTROL *urc)
-{
- switch (urc->wId) {
- case IDC_CB_MODES:
- return RD_ANCHORX_WIDTH | RD_ANCHORY_TOP;
- case IDC_TXT_DESCRIPTION:
- return RD_ANCHORX_WIDTH | RD_ANCHORY_HEIGHT;
+ ~CJabberDlgPepSimple()
+ {
+ mir_free(m_text);
}
- return CSuper::Resizer(urc);
-}
+ bool OnInitDialog() override
+ {
+ CSuper::OnInitDialog();
-void CJabberDlgPepSimple::btnOk_OnClick(CCtrlButton*)
-{
- m_text = m_txtDescription.GetText();
- m_selected = m_cbModes.GetCurSel();
- m_bOkClicked = true;
-}
+ Window_SetIcon_IcoLib(m_hwnd, m_proto->m_hProtoIcon);
+ SetWindowText(m_hwnd, m_title);
-void CJabberDlgPepSimple::global_OnChange(CCtrlData *)
-{
- StopTimer();
-}
+ m_txtDescription.Enable(false);
+ for (auto &it : m_modes) {
+ int idx = m_cbModes.AddString(it->m_title, (LPARAM)it);
+ if (it->m_id == m_active || !idx) {
+ m_prevSelected = idx;
+ m_cbModes.SetCurSel(idx);
+ if (idx)
+ m_txtDescription.Enable();
+ }
+ }
-void CJabberDlgPepSimple::cbModes_OnChange(CCtrlData *)
-{
- StopTimer();
+ if (m_activeText)
+ m_txtDescription.SetText(m_activeText);
+ return true;
+ }
- if (m_prevSelected == m_cbModes.GetCurSel())
- return;
+ bool OnApply() override
+ {
+ m_text = m_txtDescription.GetText();
+ m_selected = m_cbModes.GetCurSel();
+ return true;
+ }
- char szSetting[128];
+ int Resizer(UTILRESIZECONTROL *urc) override
+ {
+ switch (urc->wId) {
+ case IDC_CB_MODES:
+ return RD_ANCHORX_WIDTH | RD_ANCHORY_TOP;
+ case IDC_TXT_DESCRIPTION:
+ return RD_ANCHORX_WIDTH | RD_ANCHORY_HEIGHT;
+ }
- CStatusMode *pMode = (CStatusMode*)m_cbModes.GetItemData(m_prevSelected);
- if (m_prevSelected >= 0 && pMode->m_id >= 0) {
- wchar_t *txt = m_txtDescription.GetText();
- mir_snprintf(szSetting, "PepMsg_%s", pMode->m_name);
- m_proto->setWString(szSetting, txt);
- mir_free(txt);
+ return CSuper::Resizer(urc);
}
- m_prevSelected = m_cbModes.GetCurSel();
- pMode = (CStatusMode*)m_cbModes.GetItemData(m_prevSelected);
- if (m_prevSelected >= 0 && pMode->m_id >= 0) {
- mir_snprintf(szSetting, "PepMsg_%s", pMode->m_name);
+ void AddStatusMode(LPARAM id, char *name, HICON hIcon, wchar_t *title, bool subitem = false)
+ {
+ m_modes.insert(new CStatusMode(id, name, hIcon, title, subitem));
+ }
- ptrW szDescr(m_proto->getWStringA(szSetting));
- m_txtDescription.SetText((szDescr != nullptr) ? szDescr : L"");
- m_txtDescription.Enable(true);
+ void SetActiveStatus(LPARAM id, wchar_t *text)
+ {
+ m_active = id;
+ m_activeText = text;
}
- else {
- m_txtDescription.SetTextA("");
- m_txtDescription.Enable(false);
+
+ LPARAM GetStatusMode()
+ {
+ return m_modes[m_selected].m_id;
}
-}
-BOOL CJabberDlgPepSimple::OnWmMeasureItem(UINT, WPARAM, LPARAM lParam)
-{
- LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam;
- if (lpmis->CtlID != IDC_CB_MODES)
- return FALSE;
+ wchar_t *GetStatusText()
+ {
+ return m_text;
+ }
- HDC hdc = GetDC(m_cbModes.GetHwnd());
- TEXTMETRIC tm = {};
- GetTextMetrics(hdc, &tm);
- ReleaseDC(m_cbModes.GetHwnd(), hdc);
+ BOOL OnWmMeasureItem(UINT, WPARAM, LPARAM lParam)
+ {
+ LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam;
+ if (lpmis->CtlID != IDC_CB_MODES)
+ return FALSE;
+
+ HDC hdc = GetDC(m_cbModes.GetHwnd());
+ TEXTMETRIC tm = {};
+ GetTextMetrics(hdc, &tm);
+ ReleaseDC(m_cbModes.GetHwnd(), hdc);
+
+ lpmis->itemHeight = max(tm.tmHeight, 18);
+ if (lpmis->itemHeight < 18)
+ lpmis->itemHeight = 18;
+ return TRUE;
+ }
- lpmis->itemHeight = max(tm.tmHeight, 18);
- if (lpmis->itemHeight < 18)
- lpmis->itemHeight = 18;
- return TRUE;
-}
+ BOOL OnWmDrawItem(UINT, WPARAM, LPARAM lParam)
+ {
+ LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
+ if (lpdis->CtlID != IDC_CB_MODES)
+ return FALSE;
-BOOL CJabberDlgPepSimple::OnWmDrawItem(UINT, WPARAM, LPARAM lParam)
-{
- LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
- if (lpdis->CtlID != IDC_CB_MODES)
- return FALSE;
+ if (lpdis->itemData == -1)
+ return FALSE;
- if (lpdis->itemData == -1)
- return FALSE;
+ CStatusMode *mode = (CStatusMode *)lpdis->itemData;
- CStatusMode *mode = (CStatusMode *)lpdis->itemData;
+ TEXTMETRIC tm = { 0 };
+ GetTextMetrics(lpdis->hDC, &tm);
- TEXTMETRIC tm = { 0 };
- GetTextMetrics(lpdis->hDC, &tm);
+ SetBkMode(lpdis->hDC, TRANSPARENT);
+ if (lpdis->itemState & ODS_SELECTED) {
+ SetTextColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
+ FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(COLOR_HIGHLIGHT));
+ }
+ else {
+ SetTextColor(lpdis->hDC, GetSysColor(COLOR_WINDOWTEXT));
+ FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(COLOR_WINDOW));
+ }
- SetBkMode(lpdis->hDC, TRANSPARENT);
- if (lpdis->itemState & ODS_SELECTED) {
- SetTextColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
- FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(COLOR_HIGHLIGHT));
- }
- else {
- SetTextColor(lpdis->hDC, GetSysColor(COLOR_WINDOWTEXT));
- FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(COLOR_WINDOW));
- }
+ if (!mode->m_subitem || (lpdis->itemState & ODS_COMBOBOXEDIT)) {
+ wchar_t text[128];
+ if (mode->m_subitem) {
+ for (int i = mode->m_id; i >= 0; --i)
+ if (!m_modes[i].m_subitem) {
+ mir_snwprintf(text, L"%s [%s]", m_modes[i].m_title, mode->m_title);
+ break;
+ }
+ }
+ else mir_wstrncpy(text, mode->m_title, _countof(text));
- if (!mode->m_subitem || (lpdis->itemState & ODS_COMBOBOXEDIT)) {
- wchar_t text[128];
- if (mode->m_subitem) {
- for (int i = mode->m_id; i >= 0; --i)
- if (!m_modes[i].m_subitem) {
- mir_snwprintf(text, L"%s [%s]", m_modes[i].m_title, mode->m_title);
- break;
- }
+ DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 2, (lpdis->rcItem.top + lpdis->rcItem.bottom - 16) / 2, mode->m_hIcon, 16, 16, 0, nullptr, DI_NORMAL);
+ TextOut(lpdis->hDC, lpdis->rcItem.left + 23, (lpdis->rcItem.top + lpdis->rcItem.bottom - tm.tmHeight) / 2, text, (int)mir_wstrlen(text));
+ }
+ else {
+ wchar_t text[128];
+ mir_snwprintf(text, L"...%s", mode->m_title);
+ DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 23, (lpdis->rcItem.top + lpdis->rcItem.bottom - 16) / 2, mode->m_hIcon, 16, 16, 0, nullptr, DI_NORMAL);
+ TextOut(lpdis->hDC, lpdis->rcItem.left + 44, (lpdis->rcItem.top + lpdis->rcItem.bottom - tm.tmHeight) / 2, text, (int)mir_wstrlen(text));
}
- else mir_wstrncpy(text, mode->m_title, _countof(text));
- DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 2, (lpdis->rcItem.top + lpdis->rcItem.bottom - 16) / 2, mode->m_hIcon, 16, 16, 0, nullptr, DI_NORMAL);
- TextOut(lpdis->hDC, lpdis->rcItem.left + 23, (lpdis->rcItem.top + lpdis->rcItem.bottom - tm.tmHeight) / 2, text, (int)mir_wstrlen(text));
- }
- else {
- wchar_t text[128];
- mir_snwprintf(text, L"...%s", mode->m_title);
- DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 23, (lpdis->rcItem.top + lpdis->rcItem.bottom - 16) / 2, mode->m_hIcon, 16, 16, 0, nullptr, DI_NORMAL);
- TextOut(lpdis->hDC, lpdis->rcItem.left + 44, (lpdis->rcItem.top + lpdis->rcItem.bottom - tm.tmHeight) / 2, text, (int)mir_wstrlen(text));
+ return TRUE;
}
-
- return TRUE;
-}
+};
///////////////////////////////////////////////////////////////////////////////
// CPepService base class
@@ -719,8 +677,7 @@ void CPepMood::ShowSetDialog(BYTE bQuiet)
dlg.AddStatusMode(i, g_arrMoods[i].szTag, g_MoodIcons.GetIcon(g_arrMoods[i].szTag), TranslateW(g_arrMoods[i].szName));
dlg.SetActiveStatus(m_mode, m_text);
- dlg.DoModal();
- if (!dlg.OkClicked())
+ if (!dlg.DoModal())
return;
m_mode = dlg.GetStatusMode();
@@ -1078,9 +1035,8 @@ void CPepActivity::ShowSetDialog(BYTE)
dlg.AddStatusMode(i, ActivityGetId(i), g_ActivityIcons.GetIcon(returnActivity(i)), TranslateW(g_arrActivities[i].szTitle), (g_arrActivities[i].szSecond != nullptr));
dlg.SetActiveStatus(m_mode, m_text);
- dlg.DoModal();
-
- if (!dlg.OkClicked()) return;
+ if (!dlg.DoModal())
+ return;
m_mode = dlg.GetStatusMode();
if (m_mode >= 0) {
diff --git a/protocols/JabberG/src/resource.h b/protocols/JabberG/src/resource.h
index c9a3df960e..a3e3f5987f 100644
--- a/protocols/JabberG/src/resource.h
+++ b/protocols/JabberG/src/resource.h
@@ -97,7 +97,6 @@
#define IDC_LINK_PUBLIC_SERVER 1009
#define IDC_NAME 1009
#define IDC_PROGRESS_REG 1011
-#define IDC_SUBMIT 1023
#define IDC_NEXT 1025
#define IDC_PREV 1026
#define IDC_COMPLETE 1027
diff --git a/protocols/JabberG/src/stdafx.h b/protocols/JabberG/src/stdafx.h
index 2082acca92..e744ff7075 100755
--- a/protocols/JabberG/src/stdafx.h
+++ b/protocols/JabberG/src/stdafx.h
@@ -653,10 +653,6 @@ class CJabberFormDlg : public CJabberDlgBase
int m_formHeight; // Actual height of the form
int m_curPos; // Current scroll position
- CCtrlButton btnSubmit, btnCancel;
- void onClick_Submit(CCtrlButton*);
- void onClick_Cancel(CCtrlButton*);
-
public:
CJabberFormDlg(CJabberProto *ppro, const TiXmlElement *xNode, char *defTitle, JABBER_FORM_SUBMIT_FUNC pfnSubmit, void *userdata);
@@ -668,6 +664,7 @@ public:
}
bool OnInitDialog() override;
+ bool OnApply() override;
void OnDestroy() override;
INT_PTR DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) override;
};