More work on web browser, dynamic icon theme switching.
This commit is contained in:
parent
5062545cad
commit
b5922526e0
4 changed files with 71 additions and 15 deletions
|
@ -4,5 +4,5 @@
|
|||
|
||||
|
||||
BaseWebPage::BaseWebPage(QObject *parent) : QWebPage(parent) {
|
||||
setNetworkAccessManager(WebBrowser::getNetworkManager());
|
||||
setNetworkAccessManager(WebBrowser::globalNetworkManager());
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "gui/formmain.h"
|
||||
#include "gui/formabout.h"
|
||||
#include "gui/formsettings.h"
|
||||
#include "gui/webbrowser.h"
|
||||
#include "gui/themefactory.h"
|
||||
#include "gui/systemtrayicon.h"
|
||||
#include "core/settings.h"
|
||||
|
@ -115,12 +116,17 @@ bool FormMain::event(QEvent *event) {
|
|||
}
|
||||
|
||||
void FormMain::setupIcons() {
|
||||
// NOTE: Call QIcon::fromTheme for all needed widgets here.
|
||||
// Setup icons of this main window.
|
||||
m_ui->m_actionSettings->setIcon(ThemeFactory::fromTheme("preferences-system"));
|
||||
m_ui->m_actionQuit->setIcon(ThemeFactory::fromTheme("application-exit"));
|
||||
m_ui->m_actionAboutGuard->setIcon(ThemeFactory::fromTheme("help-about"));
|
||||
m_ui->m_actionImport->setIcon(ThemeFactory::fromTheme("document-import"));
|
||||
m_ui->m_actionExport->setIcon(ThemeFactory::fromTheme("document-export"));
|
||||
|
||||
// Setup icons for underlying components: opened web browsers...
|
||||
foreach (WebBrowser *browser, WebBrowser::runningWebBrowsers()) {
|
||||
browser->setupIcons();
|
||||
}
|
||||
}
|
||||
|
||||
void FormMain::createConnections() {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include <QVBoxLayout>
|
||||
#include <QToolBar>
|
||||
#include <QAction>
|
||||
#include <QPointer>
|
||||
#include <QLineEdit>
|
||||
|
||||
#include "core/basenetworkaccessmanager.h"
|
||||
#include "gui/basewebview.h"
|
||||
|
@ -9,36 +11,71 @@
|
|||
|
||||
|
||||
QPointer<BaseNetworkAccessManager> WebBrowser::m_networkManager;
|
||||
QList<WebBrowser*> WebBrowser::m_runningWebBrowsers;
|
||||
|
||||
WebBrowser::WebBrowser(QWidget *parent)
|
||||
: QWidget(parent), m_layout(new QVBoxLayout(this)) {
|
||||
: QWidget(parent), m_layout(new QVBoxLayout(this)),
|
||||
m_toolBar(new QToolBar(tr("Navigation panel"), this)),
|
||||
m_webView(new BaseWebView(this)),
|
||||
m_actionBack(m_webView->pageAction(QWebPage::Back)),
|
||||
m_actionForward(m_webView->pageAction(QWebPage::Forward)),
|
||||
m_actionReload(m_webView->pageAction(QWebPage::Reload)),
|
||||
m_actionStop(m_webView->pageAction(QWebPage::Stop)) {
|
||||
|
||||
// Add this new instance to the global list of web browsers.
|
||||
// NOTE: This is used primarily for dynamic icon theme switching.
|
||||
m_runningWebBrowsers.append(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));
|
||||
// Set toolbar properties.
|
||||
m_toolBar->layout()->setMargin(0);
|
||||
m_toolBar->setFloatable(false);
|
||||
m_toolBar->setMovable(false);
|
||||
|
||||
m_layout->addWidget(bar);
|
||||
m_layout->addWidget(view);
|
||||
// Add needed actions into toolbar.
|
||||
m_toolBar->addAction(m_actionBack);
|
||||
m_toolBar->addAction(m_actionForward);
|
||||
m_toolBar->addSeparator();
|
||||
m_toolBar->addAction(m_actionReload);
|
||||
m_toolBar->addAction(m_actionStop);
|
||||
|
||||
QLineEdit *ed = new QLineEdit(this);
|
||||
m_toolBar->addWidget(ed);
|
||||
|
||||
// Setup layout.
|
||||
m_layout->addWidget(m_toolBar);
|
||||
m_layout->addWidget(m_webView);
|
||||
m_layout->setMargin(0);
|
||||
|
||||
view->load(QUrl("http://www.seznam.cz"));
|
||||
m_webView->load(QUrl("http://www.seznam.cz"));
|
||||
}
|
||||
|
||||
WebBrowser::~WebBrowser() {
|
||||
qDebug("Erasing WebBrowser instance.");
|
||||
|
||||
// Remove this instance from the global list of web browsers.
|
||||
m_runningWebBrowsers.removeAll(this);
|
||||
|
||||
// Delete members.
|
||||
delete m_layout;
|
||||
}
|
||||
|
||||
BaseNetworkAccessManager *WebBrowser::getNetworkManager() {
|
||||
void WebBrowser::setupIcons() {
|
||||
m_actionBack->setIcon(ThemeFactory::fromTheme("go-previous"));
|
||||
m_actionForward->setIcon(ThemeFactory::fromTheme("go-next"));
|
||||
m_actionReload->setIcon(ThemeFactory::fromTheme("view-refresh"));
|
||||
m_actionStop->setIcon(ThemeFactory::fromTheme("process-stop"));
|
||||
}
|
||||
|
||||
QList<WebBrowser *> WebBrowser::runningWebBrowsers() {
|
||||
return m_runningWebBrowsers;
|
||||
}
|
||||
|
||||
BaseNetworkAccessManager *WebBrowser::globalNetworkManager() {
|
||||
if (m_networkManager.isNull()) {
|
||||
m_networkManager = new BaseNetworkAccessManager();
|
||||
}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
#include <QWidget>
|
||||
|
||||
|
||||
class QToolBar;
|
||||
class QVBoxLayout;
|
||||
class BaseWebView;
|
||||
class BaseNetworkAccessManager;
|
||||
|
||||
class WebBrowser : public QWidget {
|
||||
|
@ -14,12 +16,23 @@ class WebBrowser : public QWidget {
|
|||
explicit WebBrowser(QWidget *parent = 0);
|
||||
~WebBrowser();
|
||||
|
||||
static BaseNetworkAccessManager *getNetworkManager();
|
||||
|
||||
void setupIcons();
|
||||
|
||||
static BaseNetworkAccessManager *globalNetworkManager();
|
||||
static QList<WebBrowser*> runningWebBrowsers();
|
||||
|
||||
private:
|
||||
QToolBar *m_toolBar;
|
||||
QVBoxLayout *m_layout;
|
||||
BaseWebView *m_webView;
|
||||
|
||||
QAction *m_actionBack;
|
||||
QAction *m_actionForward;
|
||||
QAction *m_actionReload;
|
||||
QAction *m_actionStop;
|
||||
|
||||
static QPointer<BaseNetworkAccessManager> m_networkManager;
|
||||
static QList<WebBrowser*> m_runningWebBrowsers;
|
||||
};
|
||||
|
||||
#endif // WEBBROWSER_H
|
||||
|
|
Loading…
Add table
Reference in a new issue