]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/bookmarkselector.cpp
Allow zooming in and zooming out in the icons view.
[dolphin.git] / src / bookmarkselector.cpp
index 73e063fdaa66dee97c5c61452baa1a16bce81a11..aefb30d749ed4c7345f4b9ad605a175f73937441 100644 (file)
@@ -1,6 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006 by Peter Penz                                      *
- *   peter.penz@gmx.at                                                     *
+ *   Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at)                  *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
  ***************************************************************************/
 
+#include "bookmarkselector.h"
+
+#include "dolphinsettings.h"
+#include "urlnavigator.h"
 
 #include <assert.h>
-#include <q3popupmenu.h>
-#include <qpainter.h>
-#include <qpixmap.h>
 
 #include <kiconloader.h>
 #include <kglobalsettings.h>
 #include <kbookmarkmanager.h>
+#include <kmenu.h>
+#include <kdebug.h>
 
-#include "bookmarkselector.h"
-#include "dolphinsettings.h"
-#include "dolphinview.h"
-#include "dolphin.h"
-#include "urlnavigator.h"
+#include <QPainter>
+#include <QPixmap>
 
 BookmarkSelector::BookmarkSelector(UrlNavigator* parent) :
     UrlButton(parent),
-    m_selectedIndex(0)
+    m_selectedIndex(0),
+    m_urlNavigator(parent)
 {
     setFocusPolicy(Qt::NoFocus);
 
-    m_bookmarksMenu = new Q3PopupMenu(this);
+    m_bookmarksMenu = new KMenu(this);
 
     KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root();
     KBookmark bookmark = root.first();
     int i = 0;
     while (!bookmark.isNull()) {
-        m_bookmarksMenu->insertItem(MainBarIcon(bookmark.icon()),
-                                    bookmark.text(),
-                                    i);
+        QAction* action = new QAction(MainBarIcon(bookmark.icon()),
+                                      bookmark.text(),
+                                      this);
+        action->setData(i);
+        m_bookmarksMenu->addAction(action);
         if (i == m_selectedIndex) {
             QPixmap pixmap = SmallIcon(bookmark.icon());
-            setPixmap(pixmap);
+            setIcon(QIcon(pixmap));
+            setIconSize(pixmap.size());
             setMinimumWidth(pixmap.width() + 2);
         }
         bookmark = root.next(bookmark);
         ++i;
     }
 
-    connect(m_bookmarksMenu, SIGNAL(activated(int)),
-            this, SLOT(slotBookmarkActivated(int)));
+    connect(m_bookmarksMenu, SIGNAL(triggered(QAction*)),
+            this, SLOT(activateBookmark(QAction*)));
 
-    setPopup(m_bookmarksMenu);
+    setMenu(m_bookmarksMenu);
 }
 
 BookmarkSelector::~BookmarkSelector()
@@ -86,7 +89,7 @@ void BookmarkSelector::updateSelection(const KUrl& url)
             const int length = bookmarkUrl.prettyUrl().length();
             if (length > maxLength) {
                 m_selectedIndex = i;
-                setPixmap(SmallIcon(bookmark.icon()));
+                setIcon(SmallIcon(bookmark.icon()));
                 maxLength = length;
             }
         }
@@ -97,7 +100,7 @@ void BookmarkSelector::updateSelection(const KUrl& url)
     if (m_selectedIndex < 0) {
         // No bookmark has been found which matches to the given Url. Show
         // a generic folder icon as pixmap for indication:
-        setPixmap(SmallIcon("folder"));
+        setIcon(SmallIcon("folder"));
     }
 }
 
@@ -112,7 +115,7 @@ QSize BookmarkSelector::sizeHint() const
     return QSize(height, height);
 }
 
-void BookmarkSelector::paintEvent(QPaintEvent* event)
+void BookmarkSelector::paintEvent(QPaintEvent* /*event*/)
 {
     QPainter painter(this);
 
@@ -128,17 +131,14 @@ void BookmarkSelector::paintEvent(QPaintEvent* event)
         foregroundColor = KGlobalSettings::highlightedTextColor();
     }
     else {
-        backgroundColor = colorGroup().background();
+        backgroundColor = palette().brush(QPalette::Background).color();
         foregroundColor = KGlobalSettings::buttonTextColor();
     }
 
     // dimm the colors if the parent view does not have the focus
-    const DolphinView* parentView = urlNavigator()->dolphinView();
-    const Dolphin& dolphin = Dolphin::mainWin();
-
-    const bool isActive = (dolphin.activeView() == parentView);
+    const bool isActive = m_urlNavigator->isActive();
     if (!isActive) {
-        QColor dimmColor(colorGroup().background());
+        QColor dimmColor(palette().brush(QPalette::Background).color());
         foregroundColor = mixColors(foregroundColor, dimmColor);
         if (isHighlighted) {
             backgroundColor = mixColors(backgroundColor, dimmColor);
@@ -163,14 +163,14 @@ void BookmarkSelector::paintEvent(QPaintEvent* event)
     painter.drawPixmap(x, y, pixmap);
 }
 
-void BookmarkSelector::slotBookmarkActivated(int index)
+void BookmarkSelector::activateBookmark(QAction* action)
 {
-    m_selectedIndex = index;
+    assert(action != 0);
+    m_selectedIndex = action->data().toInt();
 
-    KBookmark bookmark = selectedBookmark();
+    const KBookmark bookmark = selectedBookmark();
     setPixmap(SmallIcon(bookmark.icon()));
-
-    emit bookmarkActivated(index);
+    emit bookmarkActivated(bookmark.url());
 }
 
 #include "bookmarkselector.moc"