]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinviewactionhandler.h
Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups'
[dolphin.git] / src / views / dolphinviewactionhandler.h
index 58cdb5416068d423e1421201c5b82071781a06f0..a589be9eaac7eb8e41efd7bd20b49fe75552a1b4 100644 (file)
@@ -1,31 +1,17 @@
-/***************************************************************************
- *   Copyright (C) 2008 by David Faure <faure@kde.org>                     *
- *   Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com>             *
- *                                                                         *
- *   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  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   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.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
-
+/*
+ * SPDX-FileCopyrightText: 2008 David Faure <faure@kde.org>
+ * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #ifndef DOLPHINVIEWACTIONHANDLER_H
 #define DOLPHINVIEWACTIONHANDLER_H
 
-#include "libdolphin_export.h"
-#include <KActionMenu>
-#include <KSelectAction>
+#include "dolphin_export.h"
+#include "selectionmode/bottombar.h"
 #include "views/dolphinview.h"
+
 #include <QObject>
 
 class KToggleAction;
@@ -33,12 +19,17 @@ class QAction;
 class QActionGroup;
 class DolphinView;
 class KActionCollection;
+class KFileItemList;
+namespace SelectionMode
+{
+class ActionTextHelper;
+}
 
 /**
  * @short Handles all actions for DolphinView
  *
  * The action handler owns all the actions and slots related to DolphinView,
- * but can the view that is acts upon can be switched to another one
+ * but the view that it acts upon can be switched to another one
  * (this is used in the case of split views).
  *
  * The purpose of this class is also to share this code between DolphinMainWindow
@@ -48,22 +39,22 @@ class KActionCollection;
  * @see DolphinMainWindow
  * @see DolphinPart
  */
-class LIBDOLPHINPRIVATE_EXPORT DolphinViewActionHandler : public QObject
+class DOLPHIN_EXPORT DolphinViewActionHandler : public QObject
 {
     Q_OBJECT
 
 public:
-    explicit DolphinViewActionHandler(KActionCollection* collection, QObject* parent);
+    explicit DolphinViewActionHandler(KActionCollection *collection, SelectionMode::ActionTextHelper *actionTextHelper, QObject *parent);
 
     /**
      * Sets the view that this action handler should work on.
      */
-    void setCurrentView(DolphinViewview);
+    void setCurrentView(DolphinView *view);
 
     /**
      * Returns the view that this action handler should work on.
      */
-    DolphinViewcurrentView();
+    DolphinView *currentView();
 
     /**
      * Returns the name of the action for the current viewmode
@@ -73,7 +64,7 @@ public:
     /**
      * Returns m_actionCollection
      */
-    KActionCollectionactionCollection();
+    KActionCollection *actionCollection();
 
 public Q_SLOTS:
     /**
@@ -85,7 +76,7 @@ public Q_SLOTS:
 Q_SIGNALS:
     /**
      * Emitted by DolphinViewActionHandler when the user triggered an action.
-     * This is only used for clearining the statusbar in DolphinMainWindow.
+     * This is only used for clearing the statusbar in DolphinMainWindow.
      */
     void actionBeingHandled();
 
@@ -94,13 +85,23 @@ Q_SIGNALS:
      * The receiver of the signal (DolphinMainWindow or DolphinPart) invokes
      * the method createDirectory of their KNewFileMenu instance.
      */
-    void createDirectory();
+    void createDirectoryTriggered();
+
+    /**
+     * Emitted if the user requested creating a new file.
+     * The receiver of the signal (DolphinMainWindow or DolphinPart) invokes
+     * the method createFile of their KNewFileMenu instance.
+     */
+    void createFileTriggered();
+
+    /** Used to request either entering or leaving of selection mode */
+    void selectionModeChangeTriggered(bool enabled, SelectionMode::BottomBar::Contents bottomBarContents = SelectionMode::BottomBar::Contents::GeneralContents);
 
 private Q_SLOTS:
     /**
      * Emitted when the user requested a change of view mode
      */
-    void slotViewModeActionTriggered(QAction*);
+    void slotViewModeActionTriggered(QAction *);
 
     /**
      * Let the user input a name for the selected item(s) and trigger
@@ -133,8 +134,8 @@ private Q_SLOTS:
     /** Decreases the size of the current set view mode. */
     void zoomOut();
 
-    /** Switches between an ascending and descending sorting order. */
-    void toggleSortOrder();
+    /** Resets the size of the current set view mode to default. */
+    void zoomReset();
 
     /** Switches between a separate sorting and a mixed sorting of files and folders. */
     void toggleSortFoldersFirst();
@@ -149,10 +150,30 @@ private Q_SLOTS:
      */
     void slotSortFoldersFirstChanged(bool foldersFirst);
 
+    /**
+     * Switches between showing hidden files last or not.
+     */
+    void toggleSortHiddenLast();
+
+    /**
+     * Updates the state of the 'Sort Hidden Last' action.
+     */
+    void slotSortHiddenLastChanged(bool hiddenLast);
+
     /**
      * Updates the state of the 'Sort by' actions.
      */
-    void slotSortRoleChanged(const QByteArray& role);
+    void slotSortRoleChanged(const QByteArray &role);
+
+    /**
+     * Updates the state of the 'Group Ascending/Descending' action.
+     */
+    void slotGroupOrderChanged(Qt::SortOrder order);
+
+    /**
+     * Updates the state of the 'Group by' actions.
+     */
+    void slotGroupRoleChanged(const QByteArray &role);
 
     /**
      * Updates the state of the 'Zoom In' and 'Zoom Out' actions.
@@ -163,19 +184,23 @@ private Q_SLOTS:
      * Switches on or off the displaying of additional information
      * as specified by \a action.
      */
-    void toggleVisibleRole(QActionaction);
+    void toggleVisibleRole(QAction *action);
 
     /**
      * Changes the sorting of the current view.
      */
-    void slotSortTriggered(QAction*);
+    void slotSortTriggered(QAction *);
 
     /**
      * Updates the state of the 'Additional Information' actions.
      */
-    void slotVisibleRolesChanged(const QList<QByteArray>& current,
-                                 const QList<QByteArray>& previous);
+    void slotVisibleRolesChanged(const QList<QByteArray> &current, const QList<QByteArray> &previous);
 
+    /**
+     * Changes the grouping of the current view.
+     */
+    void slotGroupTriggered(QAction *);
+    
     /**
      * Switches between sorting by groups or not.
      */
@@ -207,6 +232,11 @@ private Q_SLOTS:
      */
     void slotAdjustViewProperties();
 
+    /**
+     * Begins a duplicate operation on the selected files
+     */
+    void slotDuplicate();
+
     /**
      * Connected to the "properties" action.
      * Opens the properties dialog for the selected items of the
@@ -215,12 +245,24 @@ private Q_SLOTS:
      */
     void slotProperties();
 
+    /**
+     * Copies the path of the first selected KFileItem into Clipboard.
+     */
+    void slotCopyPath();
+
+    /**
+     * Changes the name of the menu that contains basic actions like "Copy", "Rename", ...
+     * The name is changed to something like "Actions for 3 Selected Items" to be extra
+     * explicit of how these basic actions are used.
+     */
+    void slotSelectionChanged(const KFileItemList &selection);
+
 private:
     /**
      * Create all the actions.
      * This is called only once (by the constructor)
      */
-    void createActions();
+    void createActions(SelectionMode::ActionTextHelper *actionTextHelper);
 
     /**
      * Creates an action-group out of all roles from KFileItemModel.
@@ -230,31 +272,32 @@ private:
      * The changes of actions are reported to slotSortTriggered() or
      * toggleAdditionalInfo().
      */
-    QActionGroup* createFileItemRolesActionGroup(const QString& groupPrefix);
+    QActionGroup *createFileItemRolesActionGroup(const QString &groupPrefix);
 
     /**
      * Returns the "switch to icons mode" action.
      * Helper method for createActions();
      */
-    KToggleActioniconsModeAction();
+    KToggleAction *iconsModeAction();
 
     /**
      * Returns the "switch to compact mode" action.
      * Helper method for createActions();
      */
-    KToggleActioncompactModeAction();
+    KToggleAction *compactModeAction();
 
     /**
      * Returns the "switch to details mode" action.
      * Helper method for createActions();
      */
-    KToggleActiondetailsModeAction();
+    KToggleAction *detailsModeAction();
 
-    KActionCollectionm_actionCollection;
-    DolphinViewm_currentView;
+    KActionCollection *m_actionCollection;
+    DolphinView *m_currentView;
 
-    QHash<QByteArray, KToggleAction*> m_sortByActions;
-    QHash<QByteArray, KToggleAction*> m_visibleRoles;
+    QHash<QByteArray, KToggleAction *> m_sortByActions;
+    QHash<QByteArray, KToggleAction *> m_groupByActions;
+    QHash<QByteArray, KToggleAction *> m_visibleRoles;
 };
 
 #endif /* DOLPHINVIEWACTIONHANDLER_H */