Make TreeView sorting unrecursivable

And update coding style.
This commit is contained in:
Don HO 2020-03-26 14:54:04 +01:00
parent 0c80bf8cb9
commit 585cc27b1f
No known key found for this signature in database
GPG Key ID: 6C429F1D8D84F46E
4 changed files with 27 additions and 22 deletions

View File

@ -262,10 +262,11 @@ INT_PTR CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
generic_string addedFilePath = file2Change[0].substr(0, sepPos + 1); generic_string addedFilePath = file2Change[0].substr(0, sepPos + 1);
addedFilePath += pathSuffix; addedFilePath += pathSuffix;
bool isAdded = addInTree(rootPath, addedFilePath, nullptr, linarPathArray); bool isAdded = addInTree(rootPath, addedFilePath, nullptr, linarPathArray);
if (not isAdded) if (!isAdded)
{ {
//MessageBox(NULL, addedFilePath.c_str(), TEXT("file/folder is not added"), MB_OK); //MessageBox(NULL, addedFilePath.c_str(), TEXT("file/folder is not added"), MB_OK);
} }
break; break;
} }
@ -287,7 +288,7 @@ INT_PTR CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
// search recursively and modify the tree structure // search recursively and modify the tree structure
bool isRemoved = deleteFromTree(rootPath, nullptr, linarPathArray); bool isRemoved = deleteFromTree(rootPath, nullptr, linarPathArray);
if (not isRemoved) if (!isRemoved)
{ {
//MessageBox(NULL, file2Change[0].c_str(), TEXT("file/folder is not removed"), MB_OK); //MessageBox(NULL, file2Change[0].c_str(), TEXT("file/folder is not removed"), MB_OK);
} }
@ -318,7 +319,7 @@ INT_PTR CALLBACK FileBrowser::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP
vector<generic_string> linarPathArray2 = split(pathSuffix2, '\\'); vector<generic_string> linarPathArray2 = split(pathSuffix2, '\\');
bool isRenamed = renameInTree(rootPath, nullptr, linarPathArray, linarPathArray2[linarPathArray2.size() - 1]); bool isRenamed = renameInTree(rootPath, nullptr, linarPathArray, linarPathArray2[linarPathArray2.size() - 1]);
if (not isRenamed) if (!isRenamed)
{ {
//MessageBox(NULL, file2Change[0].c_str(), TEXT("file/folder is not removed"), MB_OK); //MessageBox(NULL, file2Change[0].c_str(), TEXT("file/folder is not removed"), MB_OK);
} }
@ -464,7 +465,7 @@ void FileBrowser::destroyMenus()
generic_string FileBrowser::getNodePath(HTREEITEM node) const generic_string FileBrowser::getNodePath(HTREEITEM node) const
{ {
if (not node) return TEXT(""); if (!node) return TEXT("");
vector<generic_string> fullPathArray; vector<generic_string> fullPathArray;
generic_string fullPath; generic_string fullPath;
@ -760,7 +761,7 @@ void FileBrowser::popupMenuCmd(int cmdID)
// //
case IDM_FILEBROWSER_REMOVEROOTFOLDER: case IDM_FILEBROWSER_REMOVEROOTFOLDER:
{ {
if (not selectedNode) return; if (!selectedNode) return;
generic_string *rootPath = (generic_string *)_treeView.getItemParam(selectedNode); generic_string *rootPath = (generic_string *)_treeView.getItemParam(selectedNode);
if (_treeView.getParent(selectedNode) != nullptr || rootPath == nullptr) if (_treeView.getParent(selectedNode) != nullptr || rootPath == nullptr)
@ -782,7 +783,7 @@ void FileBrowser::popupMenuCmd(int cmdID)
case IDM_FILEBROWSER_EXPLORERHERE: case IDM_FILEBROWSER_EXPLORERHERE:
{ {
if (not selectedNode) return; if (!selectedNode) return;
generic_string path = getNodePath(selectedNode); generic_string path = getNodePath(selectedNode);
if (::PathFileExists(path.c_str())) if (::PathFileExists(path.c_str()))
@ -800,7 +801,7 @@ void FileBrowser::popupMenuCmd(int cmdID)
case IDM_FILEBROWSER_CMDHERE: case IDM_FILEBROWSER_CMDHERE:
{ {
if (not selectedNode) return; if (!selectedNode) return;
if (getNodeType(selectedNode) == browserNodeType_file) if (getNodeType(selectedNode) == browserNodeType_file)
selectedNode = _treeView.getParent(selectedNode); selectedNode = _treeView.getParent(selectedNode);
@ -816,7 +817,7 @@ void FileBrowser::popupMenuCmd(int cmdID)
case IDM_FILEBROWSER_COPYPATH: case IDM_FILEBROWSER_COPYPATH:
{ {
if (not selectedNode) return; if (!selectedNode) return;
generic_string path = getNodePath(selectedNode); generic_string path = getNodePath(selectedNode);
str2Clipboard(path, _hParent); str2Clipboard(path, _hParent);
} }
@ -824,7 +825,7 @@ void FileBrowser::popupMenuCmd(int cmdID)
case IDM_FILEBROWSER_COPYFILENAME: case IDM_FILEBROWSER_COPYFILENAME:
{ {
if (not selectedNode) return; if (!selectedNode) return;
generic_string fileName = getNodeName(selectedNode); generic_string fileName = getNodeName(selectedNode);
str2Clipboard(fileName, _hParent); str2Clipboard(fileName, _hParent);
} }
@ -832,7 +833,7 @@ void FileBrowser::popupMenuCmd(int cmdID)
case IDM_FILEBROWSER_FINDINFILES: case IDM_FILEBROWSER_FINDINFILES:
{ {
if (not selectedNode) return; if (!selectedNode) return;
generic_string path = getNodePath(selectedNode); generic_string path = getNodePath(selectedNode);
::SendMessage(_hParent, NPPM_LAUNCHFINDINFILESDLG, reinterpret_cast<WPARAM>(path.c_str()), 0); ::SendMessage(_hParent, NPPM_LAUNCHFINDINFILESDLG, reinterpret_cast<WPARAM>(path.c_str()), 0);
} }
@ -1149,7 +1150,7 @@ bool FileBrowser::addInTree(const generic_string& rootPath, const generic_string
if (linarPathArray.size() == 1) if (linarPathArray.size() == 1)
{ {
// Of course item to add should be exist on the disk // Of course item to add should be exist on the disk
if (not::PathFileExists(addItemFullPath.c_str())) if (!::PathFileExists(addItemFullPath.c_str()))
return false; return false;
// Search : if no found, add // Search : if no found, add
@ -1166,6 +1167,7 @@ bool FileBrowser::addInTree(const generic_string& rootPath, const generic_string
{ {
_treeView.addItem(linarPathArray[0].c_str(), node, INDEX_LEAF); _treeView.addItem(linarPathArray[0].c_str(), node, INDEX_LEAF);
} }
return true; return true;
} }
else else
@ -1251,6 +1253,7 @@ bool FileBrowser::renameInTree(const generic_string& rootPath, HTREEITEM node, c
// found it, rename it // found it, rename it
_treeView.renameItem(foundItem, renameTo.c_str()); _treeView.renameItem(foundItem, renameTo.c_str());
return true; return true;
} }
@ -1476,7 +1479,7 @@ DWORD WINAPI FolderUpdater::watching(void *params)
break; break;
case FILE_ACTION_RENAMED_NEW_NAME: case FILE_ACTION_RENAMED_NEW_NAME:
if (not oldName.empty()) if (!oldName.empty())
{ {
file2Change.push_back(oldName); file2Change.push_back(oldName);
file2Change.push_back(wstrFilename); file2Change.push_back(wstrFilename);

View File

@ -198,7 +198,7 @@ void FunctionListPanel::sortOrUnsort()
{ {
bool doSort = shouldSort(); bool doSort = shouldSort();
if (doSort) if (doSort)
_pTreeView->sort(_pTreeView->getRoot()); _pTreeView->sort(_pTreeView->getRoot(), true);
else else
{ {
TCHAR text2search[MAX_PATH] ; TCHAR text2search[MAX_PATH] ;
@ -369,7 +369,7 @@ void FunctionListPanel::reload()
bool isSort = (previousParams->_searchParameters)._doSort; bool isSort = (previousParams->_searchParameters)._doSort;
setSort(isSort); setSort(isSort);
if (isSort) if (isSort)
_pTreeView->sort(_pTreeView->getRoot()); _pTreeView->sort(_pTreeView->getRoot(), true);
} }
} }
@ -627,7 +627,7 @@ void FunctionListPanel::searchFuncAndSwitchView()
} }
if (doSort) if (doSort)
_pTreeView->sort(_pTreeView->getRoot()); _pTreeView->sort(_pTreeView->getRoot(), true);
} }
static WNDPROC oldFunclstToolbarProc = NULL; static WNDPROC oldFunclstToolbarProc = NULL;

View File

@ -103,7 +103,7 @@ bool TreeView::setItemParam(HTREEITEM Item2Set, const TCHAR *paramStr)
LPARAM TreeView::getItemParam(HTREEITEM Item2Get) const LPARAM TreeView::getItemParam(HTREEITEM Item2Get) const
{ {
if (not Item2Get) if (!Item2Get)
return false; return false;
//TCHAR textBuffer[MAX_PATH]; //TCHAR textBuffer[MAX_PATH];
TVITEM tvItem; TVITEM tvItem;
@ -117,7 +117,7 @@ LPARAM TreeView::getItemParam(HTREEITEM Item2Get) const
generic_string TreeView::getItemDisplayName(HTREEITEM Item2Set) const generic_string TreeView::getItemDisplayName(HTREEITEM Item2Set) const
{ {
if (not Item2Set) if (!Item2Set)
return TEXT(""); return TEXT("");
TCHAR textBuffer[MAX_PATH]; TCHAR textBuffer[MAX_PATH];
TVITEM tvItem; TVITEM tvItem;
@ -131,7 +131,7 @@ generic_string TreeView::getItemDisplayName(HTREEITEM Item2Set) const
bool TreeView::renameItem(HTREEITEM Item2Set, const TCHAR *newName) bool TreeView::renameItem(HTREEITEM Item2Set, const TCHAR *newName)
{ {
if (not Item2Set || not newName) if (!Item2Set || !newName)
return false; return false;
TVITEM tvItem; TVITEM tvItem;
@ -712,10 +712,12 @@ bool TreeView::restoreFoldingStateFrom(const TreeStateNode & treeState2Compare,
return isOk; return isOk;
} }
void TreeView::sort(HTREEITEM hTreeItem) void TreeView::sort(HTREEITEM hTreeItem, bool isRecusive)
{ {
::SendMessage(_hSelf, TVM_SORTCHILDREN, TRUE, reinterpret_cast<LPARAM>(hTreeItem)); ::SendMessage(_hSelf, TVM_SORTCHILDREN, TRUE, reinterpret_cast<LPARAM>(hTreeItem));
if (!isRecusive)
return;
for (HTREEITEM hItem = getChildFrom(hTreeItem); hItem != NULL; hItem = getNextSibling(hItem)) for (HTREEITEM hItem = getChildFrom(hTreeItem); hItem != NULL; hItem = getNextSibling(hItem))
sort(hItem); sort(hItem, isRecusive);
} }

View File

@ -125,7 +125,7 @@ public:
bool restoreFoldingStateFrom(const TreeStateNode & treeState2Compare, HTREEITEM treeviewNode); bool restoreFoldingStateFrom(const TreeStateNode & treeState2Compare, HTREEITEM treeviewNode);
bool retrieveFoldingStateTo(TreeStateNode & treeState2Construct, HTREEITEM treeviewNode); bool retrieveFoldingStateTo(TreeStateNode & treeState2Construct, HTREEITEM treeviewNode);
bool searchLeafAndBuildTree(TreeView & tree2Build, const generic_string & text2Search, int index2Search); bool searchLeafAndBuildTree(TreeView & tree2Build, const generic_string & text2Search, int index2Search);
void sort(HTREEITEM hTreeItem); void sort(HTREEITEM hTreeItem, bool isRecusive);
protected: protected:
WNDPROC _defaultProc; WNDPROC _defaultProc;