summaryrefslogtreecommitdiff
path: root/plugins/FTPFileYM/manager.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-10-12 11:29:22 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-10-12 11:29:22 +0000
commit8473fb7c85680042038cc0ad40d4e22bb6a639e7 (patch)
tree3c0e0d3ddd863528e60dd98421d2129a22bd8e0d /plugins/FTPFileYM/manager.cpp
parent557f2816f5cd30705dec989c97a8a67c026d36d1 (diff)
FTPFileYM: folders restructurization
git-svn-id: http://svn.miranda-ng.org/main/trunk@1885 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/FTPFileYM/manager.cpp')
-rw-r--r--plugins/FTPFileYM/manager.cpp449
1 files changed, 0 insertions, 449 deletions
diff --git a/plugins/FTPFileYM/manager.cpp b/plugins/FTPFileYM/manager.cpp
deleted file mode 100644
index abf1ec3f0a..0000000000
--- a/plugins/FTPFileYM/manager.cpp
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
-FTP File plugin
-Copyright (C) 2007-2010 Jan Holub
-
-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 "common.h"
-#include "job_delete.h"
-#include "manager.h"
-#include "dbentry.h"
-#include "options.h"
-#include "utils.h"
-
-Manager *manDlg = NULL;
-Manager *Manager::instance = NULL;
-
-extern Options &opt;
-extern ServerList &ftpList;
-
-Manager::Manager()
-{ }
-
-Manager::~Manager()
-{
- for (UINT i = 0; i < this->rootItems.size(); i++)
- delete this->rootItems[i];
-
- for (UINT i = 0; i < this->items.size(); i++)
- delete this->items[i];
-
- ImageList_Destroy(this->himlStates);
- DBEntry::cleanupDB();
-
- instance = NULL;
- manDlg = NULL;
-}
-
-void Manager::init()
-{
- if (opt.enabled != 0)
- {
- this->hwnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DLG_MANAGER), NULL, Manager::ManagerDlgProc);
- this->hwndFileTree = GetDlgItem(this->hwnd, IDC_FILELIST);
- this->initImageList();
- this->fillTree();
- this->show();
- }
- else
- {
- Utils::msgBox(TranslateT("You have to fill and enable at least one FTP server in setting."), MB_OK);
- delete this;
- }
-}
-
-void Manager::show()
-{
- ShowWindow(this->hwnd, SW_SHOWNORMAL);
- BringWindowToTop(this->hwnd);
-}
-
-void Manager::initImageList()
-{
- char buff[256];
-
- this->himlStates = ImageList_Create(16, 16, IsWinVerXPPlus() ? ILC_COLOR32 | ILC_MASK : ILC_COLOR8 | ILC_MASK, ServerList::FTP_COUNT + 4, 0);
- ImageList_AddIcon(himlStates, LoadSkinnedIcon(SKINICON_OTHER_DELETE)); // image index 0 is useless for INDEXTOSTATEIMAGEMASK
- ImageList_AddIcon(himlStates, LoadSkinnedIcon(SKINICON_OTHER_DELETE));
- ImageList_AddIcon(himlStates, LoadSkinnedIcon(SKINICON_OTHER_NOTICK));
- ImageList_AddIcon(himlStates, LoadSkinnedIcon(SKINICON_OTHER_TICK));
-
- for (int i = 0; i < ServerList::FTP_COUNT; i++)
- {
- mir_snprintf(buff, sizeof(buff), "ftp%d", i);
- ImageList_AddIcon(himlStates, Utils::loadIconEx(buff));
- }
-
- TreeView_SetImageList(this->hwndFileTree, himlStates, TVSIL_STATE);
- TreeView_SetItemHeight(this->hwndFileTree, 18);
-}
-
-void Manager::initRootItems()
-{
- TVINSERTSTRUCT tvi = {0};
- tvi.hInsertAfter = TVI_LAST;
- tvi.item.mask = TVIF_TEXT | TVIF_STATE;
- tvi.item.stateMask = TVIS_STATEIMAGEMASK | TVIS_EXPANDED | TVIS_BOLD;
-
- for (UINT i = 0; i < ServerList::FTP_COUNT; i++)
- {
- if (ftpList[i]->bEnabled)
- {
- tvi.item.pszText = ftpList[i]->stzName;
- tvi.item.state = INDEXTOSTATEIMAGEMASK(i + 4) | TVIS_EXPANDED | TVIS_BOLD;
- HTREEITEM hItem = TreeView_InsertItem(this->hwndFileTree, &tvi);
- this->AddRoot(hItem);
- }
- }
-}
-
-void Manager::fillTree()
-{
- initRootItems();
-
- TVINSERTSTRUCT tvi = {0};
- tvi.hInsertAfter = TVI_LAST;
- tvi.item.mask = TVIF_TEXT | TVIF_STATE;
- tvi.item.stateMask = TVIS_STATEIMAGEMASK;
- tvi.item.state = TreeItem::_UNCHECKED();
-
- Lock *lock = new Lock(DBEntry::mutexDB);
-
- DBEntry *entry = DBEntry::getFirts();
- while (entry != NULL)
- {
- if ((UINT)entry->iFtpNum < this->rootItems.size())
- {
- tvi.item.pszText = mir_a2t(entry->szFileName);
- tvi.hParent = this->rootItems[entry->iFtpNum]->handle;
- HTREEITEM hItem = TreeView_InsertItem(this->hwndFileTree, &tvi);
- this->AddLeaf(hItem, tvi.hParent, entry->fileID);
- FREE(tvi.item.pszText);
- }
-
- entry = DBEntry::getNext(entry);
- }
-
- delete lock;
-}
-
-int Manager::indexOf(HTREEITEM handle)
-{
- for (UINT i = 0; i < this->rootItems.size(); i++)
- {
- if (this->rootItems[i]->handle == handle)
- return i;
- }
-
- return -1;
-}
-
-Manager::TreeItem *Manager::getItem(HTREEITEM handle)
-{
- for (UINT i = 0; i < this->rootItems.size(); i++)
- {
- if (this->rootItems[i]->handle == handle)
- return this->rootItems[i];
- }
-
- for (UINT i = 0; i < this->items.size(); i++)
- {
- if (this->items[i]->handle == handle)
- return this->items[i];
- }
-
- return NULL;
-}
-
-Manager::TreeItem::TreeItem(HTREEITEM _handle, HTREEITEM _parent, int _id)
-:handle(_handle),parent(_parent),fileID(_id)
-{
- stzToolTip[0] = 0;
-}
-
-void Manager::TreeItem::setState(UINT state)
-{
- TVITEM item = {0};
- item.mask = TVIF_HANDLE | TVIF_STATE;
- item.stateMask = TVIS_STATEIMAGEMASK;
- item.hItem = this->handle;
- TreeView_GetItem(manDlg->hwndFileTree, &item);
-
- if (TreeItem::_GETSTATE(item.state) != 0)
- {
- item.state = state;
- TreeView_SetItem(manDlg->hwndFileTree, &item);
- }
-}
-
-UINT Manager::TreeItem::getState()
-{
- TVITEM item = {0};
- item.mask = TVIF_HANDLE | TVIF_STATE;
- item.stateMask = TVIS_STATEIMAGEMASK;
- item.hItem = this->handle;
- TreeView_GetItem(manDlg->hwndFileTree, &item);
- return TreeItem::_GETSTATE(item.state);
-}
-
-void Manager::TreeItem::toggleState()
-{
- TVITEM item = {0};
- item.mask = TVIF_HANDLE | TVIF_STATE;
- item.stateMask = TVIS_STATEIMAGEMASK;
- item.hItem = this->handle;
- TreeView_GetItem(manDlg->hwndFileTree, &item);
-
- UINT state = TreeItem::_GETSTATE(item.state);
- if (state == STATE_UNCHECKED)
- item.state = TreeItem::_CHECKED();
- else if (state == STATE_CHECKED || state == STATE_ERROR)
- item.state = TreeItem::_UNCHECKED();
-
- TreeView_SetItem(manDlg->hwndFileTree, &item);
-}
-
-void Manager::TreeItem::remove()
-{
- TreeView_DeleteItem(manDlg->hwndFileTree, this->handle);
- DBEntry::remove(this->fileID);
-}
-
-bool Manager::TreeItem::isRoot()
-{
- return (this->parent != NULL) ? false : true;
-}
-
-
-INT_PTR CALLBACK Manager::ManagerDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- switch (msg)
- {
- case WM_INITDIALOG:
- {
- TranslateDialogDefault(hwndDlg);
-
- SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)Utils::loadIconEx("main"));
- SendDlgItemMessage(hwndDlg, IDC_BTN_SELECTALL, BUTTONSETASFLATBTN, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_BTN_SELECTALL, BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_TICK));
- SendDlgItemMessage(hwndDlg, IDC_BTN_SELECTALL, BUTTONADDTOOLTIP, (WPARAM)TranslateT("Select All"), BATF_TCHAR);
- SendDlgItemMessage(hwndDlg, IDC_BTN_DESELECTALL, BUTTONSETASFLATBTN, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_BTN_DESELECTALL, BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_NOTICK));
- SendDlgItemMessage(hwndDlg, IDC_BTN_DESELECTALL, BUTTONADDTOOLTIP, (WPARAM)TranslateT("Clear All"), BATF_TCHAR);
- SendDlgItemMessage(hwndDlg, IDC_BTN_DELETEFROMLIST, BUTTONSETASFLATBTN, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_BTN_DELETEFROMLIST, BM_SETIMAGE, IMAGE_ICON, (LPARAM)Utils::loadIconEx("clear"));
- SendDlgItemMessage(hwndDlg, IDC_BTN_DELETEFROMLIST, BUTTONADDTOOLTIP, (WPARAM)TranslateT("Delete from List"), BATF_TCHAR);
- SendDlgItemMessage(hwndDlg, IDC_BTN_DELETE, BUTTONSETASFLATBTN, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_BTN_DELETE, BM_SETIMAGE, IMAGE_ICON, (LPARAM)Utils::loadIconEx("delete"));
- SendDlgItemMessage(hwndDlg, IDC_BTN_DELETE, BUTTONADDTOOLTIP, (WPARAM)TranslateT("Delete from FTP"), BATF_TCHAR);
- SendDlgItemMessage(hwndDlg, IDC_BTN_CLOSE, BUTTONSETASFLATBTN, 0, 0);
- SendDlgItemMessage(hwndDlg, IDC_BTN_CLOSE, BM_SETIMAGE, IMAGE_ICON, (LPARAM)LoadSkinnedIcon(SKINICON_OTHER_EXIT));
- SendDlgItemMessage(hwndDlg, IDC_BTN_CLOSE, BUTTONADDTOOLTIP, (WPARAM)TranslateT("Close"), BATF_TCHAR);
-
- return TRUE;
- }
- case WM_COMMAND:
- {
- if (HIWORD(wParam) == BN_CLICKED)
- {
- switch (LOWORD(wParam))
- {
- case IDC_BTN_DELETE:
- {
- for (UINT i = 0; i < manDlg->items.size(); i++)
- {
- TreeItem *item = manDlg->items[i];
- if (item->getState() == STATE_CHECKED)
- {
- DeleteJob *job = new DeleteJob(DBEntry::get(item->fileID), item);
- job->start();
- }
- }
- break;
- }
- case IDC_BTN_DELETEFROMLIST:
- {
- for (UINT i = 0; i < manDlg->items.size(); i++)
- {
- TreeItem *item = manDlg->items[i];
- if (item->getState() == STATE_CHECKED)
- item->remove();
- }
- break;
- }
- case IDC_BTN_SELECTALL:
- case IDC_BTN_DESELECTALL:
- {
- UINT newState = (LOWORD(wParam) == IDC_BTN_SELECTALL) ?
- TreeItem::_CHECKED() : TreeItem::_UNCHECKED();
-
- for (UINT i = 0; i < manDlg->items.size(); i++)
- manDlg->items[i]->setState(newState);
-
- break;
- }
- case IDC_BTN_CLOSE:
- {
- DestroyWindow(hwndDlg);
- break;
- }
- }
- }
-
- break;
- }
- case WM_NOTIFY:
- {
- if (((LPNMHDR)lParam)->idFrom == IDC_FILELIST)
- {
- switch(((LPNMHDR)lParam)->code)
- {
- case TVN_KEYDOWN:
- if (((LPNMTVKEYDOWN)lParam)->wVKey != VK_SPACE)
- 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;
- }
-
- TreeItem *item = manDlg->getItem(hItem);
- if (item && (hti.flags & TVHT_ONITEMSTATEICON))
- {
- if (item->isRoot())
- {
- for (UINT i = 0; i < manDlg->items.size(); i++)
- {
- if (manDlg->items[i]->parent == item->handle)
- manDlg->items[i]->toggleState();
- }
- }
- else
- {
- item->toggleState();
- }
- }
- }
- return TRUE;
- }
- case NM_RCLICK:
- {
- TVHITTESTINFO hti;
- hti.pt.x = (short)LOWORD(GetMessagePos());
- hti.pt.y = (short)HIWORD(GetMessagePos());
- ScreenToClient(manDlg->hwndFileTree, &hti.pt);
- if (TreeView_HitTest(manDlg->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);
- CallService(MS_LANGPACK_TRANSLATEMENU, (WPARAM)hPopupMenu, 0);
- int command = TrackPopupMenu(hPopupMenu, TPM_LEFTALIGN | TPM_RETURNCMD, pt.x, pt.y, 0, hwndDlg, NULL);
- switch (command)
- {
-
- case IDM_DELETEFROMLIST:
- {
- item->remove();
- break;
- }
- case IDM_DELETEFROMFTP:
- {
- DeleteJob *job = new DeleteJob(DBEntry::get(item->fileID), item);
- job->start();
- break;
- }
- case IDM_COPYLINK:
- case IDM_DOWNLOAD:
- {
- int ftpNum = manDlg->indexOf(item->parent);
- if (ftpNum != -1)
- {
- char buff[256];
-
- DBEntry *entry = DBEntry::get(item->fileID);
- Utils::createFileDownloadLink(ftpList[ftpNum]->szUrl, entry->szFileName, buff, sizeof(buff));
- delete entry;
-
- if (command == IDM_COPYLINK)
- Utils::copyToClipboard(buff);
- else
- ShellExecuteA(NULL, "open", buff, NULL, NULL, SW_SHOWNORMAL);
- }
- break;
- }
- }
- DestroyMenu(hMenu);
- }
- }
- }
- return TRUE;
- }
- case TVN_GETINFOTIP:
- {
- NMTVGETINFOTIP *tvInfoTip = (NMTVGETINFOTIP *)lParam;
- TreeItem *item = manDlg->getItem(tvInfoTip->hItem);
-
- if (item)
- {
- if (item->stzToolTip[0])
- {
- _tcsncpy(tvInfoTip->pszText, item->stzToolTip, tvInfoTip->cchTextMax - 1);
- tvInfoTip->pszText[tvInfoTip->cchTextMax - 1] = 0;
- }
- }
-
- return TRUE;
- }
- }
- }
-
- break;
- }
- case WM_CLOSE:
- {
- DestroyWindow(hwndDlg);
- return TRUE;
- }
- case WM_DESTROY:
- {
- delete manDlg;
- return TRUE;
- }
- }
-
- return FALSE;
-} \ No newline at end of file