summaryrefslogtreecommitdiff
path: root/protocols/CloudFile/src/menus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/CloudFile/src/menus.cpp')
-rw-r--r--protocols/CloudFile/src/menus.cpp75
1 files changed, 39 insertions, 36 deletions
diff --git a/protocols/CloudFile/src/menus.cpp b/protocols/CloudFile/src/menus.cpp
index 33fe369406..38a12c6798 100644
--- a/protocols/CloudFile/src/menus.cpp
+++ b/protocols/CloudFile/src/menus.cpp
@@ -1,48 +1,51 @@
#include "stdafx.h"
-HGENMENU hContactMenu;
-
-static INT_PTR UploadMenuCommand(void *obj, WPARAM hContact, LPARAM)
-{
- CCloudService *service = (CCloudService*)obj;
- service->OpenUploadDialog(hContact);
- return 0;
-}
+static HGENMENU hContactMenu;
void InitializeMenus()
{
+ if (hContactMenu)
+ Menu_RemoveItem(hContactMenu);
+
+ // no money, no honey
+ if (g_arServices.getCount() == 0)
+ return;
+
CMenuItem mi(&g_plugin);
SET_UID(mi, 0x93d4495b, 0x259b, 0x4fba, 0xbc, 0x14, 0xf9, 0x46, 0x2c, 0xda, 0xfc, 0x6d);
- mi.name.a = LPGEN("Upload to...");
-
- ptrA defaultService(g_plugin.getStringA("DefaultService"));
- if (defaultService) {
- CCloudService *service = FindService(defaultService);
- if (service) {
- mi.name.a = LPGEN("Upload");
- mi.pszService = MODULENAME "/Default/Upload";
- CreateServiceFunctionObj(mi.pszService, UploadMenuCommand, service);
- }
- }
-
mi.position = -2000019999;
- mi.hIcon = g_plugin.getIcon(IDI_UPLOAD);
- hContactMenu = Menu_AddContactMenuItem(&mi);
-}
-void CCloudService::OnModulesLoaded()
-{
- CMenuItem mi(GetId());
- mi.root = hContactMenu;
- CMStringA serviceName(FORMAT, "/%s/Upload", GetAccountName());
- mi.pszService = serviceName.GetBuffer();
- mi.flags = CMIF_SYSTEM | CMIF_UNICODE;
- mi.name.w = (wchar_t*)GetUserName();
- mi.position = Services.getCount();
- mi.hIcolibItem = g_plugin.getIconHandle(GetIconId());
- Menu_AddContactMenuItem(&mi);
-
- CreateServiceFunctionObj(mi.pszService, UploadMenuCommand, this);
+ CMStringA szService;
+ if (g_arServices.getCount() == 1) {
+ auto *S = g_arServices[0];
+
+ szService.Format("%s%s", S->m_szModuleName, PS_UPLOAD);
+ CMStringW wszTitle(FORMAT, L"%s %s", TranslateT("Upload to"), S->m_tszUserName);
+ mi.flags |= CMIF_UNICODE;
+ mi.pszService = szService;
+ mi.name.w = wszTitle.GetBuffer();
+ mi.hIcolibItem = g_plugin.getIconHandle(S->GetIconId());
+ hContactMenu = Menu_AddContactMenuItem(&mi);
+ }
+ else {
+ mi.hIcolibItem = g_plugin.getIconHandle(IDI_UPLOAD);
+ mi.name.a = LPGEN("Upload to...");
+ hContactMenu = Menu_AddContactMenuItem(&mi);
+
+ int i = 1000;
+ for (auto &S : g_arServices) {
+ szService.Format("%s%s", S->m_szModuleName, PS_UPLOAD);
+
+ CMenuItem mi2(S->GetId());
+ mi2.root = hContactMenu;
+ mi2.flags = CMIF_SYSTEM | CMIF_UNICODE;
+ mi2.name.w = S->m_tszUserName;
+ mi2.position = i++;
+ mi2.pszService = szService;
+ mi2.hIcolibItem = g_plugin.getIconHandle(S->GetIconId());
+ Menu_AddContactMenuItem(&mi2);
+ }
+ }
}
int OnPrebuildContactMenu(WPARAM hContact, LPARAM)