summaryrefslogtreecommitdiff
path: root/protocols/CloudFile/src/srmm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/CloudFile/src/srmm.cpp')
-rw-r--r--protocols/CloudFile/src/srmm.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/protocols/CloudFile/src/srmm.cpp b/protocols/CloudFile/src/srmm.cpp
new file mode 100644
index 0000000000..b4d44c9fdd
--- /dev/null
+++ b/protocols/CloudFile/src/srmm.cpp
@@ -0,0 +1,67 @@
+#include "stdafx.h"
+
+int OnSrmmToolbarLoaded(WPARAM, LPARAM)
+{
+ BBButton bbd = {};
+ bbd.pszModuleName = MODULENAME;
+ bbd.bbbFlags = BBBF_ISIMBUTTON | BBBF_ISCHATBUTTON | BBBF_ISRSIDEBUTTON | BBBF_ISARROWBUTTON;
+
+ CMStringW tooltip(FORMAT, TranslateT("Upload files to..."));
+ bbd.pwszTooltip = tooltip;
+ bbd.hIcon = GetIconHandle(IDI_UPLOAD);
+ bbd.dwButtonID = BBB_ID_FILE_SEND;
+ bbd.dwDefPos = 100 + bbd.dwButtonID;
+ Srmm_AddButton(&bbd, &g_plugin);
+ return 0;
+}
+
+int OnSrmmWindowOpened(WPARAM, LPARAM lParam)
+{
+ MessageWindowEventData *ev = (MessageWindowEventData*)lParam;
+ if (ev->uType == MSG_WINDOW_EVT_OPENING && ev->hContact) {
+ BBButton bbd = {};
+ bbd.pszModuleName = MODULENAME;
+ bbd.dwButtonID = BBB_ID_FILE_SEND;
+ bbd.bbbFlags = CanSendToContact(ev->hContact)
+ ? BBSF_RELEASED
+ : BBSF_DISABLED;
+ Srmm_SetButtonState(ev->hContact, &bbd);
+ }
+
+ return 0;
+}
+
+int OnSrmmButtonPressed(WPARAM, LPARAM lParam)
+{
+ CustomButtonClickData *cbc = (CustomButtonClickData*)lParam;
+
+ if (mir_strcmp(cbc->pszModule, MODULENAME))
+ return 0;
+
+ if (cbc->dwButtonId != BBB_ID_FILE_SEND)
+ return 0;
+
+ if (cbc->flags != BBCF_ARROWCLICKED) {
+ ptrA defaultService(g_plugin.getStringA("DefaultService"));
+ if (defaultService) {
+ CCloudService *service = FindService(defaultService);
+ if (service)
+ service->OpenUploadDialog(cbc->hContact);
+ return 0;
+ }
+ }
+
+ HMENU hMenu = CreatePopupMenu();
+ for (auto &it : Services)
+ AppendMenu(hMenu, MF_STRING, Services.indexOf(&it) + 1, TranslateW(it->GetUserName()));
+
+ int pos = TrackPopupMenu(hMenu, TPM_RETURNCMD, cbc->pt.x, cbc->pt.y, 0, cbc->hwndFrom, nullptr);
+ DestroyMenu(hMenu);
+
+ if (pos > 0) {
+ CCloudService *service = Services[pos - 1];
+ service->OpenUploadDialog(cbc->hContact);
+ }
+
+ return 0;
+} \ No newline at end of file