add first iteration of the integrated browser

This commit is contained in:
Orochimarufan 2013-02-13 00:35:35 +01:00
parent b66be337fd
commit 79c5ae121b
6 changed files with 233 additions and 4 deletions

View File

@ -106,6 +106,7 @@ gui/settingsdialog.cpp
gui/newinstancedialog.cpp
gui/logindialog.cpp
gui/taskdialog.cpp
gui/browserdialog.cpp
util/pathutils.cpp
util/osutils.cpp
@ -124,6 +125,7 @@ gui/settingsdialog.h
gui/newinstancedialog.h
gui/logindialog.h
gui/taskdialog.h
gui/browserdialog.h
data/appsettings.h
data/inifile.h
@ -159,6 +161,7 @@ gui/settingsdialog.ui
gui/newinstancedialog.ui
gui/logindialog.ui
gui/taskdialog.ui
gui/browserdialog.ui
)
IF(WIN32)
@ -172,11 +175,13 @@ QT5_WRAP_UI(MULTIMC_UI ${MULTIMC5_UIS})
QT5_ADD_RESOURCES(MULTIMC_QRC multimc.qrc)
add_executable(MultiMC ${MULTIMC_SOURCES} ${MULTIMC_HEADERS} ${MULTIMC_UI} ${MULTIMC_QRC})
qt5_use_modules(MultiMC Widgets Network)
qt5_use_modules(MultiMC Widgets Network WebKitWidgets)
target_link_libraries(MultiMC quazip patchlib ${MultiMC_LINK_ADDITIONAL_LIBS})
add_dependencies(MultiMC MultiMCLauncher)
install(TARGETS MultiMC RUNTIME DESTINATION .)
SET(Qt5_DIR $ENV{QTDIR})
IF(WIN32)
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
SET(D "d")

76
gui/browserdialog.cpp Normal file
View File

@ -0,0 +1,76 @@
#include "browserdialog.h"
#include "ui_browserdialog.h"
#include <QtWebKit/QWebHistory>
BrowserDialog::BrowserDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::BrowserDialog),
m_pageTitleInWindowTitle(true),
m_windowTitleFormat("%1")
{
ui->setupUi(this);
ui->webView->setPage(new QWebPage());
refreshWindowTitle();
resize(800, 600);
}
BrowserDialog::~BrowserDialog()
{
delete ui;
}
// Navigation Buttons
void BrowserDialog::on_btnBack_clicked()
{
ui->webView->back();
}
void BrowserDialog::on_btnForward_clicked()
{
ui->webView->forward();
}
void BrowserDialog::on_webView_urlChanged(const QUrl &url)
{
Q_UNUSED(url);
qDebug("urlChanged");
ui->btnBack->setEnabled(ui->webView->history()->canGoBack());
ui->btnForward->setEnabled(ui->webView->history()->canGoForward());
}
// Window Title Magic
void BrowserDialog::refreshWindowTitle()
{
qDebug("refreshTitle");
if (m_pageTitleInWindowTitle)
setWindowTitle(m_windowTitleFormat.arg(ui->webView->title()));
else
setWindowTitle(m_windowTitleFormat);
}
void BrowserDialog::setPageTitleInWindowTitle(bool enable)
{
m_pageTitleInWindowTitle = enable;
refreshWindowTitle();
}
void BrowserDialog::setWindowTitleFormat(QString format)
{
m_windowTitleFormat = format;
refreshWindowTitle();
}
void BrowserDialog::on_webView_titleChanged(const QString &title)
{
qDebug("titleChanged");
if (m_pageTitleInWindowTitle)
setWindowTitle(m_windowTitleFormat.arg(title));
}
// Public access Methods
void BrowserDialog::load(const QUrl &url)
{
qDebug("load");
ui->webView->setUrl(url);
}

41
gui/browserdialog.h Normal file
View File

@ -0,0 +1,41 @@
#ifndef BROWSERDIALOG_H
#define BROWSERDIALOG_H
#include <QDialog>
namespace Ui {
class BrowserDialog;
}
class BrowserDialog : public QDialog
{
Q_OBJECT
public:
explicit BrowserDialog(QWidget *parent = 0);
~BrowserDialog();
void load(const QUrl &url);
void setPageTitleInWindowTitle(bool enable);
bool pageTitleInWindowTitle(void) { return m_pageTitleInWindowTitle; }
void setWindowTitleFormat(QString format);
QString windowTitleFormat(void) { return m_windowTitleFormat; }
private:
Ui::BrowserDialog *ui;
bool m_pageTitleInWindowTitle;
QString m_windowTitleFormat;
void refreshWindowTitle(void);
private slots:
void on_btnBack_clicked(void);
void on_btnForward_clicked(void);
void on_webView_urlChanged(const QUrl &url);
void on_webView_titleChanged(const QString &title);
};
#endif // BROWSERDIALOG_H

92
gui/browserdialog.ui Normal file
View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>BrowserDialog</class>
<widget class="QDialog" name="BrowserDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>535</width>
<height>400</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="toolbarLayout">
<item>
<widget class="QCommandLinkButton" name="btnBack">
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Back</string>
</property>
<property name="icon">
<iconset theme="go-previous"/>
</property>
</widget>
</item>
<item>
<widget class="QCommandLinkButton" name="btnForward">
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Forward</string>
</property>
<property name="icon">
<iconset theme="go-next"/>
</property>
</widget>
</item>
<item>
<spacer name="toolbarSpacer_1">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QWebView" name="webView">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="url">
<url>
<string>about:blank</string>
</url>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>QWebView</class>
<extends>QWidget</extends>
<header>QtWebKitWidgets/QWebView</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -28,6 +28,7 @@
#include "gui/newinstancedialog.h"
#include "gui/logindialog.h"
#include "gui/taskdialog.h"
#include "gui/browserdialog.h"
#include "data/appsettings.h"
#include "data/version.h"
@ -36,7 +37,7 @@
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui(new Ui::MainWindow)
{
ui->setupUi(this);
@ -88,12 +89,14 @@ void MainWindow::on_actionSettings_triggered()
void MainWindow::on_actionReportBug_triggered()
{
QDesktopServices::openUrl(QUrl("http://bugs.forkk.net/"));
//QDesktopServices::openUrl(QUrl("http://bugs.forkk.net/"));
openWebPage(QUrl("http://bugs.forkk.net/"));
}
void MainWindow::on_actionNews_triggered()
{
QDesktopServices::openUrl(QUrl("http://news.forkk.net/"));
//QDesktopServices::openUrl(QUrl("http://news.forkk.net/"));
openWebPage(QUrl("http://news.forkk.net/"));
}
void MainWindow::on_actionAbout_triggered()
@ -155,3 +158,12 @@ void MainWindow::onLoginComplete(LoginResponse response)
QString("Logged in as %1 with session ID %2.").
arg(response.getUsername(), response.getSessionID()));
}
// BrowserDialog
void MainWindow::openWebPage(QUrl url)
{
BrowserDialog *browser = new BrowserDialog(this);
browser->load(url);
browser->exec();
}

View File

@ -35,6 +35,9 @@ public:
~MainWindow();
void closeEvent(QCloseEvent *event);
// Browser Dialog
void openWebPage(QUrl url);
private slots:
void on_actionAbout_triggered();