From 4e80941615f635c9bdc5ca1db11363466c1d27a3 Mon Sep 17 00:00:00 2001 From: kostas Date: Thu, 3 May 2012 09:03:18 +0000 Subject: [PATCH] Cleanups FossilOrigin-Name: 18f5bc27008df76f43baf527a81920ba2464ba97 --- MainWindow.cpp | 2 +- Utils.cpp | 174 ++++++++++++++++++++++--------------------------- manifest | 14 ++-- manifest.uuid | 2 +- 4 files changed, 88 insertions(+), 104 deletions(-) diff --git a/MainWindow.cpp b/MainWindow.cpp index 2b65013..dbf6e63 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -883,7 +883,7 @@ void MainWindow::updateFileView() filename_item = new QStandardItem(icon, QDir::toNativeSeparators(e.getFilePath())); } else // In Tree mode the path is implicit so the file name is enough - filename_item = new QStandardItem(icon, e.getFilename()); + filename_item = new QStandardItem(icon, e.getFilename()); Q_ASSERT(filename_item); // Keep the path in the user data diff --git a/Utils.cpp b/Utils.cpp index d108351..20540a0 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -41,99 +41,8 @@ static bool DialogQueryText(QWidget *parent, const QString &title, const QString #ifdef Q_WS_WIN // Explorer File Context Menu support. Based on http://www.microsoft.com/msj/0497/wicked/wicked0497.aspx - #include -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// FUNCTION: GetNextItem -// -// DESCRIPTION: Finds the next item in an item ID list. -// -// INPUT: pidl = Pointer to an item ID list. -// -// RETURNS: Pointer to the next item. -// -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -LPITEMIDLIST GetNextItem (LPITEMIDLIST pidl) -{ - USHORT nLen; - - if ((nLen = pidl->mkid.cb) == 0) - return NULL; - - return (LPITEMIDLIST) (((LPBYTE) pidl) + nLen); -} - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// FUNCTION: GetItemCount -// -// DESCRIPTION: Computes the number of item IDs in an item ID list. -// -// INPUT: pidl = Pointer to an item ID list. -// -// RETURNS: Number of item IDs in the list. -// -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -UINT GetItemCount (LPITEMIDLIST pidl) -{ - USHORT nLen; - UINT nCount; - - nCount = 0; - while ((nLen = pidl->mkid.cb) != 0) { - pidl = GetNextItem (pidl); - nCount++; - } - return nCount; -} -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// FUNCTION: DuplicateItem -// -// DESCRIPTION: Makes a copy of the next item in an item ID list. -// -// INPUT: pMalloc = Pointer to an IMalloc interface. -// pidl = Pointer to an item ID list. -// -// RETURNS: Pointer to an ITEMIDLIST containing the copied item ID. -// -// NOTES: It is the caller's responsibility to free the memory -// allocated by this function when the item ID is no longer -// needed. Example: -// -// pidlItem = DuplicateItem (pMalloc, pidl); -// . -// . -// . -// pMalloc->lpVtbl->Free (pMalloc, pidlItem); -// -// Failure to free the ITEMIDLIST will result in memory -// leaks. -// -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -LPITEMIDLIST DuplicateItem (LPMALLOC pMalloc, LPITEMIDLIST pidl) -{ - USHORT nLen; - LPITEMIDLIST pidlNew; - - nLen = pidl->mkid.cb; - if (nLen == 0) - return NULL; - - pidlNew = (LPITEMIDLIST) pMalloc->Alloc ( - nLen + sizeof (USHORT)); - if (pidlNew == NULL) - return NULL; - - CopyMemory (pidlNew, pidl, nLen); - *((USHORT*) (((LPBYTE) pidlNew) + nLen)) = 0; - - return pidlNew; -} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // FUNCTION: DoExplorerMenu @@ -155,9 +64,84 @@ LPITEMIDLIST DuplicateItem (LPMALLOC pMalloc, LPITEMIDLIST pidl) // RETURNS: TRUE if successful, FALSE if not. // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - bool ShowExplorerMenu(HWND hwnd, const QString &path, const QPoint &qpoint) { + struct Util + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // FUNCTION: GetNextItem + // DESCRIPTION: Finds the next item in an item ID list. + // INPUT: pidl = Pointer to an item ID list. + // RETURNS: Pointer to the next item. + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + static LPITEMIDLIST GetNextItem (LPITEMIDLIST pidl) + { + USHORT nLen; + + if ((nLen = pidl->mkid.cb) == 0) + return NULL; + + return (LPITEMIDLIST) (((LPBYTE) pidl) + nLen); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // FUNCTION: GetItemCount + // DESCRIPTION: Computes the number of item IDs in an item ID list. + // INPUT: pidl = Pointer to an item ID list. + // RETURNS: Number of item IDs in the list. + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + static UINT GetItemCount (LPITEMIDLIST pidl) + { + USHORT nLen; + UINT nCount; + + nCount = 0; + while ((nLen = pidl->mkid.cb) != 0) { + pidl = GetNextItem (pidl); + nCount++; + } + return nCount; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // FUNCTION: DuplicateItem + // DESCRIPTION: Makes a copy of the next item in an item ID list. + // INPUT: pMalloc = Pointer to an IMalloc interface. + // pidl = Pointer to an item ID list. + // RETURNS: Pointer to an ITEMIDLIST containing the copied item ID. + // NOTES: It is the caller's responsibility to free the memory + // allocated by this function when the item ID is no longer + // needed. Example: + // pidlItem = DuplicateItem (pMalloc, pidl); + // . + // . + // . + // pMalloc->lpVtbl->Free (pMalloc, pidlItem); + // Failure to free the ITEMIDLIST will result in memory + // leaks. + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + static LPITEMIDLIST DuplicateItem (LPMALLOC pMalloc, LPITEMIDLIST pidl) + { + USHORT nLen; + LPITEMIDLIST pidlNew; + + nLen = pidl->mkid.cb; + if (nLen == 0) + return NULL; + + pidlNew = (LPITEMIDLIST) pMalloc->Alloc ( + nLen + sizeof (USHORT)); + if (pidlNew == NULL) + return NULL; + + CopyMemory (pidlNew, pidl, nLen); + *((USHORT*) (((LPBYTE) pidlNew) + nLen)) = 0; + + return pidlNew; + } + }; + + LPITEMIDLIST pidlMain, pidlItem, pidlNextItem, *ppidl; UINT nCount; POINT point; @@ -192,7 +176,7 @@ bool ShowExplorerMenu(HWND hwnd, const QString &path, const QPoint &qpoint) if (SUCCEEDED (psfFolder->ParseDisplayName (hwnd, NULL, wchPath, &ulCount, &pidlMain, &ulAttr)) && (pidlMain != NULL)) { - if ( (nCount = GetItemCount (pidlMain))>0) { // nCount must be > 0 + if ( (nCount = Util::GetItemCount (pidlMain))>0) { // nCount must be > 0 // // Initialize psfFolder with a pointer to the IShellFolder // interface of the folder that contains the item whose context @@ -207,7 +191,7 @@ bool ShowExplorerMenu(HWND hwnd, const QString &path, const QPoint &qpoint) // // Create a 1-item item ID list for the next item in pidlMain. // - pidlNextItem = DuplicateItem (pMalloc, pidlItem); + pidlNextItem = Util::DuplicateItem (pMalloc, pidlItem); if (pidlNextItem == NULL) { pMalloc->Free(pidlMain); psfFolder->Release (); @@ -242,7 +226,7 @@ bool ShowExplorerMenu(HWND hwnd, const QString &path, const QPoint &qpoint) // to the next item in pidlMain. // pMalloc->Free(pidlNextItem); - pidlItem = GetNextItem (pidlItem); + pidlItem = Util::GetNextItem (pidlItem); } // diff --git a/manifest b/manifest index f724714..2e39098 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Refresh\sViews\safter\ssuccessful\sexplorer\scontext\smenu\saction\n\s -D 2012-05-03T08:29:50.961 +C Cleanups +D 2012-05-03T09:03:18.911 F CommitDialog.cpp a46020a9361151d8d286a2670257d01d8967bf69 F CommitDialog.h f1ee8db92103164e7db55a8407ccdcff24571b72 F CommitDialog.ui 813d7cba316e226de1a22b7e480bb969fbe9b0c4 @@ -8,13 +8,13 @@ F FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F FileActionDialog.ui c63644428579741aeb5fa052e237ba799ced9ad7 F FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2 F FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df -F MainWindow.cpp ee20db95fb61105dc674331da4c31564a931a646 +F MainWindow.cpp ba773798bc07438863ffc3c247809df6d96f1250 F MainWindow.h 90de1726e0961f73f637c4071d1cb0fe1049007f F MainWindow.ui 8c8182e68aa1955a666997ad83ca692f3cb866d9 F SettingsDialog.cpp e1fad18cc020d08b82c6d35dc94f6624deec9a3b F SettingsDialog.h f5da6cab4ccc82e2eb78ec835fb849c4c104d6cc F SettingsDialog.ui 8964629ea80c61971c0601624c84d1927902b1fd -F Utils.cpp 22c474d8e6d9f58034ee42e42b0e91d33eef262d +F Utils.cpp caca5268e3194abe77211040bf9511a82909d2e6 F Utils.h 32e5d344a7f4d27e3ee83006022df007c90470ef F fuel.pro 880b013acb1136d97c7414372c4e58053cfb153d F fuel.rc 8e9ac966f283102c11a77cd7f936cdc09e09bd79 @@ -176,7 +176,7 @@ F installer/fuel.iss 13b6a938bcdf273cbd3649d2549887baa1577214 F installer/license.txt 4cc77b90af91e615a64ae04893fdffa7939db84c F main.cpp f2913af0af1a5fcbebe93fb53b8a9cf6e7bbf65a F resources.qrc e98383ed205f4e37100c60057e0129c3b86dea53 -P 837bdcc1c791b82712aaed52311e783a8fe1a135 -R 37f3bec861dcb6975fa7c1f5f171f318 +P 2af31cfaa9ea47140558c96deca7a15bc5e8819c +R a7c9891e6a09cf17fc144bb7abb26026 U kostas -Z 665a29bf1776ad5a62fe281a014095dc +Z fc2b219a395eea982ae66d2c82a2eee0 diff --git a/manifest.uuid b/manifest.uuid index 95a4a0f..3692c5f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2af31cfaa9ea47140558c96deca7a15bc5e8819c \ No newline at end of file +18f5bc27008df76f43baf527a81920ba2464ba97 \ No newline at end of file