/*! @file

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

#ifndef __SWISSWEBWIDGET_HXX__
#define __SWISSWEBWIDGET_HXX__

#include <qbrowserlib/ui_swisswebwidget.h>

#include <QtGui/QMainWindow>
#include <QtGui/QToolBar>
#include <QtGui/QStatusBar>

#include <QtDebug>

//! @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;
      
    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<QMainWindow*>(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) 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());
      }
      
    protected:

      void connects() {
        connect(_url, SIGNAL(returnPressed()), SLOT(load()));
      }

  };
  
}

//! @}

#endif
