summaryrefslogtreecommitdiff
path: root/src/webwindow
diff options
context:
space:
mode:
Diffstat (limited to 'src/webwindow')
-rw-r--r--src/webwindow/webpage.cpp60
-rw-r--r--src/webwindow/webpage.h54
-rw-r--r--src/webwindow/webwindow.cpp150
-rw-r--r--src/webwindow/webwindow.h69
4 files changed, 333 insertions, 0 deletions
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 <ben@meyerhome.net>
+* Copyright (C) 2008 Dirk Mueller <mueller@kde.org>
+* Copyright (C) 2008 Urs Wolfer <uwolfer @ kde.org>
+* Copyright (C) 2008 Michael Howell <mhowell123@gmail.com>
+* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com>
+* Copyright (C) 2010 by Matthieu Gicquel <matgic78 at gmail dot com>
+* Copyright (C) 2009-2010 Dawit Alemayehu <adawit at kde dot org>
+*
+*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Self Includes
+#include "webpage.h"
+#include "webpage.moc"
+
+#include <KDebug>
+
+
+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 <ben@meyerhome.net>
+* Copyright (C) 2008 Dirk Mueller <mueller@kde.org>
+* Copyright (C) 2008 Urs Wolfer <uwolfer @ kde.org>
+* Copyright (C) 2008 Michael Howell <mhowell123@gmail.com>
+* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com>
+* Copyright (C) 2010 by Matthieu Gicquel <matgic78 at gmail dot com>
+*
+*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef WEBPAGE_H
+#define WEBPAGE_H
+
+// KDE Includes
+#include <KWebPage>
+
+
+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 <adjam7@gmail.com> *
+ * *
+ * 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 <QUrl>
+#include <QLineEdit>
+#include <QWebView>
+#include <QVBoxLayout>
+
+
+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<WebPage *>(_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 <adjam7@gmail.com> *
+ * *
+ * 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 <QWidget>
+
+
+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