]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.h
Apply 1 suggestion(s) to 1 file(s)
[dolphin.git] / src / dolphinviewcontainer.h
index 89fd697607422ff6344f4c84ac9cf5cb0fd5bbd8..a509bab3d91a514517205ed2c24a1865621505a7 100644 (file)
 
 #include <KFileItem>
 #include <KIO/Job>
+#include <KMessageWidget>
 #include <KUrlNavigator>
 
 #include <QElapsedTimer>
 #include <QPushButton>
 #include <QWidget>
 
+#include <initializer_list>
+
+namespace Admin
+{
+class Bar;
+}
 class FilterBar;
-class KMessageWidget;
 class QAction;
 class QGridLayout;
 class QUrl;
 class DolphinSearchBox;
 class DolphinStatusBar;
+class KFileItemList;
 namespace SelectionMode
 {
 class TopBar;
@@ -49,8 +56,6 @@ class DolphinViewContainer : public QWidget
     Q_OBJECT
 
 public:
-    enum MessageType { Information, Warning, Error };
-
     DolphinViewContainer(const QUrl &url, QWidget *parent);
     ~DolphinViewContainer() override;
 
@@ -147,17 +152,18 @@ public:
     bool isSelectionModeEnabled() const;
 
     /**
-     * Shows the message \msg with the given type non-modal above
-     * the view-content.
+     * Shows the message \message with the given type \messageType non-modal above the view-content.
+     * \buttonActions defines actions which the user can trigger as a response to this message. They are presented as buttons below the \message.
      */
-    void showMessage(const QString &msg, MessageType type);
+    void showMessage(const QString &message, KMessageWidget::MessageType messageType, std::initializer_list<QAction *> buttonActions = {});
 
     /**
      * Refreshes the view container to get synchronized with the (updated) Dolphin settings.
      */
     void readSettings();
 
-    /** Returns true, if the filter bar is visible. */
+    /** @returns true, if the filter bar is visible.
+     *           false, if it is hidden or currently animating towards a hidden state. */
     bool isFilterBarVisible() const;
 
     /** Returns true if the search mode is enabled. */
@@ -278,10 +284,6 @@ private Q_SLOTS:
      */
     void updateStatusBar();
 
-    void updateDirectoryLoadingProgress(int percent);
-
-    void updateDirectorySortingProgress(int percent);
-
     /**
      * Updates the statusbar to show an undetermined progress with the correct
      * context information whether a searching or a directory loading is done.
@@ -387,9 +389,14 @@ private Q_SLOTS:
     void slotStatusBarZoomLevelChanged(int zoomLevel);
 
     /**
-     * Slot that calls showMessage(msg, Error).
+     * Creates and shows an error message based on \p message and \p kioErrorCode.
+     */
+    void slotErrorMessageFromView(const QString &message, const int kioErrorCode);
+
+    /**
+     * Slot that calls showMessage(message, KMessageWidget::Error).
      */
-    void showErrorMessage(const QString &msg);
+    void showErrorMessage(const QString &message);
 
     /**
      * Is invoked when a KFilePlacesModel has been changed
@@ -426,6 +433,19 @@ private:
      */
     QString getNearestExistingAncestorOfPath(const QString &path) const;
 
+    /**
+     * Update the geometry of statusbar depending on what mode it is using.
+     */
+    void updateStatusBarGeometry();
+
+    /**
+     * @return Preferred geometry of the small statusbar.
+     */
+    QRect preferredSmallStatusBarGeometry();
+
+protected:
+    bool eventFilter(QObject *object, QEvent *event) override;
+
 private:
     QGridLayout *m_topLayout;
 
@@ -446,6 +466,11 @@ private:
     DolphinSearchBox *m_searchBox;
     bool m_searchModeEnabled;
 
+    /// A bar shown at the top of the view to signify that the view is currently viewed and acted on with elevated privileges.
+    Admin::Bar *m_adminBar;
+    /// An action to switch to the admin protocol. This variable will always be nullptr unless kio-admin was installed. @see Admin::WorkerIntegration.
+    QAction *m_authorizeToEnterFolderAction;
+
     KMessageWidget *m_messageWidget;
 
     /// A bar shown at the top of the view to signify that selection mode is currently active.