]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontroller.h
fixed some activation issues in combination with split views
[dolphin.git] / src / dolphincontroller.h
index bde01c28ecd378f7cfe5ebbf402156905842c288..ccf4e48795f17a7b7fa8673ccb588b4c4b554d60 100644 (file)
@@ -22,7 +22,8 @@
 
 #include <dolphinview.h>
 #include <kurl.h>
-#include <QObject>
+#include <QtCore/QObject>
+#include <libdolphin_export.h>
 
 class KUrl;
 class QModelIndex;
@@ -45,7 +46,7 @@ class QPoint;
  * when an item should be triggered and a lot more. The controller emits the corresponding signals
  * so that the receiver may react on those changes.
  */
-class DolphinController : public QObject
+class LIBDOLPHINPRIVATE_EXPORT DolphinController : public QObject
 {
     Q_OBJECT
 
@@ -53,23 +54,52 @@ public:
     explicit DolphinController(QObject* parent);
     virtual ~DolphinController();
 
-    void setUrl(const KUrl& url) { m_url = url; }
-    const KUrl& url() const { return m_url; }
+    inline void setUrl(const KUrl& url);
+    inline const KUrl& url() const;
 
     void triggerContextMenuRequest(const QPoint& pos);
 
     void triggerActivation();
 
     void indicateDroppedUrls(const KUrl::List& urls,
-                             const QPoint& pos);
+                             const QModelIndex& index,
+                             QWidget* source);
 
     void indicateSortingChange(DolphinView::Sorting sorting);
 
     void indicateSortOrderChange(Qt::SortOrder order);
 
+    void setShowPreview(bool show);
+    inline bool showPreview() const;
+
+    void setShowAdditionalInfo(bool show);
+    inline bool showAdditionalInfo() const;
+
+    void triggerZoomIn();
+    inline void setZoomInPossible(bool possible);
+    inline bool isZoomInPossible() const;
+
+    void triggerZoomOut();
+    inline void setZoomOutPossible(bool possible);
+    inline bool isZoomOutPossible() const;
+
 public slots:
+    /**
+     * Emits the signal itemTriggered(). The method should be invoked by the
+     * controller parent whenever the user has triggered an item. */
     void triggerItem(const QModelIndex& index);
-    void indicateSelectionChange();
+
+    /**
+     * Emits the signal itemEntered(). The method should be invoked by
+     * the controller parent whenever the mouse cursor is above an item.
+     */
+    void emitItemEntered(const QModelIndex& index);
+
+    /**
+     * Emits the signal viewportEntered(). The method should be invoked by
+     * the controller parent whenever the mouse cursor is above the viewport.
+     */
+    void emitViewportEntered();
 
 signals:
     /**
@@ -87,14 +117,13 @@ signals:
     void activated();
 
     /**
-     * Is emitted if the URLs \a urls have been dropped.
-     * @param pos Position relative to the view widget where the
-     *            dropping has been done. It is recommended
-     *            to get the corresponding model index from
-     *            this position to find out the destination.
+     * Is emitted if the URLs \a urls have been dropped to the index
+     * \a index. \a source indicates the widget where the dragging has
+     * been started from.
      */
     void urlsDropped(const KUrl::List& urls,
-                     const QPoint& pos);
+                     const QModelIndex& index,
+                     QWidget* source);
 
     /** Is emitted if the sorting has been changed to \a sorting. */
     void sortingChanged(DolphinView::Sorting sorting);
@@ -102,6 +131,18 @@ signals:
     /** Is emitted if the sort order has been changed to \a sort order. */
     void sortOrderChanged(Qt::SortOrder order);
 
+    /**
+     * Is emitted if the state for showing previews has been
+     * changed to \a show.
+     */
+    void showPreviewChanged(bool show);
+
+    /**
+     * Is emitted if the state for showing additional info has been
+     * changed to \a show.
+     */
+    void showAdditionalInfoChanged(bool show);
+
     /**
      * Is emitted if the item with the index \a index should be triggered.
      * Usually triggering on a directory opens the directory, triggering
@@ -109,11 +150,69 @@ signals:
      */
     void itemTriggered(const QModelIndex& index);
 
-    /** Is emitted if the selection has been changed by the user. */
-    void selectionChanged();
+    /**
+     * Is emitted if the mouse cursor has entered the item
+     * given by \a index.
+     */
+    void itemEntered(const QModelIndex& index);
+
+    /**
+     * Is emitted if the mouse cursor has entered
+     * the viewport. */
+    void viewportEntered();
+
+    /** Is emitted if the view should zoom in. */
+    void zoomIn();
+
+    /** Is emitted if the view should zoom out. */
+    void zoomOut();
 
 private:
+    bool m_showPreview;
+    bool m_showAdditionalInfo;
+    bool m_zoomInPossible;
+    bool m_zoomOutPossible;
     KUrl m_url;
 };
 
+void DolphinController::setUrl(const KUrl& url)
+{
+    m_url = url;
+}
+
+const KUrl& DolphinController::url() const
+{
+    return m_url;
+}
+
+bool DolphinController::showPreview() const
+{
+    return m_showPreview;
+}
+
+bool DolphinController::showAdditionalInfo() const
+{
+    return m_showAdditionalInfo;
+}
+
+void DolphinController::setZoomInPossible(bool possible)
+{
+    m_zoomInPossible = possible;
+}
+
+bool DolphinController::isZoomInPossible() const
+{
+    return m_zoomInPossible;
+}
+
+void DolphinController::setZoomOutPossible(bool possible)
+{
+    m_zoomOutPossible = possible;
+}
+
+bool DolphinController::isZoomOutPossible() const
+{
+    return m_zoomOutPossible;
+}
+
 #endif