00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef __konqpopupmenu_h
00022
#define __konqpopupmenu_h
00023
00024
#include <sys/types.h>
00025
00026
#include <qpopupmenu.h>
00027
#include <qmap.h>
00028
#include <kaction.h>
00029
00030
#include <qstringlist.h>
00031
00032
#include <kfileitem.h>
00033
#include <kmimetype.h>
00034
00035
#include <kparts/browserextension.h>
00036
00037
#include "konq_xmlguiclient.h"
00038
00039
typedef QValueList<KDEDesktopMimeType::Service> ServiceList;
00040
00041
class KNewMenu;
00042
class KService;
00043
class KonqPopupMenuPlugin;
00044
class KBookmarkManager;
00051 class KonqPopupMenu :
public QPopupMenu,
public KonqXMLGUIClient
00052 {
00053 Q_OBJECT
00054
public:
00055
00060 typedef uint
KonqPopupFlags;
00061
enum { NoFlags = 0,
00062 ShowProperties = 1,
00063 IsLink = 2,
00064 ShowNewWindow = 4 };
00065
00066
00072
KonqPopupMenu( KBookmarkManager* manager,
00073
const KFileItemList &items,
00074 KURL viewURL,
00075 KActionCollection & actions,
00076
KNewMenu * newMenu,
00077
bool showPropertiesAndFileType =
true ) KDE_DEPRECATED;
00078
00083
KonqPopupMenu( KBookmarkManager* manager,
00084
const KFileItemList &items,
00085 KURL viewURL,
00086 KActionCollection & actions,
00087
KNewMenu * newMenu,
00088 QWidget * parentWidget,
00089
bool showPropertiesAndFileType =
true ) KDE_DEPRECATED;
00090
00109
KonqPopupMenu( KBookmarkManager* manager,
00110
const KFileItemList &items,
00111
const KURL& viewURL,
00112 KActionCollection & actions,
00113
KNewMenu * newMenu,
00114 QWidget * parentWidget,
00115 KonqPopupFlags kpf,
00116 KParts::BrowserExtension::PopupFlags f );
00117
00121
~KonqPopupMenu();
00122
00127
void setURLTitle(
const QString& urlTitle );
00128
00129
class ProtocolInfo {
00130
public:
00131 ProtocolInfo();
00132
bool supportsReading() const;
00133
bool supportsWriting() const;
00134
bool supportsDeleting() const;
00135
bool supportsMoving() const;
00136
bool trashIncluded() const;
00137 private:
00138 friend class
KonqPopupMenu;
00139
bool m_Reading:1;
00140
bool m_Writing:1;
00141
bool m_Deleting:1;
00142
bool m_Moving:1;
00143
bool m_TrashIncluded:1;
00144 };
00148 virtual KAction *action( const QDomElement &element ) const;
00149
00150
00151 virtual KActionCollection *actionCollection() const;
00152 QString mimeType( ) const;
00153 KURL url( ) const;
00154 KFileItemList fileItemList() const;
00155 KURL::List popupURLList( ) const;
00156 ProtocolInfo protocolInfo() const;
00157
00158 public slots:
00159
void slotPopupNewDir();
00160
void slotPopupNewView();
00161
void slotPopupEmptyTrashBin();
00162
void slotPopupOpenWith();
00163
void slotPopupAddToBookmark();
00164
void slotRunService();
00165
void slotPopupMimeType();
00166
void slotPopupProperties();
00167
void slotOpenShareFileDialog();
00168 protected:
00169 KActionCollection &m_actions;
00170 KActionCollection m_ownActions;
00171
00172 private:
00173
void init (QWidget * parentWidget, KonqPopupFlags kpf, KParts::BrowserExtension::PopupFlags itemFlags);
00174
void setup(KonqPopupFlags kpf);
00175
void addPlugins( );
00176
int insertServicesSubmenus(const QMap<QString, ServiceList>& list, QDomElement& menu,
bool isBuiltin);
00177
int insertServices(const ServiceList& list, QDomElement& menu,
bool isBuiltin);
00178
bool KIOSKAuthorizedAction(KConfig& cfg);
00179
00180 class KonqPopupMenuPrivate;
00181 KonqPopupMenuPrivate *d;
00182
KNewMenu *m_pMenuNew;
00183 KURL m_sViewURL;
00184 QString m_sMimeType;
00185 KFileItemList m_lstItems;
00186 KURL::List m_lstPopupURLs;
00187 QMap<
int,KService::Ptr> m_mapPopup;
00188 QMap<
int,KDEDesktopMimeType::Service> m_mapPopupServices;
00189
bool m_bHandleEditOperations;
00190 KXMLGUIFactory *m_factory;
00191 KXMLGUIBuilder *m_builder;
00192 QString attrName;
00193 ProtocolInfo m_info;
00194 QPtrList<KonqPopupMenuPlugin> m_pluginList;
00195 KBookmarkManager* m_pManager;
00196 };
00197
00198 class KonqPopupMenuPlugin : public QObject, public
KonqXMLGUIClient {
00199 Q_OBJECT
00200
public:
00208 KonqPopupMenuPlugin( KonqPopupMenu *_popup,
const char *name );
00209
virtual ~KonqPopupMenuPlugin ( );
00210 };
00211
00212
#endif
00213