From 650fc5a2103cedfe149500ade9c684ecf381d348 Mon Sep 17 00:00:00 2001 From: Mataes Date: Wed, 16 May 2018 21:48:52 +0300 Subject: FavContacts, FileAsMessage, Fingerprint, FloatingContacts, Folders, FTPFile: cmplugin adaptation --- plugins/FTPFileYM/src/dialog.cpp | 290 +++++++++++++++++------------------ plugins/FTPFileYM/src/ftpfile.cpp | 10 +- plugins/FTPFileYM/src/job_upload.cpp | 2 +- plugins/FTPFileYM/src/manager.cpp | 156 +++++++++---------- plugins/FTPFileYM/src/options.cpp | 2 +- plugins/FTPFileYM/src/stdafx.h | 9 +- plugins/FTPFileYM/src/utils.cpp | 8 +- 7 files changed, 237 insertions(+), 240 deletions(-) (limited to 'plugins/FTPFileYM/src') diff --git a/plugins/FTPFileYM/src/dialog.cpp b/plugins/FTPFileYM/src/dialog.cpp index bed6074e26..2783a1fa17 100644 --- a/plugins/FTPFileYM/src/dialog.cpp +++ b/plugins/FTPFileYM/src/dialog.cpp @@ -27,7 +27,7 @@ extern Options &opt; UploadDialog::UploadDialog() { - m_hwnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DLG_UPLOAD), nullptr, UploadDlgProc); + m_hwnd = CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DLG_UPLOAD), nullptr, UploadDlgProc); m_hwndTabs = GetDlgItem(m_hwnd, IDC_TAB); EnableThemeDialogTexture(m_hwnd, ETDT_ENABLETAB); @@ -151,20 +151,20 @@ LRESULT CALLBACK UploadDialog::TabControlProc(HWND hwnd, UINT msg, WPARAM wParam switch (msg) { case WM_LBUTTONDBLCLK: case WM_MBUTTONDOWN: - { - POINT pt; - GetCursorPos(&pt); - ScreenToClient(uDlg->m_hwndTabs, &pt); + { + POINT pt; + GetCursorPos(&pt); + ScreenToClient(uDlg->m_hwndTabs, &pt); - TCHITTESTINFO tch; - tch.pt = pt; - tch.flags = 0; - int index = TabCtrl_HitTest(uDlg->m_hwndTabs, &tch); + TCHITTESTINFO tch; + tch.pt = pt; + tch.flags = 0; + int index = TabCtrl_HitTest(uDlg->m_hwndTabs, &tch); - if (index != -1) - uDlg->m_tabs[index]->m_job->closeTab(); - } - break; + if (index != -1) + uDlg->m_tabs[index]->m_job->closeTab(); + } + break; } return mir_callNextSubclass(hwnd, UploadDialog::TabControlProc, msg, wParam, lParam); @@ -233,131 +233,131 @@ INT_PTR CALLBACK UploadDialog::UploadDlgProc(HWND hwndDlg, UINT msg, WPARAM wPar return Menu_DrawItem(lParam); case WM_COMMAND: - { - MCONTACT hContact = uDlg->m_tabs[uDlg->m_activeTab]->m_job->m_hContact; - if (hContact != NULL) - if (Clist_MenuProcessCommand(LOWORD(wParam), MPCF_CONTACTMENU, hContact)) - break; - - if (HIWORD(wParam) == BN_CLICKED) { - switch (LOWORD(wParam)) { - case IDC_BTN_PROTO: - if (hContact != NULL) { - RECT rc; - GetWindowRect((HWND)lParam, &rc); - HMENU hMenu = Menu_BuildContactMenu(hContact); - TrackPopupMenu(hMenu, 0, rc.left, rc.bottom, 0, hwndDlg, nullptr); - DestroyMenu(hMenu); - } - break; - - case IDC_BTN_PAUSE: - uDlg->m_tabs[uDlg->m_activeTab]->m_job->pauseHandler(); - return TRUE; - - case IDC_BTN_CLIPBOARD: - job = (UploadJob*)uDlg->m_tabs[uDlg->m_activeTab]->m_job; - Utils::copyToClipboard(job->m_szFileLink); - return TRUE; - - case IDC_BTN_DOWNLOAD: - job = (UploadJob*)uDlg->m_tabs[uDlg->m_activeTab]->m_job; - ShellExecuteA(nullptr, "open", job->m_szFileLink, nullptr, nullptr, SW_SHOWNORMAL); - return TRUE; - - case IDC_BTN_FILEMANAGER: - CallService(MS_FTPFILE_SHOWMANAGER, 0, 0); - return TRUE; - - case IDC_BTN_CLOSE: - uDlg->m_tabs[uDlg->m_activeTab]->m_job->closeTab(); - return TRUE; - - case IDC_BTN_OPTIONS: - Tab *tab = uDlg->m_tabs[uDlg->m_activeTab]; - - POINT pt; - GetCursorPos(&pt); - SetForegroundWindow(uDlg->m_hwndTabs); - - HMENU hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU_UPLOAD)); - if (hMenu) { - HMENU hPopupMenu = GetSubMenu(hMenu, 0); - TranslateMenu(hPopupMenu); - CheckMenuItem(hPopupMenu, IDM_CLOSEDLG, MF_BYCOMMAND | tab->m_bOptCloseDlg ? MF_CHECKED : 0); - CheckMenuItem(hPopupMenu, IDM_COPYLINK, MF_BYCOMMAND | tab->m_bOptCopyLink ? MF_CHECKED : 0); - CheckMenuItem(hPopupMenu, IDM_AUTOSEND, MF_BYCOMMAND | tab->m_bOptAutosend ? MF_CHECKED : 0); - - HMENU hTimeMenu = GetSubMenu(hPopupMenu, 3); - CheckMenuItem(hTimeMenu, IDM_DISABLED, MF_BYCOMMAND | (tab->m_iOptAutoDelete == -1) ? MF_CHECKED : MF_UNCHECKED); - - int times[10] = { 5, 15, 30, 1 * 60, 2 * 60, 5 * 60, 10 * 60, 1 * 24 * 60, 2 * 24 * 60, 7 * 24 * 60 }; - bool bChecked = (tab->m_iOptAutoDelete == -1); - wchar_t buff[256]; - - for (int i = 0; i < _countof(times); i++) { - if (i == 3 || i == 7) - AppendMenu(hTimeMenu, MF_SEPARATOR, 0, nullptr); - - if (i < 3) - mir_snwprintf(buff, TranslateT("%d minutes"), times[i]); - else if (i < 7) - mir_snwprintf(buff, TranslateT("%d hours"), times[i] / 60); - else - mir_snwprintf(buff, TranslateT("%d days"), times[i] / 60 / 24); - - UINT check = MF_UNCHECKED; - if (!bChecked && tab->m_iOptAutoDelete == times[i]) { - check = MF_CHECKED; - bChecked = true; - } - - AppendMenu(hTimeMenu, MF_STRING | check, times[i], buff); + { + MCONTACT hContact = uDlg->m_tabs[uDlg->m_activeTab]->m_job->m_hContact; + if (hContact != NULL) + if (Clist_MenuProcessCommand(LOWORD(wParam), MPCF_CONTACTMENU, hContact)) + break; + + if (HIWORD(wParam) == BN_CLICKED) { + switch (LOWORD(wParam)) { + case IDC_BTN_PROTO: + if (hContact != NULL) { + RECT rc; + GetWindowRect((HWND)lParam, &rc); + HMENU hMenu = Menu_BuildContactMenu(hContact); + TrackPopupMenu(hMenu, 0, rc.left, rc.bottom, 0, hwndDlg, nullptr); + DestroyMenu(hMenu); + } + break; + + case IDC_BTN_PAUSE: + uDlg->m_tabs[uDlg->m_activeTab]->m_job->pauseHandler(); + return TRUE; + + case IDC_BTN_CLIPBOARD: + job = (UploadJob*)uDlg->m_tabs[uDlg->m_activeTab]->m_job; + Utils::copyToClipboard(job->m_szFileLink); + return TRUE; + + case IDC_BTN_DOWNLOAD: + job = (UploadJob*)uDlg->m_tabs[uDlg->m_activeTab]->m_job; + ShellExecuteA(nullptr, "open", job->m_szFileLink, nullptr, nullptr, SW_SHOWNORMAL); + return TRUE; + + case IDC_BTN_FILEMANAGER: + CallService(MS_FTPFILE_SHOWMANAGER, 0, 0); + return TRUE; + + case IDC_BTN_CLOSE: + uDlg->m_tabs[uDlg->m_activeTab]->m_job->closeTab(); + return TRUE; + + case IDC_BTN_OPTIONS: + Tab * tab = uDlg->m_tabs[uDlg->m_activeTab]; + + POINT pt; + GetCursorPos(&pt); + SetForegroundWindow(uDlg->m_hwndTabs); + + HMENU hMenu = LoadMenu(g_plugin.getInst(), MAKEINTRESOURCE(IDR_MENU_UPLOAD)); + if (hMenu) { + HMENU hPopupMenu = GetSubMenu(hMenu, 0); + TranslateMenu(hPopupMenu); + CheckMenuItem(hPopupMenu, IDM_CLOSEDLG, MF_BYCOMMAND | tab->m_bOptCloseDlg ? MF_CHECKED : 0); + CheckMenuItem(hPopupMenu, IDM_COPYLINK, MF_BYCOMMAND | tab->m_bOptCopyLink ? MF_CHECKED : 0); + CheckMenuItem(hPopupMenu, IDM_AUTOSEND, MF_BYCOMMAND | tab->m_bOptAutosend ? MF_CHECKED : 0); + + HMENU hTimeMenu = GetSubMenu(hPopupMenu, 3); + CheckMenuItem(hTimeMenu, IDM_DISABLED, MF_BYCOMMAND | (tab->m_iOptAutoDelete == -1) ? MF_CHECKED : MF_UNCHECKED); + + int times[10] = { 5, 15, 30, 1 * 60, 2 * 60, 5 * 60, 10 * 60, 1 * 24 * 60, 2 * 24 * 60, 7 * 24 * 60 }; + bool bChecked = (tab->m_iOptAutoDelete == -1); + wchar_t buff[256]; + + for (int i = 0; i < _countof(times); i++) { + if (i == 3 || i == 7) + AppendMenu(hTimeMenu, MF_SEPARATOR, 0, nullptr); + + if (i < 3) + mir_snwprintf(buff, TranslateT("%d minutes"), times[i]); + else if (i < 7) + mir_snwprintf(buff, TranslateT("%d hours"), times[i] / 60); + else + mir_snwprintf(buff, TranslateT("%d days"), times[i] / 60 / 24); + + UINT check = MF_UNCHECKED; + if (!bChecked && tab->m_iOptAutoDelete == times[i]) { + check = MF_CHECKED; + bChecked = true; } - if (opt.bAutoDelete) { - switch (opt.timeRange) { - case Options::TR_MINUTES: mir_snwprintf(buff, TranslateT("%d minutes"), opt.iDeleteTime); break; - case Options::TR_HOURS: mir_snwprintf(buff, TranslateT("%d hours"), opt.iDeleteTime); break; - case Options::TR_DAYS: mir_snwprintf(buff, TranslateT("%d days"), opt.iDeleteTime); break; - } + AppendMenu(hTimeMenu, MF_STRING | check, times[i], buff); + } - AppendMenu(hTimeMenu, MF_SEPARATOR, 0, nullptr); - AppendMenu(hTimeMenu, MF_STRING | bChecked ? MF_UNCHECKED : MF_CHECKED, IDM_CUSTOM, buff); + if (opt.bAutoDelete) { + switch (opt.timeRange) { + case Options::TR_MINUTES: mir_snwprintf(buff, TranslateT("%d minutes"), opt.iDeleteTime); break; + case Options::TR_HOURS: mir_snwprintf(buff, TranslateT("%d hours"), opt.iDeleteTime); break; + case Options::TR_DAYS: mir_snwprintf(buff, TranslateT("%d days"), opt.iDeleteTime); break; } - int command = TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN | TPM_RETURNCMD, pt.x, pt.y, 0, uDlg->m_hwndTabs, nullptr); - switch (command) { - case IDM_CLOSEDLG: - tab->m_bOptCloseDlg = !tab->m_bOptCloseDlg; break; - case IDM_COPYLINK: - tab->m_bOptCopyLink = !tab->m_bOptCopyLink; break; - case IDM_AUTOSEND: - tab->m_bOptAutosend = !tab->m_bOptAutosend; break; - case IDM_DISABLED: - tab->m_iOptAutoDelete = -1; break; - case IDM_CUSTOM: - switch (opt.timeRange) { - case Options::TR_MINUTES: tab->m_iOptAutoDelete = opt.iDeleteTime; break; - case Options::TR_HOURS: tab->m_iOptAutoDelete = opt.iDeleteTime * 60; break; - case Options::TR_DAYS: tab->m_iOptAutoDelete = opt.iDeleteTime * 60 * 24; break; - } - break; - default: - tab->m_iOptAutoDelete = command; - break; + AppendMenu(hTimeMenu, MF_SEPARATOR, 0, nullptr); + AppendMenu(hTimeMenu, MF_STRING | bChecked ? MF_UNCHECKED : MF_CHECKED, IDM_CUSTOM, buff); + } + + int command = TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN | TPM_RETURNCMD, pt.x, pt.y, 0, uDlg->m_hwndTabs, nullptr); + switch (command) { + case IDM_CLOSEDLG: + tab->m_bOptCloseDlg = !tab->m_bOptCloseDlg; break; + case IDM_COPYLINK: + tab->m_bOptCopyLink = !tab->m_bOptCopyLink; break; + case IDM_AUTOSEND: + tab->m_bOptAutosend = !tab->m_bOptAutosend; break; + case IDM_DISABLED: + tab->m_iOptAutoDelete = -1; break; + case IDM_CUSTOM: + switch (opt.timeRange) { + case Options::TR_MINUTES: tab->m_iOptAutoDelete = opt.iDeleteTime; break; + case Options::TR_HOURS: tab->m_iOptAutoDelete = opt.iDeleteTime * 60; break; + case Options::TR_DAYS: tab->m_iOptAutoDelete = opt.iDeleteTime * 60 * 24; break; } + break; + default: + tab->m_iOptAutoDelete = command; + break; + } - if (command && ((UploadJob *)tab->m_job)->isCompleted()) - DBEntry::setDeleteTS(tab->m_job); + if (command && ((UploadJob *)tab->m_job)->isCompleted()) + DBEntry::setDeleteTS(tab->m_job); - DestroyMenu(hMenu); - } - return TRUE; + DestroyMenu(hMenu); } + return TRUE; } } - break; + } + break; case WM_NOTIFY: switch (((LPNMHDR)lParam)->code) { @@ -393,26 +393,26 @@ INT_PTR CALLBACK UploadDialog::UploadDlgProc(HWND hwndDlg, UINT msg, WPARAM wPar break; case WM_CLOSE: - { + { + for (UINT i = 0; i < uDlg->m_tabs.size(); i++) + uDlg->m_tabs[i]->m_job->pause(); + + int result = IDYES; + if (!Miranda_IsTerminated() && UploadJob::iRunningJobCount > 0) + result = Utils::msgBox(TranslateT("Do you really want to cancel all running jobs?"), MB_YESNO | MB_ICONQUESTION); + + if (result == IDYES) { + Skin_PlaySound(SOUND_CANCEL); + size_t count = uDlg->m_tabs.size(); + for (UINT i = 0; i < count; i++) + uDlg->m_tabs[0]->m_job->closeAllTabs(); + } + else { for (UINT i = 0; i < uDlg->m_tabs.size(); i++) - uDlg->m_tabs[i]->m_job->pause(); - - int result = IDYES; - if (!Miranda_IsTerminated() && UploadJob::iRunningJobCount > 0) - result = Utils::msgBox(TranslateT("Do you really want to cancel all running jobs?"), MB_YESNO | MB_ICONQUESTION); - - if (result == IDYES) { - Skin_PlaySound(SOUND_CANCEL); - size_t count = uDlg->m_tabs.size(); - for (UINT i = 0; i < count; i++) - uDlg->m_tabs[0]->m_job->closeAllTabs(); - } - else { - for (UINT i = 0; i < uDlg->m_tabs.size(); i++) - uDlg->m_tabs[i]->m_job->resume(); - } + uDlg->m_tabs[i]->m_job->resume(); } - break; + } + break; case WMU_DESTROY: DestroyWindow(hwndDlg); diff --git a/plugins/FTPFileYM/src/ftpfile.cpp b/plugins/FTPFileYM/src/ftpfile.cpp index 48e0ea97ea..d60f6e76a4 100644 --- a/plugins/FTPFileYM/src/ftpfile.cpp +++ b/plugins/FTPFileYM/src/ftpfile.cpp @@ -18,7 +18,7 @@ along with this program. If not, see . #include "stdafx.h" -HINSTANCE hInst; +CMPlugin g_plugin; int hLangpack; HGENMENU hMenu, hMainMenu, hSubMenu[ServerList::FTP_COUNT], hMainSubMenu[ServerList::FTP_COUNT]; @@ -51,12 +51,6 @@ static PLUGININFOEX pluginInfoEx = //------------ BASIC STAFF ------------// -extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD, LPVOID) -{ - hInst = hinstDLL; - return TRUE; -} - extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD) { return &pluginInfoEx; @@ -81,7 +75,7 @@ static IconItem iconList[] = static void InitIcolib() { - Icon_Register(hInst, LPGEN("FTP File"), iconList, _countof(iconList), MODULE); + Icon_Register(g_plugin.getInst(), LPGEN("FTP File"), iconList, _countof(iconList), MODULE); } void InitMenuItems() diff --git a/plugins/FTPFileYM/src/job_upload.cpp b/plugins/FTPFileYM/src/job_upload.cpp index 0fd6aae79c..a89bbe32dc 100644 --- a/plugins/FTPFileYM/src/job_upload.cpp +++ b/plugins/FTPFileYM/src/job_upload.cpp @@ -292,7 +292,7 @@ void UploadJob::upload() bool uploadFile = true; if (fileExistsOnServer()) { - int res = DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DLG_FILEEXISTS), nullptr, DlgProcFileExists, (LPARAM)m_szSafeFileName); + int res = DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DLG_FILEEXISTS), nullptr, DlgProcFileExists, (LPARAM)m_szSafeFileName); if (res == IDC_RENAME) { if (Utils::setFileNameDlg(_A2T(m_szSafeFileName)) == true) curl_easy_setopt(hCurl, CURLOPT_URL, getUrlString()); diff --git a/plugins/FTPFileYM/src/manager.cpp b/plugins/FTPFileYM/src/manager.cpp index 7d793f5959..b3e2a3c1c5 100644 --- a/plugins/FTPFileYM/src/manager.cpp +++ b/plugins/FTPFileYM/src/manager.cpp @@ -52,7 +52,7 @@ void Manager::init() { ServerList::FTP *ftp = ftpList.getSelected(); if (ftp->m_bEnabled) { - m_hwnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DLG_MANAGER), nullptr, Manager::ManagerDlgProc); + m_hwnd = CreateDialog(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DLG_MANAGER), nullptr, Manager::ManagerDlgProc); m_hwndFileTree = GetDlgItem(m_hwnd, IDC_FILELIST); initImageList(); fillTree(); @@ -265,15 +265,15 @@ INT_PTR CALLBACK Manager::ManagerDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, case IDC_BTN_SELECTALL: case IDC_BTN_DESELECTALL: - { - UINT newState = (LOWORD(wParam) == IDC_BTN_SELECTALL) ? - TreeItem::_CHECKED() : TreeItem::_UNCHECKED(); + { + UINT newState = (LOWORD(wParam) == IDC_BTN_SELECTALL) ? + TreeItem::_CHECKED() : TreeItem::_UNCHECKED(); - for (UINT i = 0; i < manDlg->m_items.size(); i++) - manDlg->m_items[i]->setState(newState); + for (UINT i = 0; i < manDlg->m_items.size(); i++) + manDlg->m_items[i]->setState(newState); - } - break; + } + break; case IDC_BTN_CLOSE: DestroyWindow(hwndDlg); @@ -290,89 +290,89 @@ INT_PTR CALLBACK Manager::ManagerDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, break; case NM_CLICK: - { - HTREEITEM hItem; - TVHITTESTINFO hti = { 0 }; - hti.pt.x = (short)LOWORD(GetMessagePos()); - hti.pt.y = (short)HIWORD(GetMessagePos()); - ScreenToClient(((LPNMHDR)lParam)->hwndFrom, &hti.pt); - if (TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom, &hti) || ((LPNMHDR)lParam)->code == TVN_KEYDOWN) { - if (((LPNMHDR)lParam)->code == TVN_KEYDOWN) { - hti.flags |= TVHT_ONITEMSTATEICON; - hItem = TreeView_GetSelection(((LPNMHDR)lParam)->hwndFrom); - } - else { - hItem = hti.hItem; - } + { + HTREEITEM hItem; + TVHITTESTINFO hti = { 0 }; + hti.pt.x = (short)LOWORD(GetMessagePos()); + hti.pt.y = (short)HIWORD(GetMessagePos()); + ScreenToClient(((LPNMHDR)lParam)->hwndFrom, &hti.pt); + if (TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom, &hti) || ((LPNMHDR)lParam)->code == TVN_KEYDOWN) { + if (((LPNMHDR)lParam)->code == TVN_KEYDOWN) { + hti.flags |= TVHT_ONITEMSTATEICON; + hItem = TreeView_GetSelection(((LPNMHDR)lParam)->hwndFrom); + } + else { + hItem = hti.hItem; + } - TreeItem *item = manDlg->getItem(hItem); - if (item && (hti.flags & TVHT_ONITEMSTATEICON)) { - if (item->isRoot()) { - for (UINT i = 0; i < manDlg->m_items.size(); i++) { - if (manDlg->m_items[i]->m_parent == item->m_handle) - manDlg->m_items[i]->toggleState(); - } - } - else { - item->toggleState(); + TreeItem *item = manDlg->getItem(hItem); + if (item && (hti.flags & TVHT_ONITEMSTATEICON)) { + if (item->isRoot()) { + for (UINT i = 0; i < manDlg->m_items.size(); i++) { + if (manDlg->m_items[i]->m_parent == item->m_handle) + manDlg->m_items[i]->toggleState(); } } + else { + item->toggleState(); + } } } - return TRUE; + } + return TRUE; case NM_RCLICK: - { - TVHITTESTINFO hti; - hti.pt.x = (short)LOWORD(GetMessagePos()); - hti.pt.y = (short)HIWORD(GetMessagePos()); - ScreenToClient(manDlg->m_hwndFileTree, &hti.pt); - if (TreeView_HitTest(manDlg->m_hwndFileTree, &hti)) { - HTREEITEM hItem = hti.hItem; - TreeItem *item = manDlg->getItem(hItem); - if (item && !item->isRoot()) { - POINT pt; - GetCursorPos(&pt); - SetForegroundWindow(hwndDlg); - HMENU hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU_MANAGER)); - if (hMenu) { - HMENU hPopupMenu = GetSubMenu(hMenu, 0); - TranslateMenu(hPopupMenu); - int command = TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN | TPM_RETURNCMD, pt.x, pt.y, 0, hwndDlg, nullptr); - switch (command) { - case IDM_DELETEFROMLIST: - item->remove(); - break; - - case IDM_DELETEFROMFTP: - (new DeleteJob(DBEntry::get(item->m_fileID), item))->start(); - break; - - case IDM_COPYLINK: - case IDM_DOWNLOAD: - int ftpNum = manDlg->indexOf(item->m_parent); - if (ftpNum != -1) { - char buff[256]; - - DBEntry *entry = DBEntry::get(item->m_fileID); - Utils::createFileDownloadLink(ftpList[ftpNum]->m_szUrl, entry->m_szFileName, buff, sizeof(buff)); - delete entry; - - if (command == IDM_COPYLINK) - Utils::copyToClipboard(buff); - else - ShellExecuteA(nullptr, "open", buff, nullptr, nullptr, SW_SHOWNORMAL); - } - break; + { + TVHITTESTINFO hti; + hti.pt.x = (short)LOWORD(GetMessagePos()); + hti.pt.y = (short)HIWORD(GetMessagePos()); + ScreenToClient(manDlg->m_hwndFileTree, &hti.pt); + if (TreeView_HitTest(manDlg->m_hwndFileTree, &hti)) { + HTREEITEM hItem = hti.hItem; + TreeItem *item = manDlg->getItem(hItem); + if (item && !item->isRoot()) { + POINT pt; + GetCursorPos(&pt); + SetForegroundWindow(hwndDlg); + HMENU hMenu = LoadMenu(g_plugin.getInst(), MAKEINTRESOURCE(IDR_MENU_MANAGER)); + if (hMenu) { + HMENU hPopupMenu = GetSubMenu(hMenu, 0); + TranslateMenu(hPopupMenu); + int command = TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN | TPM_RETURNCMD, pt.x, pt.y, 0, hwndDlg, nullptr); + switch (command) { + case IDM_DELETEFROMLIST: + item->remove(); + break; + + case IDM_DELETEFROMFTP: + (new DeleteJob(DBEntry::get(item->m_fileID), item))->start(); + break; + + case IDM_COPYLINK: + case IDM_DOWNLOAD: + int ftpNum = manDlg->indexOf(item->m_parent); + if (ftpNum != -1) { + char buff[256]; + + DBEntry *entry = DBEntry::get(item->m_fileID); + Utils::createFileDownloadLink(ftpList[ftpNum]->m_szUrl, entry->m_szFileName, buff, sizeof(buff)); + delete entry; + + if (command == IDM_COPYLINK) + Utils::copyToClipboard(buff); + else + ShellExecuteA(nullptr, "open", buff, nullptr, nullptr, SW_SHOWNORMAL); } - DestroyMenu(hMenu); + break; } + DestroyMenu(hMenu); } } - return TRUE; } + return TRUE; + } case TVN_GETINFOTIP: - NMTVGETINFOTIP *tvInfoTip = (NMTVGETINFOTIP *)lParam; + NMTVGETINFOTIP * tvInfoTip = (NMTVGETINFOTIP *)lParam; TreeItem *item = manDlg->getItem(tvInfoTip->hItem); if (item) { diff --git a/plugins/FTPFileYM/src/options.cpp b/plugins/FTPFileYM/src/options.cpp index 6008f80bab..922dfc15a5 100644 --- a/plugins/FTPFileYM/src/options.cpp +++ b/plugins/FTPFileYM/src/options.cpp @@ -248,7 +248,7 @@ int Options::InitOptions(WPARAM wParam, LPARAM) { OPTIONSDIALOGPAGE odp = { 0 }; odp.position = 100000000; - odp.hInstance = hInst; + odp.hInstance = g_plugin.getInst(); odp.flags = ODPF_BOLDGROUPS | ODPF_UNICODE; odp.szTitle.w = LPGENW("FTP File"); odp.szGroup.w = LPGENW("Services"); diff --git a/plugins/FTPFileYM/src/stdafx.h b/plugins/FTPFileYM/src/stdafx.h index f31b540dd8..02cd27330b 100644 --- a/plugins/FTPFileYM/src/stdafx.h +++ b/plugins/FTPFileYM/src/stdafx.h @@ -27,8 +27,6 @@ along with this program. If not, see . #include using namespace std; -#define __NO_CMPLUGIN_NEEDED - #include #include #include @@ -83,4 +81,9 @@ using namespace std; #define SOUND_UPCOMPLETE "ftpfile_upcomplete" #define SOUND_CANCEL "ftpfile_cancel" -extern HINSTANCE hInst; \ No newline at end of file +struct CMPlugin : public PLUGIN +{ + CMPlugin() : + PLUGIN(MODULE) + {} +}; diff --git a/plugins/FTPFileYM/src/utils.cpp b/plugins/FTPFileYM/src/utils.cpp index 4d1250b1f0..e6d7c020d6 100644 --- a/plugins/FTPFileYM/src/utils.cpp +++ b/plugins/FTPFileYM/src/utils.cpp @@ -24,9 +24,9 @@ extern UploadDialog *uDlg; int Utils::getDeleteTimeMin() { switch (opt.timeRange) { - case (Options::TR_MINUTES) : return (opt.iDeleteTime); - case (Options::TR_HOURS) : return (opt.iDeleteTime * 60); - case (Options::TR_DAYS) : return (opt.iDeleteTime * 60 * 24); + case (Options::TR_MINUTES): return (opt.iDeleteTime); + case (Options::TR_HOURS): return (opt.iDeleteTime * 60); + case (Options::TR_DAYS): return (opt.iDeleteTime * 60 * 24); } return -1; @@ -170,7 +170,7 @@ INT_PTR CALLBACK Utils::DlgProcSetFileName(HWND hwndDlg, UINT msg, WPARAM wParam bool Utils::setFileNameDlg(wchar_t *nameBuff) { - if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_DLG_NAME), nullptr, DlgProcSetFileName, (LPARAM)nameBuff) == IDOK) + if (DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DLG_NAME), nullptr, DlgProcSetFileName, (LPARAM)nameBuff) == IDOK) return true; else return false; -- cgit v1.2.3