summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/Teams/Teams.vcxproj5
-rw-r--r--protocols/Teams/Teams.vcxproj.filters11
-rw-r--r--protocols/Teams/res/Resource.rc69
-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
7 files changed, 182 insertions, 14 deletions
diff --git a/protocols/Teams/Teams.vcxproj b/protocols/Teams/Teams.vcxproj
index 83054e7087..f5faf4cd02 100644
--- a/protocols/Teams/Teams.vcxproj
+++ b/protocols/Teams/Teams.vcxproj
@@ -30,7 +30,9 @@
<ClCompile Include="src\stdafx.cxx">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
+ <ClCompile Include="src\teams_options.cpp" />
<ClCompile Include="src\teams_proto.cpp" />
+ <ClInclude Include="src\proto.h" />
<ClInclude Include="src\resource.h" />
<ClInclude Include="src\stdafx.h" />
<ClInclude Include="src\version.h" />
@@ -39,6 +41,9 @@
<ResourceCompile Include="res\Resource.rc" />
<ResourceCompile Include="res\version.rc" />
</ItemGroup>
+ <ItemGroup>
+ <Image Include="res\teams.ico" />
+ </ItemGroup>
<ItemDefinitionGroup>
<ClCompile>
<LanguageStandard>stdcpp17</LanguageStandard>
diff --git a/protocols/Teams/Teams.vcxproj.filters b/protocols/Teams/Teams.vcxproj.filters
index 8f2a1e1f95..9f0401d3cc 100644
--- a/protocols/Teams/Teams.vcxproj.filters
+++ b/protocols/Teams/Teams.vcxproj.filters
@@ -10,6 +10,9 @@
<ClCompile Include="src\teams_proto.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\teams_options.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\resource.h">
@@ -21,6 +24,9 @@
<ClInclude Include="src\version.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="src\proto.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="res\Resource.rc">
@@ -30,5 +36,10 @@
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
+ <ItemGroup>
+ <Image Include="res\teams.ico">
+ <Filter>Resource Files</Filter>
+ </Image>
+ </ItemGroup>
<Import Project="$(ProjectDir)..\..\build\vc.common\common.filters" />
</Project> \ No newline at end of file
diff --git a/protocols/Teams/res/Resource.rc b/protocols/Teams/res/Resource.rc
index 389d09e189..189c8cba6a 100644
--- a/protocols/Teams/res/Resource.rc
+++ b/protocols/Teams/res/Resource.rc
@@ -44,16 +44,6 @@ END
#endif // APSTUDIO_INVOKED
-#endif // Neutral (Default) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-/////////////////////////////////////////////////////////////////////////////
-// Russian (Russia) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
-LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
-#pragma code_page(1251)
/////////////////////////////////////////////////////////////////////////////
//
@@ -64,7 +54,7 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
// remains consistent on all systems.
IDI_TEAMS ICON "teams.ico"
-#endif // Russian (Russia) resources
+#endif // Neutral (Default) resources
/////////////////////////////////////////////////////////////////////////////
@@ -80,6 +70,63 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
// Dialog
//
+IDD_ACCOUNT_MANAGER DIALOGEX 0, 0, 186, 119
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ LTEXT "Login:",IDC_STATIC,0,2,58,12
+ EDITTEXT IDC_LOGIN,60,0,124,12,ES_AUTOHSCROLL
+ LTEXT "Password:",IDC_STATIC,0,18,58,12
+ EDITTEXT IDC_PASSWORD,60,16,124,12,ES_PASSWORD | ES_AUTOHSCROLL
+ LTEXT "Default group:",IDC_STATIC,0,34,58,12
+ EDITTEXT IDC_GROUP,60,32,124,12,ES_AUTOHSCROLL
+END
+
+IDD_OPTIONS_MAIN DIALOGEX 0, 0, 310, 149
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ GROUPBOX "Account",IDC_STATIC,7,7,296,63
+ LTEXT "Login:",IDC_STATIC,13,19,152,11
+ EDITTEXT IDC_LOGIN,178,17,117,12,ES_AUTOHSCROLL
+ LTEXT "Password:",IDC_STATIC,13,35,152,8
+ EDITTEXT IDC_PASSWORD,178,33,117,12,ES_PASSWORD | ES_AUTOHSCROLL
+ LTEXT "Default group:",IDC_STATIC,13,51,152,12
+ EDITTEXT IDC_GROUP,178,49,117,12,ES_AUTOHSCROLL
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_ACCOUNT_MANAGER, DIALOG
+ BEGIN
+ END
+
+ IDD_OPTIONS_MAIN, DIALOG
+ BEGIN
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_OPTIONS_MAIN AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
#endif // English (Neutral) resources
/////////////////////////////////////////////////////////////////////////////
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()