/*! @file

    @id $Id$
*/
//       1         2         3         4         5         6         7         8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890

#ifndef __WEBVIEWWIDGETIFC_HXX
#define __WEBVIEWWIDGETIFC_HXX

#include <qbrowserlib/log.hxx>
#include <qbrowserlib/swisswebview.hxx>
#include <QtDesigner>

//! @defgroup designer
//! @{

//! WebView widget for Qt Designer
class SwissWebViewWidgetIfc: public QObject,
                             public QDesignerCustomWidgetInterface {
    Q_OBJECT;
    Q_INTERFACES(QDesignerCustomWidgetInterface);
  public:
    SwissWebViewWidgetIfc(): _initialized(false) {}
    bool isContainer() const {
      TRC;
      return true;
    }
    QIcon icon() const {
      TRC;
      return QIcon(":/icons/swisswebview.png");
    }
    QString domXml() const {
      TRC;
      return
        QString
        ("<ui language=\"c++\" displayname=\"%1\">"
         "     <widget class=\"%1\" name=\"%2\"/>"
         "     <customwidgets>"
         "         <customwidget>"
         "             <class>%1</class>"
         "         </customwidget>"
         "     </customwidgets>"
         "</ui>")
        .arg(name())
        .arg(name().toLower());
    }
    QString group() const {
      TRC;
      return "Display Widgets [Examples]";
    }
    QString includeFile() const {
      TRC;
      return "qbrowserlib/swisswebview.hxx";
    }
    QString name() const {
      TRC;
      return "SwissWebView";
    }
    QString toolTip() const {
      TRC;
      return "";
    }
    QString whatsThis() const {
      TRC;
      return "";
    }
    QWidget *createWidget(QWidget *parent) {
      TRC;
      return new qbrowserlib::SwissWebView(&_net, &_executor, parent);
    }
    bool isInitialized() {
      TRC;
      return _initialized;
    }
    void initialized() {
      TRC;
      _initialized = true;
    }
  private:
    bool _initialized;
    QNetworkAccessManager _net;
    qbrowserlib::Executor _executor;
};

//! @}
#endif
