]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.h
Use QFontMetrics::height() instead of averageCharWidth()
[dolphin.git] / src / dolphincontextmenu.h
index 028dc46495734a5abd5b2a082dd21eea0058f074..50fce443903c32396249c5dfcc6dce7724c347fe 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at>                  *
+ *   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  *
 #ifndef DOLPHINCONTEXTMENU_H
 #define DOLPHINCONTEXTMENU_H
 
-#include <kdesktopfileactions.h>
-#include <kfileitem.h>
-#include <kservice.h>
-#include <kurl.h>
+#include <KFileItem>
+#include <KService>
+#include <KUrl>
 #include <konq_copytomenu.h>
-#include <kmodifierkeyinfo.h>
 
-#include <QtCore/QObject>
+#include <QObject>
 
-#include <QtCore/QVector>
+#include <QVector>
 
 #include <QScopedPointer>
 
@@ -57,6 +55,13 @@ class DolphinContextMenu : public QObject
     Q_OBJECT
 
 public:
+    enum Command
+    {
+        None,
+        OpenParentFolderInNewWindow,
+        OpenParentFolderInNewTab
+    };
+
     /**
      * @parent        Pointer to the main window the context menu
      *                belongs to.
@@ -74,8 +79,15 @@ public:
 
     void setCustomActions(const QList<QAction*>& actions);
 
-    /** Opens the context menu model. */
-    void open();
+    /**
+     * Opens the context menu model and returns the requested
+     * command, that should be triggered by the caller. If
+     * Command::None has been returned, either the context-menu
+     * had been closed without executing an action or an
+     * already available action from the main-window has been
+     * executed.
+     */
+    Command open();
 
     /**
      * TODO: This method is a workaround for a X11-issue in combination
@@ -114,7 +126,7 @@ private:
      * Adds the "Show menubar" action to the menu if the
      * menubar is hidden.
      */
-    void addShowMenubarAction();
+    void addShowMenuBarAction();
 
     /**
      * Returns a name for adding the URL \a url to the Places panel.
@@ -125,9 +137,33 @@ private:
 
     QAction* createPasteAction();
 
-    KFileItemListProperties& capabilities();
+    KFileItemListProperties& selectedItemsProperties();
+
+    /**
+     * Returns the file item for m_baseUrl.
+     */
+    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);
-    void addVersionControlActions();
+
+    /**
+     * Adds actions that are provided by a KFileItemActionPlugin.
+     */
+    void addFileItemPluginActions();
+
+    /**
+     * Adds actions that are provided by a KVersionControlPlugin.
+     */
+    void addVersionControlPluginActions();
+
+    /**
+     * Adds custom actions e.g. like the "[x] Expandable Folders"-action
+     * provided in the details view.
+     */
     void addCustomActions();
 
     /**
@@ -155,20 +191,24 @@ private:
     };
 
     DolphinMainWindow* m_mainWindow;
-    KFileItemListProperties* m_capabilities;
+
     KFileItem m_fileInfo;
+
     KUrl m_baseUrl;
+    KFileItem* m_baseFileItem;  /// File item for m_baseUrl
+
     KFileItemList m_selectedItems;
-    KUrl::List m_selectedUrls;
+    KFileItemListProperties* m_selectedItemsProperties;
+
     int m_context;
     KonqCopyToMenu m_copyToMenu;
     QList<QAction*> m_customActions;
-    QScopedPointer<KMenu> m_popup;
+    KMenu* m_popup;
+
+    Command m_command;
 
     bool m_shiftPressed;
     QAction* m_removeAction; // Action that represents either 'Move To Trash' or 'Delete'
-
-    static KModifierKeyInfo* m_keyInfo;
 };
 
 #endif