#include <QPainter>
#include <QPixmap>
+#include <kicon.h>
BookmarkSelector::BookmarkSelector(UrlNavigator* parent, KBookmarkManager* bookmarkManager) :
UrlButton(parent),
void BookmarkSelector::updateSelection(const KUrl& url)
{
- KBookmark bookmark = baseBookmark(m_bookmarkManager, url);
+ KBookmark bookmark = m_bookmarkManager->root().closestBookmark(url);
if (!bookmark.isNull()) {
m_selectedAddress = bookmark.address();
- setIcon(SmallIcon(bookmark.icon()));
+ setIcon(KIcon(bookmark.icon()));
}
else {
m_selectedAddress = QString();
// No bookmark has been found which matches to the given Url. Show
// a generic folder icon as pixmap for indication:
- setIcon(SmallIcon("folder"));
+ setIcon(KIcon("folder"));
}
}
return QSize(height, height);
}
-KBookmark BookmarkSelector::baseBookmark(KBookmarkManager* bookmarkManager, const KUrl& url)
-{
- const KBookmarkGroup root = bookmarkManager->root();
- KBookmark bookmark = root.first();
- KBookmark foundBookmark;
-
- 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) {
- foundBookmark = bookmark;
- maxLength = length;
- }
- }
- bookmark = root.next(bookmark);
- ++i;
- }
-
- return foundBookmark;
-}
-
void BookmarkSelector::paintEvent(QPaintEvent* /*event*/)
{
QPainter painter(this);