/
makani
/
strongdc
Обзор
Документация
Войти
/
makani
/
strongdc
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
windows/FavoriteDirsPage.cpp
204 строки
6 KB
bigmuscle
returned back OpenSSL' locking callback which was disabled by mistake
29 янв 2010, 11:59
29 янв 2010, 11:59
0fcf586
Код
Авторство
О чём код?
/* * Copyright (C) 2001-2006 Jacek Sieka, arnetheduck on gmail point com * * 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; either version 2 of the License, or * (at your option) any later version. * * 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "stdafx.h" #include "../client/DCPlusPlus.h" #include "../client/Util.h" #include "../client/SettingsManager.h" #include "../client/FavoriteManager.h" #include "Resource.h" #include "FavoriteDirsPage.h" #include "WinUtil.h" #include "LineDlg.h" PropPage::TextItem FavoriteDirsPage::texts[] = { { IDC_SETTINGS_FAVORITE_DIRECTORIES, ResourceManager::SETTINGS_FAVORITE_DIRS }, { IDC_REMOVE, ResourceManager::REMOVE }, { IDC_ADD, ResourceManager::SETTINGS_ADD_FOLDER }, { IDC_RENAME, ResourceManager::SETTINGS_RENAME_FOLDER }, { 0, ResourceManager::SETTINGS_AUTO_AWAY } }; LRESULT FavoriteDirsPage::onInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { PropPage::translate((HWND)(*this), texts); ctrlDirectories.Attach(GetDlgItem(IDC_FAVORITE_DIRECTORIES)); ctrlDirectories.SetExtendedListViewStyle(LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER); // Prepare shared dir list CRect rc; ctrlDirectories.GetClientRect(rc); ctrlDirectories.InsertColumn(0, CTSTRING(FAVORITE_DIR_NAME), LVCFMT_LEFT, rc.Width()/4, 0); ctrlDirectories.InsertColumn(1, CTSTRING(DIRECTORY), LVCFMT_LEFT, rc.Width()*3 /4, 1); StringPairList directories = FavoriteManager::getInstance()->getFavoriteDirs(); for(StringPairIter j = directories.begin(); j != directories.end(); j++) { int i = ctrlDirectories.insert(ctrlDirectories.GetItemCount(), Text::toT(j->second)); ctrlDirectories.SetItemText(i, 1, Text::toT(j->first).c_str()); } return TRUE; } void FavoriteDirsPage::write() { // PropPage::write((HWND)*this, items); } LRESULT FavoriteDirsPage::onDropFiles(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/){ HDROP drop = (HDROP)wParam; tstring buf; buf.resize(MAX_PATH); UINT nrFiles; nrFiles = DragQueryFile(drop, (UINT)-1, NULL, 0); for(UINT i = 0; i < nrFiles; ++i){ if(DragQueryFile(drop, i, &buf[0], MAX_PATH)){ if(PathIsDirectory(&buf[0])) addDirectory(buf); } } DragFinish(drop); return 0; } LRESULT FavoriteDirsPage::onItemchangedDirectories(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) { NM_LISTVIEW* lv = (NM_LISTVIEW*) pnmh; ::EnableWindow(GetDlgItem(IDC_REMOVE), (lv->uNewState & LVIS_FOCUSED)); ::EnableWindow(GetDlgItem(IDC_RENAME), (lv->uNewState & LVIS_FOCUSED)); return 0; } LRESULT FavoriteDirsPage::onKeyDown(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled) { NMLVKEYDOWN* kd = (NMLVKEYDOWN*) pnmh; switch(kd->wVKey) { case VK_INSERT: PostMessage(WM_COMMAND, IDC_ADD, 0); break; case VK_DELETE: PostMessage(WM_COMMAND, IDC_REMOVE, 0); break; default: bHandled = FALSE; } return 0; } LRESULT FavoriteDirsPage::onDoubleClick(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) { NMITEMACTIVATE* item = (NMITEMACTIVATE*)pnmh; if(item->iItem >= 0) { PostMessage(WM_COMMAND, IDC_RENAME, 0); } else if(item->iItem == -1) { PostMessage(WM_COMMAND, IDC_ADD, 0); } return 0; } LRESULT FavoriteDirsPage::onClickedAdd(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { tstring target; if(WinUtil::browseDirectory(target, m_hWnd)) { addDirectory(target); } return 0; } LRESULT FavoriteDirsPage::onClickedRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { TCHAR buf[MAX_PATH]; LVITEM item = { 0 }; item.mask = LVIF_TEXT; item.cchTextMax = sizeof(buf); item.pszText = buf; int i = -1; while((i = ctrlDirectories.GetNextItem(-1, LVNI_SELECTED)) != -1) { item.iItem = i; item.iSubItem = 1; ctrlDirectories.GetItem(&item); if(FavoriteManager::getInstance()->removeFavoriteDir(Text::fromT(buf))) ctrlDirectories.DeleteItem(i); } return 0; } LRESULT FavoriteDirsPage::onClickedRename(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { TCHAR buf[MAX_PATH]; LVITEM item = { 0 }; item.mask = LVIF_TEXT; item.cchTextMax = sizeof(buf); item.pszText = buf; int i = -1; while((i = ctrlDirectories.GetNextItem(i, LVNI_SELECTED)) != -1) { item.iItem = i; item.iSubItem = 0; ctrlDirectories.GetItem(&item); LineDlg virt; virt.title = TSTRING(FAVORITE_DIR_NAME); virt.description = TSTRING(FAVORITE_DIR_NAME_LONG); virt.line = tstring(buf); if(virt.DoModal(m_hWnd) == IDOK) { if (FavoriteManager::getInstance()->renameFavoriteDir(Text::fromT(buf), Text::fromT(virt.line))) { ctrlDirectories.SetItemText(i, 0, virt.line.c_str()); } else { MessageBox(CTSTRING(DIRECTORY_ADD_ERROR)); } } } return 0; } void FavoriteDirsPage::addDirectory(const tstring& aPath){ tstring path = aPath; if( path[ path.length() -1 ] != PATH_SEPARATOR ) path += PATH_SEPARATOR; LineDlg virt; virt.title = TSTRING(FAVORITE_DIR_NAME); virt.description = TSTRING(FAVORITE_DIR_NAME_LONG); virt.line = Util::getLastDir(path); if(virt.DoModal(m_hWnd) == IDOK) { if (FavoriteManager::getInstance()->addFavoriteDir(Text::fromT(path), Text::fromT(virt.line))) { int j = ctrlDirectories.insert(ctrlDirectories.GetItemCount(), virt.line ); ctrlDirectories.SetItemText(j, 1, path.c_str()); } else { MessageBox(CTSTRING(DIRECTORY_ADD_ERROR)); } } } /** * @file * $Id$ */