X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/2ba5c2cfc2cea534cccd860f94a7198530b83594..refs/heads/master:/src/views/dolphinviewactionhandler.h diff --git a/src/views/dolphinviewactionhandler.h b/src/views/dolphinviewactionhandler.h index ff72d9530..a589be9ea 100644 --- a/src/views/dolphinviewactionhandler.h +++ b/src/views/dolphinviewactionhandler.h @@ -1,30 +1,17 @@ -/*************************************************************************** - * Copyright (C) 2008 by David Faure * - * * - * 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 + * SPDX-FileCopyrightText: 2012 Peter Penz + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #ifndef DOLPHINVIEWACTIONHANDLER_H #define DOLPHINVIEWACTIONHANDLER_H -#include "libdolphin_export.h" -#include -#include +#include "dolphin_export.h" +#include "selectionmode/bottombar.h" #include "views/dolphinview.h" + #include class KToggleAction; @@ -32,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 @@ -47,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(DolphinView* view); + void setCurrentView(DolphinView *view); /** * Returns the view that this action handler should work on. */ - DolphinView* currentView(); + DolphinView *currentView(); /** * Returns the name of the action for the current viewmode @@ -72,7 +64,7 @@ public: /** * Returns m_actionCollection */ - KActionCollection* actionCollection(); + KActionCollection *actionCollection(); public Q_SLOTS: /** @@ -84,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(); @@ -93,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 @@ -111,7 +113,7 @@ private Q_SLOTS: * Moves the selected items of the active view to the trash. * This methods adds "shift means del" handling. */ - void slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers); + void slotTrashActivated(); /** * Deletes the selected items of the active view. @@ -132,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(); @@ -148,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. @@ -162,19 +184,23 @@ private Q_SLOTS: * Switches on or off the displaying of additional information * as specified by \a action. */ - void toggleAdditionalInfo(QAction* action); + 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& current, - const QList& previous); + void slotVisibleRolesChanged(const QList ¤t, const QList &previous); + /** + * Changes the grouping of the current view. + */ + void slotGroupTriggered(QAction *); + /** * Switches between sorting by groups or not. */ @@ -195,12 +221,22 @@ private Q_SLOTS: */ void slotHiddenFilesShownChanged(bool shown); + /** + * Updates the state of the 'Create Folder...' action. + */ + void slotWriteStateChanged(bool isFolderWritable); + /** * Opens the view properties dialog, which allows to modify the properties * of the currently active view. */ 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 @@ -209,45 +245,59 @@ private Q_SLOTS: */ void slotProperties(); -private: /** - * Create all the actions. - * This is called only once (by the constructor) + * Copies the path of the first selected KFileItem into Clipboard. */ - void createActions(); + void slotCopyPath(); /** - * Creates an action group with all the "show additional information" actions in it. - * Helper method for createActions(); + * 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. */ - QActionGroup* createAdditionalInformationActionGroup(); + void slotSelectionChanged(const KFileItemList &selection); +private: /** - * Creates an action group with all the "sort by" actions in it. - * Helper method for createActions(); + * Create all the actions. + * This is called only once (by the constructor) */ - QActionGroup* createSortByActionGroup(); + void createActions(SelectionMode::ActionTextHelper *actionTextHelper); + + /** + * Creates an action-group out of all roles from KFileItemModel. + * Dependent on the group-prefix either a radiobutton-group is + * created for sorting (prefix is "sort_by_") or a checkbox-group + * is created for additional information (prefix is "show_"). + * The changes of actions are reported to slotSortTriggered() or + * toggleAdditionalInfo(). + */ + QActionGroup *createFileItemRolesActionGroup(const QString &groupPrefix); /** * Returns the "switch to icons mode" action. * Helper method for createActions(); */ - KToggleAction* iconsModeAction(); + KToggleAction *iconsModeAction(); /** * Returns the "switch to compact mode" action. * Helper method for createActions(); */ - KToggleAction* compactModeAction(); + KToggleAction *compactModeAction(); /** * Returns the "switch to details mode" action. * Helper method for createActions(); */ - KToggleAction* detailsModeAction(); + KToggleAction *detailsModeAction(); + + KActionCollection *m_actionCollection; + DolphinView *m_currentView; - KActionCollection* m_actionCollection; - DolphinView* m_currentView; + QHash m_sortByActions; + QHash m_groupByActions; + QHash m_visibleRoles; }; #endif /* DOLPHINVIEWACTIONHANDLER_H */