summaryrefslogtreecommitdiff
path: root/protocols/Teams/src/teams_options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Teams/src/teams_options.cpp')
-rw-r--r--protocols/Teams/src/teams_options.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/protocols/Teams/src/teams_options.cpp b/protocols/Teams/src/teams_options.cpp
new file mode 100644
index 0000000000..0f50948446
--- /dev/null
+++ b/protocols/Teams/src/teams_options.cpp
@@ -0,0 +1,99 @@
+/*
+Copyright (c) 2025 Miranda NG team (https://miranda-ng.org)
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation version 2
+of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
+
+class COptionsMainDlg : public CTeamsDlgBase
+{
+ CCtrlEdit m_login, m_group;
+ CCtrlCheck m_autosync, m_usehostname, m_usebb;
+ CCtrlButton btnLogout;
+
+public:
+ COptionsMainDlg(CTeamsProto *proto, int idDialog) :
+ CTeamsDlgBase(proto, idDialog),
+ m_login(this, IDC_LOGIN),
+ m_group(this, IDC_GROUP),
+ m_autosync(this, IDC_AUTOSYNC),
+ m_usehostname(this, IDC_USEHOST),
+ m_usebb(this, IDC_BBCODES),
+ btnLogout(this, IDC_LOGOUT)
+ {
+ CreateLink(m_group, proto->m_wstrCListGroup);
+ CreateLink(m_autosync, proto->m_bAutoHistorySync);
+ CreateLink(m_usehostname, proto->m_bUseHostnameAsPlace);
+ CreateLink(m_usebb, proto->m_bUseBBCodes);
+
+ btnLogout.OnClick = Callback(this, &COptionsMainDlg::onClick_Logout);
+ }
+
+ bool OnInitDialog() override
+ {
+ if (m_proto->getMStringA(DBKEY_RTOKEN).IsEmpty())
+ btnLogout.Disable();
+
+ CMStringA szLogin(m_proto->getMStringA(DBKEY_ID));
+ if (szLogin.IsEmpty())
+ m_login.SetText(TranslateT("<will appear after first login>"));
+ else
+ m_login.SetTextA(szLogin);
+ m_group.SendMsg(EM_LIMITTEXT, 64, 0);
+ return true;
+ }
+
+ bool OnApply() override
+ {
+ ptrW group(m_group.GetText());
+ if (mir_wstrlen(group) > 0 && !Clist_GroupExists(group))
+ Clist_GroupCreate(0, group);
+ return true;
+ }
+
+ void onClick_Logout(CCtrlButton *)
+ {
+ m_proto->delSetting(DBKEY_RTOKEN);
+
+ if (m_proto->IsOnline())
+ m_proto->SetStatus(ID_STATUS_OFFLINE);
+
+ btnLogout.Disable();
+ }
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+
+MWindow CTeamsProto::OnCreateAccMgrUI(MWindow hwndParent)
+{
+ auto *pDlg = new COptionsMainDlg(this, IDD_ACCOUNT_MANAGER);
+ pDlg->SetParent(hwndParent);
+ pDlg->Show();
+ return pDlg->GetHwnd();
+}
+
+int CTeamsProto::OnOptionsInit(WPARAM wParam, LPARAM)
+{
+ OPTIONSDIALOGPAGE odp = { sizeof(odp) };
+ odp.szTitle.w = m_tszUserName;
+ odp.flags = ODPF_BOLDGROUPS | ODPF_UNICODE | ODPF_DONTTRANSLATE;
+ odp.szGroup.w = LPGENW("Network");
+
+ odp.szTab.w = LPGENW("Account");
+ odp.pDialog = new COptionsMainDlg(this, IDD_OPTIONS_MAIN);
+ g_plugin.addOptions(wParam, &odp);
+
+ return 0;
+}