diff options
| -rw-r--r-- | protocols/Teams/Teams.vcxproj | 5 | ||||
| -rw-r--r-- | protocols/Teams/Teams.vcxproj.filters | 11 | ||||
| -rw-r--r-- | protocols/Teams/res/Resource.rc | 69 | ||||
| -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 |
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() |
