diff options
Diffstat (limited to 'src/bookmarks')
-rw-r--r-- | src/bookmarks/bookmarkcontextmenu.cpp | 7 | ||||
-rw-r--r-- | src/bookmarks/bookmarksmanager.cpp | 44 | ||||
-rw-r--r-- | src/bookmarks/bookmarksmanager.h | 5 | ||||
-rw-r--r-- | src/bookmarks/bookmarkstreemodel.cpp | 12 |
4 files changed, 58 insertions, 10 deletions
diff --git a/src/bookmarks/bookmarkcontextmenu.cpp b/src/bookmarks/bookmarkcontextmenu.cpp index 96668003..019d9eb9 100644 --- a/src/bookmarks/bookmarkcontextmenu.cpp +++ b/src/bookmarks/bookmarkcontextmenu.cpp @@ -268,8 +268,11 @@ void BookmarkContextMenu::newBookmarkGroup() { KBookmark newBk; newBk = dialog->createNewFolder("New folder", selected.parentGroup()); - selected.parentGroup().moveBookmark(newBk, selected); - manager()->emitChanged(newBk.parentGroup()); + if (!newBk.isNull()) + { + selected.parentGroup().moveBookmark(newBk, selected); + manager()->emitChanged(newBk.parentGroup()); + } } } else diff --git a/src/bookmarks/bookmarksmanager.cpp b/src/bookmarks/bookmarksmanager.cpp index 792baaeb..bba9dd77 100644 --- a/src/bookmarks/bookmarksmanager.cpp +++ b/src/bookmarks/bookmarksmanager.cpp @@ -388,13 +388,15 @@ BookmarkProvider::~BookmarkProvider() void BookmarkProvider::setupBookmarkBar(BookmarkToolBar *toolbar) { + if (m_bookmarkToolBars.contains(toolbar)) + return; + kDebug() << "new bookmark bar..."; - + m_bookmarkToolBars.append(toolbar); toolbar->setContextMenuPolicy(Qt::CustomContextMenu); connect(toolbar, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &))); - slotBookmarksChanged("", ""); kDebug() << "new bookmark bar... DONE!"; } @@ -591,3 +593,41 @@ void BookmarkProvider::slotPanelChanged() panel->startLoadFoldedState(); } } + + +KBookmark BookmarkProvider::bookmarkForUrl(const KUrl &url) +{ + KBookmark found; + + KBookmarkGroup root = rootGroup(); + if (root.isNull()) + { + return found; + } + + return bookmarkForUrl(root, url); +} + + +KBookmark BookmarkProvider::bookmarkForUrl(const KBookmark &bookmark, const KUrl &url) +{ + KBookmark found; + + if (bookmark.isGroup()) + { + KBookmarkGroup group = bookmark.toGroup(); + KBookmark bookmark = group.first(); + + while (!bookmark.isNull() && found.isNull()) + { + found = bookmarkForUrl(bookmark, url); + bookmark = group.next(bookmark); + } + } + else if (!bookmark.isSeparator() && bookmark.url() == url) + { + found = bookmark; + } + + return found; +} diff --git a/src/bookmarks/bookmarksmanager.h b/src/bookmarks/bookmarksmanager.h index 72ea1c3c..eeb5391d 100644 --- a/src/bookmarks/bookmarksmanager.h +++ b/src/bookmarks/bookmarksmanager.h @@ -271,6 +271,8 @@ public: void registerBookmarkPanel(BookmarksPanel *panel); void removeBookmarkPanel(BookmarksPanel *panel); + KBookmark bookmarkForUrl(const KUrl &url); + signals: /** * @short This signal is emitted when an url has to be loaded @@ -305,6 +307,9 @@ private slots: private: QList<KBookmark> find(QList<KBookmark> list, const KBookmark &bookmark, QString text); + QString titleForBookmarkUrl(const KBookmark &bookmark, const QString &url); + KBookmark bookmarkForUrl(const KBookmark &bookmark, const KUrl &url); + KBookmarkManager *m_manager; BookmarkOwner *m_owner; KActionCollection *m_actionCollection; diff --git a/src/bookmarks/bookmarkstreemodel.cpp b/src/bookmarks/bookmarkstreemodel.cpp index 7063bf9b..299efaf0 100644 --- a/src/bookmarks/bookmarkstreemodel.cpp +++ b/src/bookmarks/bookmarkstreemodel.cpp @@ -406,15 +406,15 @@ bool BookmarksTreeModel::dropMimeData(const QMimeData *data, Qt::DropAction acti if (parent.isValid()) root = bookmarkForIndex(parent).toGroup(); - if (!destIndex.isValid()) + if (destIndex.isValid() && row != -1) { - root.deleteBookmark(bookmark); - root.addBookmark(bookmark); - } + root.moveBookmark(bookmark, root.previous(dropDestBookmark)); - else if (row != 1) + } + else { - root.moveBookmark(bookmark, root.previous(dropDestBookmark)); + root.deleteBookmark(bookmark); + root.addBookmark(bookmark); } Application::bookmarkProvider()->bookmarkManager()->emitChanged(); |