summaryrefslogtreecommitdiff
path: root/protocols/Teams/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Teams/src')
-rw-r--r--protocols/Teams/src/proto.h11
-rw-r--r--protocols/Teams/src/resource.h9
-rw-r--r--protocols/Teams/src/teams_options.cpp80
-rw-r--r--protocols/Teams/src/teams_proto.cpp11
4 files changed, 108 insertions, 3 deletions
diff --git a/protocols/Teams/src/proto.h b/protocols/Teams/src/proto.h
index d9001e2402..d1c3fd7f4f 100644
--- a/protocols/Teams/src/proto.h
+++ b/protocols/Teams/src/proto.h
@@ -5,12 +5,23 @@ struct HttpRequest : public MTHttpRequest<CTeamsProto>
class CTeamsProto : public PROTO<CTeamsProto>
{
+ friend class COptionsMainDlg;
+
+ // options
+ int __cdecl OnOptionsInit(WPARAM, LPARAM);
+
+ CMOption<wchar_t*> m_wstrCListGroup;
+
public:
// constructor
CTeamsProto(const char *protoName, const wchar_t *userName);
~CTeamsProto();
+
+ MWindow OnCreateAccMgrUI(MWindow) override;
};
+typedef CProtoDlgBase<CTeamsProto> CTeamsDlgBase;
+
struct CMPlugin : public ACCPROTOPLUGIN<CTeamsProto>
{
CMPlugin();
diff --git a/protocols/Teams/src/resource.h b/protocols/Teams/src/resource.h
index aaf7906399..c9050aea02 100644
--- a/protocols/Teams/src/resource.h
+++ b/protocols/Teams/src/resource.h
@@ -1,14 +1,19 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
-// Used by W:\miranda-ng\protocols\Steam\res\Resource.rc
+// Used by W:\miranda-ng\protocols\Teams\res\Resource.rc
//
#define IDI_TEAMS 100
+#define IDD_ACCOUNT_MANAGER 101
+#define IDD_OPTIONS_MAIN 102
+#define IDC_LOGIN 1001
+#define IDC_PASSWORD 1002
+#define IDC_GROUP 1003
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 127
+#define _APS_NEXT_RESOURCE_VALUE 128
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1087
#define _APS_NEXT_SYMED_VALUE 101
diff --git a/protocols/Teams/src/teams_options.cpp b/protocols/Teams/src/teams_options.cpp
new file mode 100644
index 0000000000..260368dfc5
--- /dev/null
+++ b/protocols/Teams/src/teams_options.cpp
@@ -0,0 +1,80 @@
+/*
+Copyright (C) 2012-25 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_password, m_group;
+
+public:
+ COptionsMainDlg(CTeamsProto *proto, int idDialog) :
+ CTeamsDlgBase(proto, idDialog),
+ m_login(this, IDC_LOGIN),
+ m_password(this, IDC_PASSWORD),
+ m_group(this, IDC_GROUP)
+ {
+ CreateLink(m_group, proto->m_wstrCListGroup);
+ }
+
+ bool OnInitDialog() override
+ {
+ m_login.SetTextA(ptrA(m_proto->getStringA("Login")));
+ m_password.SetTextA(pass_ptrA(m_proto->getStringA("Password")));
+ m_login.SendMsg(EM_LIMITTEXT, 128, 0);
+ m_password.SendMsg(EM_LIMITTEXT, 128, 0);
+ m_group.SendMsg(EM_LIMITTEXT, 64, 0);
+ return true;
+ }
+
+ bool OnApply() override
+ {
+ m_proto->setString("Login", ptrA(m_login.GetTextA()));
+ m_proto->setString("Password", ptrA(m_password.GetTextA()));
+ ptrW group(m_group.GetText());
+ if (mir_wstrlen(group) > 0 && !Clist_GroupExists(group))
+ Clist_GroupCreate(0, group);
+ return true;
+ }
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+// module entry points
+
+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;
+}
+
+
diff --git a/protocols/Teams/src/teams_proto.cpp b/protocols/Teams/src/teams_proto.cpp
index 2e6eb83e5c..b96ebd2593 100644
--- a/protocols/Teams/src/teams_proto.cpp
+++ b/protocols/Teams/src/teams_proto.cpp
@@ -1,8 +1,17 @@
#include "stdafx.h"
CTeamsProto::CTeamsProto(const char *protoName, const wchar_t *userName) :
- PROTO<CTeamsProto>(protoName, userName)
+ PROTO<CTeamsProto>(protoName, userName),
+ m_wstrCListGroup(this, "DefaultGroup", L"Teams")
{
+ HookProtoEvent(ME_OPT_INITIALISE, &CTeamsProto::OnOptionsInit);
+
+ // network
+ NETLIBUSER nlu = {};
+ nlu.flags = NUF_OUTGOING | NUF_INCOMING | NUF_HTTPCONNS | NUF_UNICODE;
+ nlu.szDescriptiveName.w = m_tszUserName;
+ nlu.szSettingsModule = m_szModuleName;
+ m_hNetlibUser = Netlib_RegisterUser(&nlu);
}
CTeamsProto::~CTeamsProto()