]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/commitdiff
Add a default folder icon to the edit folder dialog. https://redmine.stoutner.com...
authorSoren Stoutner <soren@stoutner.com>
Wed, 27 Mar 2024 23:03:36 +0000 (16:03 -0700)
committerSoren Stoutner <soren@stoutner.com>
Wed, 27 Mar 2024 23:03:36 +0000 (16:03 -0700)
src/dialogs/EditFolderDialog.cpp
src/dialogs/EditFolderDialog.h
src/uis/EditFolderDialog.ui
src/windows/BrowserWindow.cpp
src/windows/BrowserWindow.h

index cabcf5dce6b838ca3315c5bfcddbf61b5a191447..bae0965f2e16290ba40838c629729a91f0db34f0 100644 (file)
@@ -42,6 +42,7 @@ EditFolderDialog::EditFolderDialog(QWidget *parentWidgetPointer, const int datab
 
     // Get handles for the widgets.
     currentFolderIconRadioButtonPointer = editFolderDialogUi.currentFolderIconRadioButton;
+    defaultFolderIconRadioButtonPointer = editFolderDialogUi.defaultFolderIconRadioButton;
     currentWebsiteFavoriteIconRadioButtonPointer = editFolderDialogUi.currentWebsiteFavoriteIconRadioButton;
     customFolderIconRadioButtonPointer = editFolderDialogUi.customFolderIconRadioButton;
     parentFolderTreeWidgetPointer = editFolderDialogUi.parentFolderTreeWidget;
@@ -152,6 +153,8 @@ void EditFolderDialog::save()
     // Get the favorite icon.
     if (currentFolderIconRadioButtonPointer->isChecked())  // The current folder icon is checked.
         favoriteIcon = currentFolderIconRadioButtonPointer->icon();
+    else if (defaultFolderIconRadioButtonPointer->isChecked())  // The default folder icon is checked.
+        favoriteIcon = defaultFolderIconRadioButtonPointer->icon();
     else if (currentWebsiteFavoriteIconRadioButtonPointer->isChecked())  // The current website favorite icon is checked.
         favoriteIcon = currentWebsiteFavoriteIconRadioButtonPointer->icon();
     else  // The custom favorite icon is checked.
index d585b1545809364dde2993f6bcc1574eb324c1a7..899d5aff66da6eebae4c4fd731457d687e325129 100644 (file)
@@ -55,6 +55,7 @@ private:
     QRadioButton *currentFolderIconRadioButtonPointer;
     QRadioButton *currentWebsiteFavoriteIconRadioButtonPointer;
     QRadioButton *customFolderIconRadioButtonPointer;
+    QRadioButton *defaultFolderIconRadioButtonPointer;
     BookmarkStruct *folderBookmarkStructPointer;
     int folderDatabaseId;
     QLineEdit *folderNameLineEditPointer;
index 545ed3cf3465bba6786bb9b0c30c42786dedb7e0..efebd2a436e73e3137cd1dadaf3e1f96341550f7 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
-  Copyright 2023 Soren Stoutner <soren@stoutner.com>.
+  Copyright 2023-2024 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
 
@@ -37,7 +37,7 @@
                             <item>
                                 <widget class="QRadioButton" name="currentFolderIconRadioButton">
                                     <property name="text">
-                                        <string>Default folder icon</string>
+                                        <string>Current folder icon</string>
                                     </property>
 
                                     <property name="checked">
                                 </widget>
                             </item>
 
-                            <!-- Second row, current website favorite icon. -->
+                            <!-- Second row, current folder icon. -->
+                            <item>
+                                <widget class="QRadioButton" name="defaultFolderIconRadioButton">
+                                    <property name="text">
+                                        <string>Default folder icon</string>
+                                    </property>
+
+                                    <property name="icon">
+                                        <iconset theme="folder"/>
+                                    </property>
+
+                                    <property name="iconSize">
+                                        <size>
+                                            <height>32</height>
+                                            <width>32</width>
+                                        </size>
+                                    </property>
+                                </widget>
+                            </item>
+
+                            <!-- Third row, current website favorite icon. -->
                             <item>
                                 <widget class="QRadioButton" name="currentWebsiteFavoriteIconRadioButton">
                                     <property name="text">
@@ -69,7 +89,7 @@
                                 </widget>
                             </item>
 
-                            <!-- Third row, custom folder icon. -->
+                            <!-- Fourth row, custom folder icon. -->
                             <item>
                                 <widget class="QRadioButton" name="customFolderIconRadioButton">
                                     <property name="text">
index f0cd4dfc76e33223e4d75c44deacefd08b3c72ce..fe3b5939e86ea73d157d4ee87adf7165c59e839d 100644 (file)
@@ -543,12 +543,12 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer)
     // Add a separator to the bookmarks menu.
     bookmarksMenuPointer->addSeparator();
 
-    // Initialize the current bookmarks lists.
-    finalBookmarkFolderMenuActionList = QList<QPair<QMenu *, QAction *> *>();
+    // Initialize the bookmark action lists.
+    bookmarkFolderFinalActionList = QList<QPair<QMenu *, QAction *> *>();
     bookmarksMenuActionList = QList<QPair<QMenu *, QAction *> *>();
     bookmarksMenuSubmenuList = QList<QPair<QMenu *, QMenu *> *>();
     bookmarksToolBarActionList = QList<QAction*>();
-    bookmarksToolBarSubfolderActionList = QList<QPair<QMenu *, QAction * > *>();
+    bookmarksToolBarSubfolderActionList = QList<QPair<QMenu *, QAction *> *>();
 
     // Set the bookmarks toolbar context menu policy.
     bookmarksToolBarPointer->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -580,7 +580,8 @@ BrowserWindow::BrowserWindow(bool firstWindow, QString *initialUrlStringPointer)
     }
 }
 
-void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double folderId)
+// If actions are part of a context menu they do not need to be added to the list as they will be deleted automatically when the context menu closes.
+void BrowserWindow::addBookmarkFolderFinalActions(QMenu *menuPointer, const double folderId, const bool addToList)
 {
     // Get the database ID.
     int folderDatabaseId = BookmarksDatabase::getFolderDatabaseId(folderId);
@@ -688,8 +689,9 @@ void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double
             }
         );
 
-        // Add the action to the beginning of the final bookmark folder menu action list.
-        finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, editFolderActionPointer));
+        // Add the action to the beginning of the bookmark folder final action list if requsted.
+        if (addToList)
+            bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, editFolderActionPointer));
     }
 
     // Add the delete folder action to the menu.
@@ -760,13 +762,15 @@ void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double
         actionCollectionPointer->setDefaultShortcut(addFolderActionPointer, metaFKeySequence);
     }
 
-    // Add the actions to the beginning of the final bookmark folder menu action list.
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addBookmarkActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addFolderActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewTabsActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInBackgroundTabsActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewWindowActionPointer));
-    finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, deleteFolderActionPointer));
+    // Add the actions to the beginning of the bookmark folder final action list if requested.
+    if (addToList) {
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addBookmarkActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, addFolderActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewTabsActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInBackgroundTabsActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, openFolderInNewWindowActionPointer));
+        bookmarkFolderFinalActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, deleteFolderActionPointer));
+    }
 }
 
 void BrowserWindow::addOrEditDomainSettings()
@@ -1091,10 +1095,10 @@ void BrowserWindow::populateBookmarksInAllWindows() const
 void BrowserWindow::populateBookmarksInThisWindow()
 {
     // Remove all the final bookmark folder menu actions.
-    for (QPair<QMenu *, QAction *> *finalBookmarkFolderMenuActionPair : finalBookmarkFolderMenuActionList)
+    for (QPair<QMenu *, QAction *> *bookmarkFolderFinalActionPairPointer : bookmarkFolderFinalActionList)
     {
         // Remove the action.
-        finalBookmarkFolderMenuActionPair->first->removeAction(finalBookmarkFolderMenuActionPair->second);
+        bookmarkFolderFinalActionPairPointer->first->removeAction(bookmarkFolderFinalActionPairPointer->second);
     }
 
     // Remove all the current menu bookmarks.
@@ -1125,11 +1129,12 @@ void BrowserWindow::populateBookmarksInThisWindow()
         bookmarksToolBarPointer->removeAction(bookmarkAction);
     }
 
-    // Clear the current bookmark lists.
+    // Clear the action lists.
+    bookmarkFolderFinalActionList.clear();
     bookmarksMenuActionList.clear();
     bookmarksMenuSubmenuList.clear();
-    bookmarksToolBarActionList.clear();
     bookmarksToolBarSubfolderActionList.clear();
+    bookmarksToolBarActionList.clear();
 
     // Populate the bookmarks subfolders, beginning with the root folder (`0`);
     populateBookmarksMenuSubfolders(0, bookmarksMenuPointer);
@@ -1189,8 +1194,8 @@ void BrowserWindow::populateBookmarksMenuSubfolders(const double folderId, QMenu
         }
     }
 
-    // Add the extra items at the bottom of the menu.
-    addFinalBookmarkFolderMenuActions(menuPointer, folderId);
+    // Add the extra items at the bottom of the menu.  `true` adds them to the list of actions to be deleted on repopulate.
+    addBookmarkFolderFinalActions(menuPointer, folderId, true);
 }
 
 void BrowserWindow::populateBookmarksToolBar()
@@ -1252,8 +1257,8 @@ void BrowserWindow::populateBookmarksToolBar()
     // Add the extra items to the toolbar folder menus.  The first item in the pair is the menu pointer.  The second is the folder ID.
     for (QPair<QMenu *, const double> *menuAndFolderIdPairPointer : bookmarksToolBarMenuList)
     {
-        // Populate the final bookmarks menu entries.
-        addFinalBookmarkFolderMenuActions(menuAndFolderIdPairPointer->first, menuAndFolderIdPairPointer->second);
+        // Populate the final bookmarks menu entries.  `true` adds them to the list of actions to be deleted on repopulate.
+        addBookmarkFolderFinalActions(menuAndFolderIdPairPointer->first, menuAndFolderIdPairPointer->second, true);
     }
 }
 
@@ -1346,8 +1351,8 @@ void BrowserWindow::showBookmarkContextMenu(const QPoint &point)
         // Create the menu according to the type.
         if (BookmarksDatabase::isFolder(databaseId))  // A folder was clicked.
         {
-            // Populate the final bookmarks menu entries.
-            addFinalBookmarkFolderMenuActions(bookmarkContextMenuPointer, BookmarksDatabase::getFolderId(databaseId));
+            // Populate the final bookmarks menu entries.  `false` does not add the actions to the delete list, as they will be automatically deleted when the menu closes.
+            addBookmarkFolderFinalActions(bookmarkContextMenuPointer, BookmarksDatabase::getFolderId(databaseId), false);
         }
         else  // A bookmark was clicked.
         {
index 29c8d60d86b97cf584f9d72ccf107cbeed8764ba..85af5a2930d3bb6681bd22c9325a65f295b33048 100644 (file)
@@ -112,6 +112,7 @@ private:
     // The private variables.
     KActionCollection *actionCollectionPointer;
     QAction *bookmarkedActionPointer;
+    QList<QPair<QMenu *, QAction *> *> bookmarkFolderFinalActionList;
     QList<QPair<QMenu *, QAction *> *> bookmarksMenuActionList;
     QMenu *bookmarksMenuPointer;
     QList<QPair<QMenu *, QMenu *> *> bookmarksMenuSubmenuList;
@@ -130,7 +131,6 @@ private:
     double defaultZoomFactorDouble;
     QAction *developerToolsActionPointer;
     QAction *domStorageActionPointer;
-    QList<QPair<QMenu *, QAction *> *> finalBookmarkFolderMenuActionList;
     QAction *findCaseSensitiveActionPointer;
     QAction *findNextActionPointer;
     QAction *findPreviousActionPointer;
@@ -182,7 +182,7 @@ private:
     QPushButton *zoomPlusButtonPointer;
 
     // The private functions.
-    void addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double folderId);
+    void addBookmarkFolderFinalActions(QMenu *menuPointer, const double folderId, const bool addToList);
     int calculateSettingsInt(const bool settingCurrentlyEnabled, const bool settingEnabledByDefault) const;
     void populateBookmarksMenuSubfolders(const double folderId, QMenu *menuPointer);
     void populateBookmarksToolBar();