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 KPARTS_EXPORT 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
00166 void setForcesNewWindow( bool forcesNewWindow );
00167
00172 bool forcesNewWindow() const;
00173
00174 URLArgsPrivate *d;
00175 };
00176
00177 struct WindowArgsPrivate;
00178
00184 struct KPARTS_EXPORT WindowArgs
00185 {
00186 WindowArgs();
00187 WindowArgs( const WindowArgs &args );
00188 WindowArgs &operator=( const WindowArgs &args );
00189 WindowArgs( const QRect &_geometry, bool _fullscreen, bool _menuBarVisible,
00190 bool _toolBarsVisible, bool _statusBarVisible, bool _resizable );
00191 WindowArgs( int _x, int _y, int _width, int _height, bool _fullscreen,
00192 bool _menuBarVisible, bool _toolBarsVisible,
00193 bool _statusBarVisible, bool _resizable );
00194
00195
00196 int x;
00197 int y;
00198
00199 int width;
00200 int height;
00201 bool fullscreen;
00202 bool menuBarVisible;
00203 bool toolBarsVisible;
00204 bool statusBarVisible;
00205 bool resizable;
00206
00207 bool lowerWindow;
00208
00209 WindowArgsPrivate *d;
00210 };
00211
00212 class KPARTS_EXPORT OpenURLEvent : public Event
00213 {
00214 public:
00215 OpenURLEvent( ReadOnlyPart *part, const KURL &url, const URLArgs &args = URLArgs() );
00216 virtual ~OpenURLEvent();
00217
00218 ReadOnlyPart *part() const { return m_part; }
00219 KURL url() const { return m_url; }
00220 URLArgs args() const { return m_args; }
00221
00222 static bool test( const QEvent *event ) { return Event::test( event, s_strOpenURLEvent ); }
00223
00224 private:
00225 static const char *s_strOpenURLEvent;
00226 ReadOnlyPart *m_part;
00227 KURL m_url;
00228 URLArgs m_args;
00229
00230 class OpenURLEventPrivate;
00231 OpenURLEventPrivate *d;
00232 };
00233
00234 class BrowserExtensionPrivate;
00235
00298 class KPARTS_EXPORT BrowserExtension : public QObject
00299 {
00300 Q_OBJECT
00301 Q_PROPERTY( bool urlDropHandling READ isURLDropHandlingEnabled WRITE setURLDropHandlingEnabled )
00302 public:
00309 BrowserExtension( KParts::ReadOnlyPart *parent,
00310 const char *name = 0L );
00311
00312
00313 virtual ~BrowserExtension();
00314
00315 typedef uint PopupFlags;
00316
00334 enum { DefaultPopupItems=0x0000, ShowNavigationItems=0x0001,
00335 ShowUp=0x0002, ShowReload=0x0004, ShowBookmark=0x0008,
00336 ShowCreateDirectory=0x0010, ShowTextSelectionItems=0x0020,
00337 NoDeletion=0x0040
00338 };
00339
00340
00346 virtual void setURLArgs( const URLArgs &args );
00347
00353 URLArgs urlArgs() const;
00354
00360 virtual int xOffset();
00366 virtual int yOffset();
00367
00375 virtual void saveState( QDataStream &stream );
00376
00384 virtual void restoreState( QDataStream &stream );
00385
00391 bool isURLDropHandlingEnabled() const;
00392
00403 void setURLDropHandlingEnabled( bool enable );
00404
00405 void setBrowserInterface( BrowserInterface *impl );
00406 BrowserInterface *browserInterface() const;
00407
00414 bool isActionEnabled( const char * name ) const;
00415
00416 typedef QMap<QCString,QCString> ActionSlotMap;
00445 static ActionSlotMap actionSlotMap();
00446
00451 static ActionSlotMap * actionSlotMapPtr();
00452
00457 static BrowserExtension *childObject( QObject *obj );
00458
00463 void pasteRequest();
00464
00465 #undef signals
00466 #define signals public
00467 signals:
00468 #undef signals
00469 #define signals protected
00470
00475 void enableAction( const char * name, bool enabled );
00476
00483 void openURLRequest( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00484
00491 void openURLRequestDelayed( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00492
00508 void openURLNotify();
00509
00513 void setLocationBarURL( const QString &url );
00514
00518 void setIconURL( const KURL &url );
00519
00527 void createNewWindow( const KURL &url, const KParts::URLArgs &args = KParts::URLArgs() );
00528
00536 void createNewWindow( const KURL &url, const KParts::URLArgs &args,
00537 const KParts::WindowArgs &windowArgs, KParts::ReadOnlyPart *&part );
00538
00547 void loadingProgress( int percent );
00551 void speedProgress( int bytesPerSecond );
00552
00553 void infoMessage( const QString & );
00554
00559 void popupMenu( const QPoint &global, const KFileItemList &items );
00560
00567 void popupMenu( KXMLGUIClient *client, const QPoint &global, const KFileItemList &items );
00568
00569 void popupMenu( KXMLGUIClient *client, const QPoint &global, const KFileItemList &items, const KParts::URLArgs &args, KParts::BrowserExtension::PopupFlags i );
00570
00579 void popupMenu( const QPoint &global, const KURL &url,
00580 const QString &mimeType, mode_t mode = (mode_t)-1 );
00581
00591 void popupMenu( KXMLGUIClient *client,
00592 const QPoint &global, const KURL &url,
00593 const QString &mimeType, mode_t mode = (mode_t)-1 );
00594
00604 void popupMenu( KXMLGUIClient *client,
00605 const QPoint &global, const KURL &url,
00606 const KParts::URLArgs &args, KParts::BrowserExtension::PopupFlags i, mode_t mode = (mode_t)-1 );
00607
00613 void selectionInfo( const KFileItemList &items );
00618 void selectionInfo( const QString &text );
00623 void selectionInfo( const KURL::List &urls );
00624
00629 void mouseOverInfo( const KFileItem* item );
00630
00635 void addWebSideBar(const KURL &url, const QString& name);
00636
00640 void moveTopLevelWidget( int x, int y );
00641
00645 void resizeTopLevelWidget( int w, int h );
00646
00651 void requestFocus(KParts::ReadOnlyPart *part);
00652
00658 void setPageSecurity( int );
00659
00660 private slots:
00661 void slotCompleted();
00662 void slotOpenURLRequest( const KURL &url, const KParts::URLArgs &args );
00663 void slotEmitOpenURLRequestDelayed();
00664 void slotEnableAction( const char *, bool );
00665
00666 private:
00667 KParts::ReadOnlyPart *m_part;
00668 URLArgs m_args;
00669 public:
00670 typedef QMap<QCString,int> ActionNumberMap;
00671
00672 private:
00673 static ActionNumberMap * s_actionNumberMap;
00674 static ActionSlotMap * s_actionSlotMap;
00675 static void createActionSlotMap();
00676 protected:
00677 virtual void virtual_hook( int id, void* data );
00678 private:
00679 BrowserExtensionPrivate *d;
00680 };
00681
00687 class KPARTS_EXPORT BrowserHostExtension : public QObject
00688 {
00689 Q_OBJECT
00690 public:
00691 BrowserHostExtension( KParts::ReadOnlyPart *parent,
00692 const char *name = 0L );
00693
00694 virtual ~BrowserHostExtension();
00695
00701 virtual QStringList frameNames() const;
00702
00708 virtual const QPtrList<KParts::ReadOnlyPart> frames() const;
00709
00715 BrowserHostExtension *findFrameParent(KParts::ReadOnlyPart *callingPart, const QString &frame);
00716
00721 virtual bool openURLInFrame( const KURL &url, const KParts::URLArgs &urlArgs );
00722
00727 static BrowserHostExtension *childObject( QObject *obj );
00728
00729 protected:
00735 enum { VIRTUAL_FIND_FRAME_PARENT = 0x10 };
00736 struct FindFrameParentParams
00737 {
00738 BrowserHostExtension *parent;
00739 KParts::ReadOnlyPart *callingPart;
00740 QString frame;
00741 };
00742
00743 virtual void virtual_hook( int id, void* data );
00744 private:
00745 class BrowserHostExtensionPrivate;
00746 BrowserHostExtensionPrivate *d;
00747 };
00748
00755 class KPARTS_EXPORT LiveConnectExtension : public QObject
00756 {
00757 Q_OBJECT
00758 public:
00759 enum Type {
00760 TypeVoid=0, TypeBool, TypeFunction, TypeNumber, TypeObject, TypeString
00761 };
00762 typedef QValueList<QPair<Type, QString> > ArgList;
00763
00764 LiveConnectExtension( KParts::ReadOnlyPart *parent, const char *name = 0L );
00765
00766 virtual ~LiveConnectExtension() {}
00770 virtual bool get( const unsigned long objid, const QString & field, Type & type, unsigned long & retobjid, QString & value );
00774 virtual bool put( const unsigned long objid, const QString & field, const QString & value );
00778 virtual bool call( const unsigned long objid, const QString & func, const QStringList & args, Type & type, unsigned long & retobjid, QString & value );
00782 virtual void unregister( const unsigned long objid );
00783
00784 static LiveConnectExtension *childObject( QObject *obj );
00785 signals:
00789 virtual void partEvent( const unsigned long objid, const QString & event, const ArgList & args );
00790 };
00791
00792 }
00793
00794 #endif
00795