]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.h
Mirror details view mode for right-to-left languages
[dolphin.git] / src / views / dolphinview.h
index d47825fe05aa50d88b49172b86a0adc4dff7e31a..d1667334e30d39336dd7dd05284f599ff735e409 100644 (file)
@@ -14,7 +14,7 @@
 
 #include "config-dolphin.h"
 #include <KFileItem>
-#include <KIO/Job>
+#include <KIO/StatJob>
 #include <kio/fileundomanager.h>
 #include <kparts/part.h>
 
@@ -205,9 +205,17 @@ public:
      */
     void resetZoomLevel();
 
+    /**
+     * Updates the view properties of the current URL to the
+     * sorting given by \a role.
+     */
     void setSortRole(const QByteArray &role);
     QByteArray sortRole() const;
 
+    /**
+     * Updates the view properties of the current URL to the
+     * sort order given by \a order.
+     */
     void setSortOrder(Qt::SortOrder order);
     Qt::SortOrder sortOrder() const;
 
@@ -225,8 +233,6 @@ public:
     /** Returns the additional information which should be shown for the items. */
     QList<QByteArray> visibleRoles() const;
 
-    void reload();
-
     /**
      * Refreshes the view to get synchronized with the settings (e.g. icons size,
      * font, ...).
@@ -335,7 +341,26 @@ public:
      */
     void hideToolTip(const ToolTipManager::HideBehavior behavior = ToolTipManager::HideBehavior::Later);
 
+    /**
+     * Check if the space key should be handled as a normal key, even if it's
+     * used as a keyboard shortcut.
+     *
+     * See BUG 465489
+     */
+    bool handleSpaceAsNormalKey() const;
+
+    /** Activates the view if the item list container gets focus. */
+    bool eventFilter(QObject *watched, QEvent *event) override;
+
+    /**
+     * Returns whether the folder represented by the current URL is writable.
+     */
+    bool isFolderWritable() const;
+
 public Q_SLOTS:
+
+    void reload();
+
     /**
      * Changes the directory to \a url. If the current directory is equal to
      * \a url, nothing will be done (use DolphinView::reload() instead).
@@ -426,9 +451,6 @@ public Q_SLOTS:
      */
     void updateViewState();
 
-    /** Activates the view if the item list container gets focus. */
-    bool eventFilter(QObject *watched, QEvent *event) override;
-
 Q_SIGNALS:
     /**
      * Is emitted if the view has been activated by e. g. a mouse click.
@@ -443,6 +465,12 @@ Q_SIGNALS:
      */
     void itemActivated(const KFileItem &item);
 
+    /**
+     * Is emitted when clicking on a file with the middle mouse button.
+     * @note: This will not be emitted for folders or file archives that will/can be opened like folders.
+     */
+    void fileMiddleClickActivated(const KFileItem &item);
+
     /**
      * Is emitted when multiple items have been activated by e. g.
      * context menu open with.
@@ -539,7 +567,7 @@ Q_SIGNALS:
      * Is emitted if an error message with the content \a msg
      * should be shown.
      */
-    void errorMessage(const QString &msg);
+    void errorMessage(const QString &message, const int kioErrorCode);
 
     /**
      * Is emitted if an "operation completed" message with the content \a msg
@@ -637,6 +665,12 @@ Q_SIGNALS:
      */
     void currentDirectoryRemoved();
 
+    /**
+     * Emitted when the view's background is double-clicked.
+     * Used to trigger an user configured action.
+     */
+    void doubleClickViewBackground(Qt::MouseButton button);
+
 protected:
     /** Changes the zoom level if Control is pressed during a wheel event. */
     void wheelEvent(QWheelEvent *event) override;
@@ -658,15 +692,15 @@ private Q_SLOTS:
     void slotViewContextMenuRequested(const QPointF &pos);
     void slotHeaderContextMenuRequested(const QPointF &pos);
     void slotHeaderColumnWidthChangeFinished(const QByteArray &role, qreal current);
-    void slotSidePaddingWidthChanged(qreal width);
+    void slotSidePaddingWidthChanged(qreal leftPaddingWidth, qreal rightPaddingWidth);
     void slotItemHovered(int index);
     void slotItemUnhovered(int index);
     void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent *event);
     void slotModelChanged(KItemModelBase *current, KItemModelBase *previous);
     void slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons);
-    void slotRenameDialogRenamingFinished(const QList<QUrl> &urls);
     void slotSelectedItemTextPressed(int index);
-    void slotCopyingDone(KIO::Job *, const QUrl &, const QUrl &to);
+    void slotItemCreatedFromJob(KIO::Job *, const QUrl &, const QUrl &to);
+    void slotItemLinkCreatedFromJob(KIO::Job *, const QUrl &, const QString &, const QUrl &to);
     void slotIncreaseZoom();
     void slotDecreaseZoom();
     void slotSwipeUp();
@@ -704,18 +738,6 @@ private Q_SLOTS:
      */
     void slotStatJobResult(KJob *job);
 
-    /**
-     * Updates the view properties of the current URL to the
-     * sorting given by \a role.
-     */
-    void updateSortRole(const QByteArray &role);
-
-    /**
-     * Updates the view properties of the current URL to the
-     * sort order given by \a order.
-     */
-    void updateSortOrder(Qt::SortOrder order);
-
     /**
      * Updates the view properties of the current URL to the
      * sorting of files and folders (separate with folders first or mixed) given by \a foldersFirst.
@@ -809,6 +831,8 @@ private Q_SLOTS:
 
     void slotTwoClicksRenamingTimerTimeout();
 
+    void onDirectoryLoadingCompletedAfterJob();
+
 private:
     void loadDirectory(const QUrl &url, bool reload = false);
 
@@ -863,7 +887,7 @@ private:
     /**
      * Updates m_isFolderWritable dependent on whether the folder represented by
      * the current URL is writable. If the state has changed, the signal
-     * writeableStateChanged() will be emitted.
+     * writeStateChanged() will be emitted.
      */
     void updateWritableState();
 
@@ -928,9 +952,11 @@ private:
     // resolution scroll wheels)
     int m_controlWheelAccumulatedDelta;
 
-    QList<QUrl> m_selectedUrls; // Used for making the view to remember selections after F5
+    QList<QUrl> m_selectedUrls; // Used for making the view to remember selections after F5 and file operations
     bool m_clearSelectionBeforeSelectingNewItems;
     bool m_markFirstNewlySelectedItemAsCurrent;
+    /// Decides whether items created by jobs should automatically be selected.
+    bool m_selectJobCreatedItems;
 
     VersionControlObserver *m_versionControlObserver;
 
@@ -940,7 +966,7 @@ private:
     QTimer *m_showLoadingPlaceholderTimer;
 
     /// The information roleIndex of the list column header currently hovered
-    std::optional<int> m_hoveredColumnHeaderRoleIndex;
+    std::optional<int> m_hoveredColumnHeaderIndex;
 
     /// Used for selection mode. @see setSelectionMode()
     std::unique_ptr<QProxyStyle> m_proxyStyle;
@@ -950,6 +976,7 @@ private:
     friend class DolphinDetailsViewTest;
     friend class DolphinMainWindowTest;
     friend class DolphinPart; // Accesses m_model
+    void updateSelectionState();
 };
 
 /// Allow using DolphinView::Mode in QVariant