]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/bookmarkselector.h
A small step in trying to make urlnavigator useable in kdelibs for the file dialog:
[dolphin.git] / src / bookmarkselector.h
index 3a967b5dc4ee2fbd8cd4aca3a769da427ed35555..a92f186ecf9186da1f20ca5ae04d00912f29e243 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  *
@@ -15,7 +14,7 @@
  *   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            *
  ***************************************************************************/
 
 #ifndef BOOKMARKSELECTOR_H
 
 #include <kbookmark.h>
 #include <urlbutton.h>
-//Added by qt3to4:
-#include <Q3PopupMenu>
 
 class UrlNavigator;
-class Q3PopupMenu;
+class KMenu;
 class KUrl;
 
 /**
@@ -37,7 +34,6 @@ class KUrl;
  * inside the bookmark selector.
  *
  * @see UrlNavigator
- * @author Peter Penz <peter.penz@gmx.at>
  */
 class BookmarkSelector : public UrlButton
 {
@@ -48,53 +44,67 @@ public:
      * @param parent Parent widget where the bookmark selector
      *               is embedded into.
      */
-    BookmarkSelector(UrlNavigator* parent);
+    BookmarkSelector(UrlNavigator* parent, KBookmarkManager* bookmarkManager);
 
     virtual ~BookmarkSelector();
 
     /**
-     * Updates the selection dependent from the given Url \a url. The
-     * Url must not match exactly to one of the available bookmarks:
-     * The bookmark which is equal to the Url or at least is a parent Url
-     * is selected. If there are more than one possible parent Url candidates,
-     * the bookmark which covers the bigger range of the Url is selected.
+     * Updates the selection dependent from the given URL \a url. The
+     * URL must not match exactly to one of the available bookmarks:
+     * The bookmark which is equal to the URL or at least is a parent URL
+     * is selected. If there are more than one possible parent URL candidates,
+     * the bookmark which covers the bigger range of the URL is selected.
      */
     void updateSelection(const KUrl& url);
 
-    /**
-     * Returns the index of the selected bookmark. To get
-     * the bookmark, use BookmarkSelector::selectedBookmark().
-     */
-    int selectedIndex() const { return m_selectedIndex; }
-
     /** Returns the selected bookmark. */
     KBookmark selectedBookmark() const;
 
+    /** @see QWidget::sizeHint() */
+    virtual QSize sizeHint() const;
+
+    /**
+     * Returns the base bookmark for the URL \a url.
+     * The base bookmark is defined as bookmark which is equal to
+     * the URL or at least is a parent URL. If there are more than
+     * one possible parent URL candidates, the bookmark which covers
+     * the bigger range of the URL is returned.
+     *
+     * Example: the url is '/home/peter/Documents/Music. Available
+     * bookmarks are:
+     * - /home/peter
+     * - /home/peter/Documents
+     *
+     * The base URL will be '/home/peter/Documents'.
+     */
+    static KBookmark baseBookmark(KBookmarkManager* bookmarkManager, const KUrl& url);
+
 signals:
     /**
      * Is send when a bookmark has been activated by the user.
-     * @param index Index of the selected bookmark.
+     * @param url URL of the selected bookmark.
      */
-    void bookmarkActivated(int index);
+    void bookmarkActivated(const KUrl& url);
 
 protected:
     /**
      * Draws the icon of the selected Url as content of the Url
      * selector.
      */
-    virtual void drawButton(QPainter* painter);
+    virtual void paintEvent(QPaintEvent* event);
 
 private slots:
     /**
-     * Updates the selected index and the icon if a bookmark
-     * has been activated by the user.
+     * Updates the selected index and the icon to the bookmark
+     * which is indicated by the triggered action \a action.
      */
-    void slotBookmarkActivated(int index);
+    void activateBookmark(QAction* action);
 
 private:
-    int m_selectedIndex;
-    Q3PopupMenu* m_bookmarksMenu;
-
+    QString m_selectedAddress;
+    UrlNavigator* m_urlNavigator;
+    KMenu* m_bookmarksMenu;
+    KBookmarkManager* m_bookmarkManager;
 };
 
 #endif