Added some web browser stuff.

This commit is contained in:
Martin Rotter 2013-07-14 08:04:24 +02:00
parent 73dd31e285
commit 5062545cad
10 changed files with 152 additions and 45 deletions

View File

@ -169,6 +169,7 @@ set(APP_SOURCES
src/gui/dynamicshortcutswidget.cpp
src/gui/webbrowser.cpp
src/gui/basewebview.cpp
src/gui/basewebpage.cpp
# CORE sources.
src/core/debugging.cpp
@ -203,6 +204,7 @@ set(APP_HEADERS
src/gui/dynamicshortcutswidget.h
src/gui/webbrowser.h
src/gui/basewebview.h
src/gui/basewebpage.h
# CORE headers.
src/core/basenetworkaccessmanager.h

View File

@ -7,9 +7,19 @@
BaseNetworkAccessManager::BaseNetworkAccessManager(QObject *parent)
: QNetworkAccessManager(parent) {
loadSettings();
}
void BaseNetworkAccessManager::loadSettings() {
QNetworkProxy new_proxy;
// TODO: Continue here.
setProxy(new_proxy);
}
QNetworkReply *BaseNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op,
const QNetworkRequest &request,
QIODevice *outgoingData) {
return QNetworkAccessManager::createRequest(op,
request,
outgoingData);
}

View File

@ -8,11 +8,14 @@ class BaseNetworkAccessManager : public QNetworkAccessManager {
Q_OBJECT
public:
explicit BaseNetworkAccessManager(QObject *parent = 0);
signals:
public slots:
void loadSettings();
protected:
QNetworkReply *createRequest(Operation op,
const QNetworkRequest &request,
QIODevice *outgoingData);
};
#endif // BASENETWORKACCESSMANAGER_H

8
src/gui/basewebpage.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "core/basenetworkaccessmanager.h"
#include "gui/basewebpage.h"
#include "gui/webbrowser.h"
BaseWebPage::BaseWebPage(QObject *parent) : QWebPage(parent) {
setNetworkAccessManager(WebBrowser::getNetworkManager());
}

18
src/gui/basewebpage.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef BASEWEBPAGE_H
#define BASEWEBPAGE_H
#include <QWebPage>
class BaseWebPage : public QWebPage {
Q_OBJECT
public:
explicit BaseWebPage(QObject *parent = 0);
signals:
public slots:
};
#endif // BASEWEBPAGE_H

View File

@ -1,5 +1,16 @@
#include <QStyleOptionFrameV3>
#include "gui/basewebview.h"
#include "gui/basewebpage.h"
BaseWebView::BaseWebView(QWidget *parent) : QWebView(parent) {
BaseWebView::BaseWebView(QWidget *parent)
: QWebView(parent), m_page(new BaseWebPage(this)) {
setPage(m_page);
}
void BaseWebView::paintEvent(QPaintEvent *event) {
QWebView::paintEvent(event);
// TODO: Add frame, inspire from QFrame source code - paint event.
}

View File

@ -4,15 +4,19 @@
#include <QWebView>
class QPaintEvent;
class BaseWebPage;
class BaseWebView : public QWebView {
Q_OBJECT
public:
explicit BaseWebView(QWidget *parent = 0);
signals:
public slots:
protected:
void paintEvent(QPaintEvent *event);
private:
BaseWebPage *m_page;
};
#endif // BASEWEBVIEW_H

View File

@ -20,25 +20,19 @@
<property name="currentIndex">
<number>0</number>
</property>
<property name="documentMode">
<bool>true</bool>
</property>
<property name="movable">
<bool>true</bool>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true"/>
<widget class="WebBrowser" name="widget" native="true"/>
</item>
</layout>
</widget>
@ -81,7 +75,7 @@
<x>0</x>
<y>0</y>
<width>800</width>
<height>19</height>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="m_menuFile">
@ -154,6 +148,14 @@
</property>
</action>
</widget>
<customwidgets>
<customwidget>
<class>WebBrowser</class>
<extends>QWidget</extends>
<header>webbrowser.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -1,5 +1,47 @@
#include "gui/webbrowser.h"
WebBrowser::WebBrowser(QWidget *parent) : QWidget(parent) {
}
#include <QVBoxLayout>
#include <QToolBar>
#include <QPointer>
#include "core/basenetworkaccessmanager.h"
#include "gui/basewebview.h"
#include "gui/webbrowser.h"
#include "gui/themefactory.h"
QPointer<BaseNetworkAccessManager> WebBrowser::m_networkManager;
WebBrowser::WebBrowser(QWidget *parent)
: QWidget(parent), m_layout(new QVBoxLayout(this)) {
// TODO: Make this better, add location box, search box, better icons for buttons,
// note that icons must be loaded via separate method,
// and main window will be responsible for reloading
// icons on all web browsers.
QToolBar *bar = new QToolBar(tr("Navigation panel"), this);
BaseWebView *view = new BaseWebView(this);
bar->addAction(view->pageAction(QWebPage::Back));
bar->addAction(view->pageAction(QWebPage::Forward));
bar->addAction(view->pageAction(QWebPage::Reload));
bar->addAction(view->pageAction(QWebPage::Stop));
m_layout->addWidget(bar);
m_layout->addWidget(view);
m_layout->setMargin(0);
view->load(QUrl("http://www.seznam.cz"));
}
WebBrowser::~WebBrowser() {
qDebug("Erasing WebBrowser instance.");
delete m_layout;
}
BaseNetworkAccessManager *WebBrowser::getNetworkManager() {
if (m_networkManager.isNull()) {
m_networkManager = new BaseNetworkAccessManager();
}
return m_networkManager;
}

View File

@ -1,18 +1,25 @@
#ifndef FORMBROWSER_H
#define FORMBROWSER_H
#include <QWidget>
class WebBrowser : public QWidget {
Q_OBJECT
public:
explicit WebBrowser(QWidget *parent = 0);
signals:
public slots:
};
#endif // FORMBROWSER_H
#ifndef WEBBROWSER_H
#define WEBBROWSER_H
#include <QWidget>
class QVBoxLayout;
class BaseNetworkAccessManager;
class WebBrowser : public QWidget {
Q_OBJECT
public:
explicit WebBrowser(QWidget *parent = 0);
~WebBrowser();
static BaseNetworkAccessManager *getNetworkManager();
private:
QVBoxLayout *m_layout;
static QPointer<BaseNetworkAccessManager> m_networkManager;
};
#endif // WEBBROWSER_H