X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Fdialogs%2FEditFolderDialog.cpp;h=bae0965f2e16290ba40838c629729a91f0db34f0;hb=HEAD;hp=eb2bdcf4d4f51212533e0acbb72c9c96a1606986;hpb=e715eca23297fb10dcf70e4c8bb2712413d16e3d;p=PrivacyBrowserPC.git diff --git a/src/dialogs/EditFolderDialog.cpp b/src/dialogs/EditFolderDialog.cpp index eb2bdcf..bae0965 100644 --- a/src/dialogs/EditFolderDialog.cpp +++ b/src/dialogs/EditFolderDialog.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2023 Soren Stoutner . + * Copyright 2023-2024 Soren Stoutner . * * This file is part of Privacy Browser PC . * @@ -26,7 +26,7 @@ #include // Construct the class. -EditFolderDialog::EditFolderDialog(const int databaseId, QIcon ¤tWebsiteFavoriteIcon) : QDialog(nullptr), folderDatabaseId(databaseId) +EditFolderDialog::EditFolderDialog(QWidget *parentWidgetPointer, const int databaseId, QIcon ¤tWebsiteFavoriteIcon) : QDialog(parentWidgetPointer), folderDatabaseId(databaseId) { // Set the window title. setWindowTitle(i18nc("The edit folder dialog window title.", "Edit Folder")); @@ -42,6 +42,7 @@ EditFolderDialog::EditFolderDialog(const int databaseId, QIcon ¤tWebsiteFa // Get handles for the widgets. currentFolderIconRadioButtonPointer = editFolderDialogUi.currentFolderIconRadioButton; + defaultFolderIconRadioButtonPointer = editFolderDialogUi.defaultFolderIconRadioButton; currentWebsiteFavoriteIconRadioButtonPointer = editFolderDialogUi.currentWebsiteFavoriteIconRadioButton; customFolderIconRadioButtonPointer = editFolderDialogUi.customFolderIconRadioButton; parentFolderTreeWidgetPointer = editFolderDialogUi.parentFolderTreeWidget; @@ -50,11 +51,11 @@ EditFolderDialog::EditFolderDialog(const int databaseId, QIcon ¤tWebsiteFa QDialogButtonBox *dialogButtonBoxPointer = editFolderDialogUi.dialogButtonBox; saveButtonPointer = dialogButtonBoxPointer->button(QDialogButtonBox::Save); - // Get the bookmark struct. - bookmarkStructPointer = BookmarksDatabase::getBookmark(databaseId); + // Get the folder bookmark struct. + folderBookmarkStructPointer = BookmarksDatabase::getBookmark(databaseId); // Set the folder icons. - currentFolderIconRadioButtonPointer->setIcon(bookmarkStructPointer->favoriteIcon); + currentFolderIconRadioButtonPointer->setIcon(folderBookmarkStructPointer->favoriteIcon); currentWebsiteFavoriteIconRadioButtonPointer->setIcon(currentWebsiteFavoriteIcon); // Instantiate a folder helper. @@ -81,20 +82,20 @@ EditFolderDialog::EditFolderDialog(const int databaseId, QIcon ¤tWebsiteFa parentFolderTreeWidgetPointer->addTopLevelItem(bookmarksTreeWidgetItemPointer); // Select the root bookmarks folder if it is the initial parent folder. - if (bookmarkStructPointer->parentFolderId == 0) + if (folderBookmarkStructPointer->parentFolderId == 0) bookmarksTreeWidgetItemPointer->setSelected(true); // Populate the subfolders, except for the one being edited. - folderHelperPointer->populateSubfoldersExcept(databaseId, bookmarksTreeWidgetItemPointer, bookmarkStructPointer->parentFolderId); + folderHelperPointer->populateSubfoldersExcept(databaseId, bookmarksTreeWidgetItemPointer, folderBookmarkStructPointer->parentFolderId); // Open all the folders. parentFolderTreeWidgetPointer->expandAll(); // Populate the line edits. - folderNameLineEditPointer->setText(bookmarkStructPointer->name); + folderNameLineEditPointer->setText(folderBookmarkStructPointer->name); - // Scroll to the beginning of the line edits. - folderNameLineEditPointer->setCursorPosition(0); + // Focus the folder name line edit. + folderNameLineEditPointer->setFocus(); // Connect the buttons. connect(browseButtonPointer, SIGNAL(clicked()), this, SLOT(browse())); @@ -136,11 +137,14 @@ void EditFolderDialog::save() // Get the parent folder ID. double parentFolderId = selectedFolderPointer->text(folderHelperPointer->FOLDER_ID_COLUMN).toDouble(); + // Determine if it has moved to a new folder. + bool movedToNewFolder = parentFolderId != folderBookmarkStructPointer->parentFolderId; + // Get the original display order. - int displayOrder = bookmarkStructPointer->displayOrder; + int displayOrder = folderBookmarkStructPointer->displayOrder; // Get the new display order if the parent folder has changed. - if (parentFolderId != bookmarkStructPointer->parentFolderId) + if (movedToNewFolder) displayOrder = BookmarksDatabase::getFolderItemCount(parentFolderId); // Create a favorite icon. @@ -149,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. @@ -167,8 +173,9 @@ void EditFolderDialog::save() // Update the folder. BookmarksDatabase::updateBookmark(updatedBookmarkStructPointer); - // Update the display order of all the items in the previous folder. - BookmarksDatabase::updateFolderContentsDisplayOrder(bookmarkStructPointer->parentFolderId); + // Update the display order of all the items in the previous folder if it has moved to a new folder. + if (movedToNewFolder) + BookmarksDatabase::updateFolderContentsDisplayOrder(folderBookmarkStructPointer->parentFolderId); // Emit the folder saved signal. emit folderSaved();