/***************************************************************************
- * 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 *
* 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
#ifndef DOLPHINCONTEXTMENU_H
#define DOLPHINCONTEXTMENU_H
-#include <qpoint.h>
-#include <qstring.h>
-#include <q3valuelist.h>
-#include <kmountpoint.h>
-#include <q3valuevector.h>
+#include <kdesktopfileactions.h>
+#include <kfileitem.h>
#include <kservice.h>
-#include <kpropertiesdialog.h>
-#include <kdedesktopmimetype.h>
+#include <kurl.h>
+
+#include <QObject>
+
+#include <QVector>
class KMenu;
class KFileItem;
-class QPoint;
-class QWidget;
-class DolphinView;
+class QAction;
+class DolphinMainWindow;
/**
* @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
* 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.
+ * @viewType On which view type is the context menu shown.
*/
- DolphinContextMenu(DolphinView* parent,
+ DolphinContextMenu(DolphinMainWindow* parent,
KFileItem* fileInfo,
- const QPoint& pos);
+ const KUrl& baseUrl);
virtual ~DolphinContextMenu();
void open();
private:
- void openViewportContextMenu();
+ void openTrashContextMenu();
+ void openTrashItemContextMenu();
void openItemContextMenu();
+ void openViewportContextMenu();
+
+ void insertDefaultItemActions(KMenu* popup);
/**
* Inserts the 'Open With...' submenu to \a popup.
* All succeeding identifiers have an increased value of 1
* to the predecessor.
*/
- int insertOpenWithItems(KMenu* popup,
- Q3ValueVector<KService::Ptr>& openWithVector);
+ QList<QAction*> insertOpenWithItems(KMenu* popup,
+ QVector<KService::Ptr>& openWithVector);
/**
* Inserts the 'Actions...' submenu to \a popup.
* @param openWithVector Output parameter which contains all 'Actions...'
* services.
*/
- void insertActionItems(KMenu* popup,
- Q3ValueVector<KDEDesktopMimeType::Service>& actionsVector);
+ QList<QAction*> insertActionItems(KMenu* popup,
+ QVector<KDesktopFileActions::Service>& actionsVector);
/**
* Returns true, if 'menu' contains already
bool containsEntry(const KMenu* menu,
const QString& entryName) const;
- enum {
- submenuID = 90,
- bookmarkID = 91,
- openWithIDStart = 100,
- actionsIDStart = 1000,
- };
-
- DolphinView* m_dolphinView;
- KFileItem* m_fileInfo;
- QPoint m_pos;
-
- struct Entry {
+private:
+ struct Entry
+ {
int type;
QString name;
QString filePath; // empty for separator
QString icon;
QString comment;
};
+
+ enum ContextType
+ {
+ NoContext = 0,
+ ItemContext = 1,
+ TrashContext = 2
+ };
+
+ DolphinMainWindow* m_mainWindow;
+ KFileItem* m_fileInfo;
+ KUrl m_baseUrl;
+ KFileItemList m_selectedItems;
+ KUrl::List m_selectedUrls;
+ int m_context;
};
#endif