diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fe278d5b..dced58528 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/src/core/basenetworkaccessmanager.cpp b/src/core/basenetworkaccessmanager.cpp index 532715cb6..8f63426b5 100644 --- a/src/core/basenetworkaccessmanager.cpp +++ b/src/core/basenetworkaccessmanager.cpp @@ -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); } diff --git a/src/core/basenetworkaccessmanager.h b/src/core/basenetworkaccessmanager.h index 17e06ea6f..e6996a049 100644 --- a/src/core/basenetworkaccessmanager.h +++ b/src/core/basenetworkaccessmanager.h @@ -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 diff --git a/src/gui/basewebpage.cpp b/src/gui/basewebpage.cpp new file mode 100644 index 000000000..808a7c09b --- /dev/null +++ b/src/gui/basewebpage.cpp @@ -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()); +} diff --git a/src/gui/basewebpage.h b/src/gui/basewebpage.h new file mode 100644 index 000000000..2fae84ebe --- /dev/null +++ b/src/gui/basewebpage.h @@ -0,0 +1,18 @@ +#ifndef BASEWEBPAGE_H +#define BASEWEBPAGE_H + +#include + + +class BaseWebPage : public QWebPage { + Q_OBJECT + public: + explicit BaseWebPage(QObject *parent = 0); + + signals: + + public slots: + +}; + +#endif // BASEWEBPAGE_H diff --git a/src/gui/basewebview.cpp b/src/gui/basewebview.cpp index 69761b457..2d3488730 100644 --- a/src/gui/basewebview.cpp +++ b/src/gui/basewebview.cpp @@ -1,5 +1,16 @@ +#include + #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. } diff --git a/src/gui/basewebview.h b/src/gui/basewebview.h index fbb79bae9..4904940a8 100644 --- a/src/gui/basewebview.h +++ b/src/gui/basewebview.h @@ -4,15 +4,19 @@ #include +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 diff --git a/src/gui/formmain.ui b/src/gui/formmain.ui index 2626c306f..11cfabe98 100644 --- a/src/gui/formmain.ui +++ b/src/gui/formmain.ui @@ -20,25 +20,19 @@ 0 + + true + + + true + Tab 1 - - 0 - - - 0 - - - 0 - - - 0 - - + @@ -81,7 +75,7 @@ 0 0 800 - 19 + 21 @@ -154,6 +148,14 @@ + + + WebBrowser + QWidget +
webbrowser.h
+ 1 +
+
diff --git a/src/gui/webbrowser.cpp b/src/gui/webbrowser.cpp index 5ca34c6fa..31a2b79cb 100644 --- a/src/gui/webbrowser.cpp +++ b/src/gui/webbrowser.cpp @@ -1,5 +1,47 @@ -#include "gui/webbrowser.h" - - -WebBrowser::WebBrowser(QWidget *parent) : QWidget(parent) { -} +#include +#include +#include + +#include "core/basenetworkaccessmanager.h" +#include "gui/basewebview.h" +#include "gui/webbrowser.h" +#include "gui/themefactory.h" + + +QPointer 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; +} diff --git a/src/gui/webbrowser.h b/src/gui/webbrowser.h index 6d6fd0863..3edf7995d 100644 --- a/src/gui/webbrowser.h +++ b/src/gui/webbrowser.h @@ -1,18 +1,25 @@ -#ifndef FORMBROWSER_H -#define FORMBROWSER_H - -#include - - -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 + + +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 m_networkManager; +}; + +#endif // WEBBROWSER_H