00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __kparts_browserextension_h__
00022 #define __kparts_browserextension_h__
00023
00024 #include <sys/types.h>
00025
00026 #include <qpoint.h>
00027 #include <qptrlist.h>
00028 #include <qdatastream.h>
00029 #include <qstringlist.h>
00030 #include <qpair.h>
00031
00032 #include <kparts/part.h>
00033 #include <kparts/event.h>
00034
00035 class KFileItem;
00036 typedef QPtrList<KFileItem> KFileItemList;
00037 class QString;
00038
00039 namespace KParts {
00040
00041 class BrowserInterface;
00042
00043 struct URLArgsPrivate;
00044
00057 struct URLArgs
00058 {
00059 URLArgs();
00060 URLArgs( const URLArgs &args );
00061 URLArgs &operator=( const URLArgs &args);
00062
00063 URLArgs( bool reload, int xOffset, int yOffset, const QString &serviceType = QString::null );
00064 virtual ~URLArgs();
00065
00070 QStringList docState;
00071
00075 bool reload;
00081 int xOffset;
00085 int yOffset;
00089 QString serviceType;
00090
00094 QByteArray postData;
00095
00099 void setContentType( const QString & contentType );
00103 QString contentType() const;
00108 void setDoPost( bool enable );
00109
00114 bool doPost() const;
00115
00121 void setLockHistory( bool lock );
00122 bool lockHistory() const;
00123
00127 void setNewTab( bool newTab );
00128 bool newTab() const;
00129
00134 QMap<QString, QString> &metaData();
00135
00139 QString frameName;
00140
00146 bool trustedSource;
00147
00152 bool redirectedRequest () const;
00153
00160 void setRedirectedRequest(bool redirected);
00161
00162 URLArgsPrivate *d;
00163 };
00164
00165 struct WindowArgsPrivate;
00166
00172 struct WindowArgs
00173 {
00174 WindowArgs();
00175 WindowArgs( const WindowArgs &args );
00176 WindowArgs &operator=( const WindowArgs &args );
00177 WindowArgs( const QRect &_geometry, bool _fullscreen, bool _menuBarVisible,
00178 bool _toolBarsVisible, bool _statusBarVisible, bool _resizable );
00179 WindowArgs( int _x, int _y, int _width, int _height, bool _fullscreen,
00180 bool _menuBarVisible, bool _toolBarsVisible,
00181 bool _statusBarVisible, bool _resizable );
00182
00183
00184 int x;
00185 int y;
00186
00187 int width;
00188 int height;
00189 bool fullscreen;
00190 bool menuBarVisible;
00191 bool toolBarsVisible;
00192 bool statusBarVisible;
00193 bool resizable;
00194
00195 bool lowerWindow;
00196
00197 WindowArgsPrivate *d;
00198 };
00199
00200 class OpenURLEvent : public Event
00201 {
00202 public:
00203 OpenURLEvent( ReadOnlyPart *part, const KURL &url, const URLArgs &args = URLArgs() );
00204 virtual ~OpenURLEvent();
00205
00206 ReadOnlyPart *part() const { return m_part; }
00207 KURL url() const { return m_url; }
00208 URLArgs args() const { return m_args; }
00209
00210 static bool test( const QEvent *event ) { return Event::test( event, s_strOpenURLEvent ); }
00211
00212 private:
00213 static const char *s_strOpenURLEvent;
00214 ReadOnlyPart *m_part;
00215 KURL m_url;
00216 URLArgs m_args;
00217
00218 class OpenURLEventPrivate;
00219 OpenURLEventPrivate *d;
00220 };
00221
00222 class BrowserExtensionPrivate;
00223
00286 class BrowserExtension : public QObject
00287 {
00288 Q_OBJECT
00289 Q_PROPERTY( bool urlDropHandling READ isURLDropHandlingEnabled WRITE setURLDropHandlingEnabled )
00290 public:
00297 BrowserExtension( KParts::ReadOnlyPart *parent,
00298 const char *name = 0L );
00299
00300
00301 virtual ~BrowserExtension();
00302
00303 typedef uint PopupFlags;
00304
00315 enum { DefaultPopupItems=0x0000, ShowNavigationItems=0x0001,
00316 ShowUp=0x0002, ShowReload=0x0004, ShowBookmark=0x0008,
00317 ShowCreateDirectory=0x0010, ShowTextSelectionItems=0x0020};
00318
00319
00325 virtual void setURLArgs( const URLArgs &args );
00326
00332 URLArgs urlArgs() const;
00333
00339 virtual int xOffset();
00345 virtual int yOffset();
00346
00354 virtual void saveState( QDataStream &stream );
00355
00363 virtual void restoreState( QDataStream &stream );
00364
00370 bool isURLDropHandlingEnabled() const;
00371
00382 void setURLDropHandlingEnabled( bool enable );
00383
00384 void setBrowserInterface( BrowserInterface *impl );
00385 BrowserInterface *browserInterface() const;
00386
00393 bool isActionEnabled( const char * name ) const;
00394
00395 typedef QMap<QCString,QCString> ActionSlotMap;
00424 static ActionSlotMap actionSlotMap();
00425
00430 static ActionSlotMap * actionSlotMapPtr();
00431
00436 static BrowserExtension *childObject( QObject *obj );
00437
00442 void pasteRequest();
00443
00444 #undef signals
00445 #define signals public
00446 signals:
00447 #undef signals
00448 #define signals protected
00449
00454 void enableAction( const char * name, bool enabled );
00455
00462 void openURLRequest( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00463
00470 void openURLRequestDelayed( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00471
00487 void openURLNotify();
00488
00492 void setLocationBarURL( const QString &url );
00493
00497 void setIconURL( const KURL &url );
00498
00506 void createNewWindow( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00507
00515 void createNewWindow( const KURL &url, const KParts::URLArgs &args,
00516 const KParts::WindowArgs &windowArgs, KParts::ReadOnlyPart *&part );
00517
00526 void loadingProgress( int percent );
00530 void speedProgress( int bytesPerSecond );
00531
00532 void infoMessage( const QString & );
00533
00538 void popupMenu( const QPoint &global, const KFileItemList &items );
00539
00546 void popupMenu( KXMLGUIClient *client, const QPoint &global, const KFileItemList &items );
00547
00548 void popupMenu( KXMLGUIClient *client, const QPoint &global, const KFileItemList &items, const KParts::URLArgs &args, KParts::BrowserExtension::PopupFlags i );
00549
00558 void popupMenu( const QPoint &global, const KURL &url,
00559 const QString &mimeType, mode_t mode = (mode_t)-1 );
00560
00570 void popupMenu( KXMLGUIClient *client,
00571 const QPoint &global, const KURL &url,
00572 const QString &mimeType, mode_t mode = (mode_t)-1 );
00573
00583 void popupMenu( KXMLGUIClient *client,
00584 const QPoint &global, const KURL &url,
00585 const KParts::URLArgs &args, KParts::BrowserExtension::PopupFlags i, mode_t mode = (mode_t)-1 );
00586
00592 void selectionInfo( const KFileItemList &items );
00597 void selectionInfo( const QString &text );
00602 void selectionInfo( const KURL::List &urls );
00603
00608 void mouseOverInfo( const KFileItem* item );
00609
00614 void addWebSideBar(const KURL &url, const QString& name);
00615
00619 void moveTopLevelWidget( int x, int y );
00620
00624 void resizeTopLevelWidget( int w, int h );
00625
00626
00627 private slots:
00628 void slotCompleted();
00629 void slotOpenURLRequest( const KURL &url, const KParts::URLArgs &args );
00630 void slotEmitOpenURLRequestDelayed();
00631 void slotEnableAction( const char *, bool );
00632
00633 private:
00634 KParts::ReadOnlyPart *m_part;
00635 URLArgs m_args;
00636 public:
00637 typedef QMap<QCString,int> ActionNumberMap;
00638
00639 private:
00640 static ActionNumberMap * s_actionNumberMap;
00641 static ActionSlotMap * s_actionSlotMap;
00642 static void createActionSlotMap();
00643 protected:
00644 virtual void virtual_hook( int id, void* data );
00645 private:
00646 BrowserExtensionPrivate *d;
00647 };
00648
00654 class BrowserHostExtension : public QObject
00655 {
00656 Q_OBJECT
00657 public:
00658 BrowserHostExtension( KParts::ReadOnlyPart *parent,
00659 const char *name = 0L );
00660
00661 virtual ~BrowserHostExtension();
00662
00668 virtual QStringList frameNames() const;
00669
00675 virtual const QPtrList<KParts::ReadOnlyPart> frames() const;
00676
00682 BrowserHostExtension *findFrameParent(KParts::ReadOnlyPart *callingPart, const QString &frame);
00683
00688 virtual bool openURLInFrame( const KURL &url, const KParts::URLArgs &urlArgs );
00689
00694 static BrowserHostExtension *childObject( QObject *obj );
00695
00696 protected:
00702 enum { VIRTUAL_FIND_FRAME_PARENT = 0x10 };
00703 struct FindFrameParentParams
00704 {
00705 BrowserHostExtension *parent;
00706 KParts::ReadOnlyPart *callingPart;
00707 QString frame;
00708 };
00709
00710 virtual void virtual_hook( int id, void* data );
00711 private:
00712 class BrowserHostExtensionPrivate;
00713 BrowserHostExtensionPrivate *d;
00714 };
00715
00722 class LiveConnectExtension : public QObject
00723 {
00724 Q_OBJECT
00725 public:
00726 enum Type {
00727 TypeVoid=0, TypeBool, TypeFunction, TypeNumber, TypeObject, TypeString
00728 };
00729 typedef QValueList<QPair<Type, QString> > ArgList;
00730
00731 LiveConnectExtension( KParts::ReadOnlyPart *parent, const char *name = 0L );
00732
00733 virtual ~LiveConnectExtension() {}
00737 virtual bool get( const unsigned long objid, const QString & field, Type & type, unsigned long & retobjid, QString & value );
00741 virtual bool put( const unsigned long objid, const QString & field, const QString & value );
00745 virtual bool call( const unsigned long objid, const QString & func, const QStringList & args, Type & type, unsigned long & retobjid, QString & value );
00749 virtual void unregister( const unsigned long objid );
00750
00751 static LiveConnectExtension *childObject( QObject *obj );
00752 signals:
00756 virtual void partEvent( const unsigned long objid, const QString & event, const ArgList & args );
00757 };
00758
00759 }
00760
00761 #endif
00762