diff options
Diffstat (limited to 'protocols/Teams/src')
| -rw-r--r-- | protocols/Teams/src/proto.h | 11 | ||||
| -rw-r--r-- | protocols/Teams/src/resource.h | 9 | ||||
| -rw-r--r-- | protocols/Teams/src/teams_options.cpp | 80 | ||||
| -rw-r--r-- | protocols/Teams/src/teams_proto.cpp | 11 |
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() |
