From 3aa717e2c5e91f50648740e6c11e0657d77976fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20Ander=20Pe=C3=B1alba?= Date: Tue, 17 Aug 2010 21:44:27 +0200 Subject: All insertion and deletion of bookmarks code moved to the same place (BookmarkOwner) --- src/bookmarks/bookmarkscontextmenu.cpp | 89 +++-------------------------- src/bookmarks/bookmarkscontextmenu.h | 7 +-- src/bookmarks/bookmarksmanager.cpp | 100 +++++++++++++++++++++++++++++++++ src/bookmarks/bookmarksmanager.h | 22 ++++++++ 4 files changed, 132 insertions(+), 86 deletions(-) (limited to 'src') diff --git a/src/bookmarks/bookmarkscontextmenu.cpp b/src/bookmarks/bookmarkscontextmenu.cpp index c448d293..eaf4a9d9 100644 --- a/src/bookmarks/bookmarkscontextmenu.cpp +++ b/src/bookmarks/bookmarkscontextmenu.cpp @@ -26,16 +26,12 @@ // Self Includes #include "bookmarkscontextmenu.h" -#include "bookmarkscontextmenu.moc" // Local Includes -#include "application.h" #include "bookmarksmanager.h" // KDE Includes -#include #include -#include // Qt Includes #include @@ -218,12 +214,8 @@ void BookmarksContextMenu::deleteBookmark() void BookmarksContextMenu::editBookmark() { - KBookmark selected = bookmark(); - selected.setFullText(selected.fullText().replace("&&", "&")); - KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow()); - dialog->editBookmark(selected); - selected.setFullText(selected.fullText().replace('&', "&&")); - delete dialog; + KBookmark bm = bookmark(); + Application::bookmarkProvider()->bookmarkOwner()->editBookmark(bm); } @@ -236,86 +228,21 @@ void BookmarksContextMenu::openFolderInTabs() void BookmarksContextMenu::newBookmarkGroup() { - KBookmark selected = bookmark(); - KBookmarkDialog *dialog = owner()->bookmarkDialog(manager(), QApplication::activeWindow()); - - if (!selected.isNull()) - { - if (selected.isGroup()) - { - dialog->createNewFolder("New folder", selected); - } - - else - { - KBookmark newBk; - newBk = dialog->createNewFolder("New folder", selected.parentGroup()); - if (!newBk.isNull()) - { - selected.parentGroup().moveBookmark(newBk, selected); - manager()->emitChanged(newBk.parentGroup()); - } - } - } - else - { - dialog->createNewFolder("New folder"); - } - - delete dialog; + KBookmark bm = bookmark(); + Application::bookmarkProvider()->bookmarkOwner()->newBookmarkFolder(bm); } void BookmarksContextMenu::newSeparator() { - KBookmark selected = bookmark(); - KBookmark newBk; - - if (!selected.isNull()) - { - if (selected.isGroup()) - newBk = selected.toGroup().createNewSeparator(); - else - newBk = selected.parentGroup().createNewSeparator(); - } - - else - { - newBk = Application::bookmarkProvider()->rootGroup().createNewSeparator(); - } - - KBookmarkGroup parent = newBk.parentGroup(); - newBk.setIcon(("edit-clear")); - parent.addBookmark(newBk); - - if (!selected.isNull()) - parent.moveBookmark(newBk, selected); - - manager()->emitChanged(newBk.parentGroup()); + KBookmark bm = bookmark(); + Application::bookmarkProvider()->bookmarkOwner()->newSeparator(bm); } void BookmarksContextMenu::bookmarkCurrentPage() { - KBookmarkGroup parent = Application::bookmarkProvider()->rootGroup(); - KBookmark selected = bookmark(); - - if (!selected.isNull()) - { - parent = selected.parentGroup(); - - if (selected.isGroup()) - parent = selected.toGroup(); - - KBookmark newBk = parent.addBookmark(owner()->currentTitle().replace('&', "&&"), KUrl(owner()->currentUrl())); - parent.moveBookmark(newBk, selected.parentGroup().previous(selected)); - } - - else - { - parent.addBookmark(owner()->currentTitle(), KUrl(owner()->currentUrl())); - } - - manager()->emitChanged(parent); + KBookmark bm = bookmark(); + Application::bookmarkProvider()->bookmarkOwner()->bookmarkPage(bm); } diff --git a/src/bookmarks/bookmarkscontextmenu.h b/src/bookmarks/bookmarkscontextmenu.h index 2ef8e5a7..c32c5962 100644 --- a/src/bookmarks/bookmarkscontextmenu.h +++ b/src/bookmarks/bookmarkscontextmenu.h @@ -27,10 +27,7 @@ #ifndef BOOKMARKCONTEXTMENU_H #define BOOKMARKCONTEXTMENU_H -// Local Includes -#include "application.h" - -// Qt Includes +// KDE Includes #include @@ -41,7 +38,7 @@ class BookmarksContextMenu : public KBookmarkContextMenu public: BookmarksContextMenu(const KBookmark & bk, KBookmarkManager * manager, KBookmarkOwner *owner, QWidget * parent = 0); ~BookmarksContextMenu(); - + virtual void addActions(); private slots: diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 221a6db1..d50e9e77 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -41,6 +41,7 @@ // KDE Includes #include #include +#include #include #include #include @@ -75,6 +76,105 @@ void BookmarkOwner::openBookmark(const KBookmark & bookmark, } +void BookmarkOwner::bookmarkPage(KBookmark &position) +{ + BookmarkOwner *owner = Application::bookmarkProvider()->bookmarkOwner(); + KBookmarkGroup parent = Application::bookmarkProvider()->rootGroup(); + + if (!position.isNull()) + { + parent = position.parentGroup(); + + if (position.isGroup()) + parent = position.toGroup(); + + KBookmark newBk = parent.addBookmark(owner->currentTitle().replace('&', "&&"), KUrl(owner->currentUrl())); + parent.moveBookmark(newBk, position.parentGroup().previous(position)); + } + + else + { + parent.addBookmark(owner->currentTitle(), KUrl(owner->currentUrl())); + } + + Application::bookmarkProvider()->bookmarkManager()->emitChanged(parent); +} + + +void BookmarkOwner::newBookmarkFolder(KBookmark &position) +{ + BookmarkOwner *owner = Application::bookmarkProvider()->bookmarkOwner(); + KBookmarkManager *manager = Application::bookmarkProvider()->bookmarkManager(); + + KBookmarkDialog *dialog = owner->bookmarkDialog(manager, QApplication::activeWindow()); + + if (!position.isNull()) + { + if (position.isGroup()) + { + dialog->createNewFolder("New folder", position); + } + + else + { + KBookmark newBk; + newBk = dialog->createNewFolder("New folder", position.parentGroup()); + if (!newBk.isNull()) + { + position.parentGroup().moveBookmark(newBk, position); + manager->emitChanged(newBk.parentGroup()); + } + } + } + else + { + dialog->createNewFolder("New folder"); + } + + delete dialog; +} + + +void BookmarkOwner::newSeparator(KBookmark &position) +{ + KBookmark newBk; + + if (!position.isNull()) + { + if (position.isGroup()) + newBk = position.toGroup().createNewSeparator(); + else + newBk = position.parentGroup().createNewSeparator(); + } + + else + { + newBk = Application::bookmarkProvider()->rootGroup().createNewSeparator(); + } + + KBookmarkGroup parent = newBk.parentGroup(); + newBk.setIcon(("edit-clear")); + parent.addBookmark(newBk); + + if (!position.isNull()) + parent.moveBookmark(newBk, position); + + Application::bookmarkProvider()->bookmarkManager()->emitChanged(newBk.parentGroup()); +} + + +void BookmarkOwner::editBookmark(KBookmark &bookmark) +{ + BookmarkOwner *owner = Application::bookmarkProvider()->bookmarkOwner(); + KBookmarkManager *manager = Application::bookmarkProvider()->bookmarkManager(); + bookmark.setFullText(bookmark.fullText().replace("&&", "&")); + KBookmarkDialog *dialog = owner->bookmarkDialog(manager, QApplication::activeWindow()); + dialog->editBookmark(bookmark); + bookmark.setFullText(bookmark.fullText().replace('&', "&&")); + delete dialog; +} + + bool BookmarkOwner::deleteBookmark(KBookmark &bookmark) { QString name = QString(bookmark.fullText()).replace("&&", "&"); diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index 6f97e4ef..19bfe5d2 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -90,6 +90,28 @@ public: Qt::MouseButtons mouseButtons, Qt::KeyboardModifiers keyboardModifiers); + + /** + * Bookmarks the current page. + * @param position Where to insert the bookmark. + */ + static void bookmarkPage(KBookmark &position); + /** + * Creates a new bookmark folder. + * @param position Where to insert the folder. + */ + static void newBookmarkFolder(KBookmark &position); + /** + * Creates a new separator. + * @param position Where to insert the separator. + */ + static void newSeparator(KBookmark &position); + + /** + * Opens the edit dialog for a bookmark. + * @param bookmark The bookmark to edit. + */ + static void editBookmark(KBookmark &bookmark); /** * Promps the user to delete a bookmark. * @param bookmark The bookmark to delete. -- cgit v1.2.1