┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/bookmarkselector.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-03-03 13:03:15 +0000
committerPeter Penz <[email protected]>2007-03-03 13:03:15 +0000
commite26ba53471ea902d18e59a4a8fc52ccdf4c7b4ea (patch)
treecf7c1a59eb528c87c3135a4f02171c7c85e33c8e /src/bookmarkselector.cpp
parent9d24c28b4ba3ac62b698a53925f9747850959d63 (diff)
Assure that the root of the tree view always matchs to the bookmark shown in the URL navigator.
svn path=/trunk/KDE/kdebase/apps/; revision=638825
Diffstat (limited to 'src/bookmarkselector.cpp')
-rw-r--r--src/bookmarkselector.cpp64
1 files changed, 40 insertions, 24 deletions
diff --git a/src/bookmarkselector.cpp b/src/bookmarkselector.cpp
index aefb30d74..73950434d 100644
--- a/src/bookmarkselector.cpp
+++ b/src/bookmarkselector.cpp
@@ -73,31 +73,12 @@ BookmarkSelector::~BookmarkSelector()
void BookmarkSelector::updateSelection(const KUrl& url)
{
- KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
- KBookmark bookmark = root.first();
-
- int maxLength = 0;
- m_selectedIndex = -1;
-
- // Search the bookmark which is equal to the Url or at least is a parent Url.
- // If there are more than one possible parent Url candidates, choose the bookmark
- // which covers the bigger range of the Url.
- int i = 0;
- while (!bookmark.isNull()) {
- const KUrl bookmarkUrl = bookmark.url();
- if (bookmarkUrl.isParentOf(url)) {
- const int length = bookmarkUrl.prettyUrl().length();
- if (length > maxLength) {
- m_selectedIndex = i;
- setIcon(SmallIcon(bookmark.icon()));
- maxLength = length;
- }
- }
- bookmark = root.next(bookmark);
- ++i;
+ m_selectedIndex = baseBookmarkIndex(url);
+ if (m_selectedIndex >= 0) {
+ KBookmark bookmark = DolphinSettings::instance().bookmark(m_selectedIndex);
+ setIcon(SmallIcon(bookmark.icon()));
}
-
- if (m_selectedIndex < 0) {
+ else {
// No bookmark has been found which matches to the given Url. Show
// a generic folder icon as pixmap for indication:
setIcon(SmallIcon("folder"));
@@ -115,6 +96,12 @@ QSize BookmarkSelector::sizeHint() const
return QSize(height, height);
}
+KBookmark BookmarkSelector::baseBookmark(const KUrl& url)
+{
+ const int index = baseBookmarkIndex(url);
+ return DolphinSettings::instance().bookmark(index);
+}
+
void BookmarkSelector::paintEvent(QPaintEvent* /*event*/)
{
QPainter painter(this);
@@ -173,5 +160,34 @@ void BookmarkSelector::activateBookmark(QAction* action)
emit bookmarkActivated(bookmark.url());
}
+int BookmarkSelector::baseBookmarkIndex(const KUrl& url)
+{
+ int index = -1; // return value
+
+ KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
+ KBookmark bookmark = root.first();
+
+ int maxLength = 0;
+
+ // Search the bookmark which is equal to the Url or at least is a parent Url.
+ // If there are more than one possible parent Url candidates, choose the bookmark
+ // which covers the bigger range of the Url.
+ int i = 0;
+ while (!bookmark.isNull()) {
+ const KUrl bookmarkUrl = bookmark.url();
+ if (bookmarkUrl.isParentOf(url)) {
+ const int length = bookmarkUrl.prettyUrl().length();
+ if (length > maxLength) {
+ index = i;
+ maxLength = length;
+ }
+ }
+ bookmark = root.next(bookmark);
+ ++i;
+ }
+
+ return index;
+}
+
#include "bookmarkselector.moc"