LRESULT LocationsPage::onClickedRename(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { int i = -1; while((i = ctrlDirectories.GetNextItem(i, LVNI_SELECTED)) != -1) { FavoriteDirDlg dlg; auto oldItem = favoriteDirs[i]; dlg.vName = Text::toT(oldItem.first); dlg.paths = oldItem.second; if(dlg.DoModal() == IDOK) { sort(dlg.paths.begin(), dlg.paths.end()); pair<string, StringList> newItem = { Text::fromT(dlg.vName), dlg.paths }; if (stricmp(newItem.first, oldItem.first) != 0) { //vName changed check if one with the same name already exits. auto k = boost::find_if(favoriteDirs, CompareFirst<string, StringList>(newItem.first)); if (k != favoriteDirs.end()) { MessageBox(CTSTRING(ITEM_NAME_EXISTS), CTSTRING(NAME_IN_USE), MB_ICONEXCLAMATION | MB_OK); //reset name and do a step back so the user can fix his mistake newItem.first = oldItem.first; //keep possible changes to paths favoriteDirs[i] = newItem; ctrlDirectories.SetItemText(i, 1, Text::toT(Util::listToString(dlg.paths)).c_str()); i = i - 1; continue; } } favoriteDirs[i] = newItem; ctrlDirectories.SetItemText(i, 0, Text::toT(newItem.first).c_str()); ctrlDirectories.SetItemText(i, 1, Text::toT(Util::listToString(dlg.paths)).c_str()); } } return 0; }
LRESULT LocationsPage::onClickedAdd(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { FavoriteDirDlg dlg; if(dlg.DoModal() == IDOK) { addDirs(Text::fromT(dlg.vName), dlg.paths); } return 0; }
LRESULT LocationsPage::onClickedRename(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { TCHAR buf[MAX_PATH]; int i = -1; while((i = ctrlDirectories.GetNextItem(i, LVNI_SELECTED)) != -1) { ctrlDirectories.GetItemText(i, 0, buf, MAX_PATH); //vname FavoriteDirDlg dlg; dlg.vName = buf; auto s = boost::find_if(favoriteDirs, CompareFirst<string, StringList>(Text::fromT(buf))); dcassert(s != favoriteDirs.end()); dlg.paths = s->second; if(dlg.DoModal() == IDOK) { if (removeFavoriteDir(Text::fromT(buf))) ctrlDirectories.DeleteItem(i); addDirs(Text::fromT(dlg.vName), dlg.paths); } } return 0; }