]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.h
Added the Trash KCM to Dolphin, it's visible in the Settings Dialog, in the 'Trash...
[dolphin.git] / src / dolphincontextmenu.h
index 49c21faa88ddc483ed269fc34e5ecd8f2ac67d5f..a660f0500934f06587526e44d8400039a7f7b099 100644 (file)
@@ -1,6 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006 by Peter Penz                                      *
- *   peter.penz@gmx.at                                                     *
+ *   Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>                  *
  *                                                                         *
  *   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  *
 #ifndef DOLPHINCONTEXTMENU_H
 #define DOLPHINCONTEXTMENU_H
 
-#include <qpoint.h>
-#include <qstring.h>
-#include <q3valuelist.h>
-#include <q3valuevector.h>
+#include <kdesktopfileactions.h>
+#include <kfileitem.h>
 #include <kservice.h>
-#include <kpropertiesdialog.h>
-#include <kdedesktopmimetype.h>
+#include <kurl.h>
+#include <konq_copytomenu.h>
+
+#include <QtCore/QObject>
+
+#include <QtCore/QVector>
 
 class KMenu;
 class KFileItem;
-class QPoint;
-class QWidget;
-class DolphinView;
+class QAction;
+class DolphinMainWindow;
+class KonqFileItemCapabilities;
 
 /**
  * @brief Represents the context menu which appears when doing a right
- * click on an item or the viewport of the file manager.
+ *        click on an item or the viewport of the file manager.
  *
  * Beside static menu entries (e. g. 'Paste' or 'Properties') two
  * dynamic sub menus are shown when opening a context menu above
@@ -46,75 +47,60 @@ class DolphinView;
  *                open items of the given MIME type.
  * - 'Actions':   Contains all actions which can be applied to the
  *                given item.
- *
- *     @author Peter Penz <peter.penz@gmx.at>
  */
-class DolphinContextMenu
+class DolphinContextMenu : public QObject
 {
+    Q_OBJECT
+
 public:
     /**
-     * @parent    Pointer to the dolphin view the context menu
-     *            belongs to.
-     * @fileInfo  Pointer to the file item the context menu
-     *            is applied. If 0 is passed, the context menu
-     *            is above the viewport.
-     * @pos       Position of the upper left edge of the context menu.
+     * @parent        Pointer to the main window the context menu
+     *                belongs to.
+     * @fileInfo      Pointer to the file item the context menu
+     *                is applied. If 0 is passed, the context menu
+     *                is above the viewport.
+     * @baseUrl       Base URL of the viewport where the context menu
+     *                should be opened.
      */
-    DolphinContextMenu(DolphinView* parent,
-                       KFileItem* fileInfo,
-                       const QPoint& pos);
+    DolphinContextMenu(DolphinMainWindow* parent,
+                       const KFileItem& fileInfo,
+                       const KUrl& baseUrl);
 
     virtual ~DolphinContextMenu();
 
-    /** Opens the context menu modal. */
+    void setCustomActions(const QList<QAction*>& actions);
+
+    /** Opens the context menu model. */
     void open();
 
 private:
-    void openViewportContextMenu();
+    void openTrashContextMenu();
+    void openTrashItemContextMenu();
     void openItemContextMenu();
+    void openViewportContextMenu();
 
-    /**
-     * Inserts the 'Open With...' submenu to \a popup.
-     * @param popup          Menu where the 'Open With...' sub menu should
-     *                       be added.
-     * @param openWithVector Output parameter which contains all 'Open with...'
-     *                       services.
-     * @return               Identifier of the first 'Open With...' entry.
-     *                       All succeeding identifiers have an increased value of 1
-     *                       to the predecessor.
-     */
-    QList<QAction*> insertOpenWithItems(KMenu* popup,
-                                        Q3ValueVector<KService::Ptr>& openWithVector);
+    void insertDefaultItemActions(KMenu* popup);
 
     /**
-     * Inserts the 'Actions...' submenu to \a popup.
-     * @param popup          Menu where the 'Actions...' sub menu should
-     *                       be added.
-     * @param openWithVector Output parameter which contains all 'Actions...'
-     *                       services.
+     * Adds the "Show menubar" action to the menu if the
+     * menubar is hidden.
      */
-    QList<QAction*> insertActionItems(KMenu* popup,
-                                      Q3ValueVector<KDEDesktopMimeType::Service>& actionsVector);
+    void addShowMenubarAction(KMenu* menu);
 
     /**
-     * Returns true, if 'menu' contains already
-     * an entry with the name 'entryName'.
+     * Returns a name for adding the URL \a url to the Places panel.
      */
-    bool containsEntry(const KMenu* menu,
-                       const QString& entryName) const;
-
-    enum {
-        submenuID       =   90,
-        bookmarkID      =   91,
-        openWithIDStart =  100,
-        actionsIDStart  = 1000,
-    };
+    QString placesName(const KUrl& url) const;
 
-    DolphinView* m_dolphinView;
-    KFileItem* m_fileInfo;
-    QPoint m_pos;
+    QAction* createPasteAction();
+
+private:
+    KonqFileItemCapabilities& capabilities();
+    void addCustomActions(KMenu* menu);
 
-    struct Entry {
+private:
+    struct Entry
+    {
         int type;
         QString name;
         QString filePath;     // empty for separator
@@ -122,6 +108,23 @@ private:
         QString icon;
         QString comment;
     };
+
+    enum ContextType
+    {
+        NoContext = 0,
+        ItemContext = 1,
+        TrashContext = 2
+    };
+
+    DolphinMainWindow* m_mainWindow;
+    KonqFileItemCapabilities* m_capabilities;
+    KFileItem m_fileInfo;
+    KUrl m_baseUrl;
+    KFileItemList m_selectedItems;
+    KUrl::List m_selectedUrls;
+    int m_context;
+    KonqCopyToMenu m_copyToMenu;
+    QList<QAction*> m_customActions;
 };
 
 #endif