konq_popupmenu.h00001
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 #include <libkonq_export.h>
00035
00036 #include <kparts/browserextension.h>
00037
00038 #include "konq_xmlguiclient.h"
00039
00040 typedef QValueList<KDEDesktopMimeType::Service> ServiceList;
00041
00042 class KPropertiesDialog;
00043 class KNewMenu;
00044 class KService;
00045 class KonqPopupMenuPlugin;
00046 class KBookmarkManager;
00047
00048
00055 class LIBKONQ_EXPORT KonqPopupMenu : public QPopupMenu, public KonqXMLGUIClient
00056 {
00057 Q_OBJECT
00058 public:
00059
00064 typedef uint KonqPopupFlags;
00065 enum { NoFlags = 0,
00066 ShowProperties = 1,
00067 IsLink = 2,
00068 ShowNewWindow = 4 };
00069
00070
00076 KonqPopupMenu( KBookmarkManager* manager,
00077 const KFileItemList &items,
00078 KURL viewURL,
00079 KActionCollection & actions,
00080 KNewMenu * newMenu,
00081 bool showPropertiesAndFileType = true ) KDE_DEPRECATED;
00082
00087 KonqPopupMenu( KBookmarkManager* manager,
00088 const KFileItemList &items,
00089 KURL viewURL,
00090 KActionCollection & actions,
00091 KNewMenu * newMenu,
00092 QWidget * parentWidget,
00093 bool showPropertiesAndFileType = true ) KDE_DEPRECATED;
00094
00115 KonqPopupMenu( KBookmarkManager* manager,
00116 const KFileItemList &items,
00117 const KURL& viewURL,
00118 KActionCollection & actions,
00119 KNewMenu * newMenu,
00120 QWidget * parentWidget,
00121 KonqPopupFlags kpf,
00122 KParts::BrowserExtension::PopupFlags f );
00123
00127 ~KonqPopupMenu();
00128
00133 void setURLTitle( const QString& urlTitle );
00134
00135 class LIBKONQ_EXPORT ProtocolInfo {
00136 public:
00137 ProtocolInfo();
00138 bool supportsReading() const;
00139 bool supportsWriting() const;
00140 bool supportsDeleting() const;
00141 bool supportsMoving() const;
00142 bool trashIncluded() const;
00143 private:
00144 friend class KonqPopupMenu;
00145 bool m_Reading:1;
00146 bool m_Writing:1;
00147 bool m_Deleting:1;
00148 bool m_Moving:1;
00149 bool m_TrashIncluded:1;
00150 };
00154 virtual KAction *action( const QDomElement &element ) const;
00155
00156
00157 virtual KActionCollection *actionCollection() const;
00158 QString mimeType( ) const;
00159 KURL url( ) const;
00160 KFileItemList fileItemList() const;
00161 KURL::List popupURLList( ) const;
00162 ProtocolInfo protocolInfo() const;
00163
00164 public slots:
00165 void slotPopupNewDir();
00166 void slotPopupNewView();
00167 void slotPopupEmptyTrashBin();
00168 void slotPopupRestoreTrashedItems();
00169 void slotPopupOpenWith();
00170 void slotPopupAddToBookmark();
00171 void slotRunService();
00172 void slotPopupMimeType();
00173 void slotPopupProperties();
00174 void slotOpenShareFileDialog();
00175 protected:
00176 KActionCollection &m_actions;
00177 KActionCollection m_ownActions;
00178
00179 private:
00180 void init (QWidget * parentWidget, KonqPopupFlags kpf, KParts::BrowserExtension::PopupFlags itemFlags);
00181 void setup(KonqPopupFlags kpf);
00182 void addPlugins( );
00183 int insertServicesSubmenus(const QMap<QString, ServiceList>& list, QDomElement& menu, bool isBuiltin);
00184 int insertServices(const ServiceList& list, QDomElement& menu, bool isBuiltin);
00185 bool KIOSKAuthorizedAction(KConfig& cfg);
00186 KPropertiesDialog* showPropertiesDialog();
00187
00188 class KonqPopupMenuPrivate;
00189 KonqPopupMenuPrivate *d;
00190 KNewMenu *m_pMenuNew;
00191 KURL m_sViewURL;
00192 QString m_sMimeType;
00193 KFileItemList m_lstItems;
00194 KURL::List m_lstPopupURLs;
00195 QMap<int,KService::Ptr> m_mapPopup;
00196 QMap<int,KDEDesktopMimeType::Service> m_mapPopupServices;
00197 bool m_bHandleEditOperations;
00198 KXMLGUIFactory *m_factory;
00199 KXMLGUIBuilder *m_builder;
00200 QString attrName;
00201 ProtocolInfo m_info;
00202 QPtrList<KonqPopupMenuPlugin> m_pluginList;
00203 KBookmarkManager* m_pManager;
00204 };
00205
00206 class LIBKONQ_EXPORT KonqPopupMenuPlugin : public QObject, public KonqXMLGUIClient {
00207 Q_OBJECT
00208 public:
00216 KonqPopupMenuPlugin( KonqPopupMenu *_popup, const char *name );
00217 virtual ~KonqPopupMenuPlugin ( );
00218 };
00219
00220 #endif
00221
|