setCentralWidget(tabWidgetPointer);
// Get a handle for the action collection.
- KActionCollection *actionCollectionPointer = this->actionCollection();
+ actionCollectionPointer = this->actionCollection();
// Add the standard actions.
KStandardAction::print(tabWidgetPointer, SLOT(print()), actionCollectionPointer);
QAction *backActionPointer = KStandardAction::back(this, SLOT(back()), actionCollectionPointer);
QAction *forwardActionPointer = KStandardAction::forward(this, SLOT(forward()), actionCollectionPointer);
KStandardAction::home(this, SLOT(home()), actionCollectionPointer);
- KStandardAction::addBookmark(this, SLOT(showAddBookmarkDialog()), actionCollectionPointer);
QAction *editBookmarksActionPointer = KStandardAction::editBookmarks(this, SLOT(editBookmarks()), actionCollectionPointer);
KStandardAction::preferences(this, SLOT(showSettingsDialog()), actionCollectionPointer);
KStandardAction::find(this, SLOT(showFindTextActions()), actionCollectionPointer);
searchEngineBingActionPointer = actionCollectionPointer->addAction(QLatin1String("search_engine_bing"));
searchEngineYahooActionPointer = actionCollectionPointer->addAction(QLatin1String("search_engine_yahoo"));
searchEngineCustomActionPointer = actionCollectionPointer->addAction(QLatin1String("search_engine_custom"));
- QAction *addFolderPointer = actionCollectionPointer->addAction(QLatin1String("add_folder"));
viewBookmarksToolBarActionPointer = actionCollectionPointer->addAction(QLatin1String("view_bookmarks_toolbar"));
QAction *domainSettingsActionPointer = actionCollectionPointer->addAction(QLatin1String("domain_settings"));
cookiesActionPointer = actionCollectionPointer->addAction(QLatin1String("cookies"));
searchEngineGoogleActionPointer->setText(i18nc("Search engine", "Google"));
searchEngineBingActionPointer->setText(i18nc("Search engine", "Bing"));
searchEngineYahooActionPointer->setText(i18nc("Search engine", "Yahoo"));
- addFolderPointer->setText(i18nc("Add folder", "Add Folder"));
viewBookmarksToolBarActionPointer->setText(i18nc("View bookmarks toolbar", "View Bookmarks Toolbar"));
domainSettingsActionPointer->setText(i18nc("Domain Settings action", "Domain Settings"));
cookiesActionPointer->setText(i18nc("The Cookies action, which also displays the number of cookies", "Cookies - %1", 0));
searchEngineYahooActionPointer->setIcon(QIcon::fromTheme(QLatin1String("im-yahoo"), QIcon::fromTheme(QLatin1String("edit-find"))));
searchEngineCustomActionPointer->setIcon(QIcon::fromTheme(QLatin1String("edit-find")));
zoomFactorActionPointer->setIcon(QIcon::fromTheme(QLatin1String("zoom-fit-best")));
- addFolderPointer->setIcon(QIcon::fromTheme(QLatin1String("folder-add")));
- viewBookmarksToolBarActionPointer->setIcon(QIcon::fromTheme(QLatin1String("bookmarks")));
+ editBookmarksActionPointer->setIcon(QIcon::fromTheme(QLatin1String("bookmark-edit"), QIcon::fromTheme(QLatin1String("bookmark-new"))));
+ viewBookmarksToolBarActionPointer->setIcon(QIcon::fromTheme(QLatin1String("bookmarks"), QIcon::fromTheme(QLatin1String("bookmark-new"))));
domainSettingsActionPointer->setIcon(QIcon::fromTheme(QLatin1String("settings-configure"), QIcon::fromTheme(QLatin1String("preferences-desktop"))));
cookiesActionPointer->setIcon(QIcon::fromTheme(QLatin1String("preferences-web-browser-cookies"), QIcon::fromTheme(QLatin1String("appointment-new"))));
findCaseSensitiveActionPointer->setIcon(QIcon::fromTheme(QLatin1String("format-text-lowercase"), QIcon::fromTheme(QLatin1String("/usr/share/icons/gnome/32x32/apps/fonts.png"))));
QKeySequence ctrlShiftYKeySequence = QKeySequence(i18nc("The Yahoo search engine key sequence.", "Ctrl+Shift+Y"));
QKeySequence ctrlShiftCKeySequence = QKeySequence(i18nc("The custom search engine key sequence.", "Ctrl+Shift+C"));
QKeySequence ctrlAltShiftBKeySequence = QKeySequence(i18nc("The edit bookmarks key sequence.", "Ctrl+Alt+Shift+B"));
- QKeySequence altFKeySequence = QKeySequence(i18nc("The add folder key sequence.", "Alt+F"));
QKeySequence ctrlAltBKeySequence = QKeySequence(i18nc("The view bookmarks toolbar key sequence.", "Ctrl+Alt+B"));
QKeySequence ctrlShiftDKeySequence = QKeySequence(i18nc("The domain settings key sequence.", "Ctrl+Shift+D"));
QKeySequence ctrlSemicolonKeySequence = QKeySequence(i18nc("The cookies dialog key sequence.", "Ctrl+;"));
actionCollectionPointer->setDefaultShortcut(searchEngineYahooActionPointer, ctrlShiftYKeySequence);
actionCollectionPointer->setDefaultShortcut(searchEngineCustomActionPointer, ctrlShiftCKeySequence);
actionCollectionPointer->setDefaultShortcut(editBookmarksActionPointer, ctrlAltShiftBKeySequence);
- actionCollectionPointer->setDefaultShortcut(addFolderPointer, altFKeySequence);
actionCollectionPointer->setDefaultShortcut(viewBookmarksToolBarActionPointer, ctrlAltBKeySequence);
actionCollectionPointer->setDefaultShortcut(domainSettingsActionPointer, ctrlShiftDKeySequence);
actionCollectionPointer->setDefaultShortcut(cookiesActionPointer, ctrlSemicolonKeySequence);
connect(viewSourceActionPointer, SIGNAL(triggered()), this, SLOT(toggleViewSource()));
connect(viewSourceInNewTabActionPointer, SIGNAL(triggered()), this, SLOT(toggleViewSourceInNewTab()));
connect(zoomFactorActionPointer, SIGNAL(triggered()), this, SLOT(getZoomFactorFromUser()));
- connect(addFolderPointer, SIGNAL(triggered()), this, SLOT(showAddFolderDialog()));
connect(viewBookmarksToolBarActionPointer, SIGNAL(triggered()), this, SLOT(toggleViewBookmarksToolBar()));
connect(cookiesActionPointer, SIGNAL(triggered()), this, SLOT(showCookiesDialog()));
connect(domainSettingsActionPointer, SIGNAL(triggered()), this, SLOT(showDomainSettingsDialog()));
connect(findCaseSensitiveActionPointer, SIGNAL(triggered()), this, SLOT(toggleFindCaseSensitive()));
connect(hideFindTextActionPointer, SIGNAL(triggered()), this, SLOT(hideFindTextActions()));
+
+
// Setup the GUI based on the browserwindowui.rc file.
setupGUI(StandardWindowOption::Default, ("browserwindowui.rc"));
bookmarksMenuPointer->addSeparator();
// Initialize the current bookmarks lists.
+ finalBookmarkFolderMenuActionList = QList<QPair<QMenu *, QAction *> *>();
bookmarksMenuActionList = QList<QPair<QMenu *, QAction *> *>();
bookmarksMenuSubmenuList = QList<QPair<QMenu *, QMenu *> *>();
bookmarksToolBarActionList = QList<QAction*>();
}
}
-void BrowserWindow::addFinalBookmarkFolderMenuEntries(QMenu *menuPointer, double folderId)
+void BrowserWindow::addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double folderId)
{
// Get the database ID.
int folderDatabaseId = BookmarksDatabase::getFolderDatabaseId(folderId);
menuPointer->addSeparator();
// Add the add bookmark action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("bookmark-new")), i18nc("The add bookmark action", "Add Bookmark"), [=]
+ QAction *addBookmarkActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("bookmark-new")), i18nc("The add bookmark action", "Add Bookmark"), [=]
{
// Instantiate an add bookmark dialog.
AddBookmarkDialog *addBookmarkDialogPointer = new AddBookmarkDialog(tabWidgetPointer->getCurrentTabTitle(), tabWidgetPointer->getCurrentTabUrl(),
);
// Add the add folder action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("folder-add")), i18nc("The add folder action", "Add Folder"), [=]
+ QAction *addFolderActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("folder-add")), i18nc("The add folder action", "Add Folder"), [=]
{
// Instantiate an add folder dialog.
AddFolderDialog *addFolderDialogPointer = new AddFolderDialog(tabWidgetPointer->getCurrentTabFavoritIcon(), folderId);
menuPointer->addSeparator();
// Add the open folder in new tabs action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("tab-new")), i18nc("The open folder in new tabs action", "Open Folder in New Tabs"), [=]
+ QAction *openFolderInNewTabsActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("tab-new")), i18nc("The open folder in new tabs action", "Open Folder in New Tabs"), [=]
{
// Get all the folder URLs.
QList<QString> *folderUrlsListPointer = BookmarksDatabase::getAllFolderUrls(folderId);
);
// Add the open folder in background tabs action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("tab-new")), i18nc("The open folder in background tabs action", "Open Folder in Background Tabs"), [=]
+ QAction *openFolderInBackgroundTabsActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("tab-new")),
+ i18nc("The open folder in background tabs action", "Open Folder in Background Tabs"), [=]
{
// Get all the folder URLs.
QList<QString> *folderUrlsListPointer = BookmarksDatabase::getAllFolderUrls(folderId);
);
// Add the open folder in new window action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("window-new")), i18nc("The open folder in new window action", "Open Folder in New Window"), [=]
+ QAction *openFolderInNewWindowActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("window-new")), i18nc("The open folder in new window action", "Open Folder in New Window"), [=]
{
// Get all the folder URLs.
QList<QString> *folderUrlsListPointer = BookmarksDatabase::getAllFolderUrls(folderId);
// Add a separator.
menuPointer->addSeparator();
- // Add the edit folder action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("edit-entry")), i18nc("The edit folder action", "Edit Folder"), [=]
- {
- // Get the current tab favorite icon.
- QIcon currentTabFavoriteIcon = tabWidgetPointer->getCurrentTabFavoritIcon();
+ // Add the edit folder action to the menu if this is not the root bookmark menu.
+ if (folderId != 0)
+ {
+ QAction *editFolderActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("document-edit")), i18nc("The edit folder action", "Edit Folder"), [=]
+ {
+ // Get the current tab favorite icon.
+ QIcon currentTabFavoriteIcon = tabWidgetPointer->getCurrentTabFavoritIcon();
- // Instantiate an edit folder dialog.
- QDialog *editFolderDialogPointer = new EditFolderDialog(folderDatabaseId, currentTabFavoriteIcon);
+ // Instantiate an edit folder dialog.
+ QDialog *editFolderDialogPointer = new EditFolderDialog(folderDatabaseId, currentTabFavoriteIcon);
- // Show the dialog.
- editFolderDialogPointer->show();
+ // Show the dialog.
+ editFolderDialogPointer->show();
- // Process bookmark events.
- connect(editFolderDialogPointer, SIGNAL(folderSaved()), this, SLOT(populateBookmarks()));
- }
- );
+ // Process bookmark events.
+ connect(editFolderDialogPointer, SIGNAL(folderSaved()), this, SLOT(populateBookmarks()));
+ }
+ );
+
+ // Add the action to the beginning of the final bookmark folder menu action list.
+ finalBookmarkFolderMenuActionList.prepend(new QPair<QMenu *, QAction *>(menuPointer, editFolderActionPointer));
+ }
// Add the delete folder action to the menu.
- menuPointer->addAction(QIcon::fromTheme(QLatin1String("delete")), i18nc("Delete folder context menu entry", "Delete Folder"), [=]
+ QAction *deleteFolderActionPointer = menuPointer->addAction(QIcon::fromTheme(QLatin1String("edit-delete")), i18nc("Delete folder context menu entry", "Delete Folder"), [=]
{
// Create an items to delete list.
QList<int>* itemsToDeleteListPointer = new QList<int>;
- // Add the folder to the list of items to delete.
- itemsToDeleteListPointer->append(folderDatabaseId);
+ // Add the folder to the list of items to delete if it is not the root folder.
+ if (folderId != 0)
+ itemsToDeleteListPointer->append(folderDatabaseId);
// Add the folder contents to the list of items to delete.
itemsToDeleteListPointer->append(*BookmarksDatabase::getFolderContentsDatabaseIdsRecursively(folderId));
}
}
);
+
+ // Add the key sequences if this is the root bookmarks menu.
+ if (folderId == 0)
+ {
+ // Create the key sequences.
+ QKeySequence ctrlBKeySequence = QKeySequence(i18nc("The add bookmark key sequence.", "Ctrl+B"));
+ QKeySequence metaFKeySequence = QKeySequence(i18nc("The add folder key sequence.", "Meta+F"));
+
+ // Set the action key sequences.
+ actionCollectionPointer->setDefaultShortcut(addBookmarkActionPointer, ctrlBKeySequence);
+ 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));
}
void BrowserWindow::addOrEditDomainSettings() const
void BrowserWindow::populateBookmarks()
{
+ // Remove all the final bookmark folder menu actions.
+ for (QPair<QMenu *, QAction *> *finalBookmarkFolderMenuActionPair : finalBookmarkFolderMenuActionList)
+ {
+ // Remove the action.
+ finalBookmarkFolderMenuActionPair->first->removeAction(finalBookmarkFolderMenuActionPair->second);
+ }
+
// Remove all the current menu bookmarks.
for (QPair<QMenu *, QAction *> *bookmarkMenuActionPairPointer : bookmarksMenuActionList)
{
}
// Add the extra items at the bottom of the menu.
- addFinalBookmarkFolderMenuEntries(menuPointer, folderId);
+ addFinalBookmarkFolderMenuActions(menuPointer, folderId);
}
void BrowserWindow::populateBookmarksToolBar()
for (QPair<QMenu *, const double> *menuAndFolderIdPairPointer : bookmarksToolBarMenuList)
{
// Populate the final bookmarks menu entries.
- addFinalBookmarkFolderMenuEntries(menuAndFolderIdPairPointer->first, menuAndFolderIdPairPointer->second);
+ addFinalBookmarkFolderMenuActions(menuAndFolderIdPairPointer->first, menuAndFolderIdPairPointer->second);
}
}
tabWidgetPointer->refresh();
}
-void BrowserWindow::showAddBookmarkDialog() const
-{
- // Instantiate an add bookmark dialog.
- AddBookmarkDialog *addBookmarkDialogPointer = new AddBookmarkDialog(tabWidgetPointer->getCurrentTabTitle(), tabWidgetPointer->getCurrentTabUrl(), tabWidgetPointer->getCurrentTabFavoritIcon());
-
- // Update the displayed bookmarks when a new one is added.
- connect(addBookmarkDialogPointer, SIGNAL(bookmarkAdded()), this, SLOT(populateBookmarks()));
-
- // Show the dialog.
- addBookmarkDialogPointer->show();
-}
-
-void BrowserWindow::showAddFolderDialog() const
-{
- // Instantiate an add folder dialog.
- AddFolderDialog *addFolderDialogPointer = new AddFolderDialog(tabWidgetPointer->getCurrentTabFavoritIcon());
-
- // Update the displayed bookmarks when a folder is added.
- connect(addFolderDialogPointer, SIGNAL(folderAdded()), this, SLOT(populateBookmarks()));
-
- // Show the dialog.
- addFolderDialogPointer->show();
-}
-
void BrowserWindow::showBookmarkContextMenu(const QPoint &point)
{
// Get the bookmark action.
if (BookmarksDatabase::isFolder(databaseId)) // A folder was clicked.
{
// Populate the final bookmarks menu entries.
- addFinalBookmarkFolderMenuEntries(bookmarkContextMenuPointer, BookmarksDatabase::getFolderId(databaseId));
+ addFinalBookmarkFolderMenuActions(bookmarkContextMenuPointer, BookmarksDatabase::getFolderId(databaseId));
}
else // A bookmark was clicked.
{
bookmarkContextMenuPointer->addSeparator();
// Add the edit action to the menu.
- bookmarkContextMenuPointer->addAction(QIcon::fromTheme(QLatin1String("edit-entry")), i18nc("Edit bookmark context menu entry", "Edit"), [=]
+ bookmarkContextMenuPointer->addAction(QIcon::fromTheme(QLatin1String("document-edit")), i18nc("Edit bookmark context menu entry", "Edit"), [=]
{
// Get the current tab favorite icon.
QIcon currentTabFavoriteIcon = tabWidgetPointer->getCurrentTabFavoritIcon();
bookmarkContextMenuPointer->addSeparator();
// Add the delete action to the menu.
- bookmarkContextMenuPointer->addAction(QIcon::fromTheme(QLatin1String("delete")), i18nc("Delete bookmark context menu entry", "Delete"), [=]
+ bookmarkContextMenuPointer->addAction(QIcon::fromTheme(QLatin1String("edit-delete")), i18nc("Delete bookmark context menu entry", "Delete"), [=]
{
// Get the parent folder ID.
double parentFolderId = BookmarksDatabase::getParentFolderId(databaseId);
void BrowserWindow::updateUrlLineEdit(const QUrl &newUrl)
{
- // Get the new URL string.
- QString newUrlString = newUrl.toString();
+ // Get the new URL string in encoded form, which displays punycode.
+ QString newUrlString = newUrl.toEncoded();
// Update the view source actions.
if (newUrlString.startsWith(QLatin1String("view-source:"))) // The source is currently being viewed.