]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.h
Merge branch 'release/20.12'
[dolphin.git] / src / dolphincontextmenu.h
index 62dffd074eb01656d75da3f1a6c134ac173c3d2f..7f0b6988a682e25a265f0e3ef40621a440f48e41 100644 (file)
@@ -1,36 +1,17 @@
-/***************************************************************************
- *   Copyright (C) 2006 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: 2006 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #ifndef DOLPHINCONTEXTMENU_H
 #define DOLPHINCONTEXTMENU_H
 
+#include <KFileCopyToMenu>
 #include <KFileItem>
-#include <KService>
-#include <KUrl>
-#include <konq_copytomenu.h>
-#include <QMenu>
-
-#include <QObject>
 
-#include <QVector>
-
-#include <QScopedPointer>
+#include <QMenu>
+#include <QUrl>
 
 class QAction;
 class DolphinMainWindow;
@@ -76,9 +57,9 @@ public:
     DolphinContextMenu(DolphinMainWindow* parent,
                        const QPoint& pos,
                        const KFileItem& fileInfo,
-                       const KUrl& baseUrl);
+                       const QUrl& baseUrl);
 
-    virtual ~DolphinContextMenu();
+    ~DolphinContextMenu() override;
 
     void setCustomActions(const QList<QAction*>& actions);
 
@@ -93,8 +74,8 @@ public:
     Command open();
 
 protected:
-    virtual void keyPressEvent(QKeyEvent *ev);
-    virtual void keyReleaseEvent(QKeyEvent *ev);
+    void childEvent(QChildEvent* event) override;
+    bool eventFilter(QObject* dest, QEvent* event) override;
 
 private:
     void openTrashContextMenu();
@@ -110,7 +91,7 @@ private:
      */
     void addShowMenuBarAction();
 
-    bool placeExists(const KUrl& url) const;
+    bool placeExists(const QUrl& url) const;
 
     QAction* createPasteAction();
 
@@ -122,20 +103,9 @@ private:
     KFileItem baseFileItem();
 
     /**
-     * Adds actions that have been installed as service-menu.
-     * (see http://techbase.kde.org/index.php?title=Development/Tutorials/Creating_Konqueror_Service_Menus)
-     */
-    void addServiceActions(KFileItemActions& fileItemActions);
-
-    /**
-     * Adds actions that are provided by a KFileItemActionPlugin.
-     */
-    void addFileItemPluginActions();
-
-    /**
-     * Adds actions that are provided by a KVersionControlPlugin.
+     * Adds "Open With" actions
      */
-    void addVersionControlPluginActions();
+    void addOpenWithActions(KFileItemActions& fileItemActions);
 
     /**
      * Adds custom actions e.g. like the "[x] Expandable Folders"-action
@@ -144,6 +114,11 @@ private:
     void addCustomActions();
 
 private:
+    /**
+     * Add services, custom actions, plugins and version control items to the menu
+     */
+    void addAdditionalActions(KFileItemActions &fileItemActions, const KFileItemListProperties &props);
+
     struct Entry
     {
         int type;
@@ -158,7 +133,9 @@ private:
     {
         NoContext = 0,
         ItemContext = 1,
-        TrashContext = 2
+        TrashContext = 2,
+        TimelineContext = 4,
+        SearchContext = 8,
     };
 
     QPoint m_pos;
@@ -166,19 +143,21 @@ private:
 
     KFileItem m_fileInfo;
 
-    KUrl m_baseUrl;
+    QUrl m_baseUrl;
     KFileItem* m_baseFileItem;  /// File item for m_baseUrl
 
     KFileItemList m_selectedItems;
     mutable KFileItemListProperties* m_selectedItemsProperties;
 
     int m_context;
-    KonqCopyToMenu m_copyToMenu;
+    KFileCopyToMenu m_copyToMenu;
     QList<QAction*> m_customActions;
 
     Command m_command;
 
     DolphinRemoveAction* m_removeAction; // Action that represents either 'Move To Trash' or 'Delete'
+    void addDirectoryItemContextMenu(KFileItemActions &fileItemActions);
+
 };
 
 #endif