From 16c625403695c82055388fb3b2bda728d33028c1 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 23 Jul 2012 17:55:03 +0200 Subject: TabWindow, first import :) --- src/webwindow/webpage.cpp | 60 ++++++++++++++++++ src/webwindow/webpage.h | 54 ++++++++++++++++ src/webwindow/webwindow.cpp | 150 ++++++++++++++++++++++++++++++++++++++++++++ src/webwindow/webwindow.h | 69 ++++++++++++++++++++ 4 files changed, 333 insertions(+) create mode 100644 src/webwindow/webpage.cpp create mode 100644 src/webwindow/webpage.h create mode 100644 src/webwindow/webwindow.cpp create mode 100644 src/webwindow/webwindow.h (limited to 'src/webwindow') diff --git a/src/webwindow/webpage.cpp b/src/webwindow/webpage.cpp new file mode 100644 index 00000000..2c2d34e3 --- /dev/null +++ b/src/webwindow/webpage.cpp @@ -0,0 +1,60 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2008 Benjamin C. Meyer +* Copyright (C) 2008 Dirk Mueller +* Copyright (C) 2008 Urs Wolfer +* Copyright (C) 2008 Michael Howell +* Copyright (C) 2008-2012 by Andrea Diamantini +* Copyright (C) 2010 by Matthieu Gicquel +* Copyright (C) 2009-2010 Dawit Alemayehu +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* ============================================================ */ + + +// Self Includes +#include "webpage.h" +#include "webpage.moc" + +#include + + +WebPage::WebPage(QWidget *parent) + : KWebPage(parent) +{ +} + + +WebPage::~WebPage() +{ +} + + +WebPage *WebPage::createWindow(QWebPage::WebWindowType type) +{ + // added to manage web modal dialogs + if (type == QWebPage::WebModalDialog) + kDebug() << "Modal Dialog"; + + WebPage* p = new WebPage; + emit pageCreated(p); + return p; +} diff --git a/src/webwindow/webpage.h b/src/webwindow/webpage.h new file mode 100644 index 00000000..3631074b --- /dev/null +++ b/src/webwindow/webpage.h @@ -0,0 +1,54 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2008 Benjamin C. Meyer +* Copyright (C) 2008 Dirk Mueller +* Copyright (C) 2008 Urs Wolfer +* Copyright (C) 2008 Michael Howell +* Copyright (C) 2008-2012 by Andrea Diamantini +* Copyright (C) 2010 by Matthieu Gicquel +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* ============================================================ */ + + +#ifndef WEBPAGE_H +#define WEBPAGE_H + +// KDE Includes +#include + + +class WebPage : public KWebPage +{ + Q_OBJECT + +public: + WebPage(QWidget *parent = 0); + ~WebPage(); + +protected: + WebPage *createWindow(WebWindowType type); + +Q_SIGNALS: + void pageCreated(WebPage *); +}; + +#endif diff --git a/src/webwindow/webwindow.cpp b/src/webwindow/webwindow.cpp new file mode 100644 index 00000000..4351f331 --- /dev/null +++ b/src/webwindow/webwindow.cpp @@ -0,0 +1,150 @@ +/*************************************************************************** + * Copyright (C) 2012 by Andrea Diamantini * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * + ***************************************************************************/ + + +#include "webwindow.h" +#include "webwindow.moc" + +#include "webpage.h" + +#include +#include +#include +#include + + +WebWindow::WebWindow(QWidget *parent) + : QWidget(parent) + , _view(new QWebView(this)) + , _edit(new QLineEdit(this)) +{ + WebPage *p = new WebPage(_view); + _view->setPage(p); + + // layout + QVBoxLayout *l = new QVBoxLayout; + l->addWidget(_edit); + l->addWidget(_view); + l->setContentsMargins(0, 0, 0, 0); + setLayout(l); + + setContentsMargins(0,0,0,0); + + // line edit signals + connect(_edit, SIGNAL(returnPressed()), this, SLOT(checkLoadUrl())); + + // url signal + connect(_view, SIGNAL(urlChanged(QUrl)), this, SLOT(setUrlText(QUrl))); + + // things changed signals + connect(_view, SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); + + // load signals + connect(_view, SIGNAL(loadStarted()), this, SIGNAL(loadStarted())); + connect(_view, SIGNAL(loadProgress(int)), this, SIGNAL(loadProgress(int))); + connect(_view, SIGNAL(loadFinished(bool)), this, SIGNAL(loadFinished(bool))); + + // page signals + connect(p, SIGNAL(pageCreated(WebPage *)), this, SIGNAL(pageCreated(WebPage *))); +} + + +WebWindow::WebWindow(WebPage *page, QWidget *parent) + : QWidget(parent) + , _view(new QWebView(this)) + , _edit(new QLineEdit(this)) +{ + _view->setPage(page); + page->setParent(_view); + + // layout + QVBoxLayout *l = new QVBoxLayout; + l->addWidget(_edit); + l->addWidget(_view); + l->setContentsMargins(0, 0, 0, 0); + setLayout(l); + + setContentsMargins(0,0,0,0); + + // line edit signals + connect(_edit, SIGNAL(returnPressed()), this, SLOT(checkLoadUrl())); + + // url signal + connect(_view, SIGNAL(urlChanged(QUrl)), this, SLOT(setUrlText(QUrl))); + + // things changed signals + connect(_view, SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); + + // load signals + connect(_view, SIGNAL(loadStarted()), this, SIGNAL(loadStarted())); + connect(_view, SIGNAL(loadProgress(int)), this, SIGNAL(loadProgress(int))); + connect(_view, SIGNAL(loadFinished(bool)), this, SIGNAL(loadFinished(bool))); + + // page signals + connect(page, SIGNAL(pageCreated(WebPage *)), this, SIGNAL(pageCreated(WebPage *))); + +} + + +void WebWindow::load(const QUrl &url) +{ + _view->load(url); +} + + +WebPage *WebWindow::page() +{ + if (!_view) + return 0; + + WebPage *p = qobject_cast(_view->page()); + return p; +} + + +void WebWindow::checkLoadUrl() +{ + QString urlString = _edit->text(); + QUrl u = QUrl::fromUserInput(urlString); + load(u); +} + + +void WebWindow::setUrlText(const QUrl &u) +{ + _edit->setText(u.toString()); +} + + +QUrl WebWindow::url() const +{ + return _view->url(); +} + + +QString WebWindow::title() const +{ + return _view->title(); +} + + +QIcon WebWindow::icon() const +{ + return _view->icon(); +} diff --git a/src/webwindow/webwindow.h b/src/webwindow/webwindow.h new file mode 100644 index 00000000..e5f68567 --- /dev/null +++ b/src/webwindow/webwindow.h @@ -0,0 +1,69 @@ +/*************************************************************************** + * Copyright (C) 2012 by Andrea Diamantini * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * + ***************************************************************************/ + + +#ifndef WEB_WINDOW +#define WEB_WINDOW + + +#include + + +class WebPage; + +class QWebView; +class QLineEdit; +class QUrl; + + +class WebWindow : public QWidget +{ + Q_OBJECT + +public: + WebWindow(QWidget *parent = 0); + WebWindow(WebPage *page, QWidget *parent = 0); + + void load(const QUrl &); + + WebPage *page(); + + QUrl url() const; + QString title() const; + QIcon icon() const; + +private Q_SLOTS: + void checkLoadUrl(); + void setUrlText(const QUrl &); + +Q_SIGNALS: + void titleChanged(QString); + + void loadStarted(); + void loadProgress(int); + void loadFinished(bool); + + void pageCreated(WebPage *); + +private: + QWebView *_view; + QLineEdit *_edit; +}; + +#endif // WEB_WINDOW -- cgit v1.2.1