/*! @file @id $Id$ */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 #ifndef __SWISSWEBWIDGET_HXX__ #define __SWISSWEBWIDGET_HXX__ #include #include #include #include #include #ifndef CREATE_QT_PROPERTY #define CREATE_QT_PROPERTY(type, name) \ Q_PROPERTY(type _##name READ name WRITE name USER true) \ public: \ void name(const type& v) { \ _##name = v; \ } \ type name() { \ return _##name; \ } \ private: \ type _##name #endif //! @addtogroup qbrowserlib //! @{ namespace qbrowserlib { //! Window Widget for complete page witghin a webbrowser. /*! Contains a toolbar, a status bar and @refs SwissWebView. Instanciate this and you have a complete browser. To be used inside a QTabBar, as main window or as docking widget. */ class SwissWebWidget: public QWidget, private Ui::SwissWebWidget { Q_OBJECT; CREATE_QT_PROPERTY(QUrl, homeUrl); public: SwissWebWidget(QWidget* p=0): QWidget(p) { setupUi(this); /*! Within a QMainWindow, the widget automatically reparents the top buttons to the toolbar and the bottom status line to the window's status bar. */ moveToMain(qobject_cast(p?p->parentWidget():p)); connects(); } //! Moves status widgets to status bar, tool widgets to toolbar /*! You can use this method to reparent the tools and the status part of the widget into the toolbar and statusbar of your main window. @note If used as central widget of a QMainWindow, status and tools are automatically reparented in the constructor. */ void moveToMain(QMainWindow* w) { if (!w || !_statusbar || !_tools) return; QToolBar* t(w->addToolBar(trUtf8("Browser Tools", "name of the browser's toolbar"))); while (_tools->count()) t->addWidget(_tools->itemAt(0)->widget()); delete _tools; _tools=0; _statusbar->removeWidget(_status); delete _status; _status=0; while (_statusbar->count()) w->statusBar()->addWidget(_statusbar->itemAt(0)->widget()); delete _statusbar; _statusbar=0; } public Q_SLOTS: void load() { _webview->load(_url->text()); } void goHome() { _webview->load(_homeUrl); } protected: void connects() { connect(_url, SIGNAL(returnPressed()), SLOT(load())); connect(_home, SIGNAL(pressed()), SLOT(goHome())); } }; } //! @} #endif