+void BookmarksDatabase::deleteBookmarks(const QString url)
+{
+ // Get a handle for the bookmarks database.
+ QSqlDatabase bookmarksDatabase = QSqlDatabase::database(CONNECTION_NAME);
+
+ // Instantiate a parent folder IDs query.
+ QSqlQuery parentFolderIdsQuery(bookmarksDatabase);
+
+ // Prepare the parent folder IDs query.
+ parentFolderIdsQuery.prepare("SELECT " + PARENT_FOLDER_ID + " FROM " + BOOKMARKS_TABLE + " WHERE " + IS_FOLDER + " = 0 AND " + BOOKMARK_URL + " = :url");
+
+ // Bind the query values.
+ parentFolderIdsQuery.bindValue(":url", url);
+
+ // Execute the query.
+ parentFolderIdsQuery.exec();
+
+ // Instantiate a delete bookmarks query.
+ QSqlQuery deleteBookmarksQuery(bookmarksDatabase);
+
+ // Prepare the delete bookmark query.
+ deleteBookmarksQuery.prepare("DELETE FROM " + BOOKMARKS_TABLE + " WHERE " + IS_FOLDER + " = 0 AND " + BOOKMARK_URL + " = :url");
+
+ // Bind the query values.
+ deleteBookmarksQuery.bindValue(":url", url);
+
+ // Execute the query.
+ deleteBookmarksQuery.exec();
+
+ // Create a parent folder IDs list. A standard list can be sorted and deduplicated.
+ std::list<double> parentFolderIdsList;
+
+ // Populate the parent folder IDs list.
+ while (parentFolderIdsQuery.next())
+ {
+ // Add the parent folder ID to the list.
+ parentFolderIdsList.push_back(parentFolderIdsQuery.value(PARENT_FOLDER_ID).toDouble());
+ }
+
+ // Sort the parent folder IDs list.
+ parentFolderIdsList.sort();
+
+ // Remove duplicate entries from the parent folder IDs list.
+ parentFolderIdsList.unique();
+
+ // Update the display order of each folder where a bookmark was deleted.
+ for (const double parentFolderId : parentFolderIdsList)
+ updateFolderContentsDisplayOrder(parentFolderId);
+}
+