Skip to content

Commit

Permalink
Make MainWindow and SettignsDialog aware of Core::Application
Browse files Browse the repository at this point in the history
  • Loading branch information
trollixx committed Jan 15, 2015
1 parent ddde234 commit 5728f3c
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 53 deletions.
2 changes: 1 addition & 1 deletion src/core/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Application::Application(const QString &query, QObject *parent) :
m_localServer(new QLocalServer(this)),
m_settings(new Settings(this)),
m_networkManager(new QNetworkAccessManager(this)),
m_mainWindow(new MainWindow(m_settings))
m_mainWindow(new MainWindow(this))
{
// Server for detecting already running instances
connect(m_localServer, &QLocalServer::newConnection, [this]() {
Expand Down
8 changes: 5 additions & 3 deletions src/ui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "networkaccessmanager.h"
#include "searchitemdelegate.h"
#include "settingsdialog.h"
#include "core/application.h"
#include "core/settings.h"
#include "registry/docsetsregistry.h"
#include "registry/listmodel.h"
Expand Down Expand Up @@ -35,12 +36,13 @@

using namespace Zeal;

MainWindow::MainWindow(Core::Settings *settings, QWidget *parent) :
MainWindow::MainWindow(Core::Application *app, QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
m_settings(settings),
m_application(app),
m_settings(app->settings()),
m_zealListModel(new ListModel(this)),
m_settingsDialog(new SettingsDialog(m_settings, m_zealListModel, this)),
m_settingsDialog(new SettingsDialog(app, m_zealListModel, this)),
m_globalShortcut(new QxtGlobalShortcut(this))
{
m_tabBar = new QTabBar(this);
Expand Down
4 changes: 3 additions & 1 deletion src/ui/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class MainWindow;
namespace Zeal {

namespace Core {
class Application;
class Settings;
}

Expand Down Expand Up @@ -70,7 +71,7 @@ class MainWindow : public QMainWindow
Q_OBJECT

public:
explicit MainWindow(Zeal::Core::Settings *settings, QWidget *parent = 0);
explicit MainWindow(Zeal::Core::Application *app, QWidget *parent = 0);
~MainWindow();

void bringToFrontAndSearch(const QString &query);
Expand Down Expand Up @@ -113,6 +114,7 @@ private slots:
Zeal::NetworkAccessManager *m_zealNetworkManager = nullptr;

Ui::MainWindow *ui = nullptr;
Zeal::Core::Application *m_application = nullptr;
Zeal::Core::Settings *m_settings = nullptr;
Zeal::ListModel *m_zealListModel = nullptr;
Zeal::SettingsDialog *m_settingsDialog = nullptr;
Expand Down
85 changes: 42 additions & 43 deletions src/ui/settingsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include "progressitemdelegate.h"
#include "ui_settingsdialog.h"
#include "core/application.h"
#include "core/settings.h"
#include "registry/docsetsregistry.h"

Expand All @@ -10,7 +11,6 @@
#include <QFileDialog>
#include <QFutureWatcher>
#include <QInputDialog>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QMessageBox>
Expand All @@ -26,12 +26,11 @@

using namespace Zeal;

SettingsDialog::SettingsDialog(Core::Settings *settings, ListModel *listModel, QWidget *parent) :
SettingsDialog::SettingsDialog(Core::Application *app, ListModel *listModel, QWidget *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog()),
m_zealListModel(listModel),
m_settings(settings),
m_networkManager(new QNetworkAccessManager(this))
m_application(app),
m_zealListModel(listModel)
{
ui->setupUi(this);

Expand All @@ -54,21 +53,22 @@ SettingsDialog::~SettingsDialog()

void SettingsDialog::loadSettings()
{
const Core::Settings * const settings = m_application->settings();
// General Tab
ui->startMinimizedCheckBox->setChecked(m_settings->startMinimized);
ui->startMinimizedCheckBox->setChecked(settings->startMinimized);

ui->systrayGroupBox->setChecked(m_settings->showSystrayIcon);
ui->minimizeToSystrayCheckBox->setChecked(m_settings->minimizeToSystray);
ui->hideToSystrayCheckBox->setChecked(m_settings->hideOnClose);
ui->systrayGroupBox->setChecked(settings->showSystrayIcon);
ui->minimizeToSystrayCheckBox->setChecked(settings->minimizeToSystray);
ui->hideToSystrayCheckBox->setChecked(settings->hideOnClose);

ui->toolButton->setKeySequence(m_settings->showShortcut);
ui->toolButton->setKeySequence(settings->showShortcut);

//
ui->minFontSize->setValue(m_settings->minimumFontSize);
ui->storageEdit->setText(m_settings->docsetPath);
ui->minFontSize->setValue(settings->minimumFontSize);
ui->storageEdit->setText(settings->docsetPath);

// Network Tab
switch (m_settings->proxyType) {
switch (settings->proxyType) {
case Core::Settings::ProxyType::None:
ui->m_noProxySettings->setChecked(true);
break;
Expand All @@ -77,11 +77,11 @@ void SettingsDialog::loadSettings()
break;
case Core::Settings::ProxyType::UserDefined:
ui->m_manualProxySettings->setChecked(true);
ui->m_httpProxy->setText(m_settings->proxyHost);
ui->m_httpProxyPort->setValue(m_settings->proxyPort);
ui->m_httpProxyNeedsAuth->setChecked(m_settings->proxyAuthenticate);
ui->m_httpProxyUser->setText(m_settings->proxyUserName);
ui->m_httpProxyPass->setText(m_settings->proxyPassword);
ui->m_httpProxy->setText(settings->proxyHost);
ui->m_httpProxyPort->setValue(settings->proxyPort);
ui->m_httpProxyNeedsAuth->setChecked(settings->proxyAuthenticate);
ui->m_httpProxyUser->setText(settings->proxyUserName);
ui->m_httpProxyPass->setText(settings->proxyPassword);
break;
}
}
Expand Down Expand Up @@ -351,10 +351,11 @@ void SettingsDialog::extractDocset()
}
}
} else if (reply->request().url().path().endsWith(QLatin1Literal("tgz"))) {
auto dataDir = QDir(m_settings->docsetPath);
auto dataDir = QDir(m_application->settings()->docsetPath);
if (!dataDir.exists()) {
QMessageBox::critical(this, "No docsets directory found",
QString("'%1' directory not found").arg(m_settings->docsetPath));
QString("'%1' directory not found")
.arg(m_application->settings()->docsetPath));
endTasks();
} else {
const QString program = tarPath();
Expand Down Expand Up @@ -513,7 +514,7 @@ void SettingsDialog::on_deleteButton_clicked()
if (answer == QMessageBox::No)
return;

QDir dataDir(m_settings->docsetPath);
QDir dataDir(m_application->settings()->docsetPath);
const QString docsetName = ui->listView->currentIndex().data(ListModel::DocsetNameRole).toString();
m_zealListModel->removeRow(ui->listView->currentIndex().row());
if (dataDir.exists()) {
Expand Down Expand Up @@ -570,10 +571,7 @@ QNetworkReply *SettingsDialog::startDownload(const QUrl &url)
{
startTasks(1);

QNetworkRequest request(url);
request.setHeader(QNetworkRequest::UserAgentHeader, QStringLiteral("Zeal/" ZEAL_VERSION));

QNetworkReply *reply = m_networkManager->get(request);
QNetworkReply *reply = m_application->download(url);
connect(reply, &QNetworkReply::downloadProgress, this, &SettingsDialog::on_downloadProgress);
replies.append(reply);

Expand Down Expand Up @@ -608,40 +606,41 @@ void SettingsDialog::stopDownloads()

void SettingsDialog::saveSettings()
{
Core::Settings * const settings = m_application->settings();
// General Tab
m_settings->startMinimized = ui->startMinimizedCheckBox->isChecked();
settings->startMinimized = ui->startMinimizedCheckBox->isChecked();

m_settings->showSystrayIcon = ui->systrayGroupBox->isChecked();
m_settings->minimizeToSystray = ui->minimizeToSystrayCheckBox->isChecked();
m_settings->hideOnClose = ui->hideToSystrayCheckBox->isChecked();
settings->showSystrayIcon = ui->systrayGroupBox->isChecked();
settings->minimizeToSystray = ui->minimizeToSystrayCheckBox->isChecked();
settings->hideOnClose = ui->hideToSystrayCheckBox->isChecked();

m_settings->showShortcut = ui->toolButton->keySequence();
settings->showShortcut = ui->toolButton->keySequence();

//
m_settings->minimumFontSize = ui->minFontSize->text().toInt();
settings->minimumFontSize = ui->minFontSize->text().toInt();

if (ui->storageEdit->text() != m_settings->docsetPath) {
m_settings->docsetPath = ui->storageEdit->text();
DocsetsRegistry::instance()->initialiseDocsets(m_settings->docsetPath);
if (ui->storageEdit->text() != settings->docsetPath) {
settings->docsetPath = ui->storageEdit->text();
DocsetsRegistry::instance()->initialiseDocsets(settings->docsetPath);
emit refreshRequested();
}

// Network Tab
// Proxy settings
if (ui->m_noProxySettings->isChecked())
m_settings->proxyType = Core::Settings::ProxyType::None;
settings->proxyType = Core::Settings::ProxyType::None;
else if (ui->m_systemProxySettings->isChecked())
m_settings->proxyType = Core::Settings::ProxyType::System;
settings->proxyType = Core::Settings::ProxyType::System;
else if (ui->m_manualProxySettings->isChecked())
m_settings->proxyType = Core::Settings::ProxyType::UserDefined;
settings->proxyType = Core::Settings::ProxyType::UserDefined;

m_settings->proxyHost = ui->m_httpProxy->text();
m_settings->proxyPort = ui->m_httpProxyPort->text().toUInt();
m_settings->proxyAuthenticate = ui->m_httpProxyNeedsAuth->isChecked();
m_settings->proxyUserName = ui->m_httpProxyUser->text();
m_settings->proxyPassword = ui->m_httpProxyPass->text();
settings->proxyHost = ui->m_httpProxy->text();
settings->proxyPort = ui->m_httpProxyPort->text().toUInt();
settings->proxyAuthenticate = ui->m_httpProxyNeedsAuth->isChecked();
settings->proxyUserName = ui->m_httpProxyUser->text();
settings->proxyPassword = ui->m_httpProxyPass->text();

m_settings->save();
settings->save();

emit webPageStyleUpdated();
}
Expand Down
8 changes: 3 additions & 5 deletions src/ui/settingsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include <QUrl>

class QAbstractButton;
class QNetworkAccessManager;
class QNetworkReply;

namespace Ui {
Expand All @@ -19,14 +18,14 @@ class SettingsDialog;
namespace Zeal {

namespace Core {
class Settings;
class Application;
}

class SettingsDialog : public QDialog
{
Q_OBJECT
public:
explicit SettingsDialog(Core::Settings *settings, ListModel *listModel, QWidget *parent = 0);
explicit SettingsDialog(Core::Application *app, ListModel *listModel, QWidget *parent = 0);
~SettingsDialog() override;

signals:
Expand Down Expand Up @@ -73,10 +72,9 @@ private slots:
};

Ui::SettingsDialog *ui = nullptr;
Core::Application *m_application = nullptr;

ListModel *m_zealListModel = nullptr;
Core::Settings *m_settings = nullptr;
QNetworkAccessManager *m_networkManager = nullptr;
bool downloadedDocsetsList = false;
QMap<QString, DocsetMetadata> availMetadata;
QList<QNetworkReply *> replies;
Expand Down

0 comments on commit 5728f3c

Please sign in to comment.