X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/cdc40d4398510878e5ff5926be3f87e6ac5108c9..2201018673467bf7a871082b1fd1e3f8c6f926e7:/src/dolphinpart.h diff --git a/src/dolphinpart.h b/src/dolphinpart.h index 797c34d71..aec427753 100644 --- a/src/dolphinpart.h +++ b/src/dolphinpart.h @@ -1,38 +1,27 @@ /* This file is part of the KDE project - Copyright (c) 2007 David Faure - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. + SPDX-FileCopyrightText: 2007 David Faure + + SPDX-License-Identifier: LGPL-2.0-or-later */ #ifndef DOLPHINPART_H #define DOLPHINPART_H -#include -#include +#include + +#include +#include + +class DolphinNewFileMenu; +class DolphinViewActionHandler; class QActionGroup; -class KAction; class KFileItemList; class KFileItem; class DolphinPartBrowserExtension; -class DolphinSortFilterProxyModel; -class DolphinModel; +class DolphinRemoteEncoding; class KDirLister; class DolphinView; -class QLineEdit; -class KAboutData; +class DolphinRemoveAction; class DolphinPart : public KParts::ReadOnlyPart { @@ -40,69 +29,137 @@ class DolphinPart : public KParts::ReadOnlyPart // Used by konqueror. Technically it means "we want undo enabled if // there are things in the undo history and the current part is a dolphin part". // Even though it's konqueror doing the undo... - Q_PROPERTY( bool supportsUndo READ supportsUndo ) + Q_PROPERTY(bool supportsUndo READ supportsUndo CONSTANT) -public: - explicit DolphinPart(QWidget* parentWidget, QObject* parent, const QStringList& args); - ~DolphinPart(); + Q_PROPERTY(QString currentViewMode READ currentViewMode WRITE setCurrentViewMode) - static KAboutData* createAboutData(); + // Used by konqueror when typing something like /home/dfaure/*.diff in the location bar + Q_PROPERTY(QString nameFilter READ nameFilter WRITE setNameFilter) - virtual bool openUrl(const KUrl& url); + // Used by konqueror to implement the --select command-line option + Q_PROPERTY(QList filesToSelect READ filesToSelect WRITE setFilesToSelect) + +public: + explicit DolphinPart(QWidget *parentWidget, QObject *parent, const KPluginMetaData &metaData, const QVariantList &args); + ~DolphinPart() override; + + /** + * Standard KParts::ReadOnlyPart openUrl method. + * Called by Konqueror to view a directory in DolphinPart. + */ + bool openUrl(const QUrl &url) override; /// see the supportsUndo property - bool supportsUndo() const { return true; } + bool supportsUndo() const + { + return true; + } + + /** + * Used by konqueror for setting the view mode + * @param viewModeName internal name for the view mode, like "icons" + * Those names come from the Actions line in dolphinpart.desktop, + * and have to match the name of the KActions. + */ + void setCurrentViewMode(const QString &viewModeName); + + /** + * Used by konqueror for displaying the current view mode. + * @see setCurrentViewMode + */ + QString currentViewMode() const; + + /// Returns the view owned by this part; used by DolphinPartBrowserExtension + DolphinView *view() + { + return m_view; + } - DolphinView* view() { return m_view; } + /** + * Sets a name filter, like *.diff + */ + void setNameFilter(const QString &nameFilter); + + /** + * Returns the current name filter. Used by konqueror to show it in the URL. + */ + QString nameFilter() const + { + return m_nameFilter; + } + + /** + * Don't use this. Always @returns an empty list. It only exists to silence moc. + */ + QList filesToSelect() const + { + return QList(); + } protected: /** * We reimplement openUrl so no need to implement openFile. */ - virtual bool openFile() { return true; } + bool openFile() override + { + return true; + } + +Q_SIGNALS: + /** + * Emitted when the view mode changes. Used by konqueror. + */ + void viewModeChanged(); + + /** + * Emitted whenever the current URL is about to be changed. + */ + void aboutToOpenURL(); private Q_SLOTS: - void slotCompleted(const KUrl& url); - void slotCanceled(const KUrl& url); - void slotInfoMessage(const QString& msg); - void slotErrorMessage(const QString& msg); + void slotMessage(const QString &msg); + void slotErrorMessage(const QString &msg); /** * Shows the information for the item \a item inside the statusbar. If the * item is null, the default statusbar information is shown. */ - void slotRequestItemInfo(const KFileItem& item); + void slotRequestItemInfo(const KFileItem &item); /** * Handles clicking on an item */ - void slotItemTriggered(const KFileItem& item); + void slotItemActivated(const KFileItem &item); /** - * Opens the context menu on the current mouse position. - * @item File item context. If item is 0, the context menu - * should be applied to \a url. - * @url URL which contains \a item. + * Handles activation of multiple items */ - void slotOpenContextMenu(const KFileItem& item, const KUrl& url); + void slotItemsActivated(const KFileItemList &items); /** - * Emitted when the user requested a change of view mode + * Creates a new window showing the content of \a url. */ - void slotViewModeActionTriggered(QAction*); - + void createNewWindow(const QUrl &url); /** - * Asks the host to open the URL \a url if the current view has - * a different URL. + * Opens the context menu on the current mouse position. + * @pos Position in screen coordinates. + * @item File item context. If item is null, the context menu + * should be applied to \a url. + * @selectedItems The selected items for which the context menu + * is opened. This list generally includes \a item. + * @url URL which contains \a item. */ - void slotUrlChanged(const KUrl& url); + void slotOpenContextMenu(const QPoint &pos, const KFileItem &_item, const KFileItemList &selectedItems, const QUrl &); /** - * Updates the state of the 'Edit' menu actions and emits - * the signal selectionChanged(). + * Informs the host that we are opening \a url (e.g. after a redirection + * coming from KDirLister). + * Testcase 1: fish://localhost + * Testcase 2: showing a directory that is being renamed by another window (#180156) */ - void slotSelectionChanged(const KFileItemList& selection); + void slotDirectoryRedirection(const QUrl &oldUrl, const QUrl &newUrl); /** - * Same as in DolphinMainWindow: updates the view menu actions + * Updates the state of the 'Edit' menu actions and emits + * the signal selectionChanged(). */ - void updateViewActions(); + void slotSelectionChanged(const KFileItemList &selection); /** * Updates the text of the paste action dependent from @@ -110,15 +167,10 @@ private Q_SLOTS: */ void updatePasteAction(); - /** - * Connected to the "move_to_trash" action; adds "shift means del" handling. - */ - void slotTrashActivated(Qt::MouseButtons, Qt::KeyboardModifiers); - /** * Connected to all "Go" menu actions provided by DolphinPart */ - void slotGoTriggered(QAction* action); + void slotGoTriggered(QAction *action); /** * Connected to the "editMimeType" action @@ -126,60 +178,72 @@ private Q_SLOTS: void slotEditMimeType(); /** - * Connected to the "properties" action + * Connected to the "select_items_matching" action. + * Opens a dialog which permits to select all items matching a pattern like "*.jpg". + */ + void slotSelectItemsMatchingPattern(); + + /** + * Connected to the "unselect_items_matching" action. + * Opens a dialog which permits to unselect all items matching a pattern like "*.jpg". + */ + void slotUnselectItemsMatchingPattern(); + + /** + * Open a terminal window, starting with the current directory. + */ + void slotOpenTerminal(); + + /** + * Open preferred search tool in the current directory to find files. */ - void slotProperties(); + void slotFindFile(); /** - * Opens the dialog for creating a directory. Is connected - * with the key shortcut for "new directory" (F10). + * Updates the 'Create New...' sub menu, just before it's shown. */ - void createDir(); + void updateNewMenu(); - /** Updates the state of the 'Show preview' menu action. */ - void slotShowPreviewChanged(); + /** + * Updates the number of items (= number of files + number of + * directories) in the statusbar. If files are selected, the number + * of selected files and the sum of the filesize is shown. + */ + void updateStatusBar(); - /** Updates the state of the 'Show hidden files' menu action. */ - void slotShowHiddenFilesChanged(); + /** + * Notify container of folder loading progress. + */ + void updateProgress(int percent); - /** Updates the state of the 'Categorized sorting' menu action. */ - void slotCategorizedSortingChanged(); + void createDirectory(); - /** Updates the state of the 'Sort Ascending/Descending' action. */ - void slotSortOrderChanged(Qt::SortOrder); + /** + * Called by konqueror --select + */ + void setFilesToSelect(const QList &files); - /** Updates the state of the 'Additional Information' actions. */ - void slotAdditionalInfoChanged(); + bool eventFilter(QObject *, QEvent *) override; private: void createActions(); - void createGoAction(const char* name, const char* iconName, - const QString& text, const QString& url, - QActionGroup* actionGroup); - -private: - DolphinView* m_view; - KDirLister* m_dirLister; - DolphinModel* m_dolphinModel; - DolphinSortFilterProxyModel* m_proxyModel; - DolphinPartBrowserExtension* m_extension; - Q_DISABLE_COPY(DolphinPart) -}; - -class DolphinPartBrowserExtension : public KParts::BrowserExtension -{ - Q_OBJECT -public: - DolphinPartBrowserExtension( DolphinPart* part ) - : KParts::BrowserExtension( part ), m_part(part) {} + void createGoAction(const char *name, const char *iconName, const QString &text, const QString &url, QActionGroup *actionGroup); -public Q_SLOTS: - void cut(); - void copy(); - void paste(); + void openSelectionDialog(const QString &title, const QString &text, bool selectItems); + QString urlToLocalFilePath(const QUrl &url); + QString localFilePathOrHome() const; private: - DolphinPart* m_part; + DolphinView *m_view; + DolphinViewActionHandler *m_actionHandler; + DolphinRemoteEncoding *m_remoteEncoding; + DolphinPartBrowserExtension *m_extension; + DolphinNewFileMenu *m_newFileMenu; + QAction *m_findFileAction; + QAction *m_openTerminalAction; + QString m_nameFilter; + DolphinRemoveAction *m_removeAction; + Q_DISABLE_COPY(DolphinPart) }; #endif /* DOLPHINPART_H */