]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.h
Ported KIcon to QIcon
[dolphin.git] / src / dolphincontextmenu.h
index 75a6e35e856dbc8cf55fa871f6d258250c6624a8..3646ebcb5114b13991dbb2e82f74fe2d84497f4c 100644 (file)
@@ -24,6 +24,7 @@
 #include <KService>
 #include <KUrl>
 #include <konq_copytomenu.h>
+#include <KMenu>
 
 #include <QObject>
 
 
 #include <QScopedPointer>
 
-class KMenu;
-class KFileItem;
 class QAction;
 class DolphinMainWindow;
 class KFileItemActions;
 class KFileItemListProperties;
+class DolphinRemoveAction;
 
 /**
  * @brief Represents the context menu which appears when doing a right
@@ -50,7 +50,7 @@ class KFileItemListProperties;
  * - 'Actions':   Contains all actions which can be applied to the
  *                given item.
  */
-class DolphinContextMenu : public QObject
+class DolphinContextMenu : public KMenu
 {
     Q_OBJECT
 
@@ -58,6 +58,7 @@ public:
     enum Command
     {
         None,
+        OpenParentFolder,
         OpenParentFolderInNewWindow,
         OpenParentFolderInNewTab
     };
@@ -91,30 +92,9 @@ public:
      */
     Command open();
 
-    /**
-     * TODO: This method is a workaround for a X11-issue in combination
-     * with KModifierKeyInfo: When constructing KModifierKeyInfo in the
-     * constructor of the context menu, the user interface might freeze.
-     * To bypass this, the KModifierKeyInfo is constructed in DolphinMainWindow
-     * directly after starting the application. Remove this method, if
-     * the X11-issue got fixed (contact the maintainer of KModifierKeyInfo for
-     * more details).
-     */
-    static void initializeModifierKeyInfo();
-
-private slots:
-    /**
-     * Is invoked if a key modifier has been pressed and updates the context
-     * menu to show the 'Delete' action instead of the 'Move To Trash' action
-     * if the shift-key has been pressed.
-     */
-    void slotKeyModifierPressed(Qt::Key key, bool pressed);
-
-    /**
-     * Triggers the 'Delete'-action if the shift-key has been pressed, otherwise
-     * the 'Move to Trash'-action gets triggered.
-     */
-    void slotRemoveActionTriggered();
+protected:
+    virtual void keyPressEvent(QKeyEvent *ev);
+    virtual void keyReleaseEvent(QKeyEvent *ev);
 
 private:
     void openTrashContextMenu();
@@ -122,7 +102,7 @@ private:
     void openItemContextMenu();
     void openViewportContextMenu();
 
-    void insertDefaultItemActions();
+    void insertDefaultItemActions(const KFileItemListProperties&);
 
     /**
      * Adds the "Show menubar" action to the menu if the
@@ -130,11 +110,6 @@ private:
      */
     void addShowMenuBarAction();
 
-    /**
-     * Returns a name for adding the URL \a url to the Places panel.
-     */
-    QString placesName(const KUrl& url) const;
-
     bool placeExists(const KUrl& url) const;
 
     QAction* createPasteAction();
@@ -168,20 +143,6 @@ private:
      */
     void addCustomActions();
 
-    /**
-     * Updates m_removeAction to represent the 'Delete'-action if the shift-key
-     * has been pressed or the selection is not local. Otherwise it represents
-     * the 'Move to Trash'-action.
-     */
-    void updateRemoveAction();
-
-    /**
-     * @return True if a moving to the trash should be done instead of
-     *         deleting the selected items.
-     * @see updateRemoveAction(), slotRemoveActionTriggered()
-     */
-    bool moveToTrash() const;
-
 private:
     struct Entry
     {
@@ -214,12 +175,10 @@ private:
     int m_context;
     KonqCopyToMenu m_copyToMenu;
     QList<QAction*> m_customActions;
-    KMenu* m_popup;
 
     Command m_command;
 
-    bool m_shiftPressed;
-    QAction* m_removeAction; // Action that represents either 'Move To Trash' or 'Delete'
+    DolphinRemoveAction* m_removeAction; // Action that represents either 'Move To Trash' or 'Delete'
 };
 
 #endif