diff options
author | Yoann Laissus <yoann.laissus@gmail.com> | 2010-10-09 17:30:03 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2010-10-13 21:17:05 +0200 |
commit | 25f7a9dc17f047715db0a06729151f8721513800 (patch) | |
tree | 87250bb9b16b15e44cd9f4ef7d55d945e339beb4 /src/bookmarks | |
parent | Enabling WebKit Page Cache feature: please, refers to (diff) | |
download | rekonq-25f7a9dc17f047715db0a06729151f8721513800.tar.xz |
- get rid of the selected bookmark in BookmarkOwner
we can now create actions as we want and not only in a context menu
- an important cleanup
- validOpenUrl() is now useless
Diffstat (limited to 'src/bookmarks')
-rw-r--r-- | src/bookmarks/bookmarkowner.cpp | 212 | ||||
-rw-r--r-- | src/bookmarks/bookmarkowner.h | 57 | ||||
-rw-r--r-- | src/bookmarks/bookmarkscontextmenu.cpp | 44 | ||||
-rw-r--r-- | src/bookmarks/bookmarkstoolbar.cpp | 7 |
4 files changed, 166 insertions, 154 deletions
diff --git a/src/bookmarks/bookmarkowner.cpp b/src/bookmarks/bookmarkowner.cpp index e1b9a567..77af9b1f 100644 --- a/src/bookmarks/bookmarkowner.cpp +++ b/src/bookmarks/bookmarkowner.cpp @@ -53,15 +53,47 @@ BookmarkOwner::BookmarkOwner(KBookmarkManager *manager, QObject *parent) : QObject(parent) , KBookmarkOwner() , m_manager(manager) - , m_actions(QVector<KAction*>(NUM_ACTIONS)) { - setupActions(); } -KAction* BookmarkOwner::action(const BookmarkAction &bmAction) +KAction* BookmarkOwner::action(const KBookmark &bookmark, const BookmarkAction &bmAction) { - return static_cast<KAction*>(m_actions.at(bmAction)); + switch (bmAction) + { + case OPEN: + return createAction(i18n("Open"), "tab-new", + i18n("Open bookmark in current tab"), SLOT(openBookmark(const KBookmark &)), bookmark); + case OPEN_IN_TAB: + return createAction(i18n("Open in New Tab"), "tab-new", + i18n("Open bookmark in new tab"), SLOT(openBookmarkInNewTab(const KBookmark &)), bookmark); + case OPEN_IN_WINDOW: + return createAction(i18n("Open in New Window"), "window-new", + i18n("Open bookmark in new window"), SLOT(openBookmarkInNewWindow(const KBookmark &)), bookmark); + case OPEN_FOLDER: + return createAction(i18n("Open Folder in Tabs"), "tab-new", + i18n("Open all the bookmarks in folder in tabs"), SLOT(openBookmarkFolder(const KBookmark &)), bookmark); + case BOOKMARK_PAGE: + return createAction(i18n("Add Bookmark"), "bookmark-new", + i18n("Bookmark current page"), SLOT(bookmarkCurrentPage(const KBookmark &)), bookmark); + case NEW_FOLDER: + return createAction(i18n("New Folder"), "folder-new", + i18n("Create a new bookmark folder"), SLOT(newBookmarkFolder(const KBookmark &)), bookmark); + case NEW_SEPARATOR: + return createAction(i18n("New Separator"), "edit-clear", + i18n("Create a new bookmark separator"), SLOT(newSeparator(const KBookmark &)), bookmark); + case COPY: + return createAction(i18n("Copy Link"), "edit-copy", + i18n("Copy the bookmark's link address"), SLOT(copyLink(const KBookmark &)), bookmark); + case EDIT: + return createAction(i18n("Edit"), "configure", + i18n("Edit the bookmark"), SLOT(editBookmark(const KBookmark &)), bookmark); + case DELETE: + return createAction(i18n("Delete"), "edit-delete", + i18n("Delete the bookmark"), SLOT(deleteBookmark(const KBookmark &)), bookmark); + default: + return 0; + } } @@ -118,85 +150,66 @@ void BookmarkOwner::openBookmark(const KBookmark &bookmark, void BookmarkOwner::openFolderinTabs(const KBookmarkGroup &bookmark) { - openBookmarkFolder(bookmark); -} + QList<KUrl> urlList = bookmark.groupUrlList(); + if (urlList.length() > 8) + { + if (KMessageBox::warningContinueCancel( + Application::instance()->mainWindow(), + i18ncp("%1=Number of tabs. Value is always >=8", + "You are about to open %1 tabs.\nAre you sure?", + "You are about to open %1 tabs.\nAre you sure?", urlList.length())) + != KMessageBox::Continue + ) + return; + } -void BookmarkOwner::setCurrentBookmark(const KBookmark &bookmark) -{ - m_currentBookmark = bookmark; + Q_FOREACH(const KUrl &url, urlList) + { + emit openUrl(url, Rekonq::NewFocusedTab); + } } -void BookmarkOwner::unsetCurrentBookmark() +void BookmarkOwner::openBookmarkFolder(const KBookmark &bookmark) { - m_currentBookmark = KBookmark(); + if (bookmark.isGroup()) + openFolderinTabs(bookmark.toGroup()); } void BookmarkOwner::openBookmark(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - emit openUrl(selected.url(), Rekonq::CurrentTab); + emit openUrl(bookmark.url(), Rekonq::CurrentTab); } void BookmarkOwner::openBookmarkInNewTab(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - emit openUrl(selected.url(), Rekonq::NewTab); + emit openUrl(bookmark.url(), Rekonq::NewTab); } void BookmarkOwner::openBookmarkInNewWindow(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - emit openUrl(selected.url(), Rekonq::NewWindow); -} - - -void BookmarkOwner::openBookmarkFolder(const KBookmark &bookmark) -{ - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - if (!selected.isGroup()) - return; - - QList<KUrl> urlList = selected.toGroup().groupUrlList(); - - if (urlList.length() > 8) - { - if (KMessageBox::warningContinueCancel( - Application::instance()->mainWindow(), - i18ncp("%1=Number of tabs. Value is always >=8", - "You are about to open %1 tabs.\nAre you sure?", - "You are about to open %1 tabs.\nAre you sure?", urlList.length())) - != KMessageBox::Continue - ) - return; - } - - Q_FOREACH(const KUrl &url, urlList) - { - emit openUrl(url, Rekonq::NewFocusedTab); - } + emit openUrl(bookmark.url(), Rekonq::NewWindow); } KBookmark BookmarkOwner::bookmarkCurrentPage(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; KBookmark newBk; KBookmarkGroup parent; - if (!selected.isNull()) + if (!bookmark.isNull()) { - if (selected.isGroup()) - parent = selected.toGroup(); + if (bookmark.isGroup()) + parent = bookmark.toGroup(); else - parent = selected.parentGroup(); + parent = bookmark.parentGroup(); newBk = parent.addBookmark(currentTitle().replace('&', "&&"), KUrl(currentUrl()) ); - parent.moveBookmark(newBk, selected); + parent.moveBookmark(newBk, bookmark); } else { @@ -211,24 +224,23 @@ KBookmark BookmarkOwner::bookmarkCurrentPage(const KBookmark &bookmark) KBookmarkGroup BookmarkOwner::newBookmarkFolder(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; KBookmarkGroup newBk; KBookmarkDialog *dialog = bookmarkDialog(m_manager, QApplication::activeWindow()); QString folderName = i18n("New folder"); - if (!selected.isNull()) + if (!bookmark.isNull()) { - if (selected.isGroup()) + if (bookmark.isGroup()) { - newBk = dialog->createNewFolder(folderName, selected); + newBk = dialog->createNewFolder(folderName, bookmark); } else { - newBk = dialog->createNewFolder(folderName, selected.parentGroup()); + newBk = dialog->createNewFolder(folderName, bookmark.parentGroup()); if (!newBk.isNull()) { KBookmarkGroup parent = newBk.parentGroup(); - parent.moveBookmark(newBk, selected); + parent.moveBookmark(newBk, bookmark); m_manager->emitChanged(parent); } } @@ -245,19 +257,18 @@ KBookmarkGroup BookmarkOwner::newBookmarkFolder(const KBookmark &bookmark) KBookmark BookmarkOwner::newSeparator(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; KBookmark newBk; - if (!selected.isNull()) + if (!bookmark.isNull()) { - if (selected.isGroup()) + if (bookmark.isGroup()) { - newBk = selected.toGroup().createNewSeparator(); + newBk = bookmark.toGroup().createNewSeparator(); } else { - newBk = selected.parentGroup().createNewSeparator(); - newBk.parentGroup().moveBookmark(newBk, selected); + newBk = bookmark.parentGroup().createNewSeparator(); + newBk.parentGroup().moveBookmark(newBk, bookmark); } } else @@ -274,25 +285,23 @@ KBookmark BookmarkOwner::newSeparator(const KBookmark &bookmark) void BookmarkOwner::copyLink(const KBookmark &bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - if (selected.isNull()) + if (bookmark.isNull()) return; - QApplication::clipboard()->setText(selected.url().url()); + QApplication::clipboard()->setText(bookmark.url().url()); } void BookmarkOwner::editBookmark(KBookmark bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - if (selected.isNull()) + if (bookmark.isNull()) return; - selected.setFullText(selected.fullText().replace("&&", "&")); + bookmark.setFullText(bookmark.fullText().replace("&&", "&")); KBookmarkDialog *dialog = bookmarkDialog(m_manager, QApplication::activeWindow()); - dialog->editBookmark(selected); - selected.setFullText(selected.fullText().replace('&', "&&")); + dialog->editBookmark(bookmark); + bookmark.setFullText(bookmark.fullText().replace('&', "&&")); delete dialog; } @@ -300,20 +309,19 @@ void BookmarkOwner::editBookmark(KBookmark bookmark) bool BookmarkOwner::deleteBookmark(KBookmark bookmark) { - KBookmark selected = (bookmark.isNull() && !m_currentBookmark.isNull()) ? m_currentBookmark : bookmark; - if (selected.isNull()) + if (bookmark.isNull()) return false; - KBookmarkGroup bmg = selected.parentGroup(); - QString name = QString(selected.fullText()).replace("&&", "&"); + KBookmarkGroup bmg = bookmark.parentGroup(); + QString name = QString(bookmark.fullText()).replace("&&", "&"); QString dialogCaption, dialogText; - if (selected.isGroup()) + if (bookmark.isGroup()) { dialogCaption = i18n("Bookmark Folder Deletion"); dialogText = i18n("Are you sure you wish to remove the bookmark folder\n\"%1\"?", name); } - else if (selected.isSeparator()) + else if (bookmark.isSeparator()) { dialogCaption = i18n("Separator Deletion"); dialogText = i18n("Are you sure you wish to remove this separator?"); @@ -335,42 +343,38 @@ bool BookmarkOwner::deleteBookmark(KBookmark bookmark) ) return false; - bmg.deleteBookmark(selected); + bmg.deleteBookmark(bookmark); m_manager->emitChanged(bmg); return true; } -void BookmarkOwner::setupActions() +KAction* BookmarkOwner::createAction(const QString &text, + const QString &icon, const QString &help, const char *slot, + const KBookmark & bookmark) { - createAction(OPEN, i18n("Open"), "tab-new", - i18n("Open bookmark in current tab"), SLOT(openBookmark())); - createAction(OPEN_IN_TAB, i18n("Open in New Tab"), "tab-new", - i18n("Open bookmark in new tab"), SLOT(openBookmarkInNewTab())); - createAction(OPEN_IN_WINDOW, i18n("Open in New Window"), "window-new", - i18n("Open bookmark in new window"), SLOT(openBookmarkInNewWindow())); - createAction(OPEN_FOLDER, i18n("Open Folder in Tabs"), "tab-new", - i18n("Open all the bookmarks in folder in tabs"), SLOT(openBookmarkFolder())); - createAction(BOOKMARK_PAGE, i18n("Add Bookmark"), "bookmark-new", - i18n("Bookmark current page"), SLOT(bookmarkCurrentPage())); - createAction(NEW_FOLDER, i18n("New Folder"), "folder-new", - i18n("Create a new bookmark folder"), SLOT(newBookmarkFolder())); - createAction(NEW_SEPARATOR, i18n("New Separator"), "edit-clear", - i18n("Create a new bookmark separator"), SLOT(newSeparator())); - createAction(COPY, i18n("Copy Link"), "edit-copy", - i18n("Copy the bookmark's link address"), SLOT(copyLink())); - createAction(EDIT, i18n("Edit"), "configure", - i18n("Edit the bookmark"), SLOT(editBookmark())); - createAction(DELETE, i18n("Delete"), "edit-delete", - i18n("Delete the bookmark"), SLOT(deleteBookmark())); + CustomBookmarkAction *act = new CustomBookmarkAction(bookmark, KIcon(icon), text, this); + act->setHelpText(help); + connect(act, SIGNAL(triggered(const KBookmark &)), this, slot); + return act; } -void BookmarkOwner::createAction(const BookmarkAction &action, const QString &text, - const QString &icon, const QString &help, const char *slot) +// ------------------------------------------------------------------------------------------------- + + +CustomBookmarkAction::CustomBookmarkAction(const KBookmark &bookmark, const KIcon &icon, const QString &text, QObject *parent) + : KAction(icon, text, parent) + , m_bookmark(bookmark) { - KAction *act = new KAction(KIcon(icon), text, this); - act->setHelpText(help); - m_actions[action] = act; - connect(act, SIGNAL(triggered()), this, slot); + connect(this, SIGNAL(triggered()), this, SLOT(onActionTriggered())); +} + +CustomBookmarkAction::~CustomBookmarkAction() +{ +} + +void CustomBookmarkAction::onActionTriggered() +{ + emit triggered(m_bookmark); } diff --git a/src/bookmarks/bookmarkowner.h b/src/bookmarks/bookmarkowner.h index febff3b0..573e4ee0 100644 --- a/src/bookmarks/bookmarkowner.h +++ b/src/bookmarks/bookmarkowner.h @@ -36,9 +36,8 @@ // KDE Includes #include <KBookmarkOwner> - -// Forward Declarations -class KAction; +#include <KIcon> +#include <KAction> /** @@ -69,9 +68,9 @@ public: }; /** - * @return the action or 0 if it doesn't exist. + * @return the action connected to the bookmark or 0 if it doesn't exist. */ - KAction* action(const BookmarkAction &bmAction); + KAction* action(const KBookmark &bookmark, const BookmarkAction &bmAction); /** * @return the current page's title. @@ -113,19 +112,16 @@ public: virtual void openFolderinTabs(const KBookmarkGroup &bookmark); public Q_SLOTS: - void setCurrentBookmark(const KBookmark &bookmark); - void unsetCurrentBookmark(); - - void openBookmark(const KBookmark &bookmark = KBookmark()); - void openBookmarkInNewTab(const KBookmark &bookmark = KBookmark()); - void openBookmarkInNewWindow(const KBookmark &bookmark = KBookmark()); - void openBookmarkFolder(const KBookmark &bookmark = KBookmark()); + void openBookmark(const KBookmark &bookmark); + void openBookmarkInNewTab(const KBookmark &bookmark); + void openBookmarkInNewWindow(const KBookmark &bookmark); + void openBookmarkFolder(const KBookmark &bookmark); KBookmark bookmarkCurrentPage(const KBookmark &bookmark = KBookmark()); KBookmarkGroup newBookmarkFolder(const KBookmark &bookmark = KBookmark()); KBookmark newSeparator(const KBookmark &bookmark = KBookmark()); - void copyLink(const KBookmark &bookmark = KBookmark()); - void editBookmark(KBookmark bookmark = KBookmark()); - bool deleteBookmark(KBookmark bookmark = KBookmark()); + void copyLink(const KBookmark &bookmark); + void editBookmark(KBookmark bookmark); + bool deleteBookmark(KBookmark bookmark); Q_SIGNALS: /** @@ -135,15 +131,34 @@ Q_SIGNALS: void openUrl(const KUrl &, const Rekonq::OpenType &); private: - void setupActions(); - void createAction(const BookmarkAction &action, - const QString &text, const QString &icon, - const QString &help, const char *slot); + KAction* createAction(const QString &text, const QString &icon, + const QString &help, const char *slot, + const KBookmark &bookmark); KBookmarkManager *m_manager; - QVector<KAction*> m_actions; - KBookmark m_currentBookmark; +}; + + +// ----------------------------------------------------------------------------------------------- + + +class CustomBookmarkAction : public KAction +{ + Q_OBJECT + +public: + CustomBookmarkAction(const KBookmark &bookmark, const KIcon &icon, const QString &text, QObject *parent); + ~CustomBookmarkAction(); + +Q_SIGNALS: + void triggered(const KBookmark &); + +private Q_SLOTS: + void onActionTriggered(); + +private: + KBookmark m_bookmark; }; #endif // BOOKMARKOWNER_H diff --git a/src/bookmarks/bookmarkscontextmenu.cpp b/src/bookmarks/bookmarkscontextmenu.cpp index 8f1a570c..93df6ce3 100644 --- a/src/bookmarks/bookmarkscontextmenu.cpp +++ b/src/bookmarks/bookmarkscontextmenu.cpp @@ -35,35 +35,33 @@ BookmarksContextMenu::BookmarksContextMenu(const KBookmark &bookmark, KBookmarkM : KBookmarkContextMenu(bookmark, manager, owner, parent) , m_bmOwner(owner) { - m_bmOwner->setCurrentBookmark(bookmark); } BookmarksContextMenu::~BookmarksContextMenu() { - m_bmOwner->unsetCurrentBookmark(); } void BookmarksContextMenu::addBookmarkActions() { - addAction(m_bmOwner->action(BookmarkOwner::OPEN_IN_TAB)); - addAction(m_bmOwner->action(BookmarkOwner::OPEN_IN_WINDOW)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::OPEN_IN_TAB)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::OPEN_IN_WINDOW)); addSeparator(); - addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::BOOKMARK_PAGE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_FOLDER)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_SEPARATOR)); addSeparator(); - addAction(m_bmOwner->action(BookmarkOwner::COPY)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::COPY)); addSeparator(); - addAction(m_bmOwner->action(BookmarkOwner::EDIT)); - addAction(m_bmOwner->action(BookmarkOwner::DELETE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::EDIT)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::DELETE)); } @@ -82,39 +80,39 @@ void BookmarksContextMenu::addFolderActions() if (!child.isNull()) { - addAction(m_bmOwner->action(BookmarkOwner::OPEN_FOLDER)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::OPEN_FOLDER)); addSeparator(); } } - addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::BOOKMARK_PAGE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_FOLDER)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_SEPARATOR)); addSeparator(); - addAction(m_bmOwner->action(BookmarkOwner::EDIT)); - addAction(m_bmOwner->action(BookmarkOwner::DELETE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::EDIT)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::DELETE)); } void BookmarksContextMenu::addSeparatorActions() { - addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::BOOKMARK_PAGE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_FOLDER)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_SEPARATOR)); addSeparator(); - addAction(m_bmOwner->action(BookmarkOwner::DELETE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::DELETE)); } void BookmarksContextMenu::addNullActions() { - addAction(m_bmOwner->action(BookmarkOwner::BOOKMARK_PAGE)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_FOLDER)); - addAction(m_bmOwner->action(BookmarkOwner::NEW_SEPARATOR)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::BOOKMARK_PAGE)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_FOLDER)); + addAction(m_bmOwner->action(bookmark(), BookmarkOwner::NEW_SEPARATOR)); } diff --git a/src/bookmarks/bookmarkstoolbar.cpp b/src/bookmarks/bookmarkstoolbar.cpp index 60b59a3f..74f400d1 100644 --- a/src/bookmarks/bookmarkstoolbar.cpp +++ b/src/bookmarks/bookmarkstoolbar.cpp @@ -125,8 +125,6 @@ void BookmarkMenu::refill() void BookmarkMenu::addOpenFolderInTabs() { - // TODO: Needs to be ported to the new BookmarkOwner API - KAction *action; KBookmarkGroup group = manager()->findByAddress(parentAddress()).toGroup(); if (!group.first().isNull()) @@ -140,10 +138,7 @@ void BookmarkMenu::addOpenFolderInTabs() if (!bookmark.isNull()) { - action = new KAction(KIcon("tab-new"), i18n("Open Folder in Tabs"), this); - action->setHelpText(i18n("Open all bookmarks in this folder as new tabs.")); - connect(action, SIGNAL(triggered(bool)), this, SLOT(slotOpenFolderInTabs())); - parentMenu()->addAction(action); + parentMenu()->addAction(Application::bookmarkProvider()->bookmarkOwner()->action(group, BookmarkOwner::OPEN_FOLDER)); } } } |