diff --git a/gui/addmultipledownloadswizard.cpp b/gui/addmultipledownloadswizard.cpp index 3d64b97..e2d0595 100644 --- a/gui/addmultipledownloadswizard.cpp +++ b/gui/addmultipledownloadswizard.cpp @@ -223,7 +223,7 @@ void AddMultipleDownloadsResultsPage::initializePage() connect(m_finder, &DownloadFinder::finished, this, &AddMultipleDownloadsResultsPage::finderFinished); connect(m_finder, &DownloadFinder::newResultsAvailable, this, &AddMultipleDownloadsResultsPage::finderHasResults); m_finder->setContinueAutomatically(false); - m_finder->setProxy(NetworkProxyOptionPage::proxy()); + m_finder->setProxy(ProxyPage::proxy()); m_finder->start(); } } diff --git a/gui/downloadinteraction.cpp b/gui/downloadinteraction.cpp index 9f63fed..e6086b4 100644 --- a/gui/downloadinteraction.cpp +++ b/gui/downloadinteraction.cpp @@ -49,11 +49,11 @@ void DownloadInteraction::downloadRequiresOutputDevice(Download *download, size_ { QString fileName = download->suitableFilename(); // use default directory and the "suitable file name" to determine the target path - if(GeneralTargetOptionPage::determineTargetFileWithoutAsking() // if correspondent option is set + if(TargetPage::determineTargetFileWithoutAsking() // if correspondent option is set && !forceFileDialog // and the caller don't wants to force the file dialog - && (GeneralTargetOptionPage::targetDirectory().isEmpty() || QDir(GeneralTargetOptionPage::targetDirectory()).exists()) // and the default directory exists or is empty + && (TargetPage::targetDirectory().isEmpty() || QDir(TargetPage::targetDirectory()).exists()) // and the default directory exists or is empty && !fileName.isEmpty()) { // and the file name is not empty - download->provideOutputDevice(optionIndex, new QFile(GeneralTargetOptionPage::targetDirectory() % QChar('/') % fileName), true); + download->provideOutputDevice(optionIndex, new QFile(TargetPage::targetDirectory() % QChar('/') % fileName), true); } else { // aks the user for the target path otherwise QFileDialog *dlg = new QFileDialog(m_parentWidget); #ifndef Q_OS_WIN @@ -62,7 +62,7 @@ void DownloadInteraction::downloadRequiresOutputDevice(Download *download, size_ #endif dlg->setFileMode(QFileDialog::AnyFile); dlg->setAcceptMode(QFileDialog::AcceptSave); - dlg->setDirectory(GeneralTargetOptionPage::targetDirectory()); + dlg->setDirectory(TargetPage::targetDirectory()); dlg->selectFile(fileName); dlg->setOption(QFileDialog::DontConfirmOverwrite, true); if(!download->title().isEmpty()) { @@ -82,7 +82,7 @@ void DownloadInteraction::downloadRequiresOutputDevice(Download *download, size_ void DownloadInteraction::downloadRequriesOverwritePermission(Download *download, size_t optionIndex, const QString &file) { - if(GeneralTargetOptionPage::overwriteWithoutAsking()) { + if(TargetPage::overwriteWithoutAsking()) { download->setOverwritePermission(optionIndex, PermissionStatus::Allowed); } else { QString message = tr("

The output file %1 already exists.

Do you want to overwrite the existing file?

").arg(file); @@ -100,7 +100,7 @@ void DownloadInteraction::downloadRequriesOverwritePermission(Download *download connect(dlg, &QMessageBox::finished, [download, optionIndex, dlg, overwriteButton, overwriteAlwaysButton, selectOtherButton, abortButton, this] (int) { if(dlg->clickedButton() == overwriteAlwaysButton) { // set dontAskBeforeOverwriting to true if the user clicked yes to all - GeneralTargetOptionPage::overwriteWithoutAsking() = true; + TargetPage::overwriteWithoutAsking() = true; } if(dlg->clickedButton() == overwriteButton || dlg->clickedButton() == overwriteAlwaysButton) { download->setOverwritePermission(optionIndex, PermissionStatus::Allowed); @@ -117,7 +117,7 @@ void DownloadInteraction::downloadRequriesOverwritePermission(Download *download void DownloadInteraction::downloadRequriesAppendingPermission(Download *download, size_t optionIndex, const QString &file, quint64 offset, quint64 fileSize) { - if(GeneralTargetOptionPage::overwriteWithoutAsking()) { + if(TargetPage::overwriteWithoutAsking()) { download->setAppendPermission(optionIndex, PermissionStatus::Allowed); } else { QString message = tr("

The output file %1 already exists. The downloader assumes it contains previously downloaded data.

Do you want to append the received data to the existing file?

").arg(file); @@ -147,7 +147,7 @@ void DownloadInteraction::downloadRequriesAppendingPermission(Download *download void DownloadInteraction::downloadRequiresRedirectionPermission(Download *download, size_t optionIndex) { - if(NetworkMiscOptionPage::redirectWithoutAsking()) { + if(MiscPage::redirectWithoutAsking()) { download->setRedirectPermission(optionIndex, PermissionStatus::Allowed); } else { const QUrl &originalUrl = download->downloadUrl(download->options().at(optionIndex).redirectionOf()); @@ -164,7 +164,7 @@ void DownloadInteraction::downloadRequiresRedirectionPermission(Download *downlo connect(dlg, &QMessageBox::finished, [download, optionIndex, dlg, this] (int result) { switch(result) { case QMessageBox::YesToAll: - NetworkMiscOptionPage::redirectWithoutAsking() = true; + MiscPage::redirectWithoutAsking() = true; download->setRedirectPermission(optionIndex, PermissionStatus::AlwaysAllowed); break; case QMessageBox::Yes: diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index e97906c..68bf71a 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -79,7 +79,7 @@ MainWindow::MainWindow(QWidget *parent) : m_ui->setupUi(this); // load settings - restoreGeometry(GeneralUiOptionPage::mainWindowGeometry()); + restoreGeometry(UiPage::mainWindowGeometry()); // setup tray icon and its context menu setupTrayIcon(); @@ -453,7 +453,7 @@ void MainWindow::removeSelectedDownloads() // methods for several gui features void MainWindow::updateSelectionMode() { - m_ui->downloadsTreeView->setSelectionMode(GeneralUiOptionPage::multiSelection() ? QAbstractItemView::MultiSelection : QAbstractItemView::SingleSelection); + m_ui->downloadsTreeView->setSelectionMode(UiPage::multiSelection() ? QAbstractItemView::MultiSelection : QAbstractItemView::SingleSelection); } void MainWindow::updateStartStopControls() @@ -750,11 +750,11 @@ void MainWindow::resetGroovesharkSession() void MainWindow::exploreDownloadsDir() { - if(GeneralTargetOptionPage::targetDirectory().isEmpty()) { + if(TargetPage::targetDirectory().isEmpty()) { QMessageBox::warning(this, windowTitle(), tr("There is no download target selected.")); } else { - if(QDir(GeneralTargetOptionPage::targetDirectory()).exists()) { - DesktopUtils::openLocalFileOrDir(GeneralTargetOptionPage::targetDirectory()); + if(QDir(TargetPage::targetDirectory()).exists()) { + DesktopUtils::openLocalFileOrDir(TargetPage::targetDirectory()); } else { QMessageBox::warning(this, windowTitle(), tr("The selected download directory doesn't exist anymore.")); } @@ -779,8 +779,8 @@ void MainWindow::closeEvent(QCloseEvent *event) } } } - GeneralUiOptionPage::mainWindowGeometry() = saveGeometry(); - GeneralUiOptionPage::mainWindowState() = saveState(); + UiPage::mainWindowGeometry() = saveGeometry(); + UiPage::mainWindowState() = saveState(); } void MainWindow::downloadChangedStatus(Download *download) @@ -830,7 +830,7 @@ void MainWindow::updateOverallStatus(Download *download) qint64 newBytesReceived = download->newBytesReceived(); qint64 newBytesToReceive = download->newBytesToReceive(); m_totalSpeed += download->shiftSpeed(); - NetworkStatsOptionPage::bytesReceived() += newBytesReceived; + StatsPage::bytesReceived() += newBytesReceived; m_stillToReceive += newBytesToReceive - newBytesReceived; m_remainingTime = m_totalSpeed > 0 ? TimeSpan::fromSeconds(static_cast(m_stillToReceive) / (m_totalSpeed * 125.0)) diff --git a/gui/proxypage.ui b/gui/proxypage.ui index cd309bd..d2246eb 100644 --- a/gui/proxypage.ui +++ b/gui/proxypage.ui @@ -7,11 +7,11 @@ 0 0 245 - 195 + 220 - Configure proxy server + Proxy diff --git a/gui/settings.cpp b/gui/settings.cpp index 0eeec85..a4cd9d2 100644 --- a/gui/settings.cpp +++ b/gui/settings.cpp @@ -5,7 +5,7 @@ // include configuration from separate header file when building with CMake #ifndef APP_METADATA_AVAIL -#include "resources/config.h" +# include "resources/config.h" #endif #include @@ -38,19 +38,14 @@ using namespace Network; namespace QtGui { -GeneralTargetOptionPage::GeneralTargetOptionPage(QWidget *parentWindow) : - Dialogs::UiFileBasedOptionPage(parentWindow) +TargetPage::TargetPage(QWidget *parentWindow) : + TargetPageBase(parentWindow) {} -GeneralTargetOptionPage::~GeneralTargetOptionPage() +TargetPage::~TargetPage() {} -QString GeneralTargetOptionPage::displayName() const -{ - return QApplication::translate("QtGui::GeneralTargetOptionPage", "Target directory"); -} - -bool GeneralTargetOptionPage::apply() +bool TargetPage::apply() { if(hasBeenShown()) { targetDirectory() = ui()->defaultTargetLineEdit->text(); @@ -60,7 +55,7 @@ bool GeneralTargetOptionPage::apply() return true; } -void GeneralTargetOptionPage::reset() +void TargetPage::reset() { if(hasBeenShown()) { ui()->defaultTargetLineEdit->setText(targetDirectory()); @@ -69,27 +64,27 @@ void GeneralTargetOptionPage::reset() } } -QString &GeneralTargetOptionPage::targetDirectory() +QString &TargetPage::targetDirectory() { static QString dir; return dir; } -bool &GeneralTargetOptionPage::overwriteWithoutAsking() +bool &TargetPage::overwriteWithoutAsking() { static bool val = false; return val; } -bool &GeneralTargetOptionPage::determineTargetFileWithoutAsking() +bool &TargetPage::determineTargetFileWithoutAsking() { static bool val = true; return val; } -QWidget *GeneralTargetOptionPage::setupWidget() +QWidget *TargetPage::setupWidget() { - QWidget *widget = UiFileBasedOptionPage::setupWidget(); + QWidget *widget = TargetPageBase::setupWidget(); // draw icon to info icon graphics view QIcon icon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation, nullptr, widget); QGraphicsScene *scene = new QGraphicsScene(); @@ -97,11 +92,11 @@ QWidget *GeneralTargetOptionPage::setupWidget() scene->addItem(item); ui()->infoIconGraphicsView->setScene(scene); // connect signals and slots - QObject::connect(ui()->selectDefaultDirPushButton, &QPushButton::clicked, std::bind(&GeneralTargetOptionPage::selectTargetDirectory, this)); + QObject::connect(ui()->selectDefaultDirPushButton, &QPushButton::clicked, std::bind(&TargetPage::selectTargetDirectory, this)); return widget; } -void GeneralTargetOptionPage::selectTargetDirectory() +void TargetPage::selectTargetDirectory() { QFileDialog *dlg = new QFileDialog(parentWindow()); #ifdef Q_OS_WIN @@ -121,19 +116,15 @@ void GeneralTargetOptionPage::selectTargetDirectory() dlg->show(); } -GeneralUiOptionPage::GeneralUiOptionPage() : +UiPage::UiPage(QWidget *parentWidget) : + OptionPage(parentWidget), m_multiSelectionCheckBox(nullptr) {} -GeneralUiOptionPage::~GeneralUiOptionPage() +UiPage::~UiPage() {} -QString GeneralUiOptionPage::displayName() const -{ - return QApplication::translate("QtGui::GeneralUiOptionPage", "User interface"); -} - -bool GeneralUiOptionPage::apply() +bool UiPage::apply() { if(hasBeenShown()) { multiSelection() = m_multiSelectionCheckBox->isChecked(); @@ -141,34 +132,35 @@ bool GeneralUiOptionPage::apply() return true; } -void GeneralUiOptionPage::reset() +void UiPage::reset() { if(hasBeenShown()) { m_multiSelectionCheckBox->setChecked(multiSelection()); } } -QByteArray &GeneralUiOptionPage::mainWindowGeometry() +QByteArray &UiPage::mainWindowGeometry() { static QByteArray geometry; return geometry; } -QByteArray &GeneralUiOptionPage::mainWindowState() +QByteArray &UiPage::mainWindowState() { static QByteArray state; return state; } -bool &GeneralUiOptionPage::multiSelection() +bool &UiPage::multiSelection() { static bool val = false; return val; } -QWidget *GeneralUiOptionPage::setupWidget() +QWidget *UiPage::setupWidget() { QWidget *widget = new QWidget(); + widget->setWindowTitle(QApplication::translate("QtGui::GeneralUiOptionPage", "User interface")); QVBoxLayout *layout = new QVBoxLayout(widget); QLabel *mainWindowLabel = new QLabel(QApplication::translate("QtGui::GeneralUiOptionPage", "Main window")); mainWindowLabel->setStyleSheet(QStringLiteral("font-weight: bold;")); @@ -178,18 +170,14 @@ QWidget *GeneralUiOptionPage::setupWidget() return widget; } -NetworkProxyOptionPage::NetworkProxyOptionPage() +ProxyPage::ProxyPage(QWidget *parentWidget) : + ProxyPageBase(parentWidget) {} -NetworkProxyOptionPage::~NetworkProxyOptionPage() +ProxyPage::~ProxyPage() {} -QString NetworkProxyOptionPage::displayName() const -{ - return QApplication::translate("QtGui::NetworkProxyOptionPage", "Proxy server"); -} - -bool NetworkProxyOptionPage::apply() +bool ProxyPage::apply() { if(hasBeenShown()) { // set entered values to proxy @@ -213,7 +201,7 @@ bool NetworkProxyOptionPage::apply() return true; } -void NetworkProxyOptionPage::reset() +void ProxyPage::reset() { if(hasBeenShown()) { switch(proxy().type()) { @@ -242,23 +230,24 @@ void NetworkProxyOptionPage::reset() } } -QNetworkProxy &NetworkProxyOptionPage::proxy() +QNetworkProxy &ProxyPage::proxy() { static QNetworkProxy proxy; return proxy; } -QWidget *NetworkProxyOptionPage::setupWidget() +QWidget *ProxyPage::setupWidget() { - QWidget *widget = Dialogs::UiFileBasedOptionPage::setupWidget(); + QWidget *widget = ProxyPageBase::setupWidget(); + widget->setWindowTitle(QApplication::translate("QtGui::NetworkProxyOptionPage", "Proxy server")); ui()->widget->setEnabled(false); // connect signals and slots QObject::connect(ui()->enableCheckBox, &QCheckBox::clicked, ui()->widget, &QWidget::setEnabled); - QObject::connect(ui()->hostNameLineEdit, &QLineEdit::editingFinished, std::bind(&NetworkProxyOptionPage::updateProxy, this)); + QObject::connect(ui()->hostNameLineEdit, &QLineEdit::editingFinished, std::bind(&ProxyPage::updateProxy, this)); return widget; } -void NetworkProxyOptionPage::updateProxy() +void ProxyPage::updateProxy() { QStringList parts = ui()->hostNameLineEdit->text().split(":", QString::SkipEmptyParts); if(parts.count() == 2) { @@ -271,18 +260,14 @@ void NetworkProxyOptionPage::updateProxy() } } -NetworkUserAgentOptionPage::NetworkUserAgentOptionPage() +UserAgentPage::UserAgentPage(QWidget *parentWidget) : + UserAgentPageBase(parentWidget) {} -NetworkUserAgentOptionPage::~NetworkUserAgentOptionPage() +UserAgentPage::~UserAgentPage() {} -QString NetworkUserAgentOptionPage::displayName() const -{ - return QApplication::translate("QtGui::NetworkUserAgentOptionPage", "HTTP user agent"); -} - -bool NetworkUserAgentOptionPage::apply() +bool UserAgentPage::apply() { if(hasBeenShown()) { useCustomUserAgent() = ui()->customRadioButton->isChecked(); @@ -291,7 +276,7 @@ bool NetworkUserAgentOptionPage::apply() return true; } -void NetworkUserAgentOptionPage::reset() +void UserAgentPage::reset() { if(hasBeenShown()) { if(useCustomUserAgent()) { @@ -303,31 +288,27 @@ void NetworkUserAgentOptionPage::reset() } } -bool &NetworkUserAgentOptionPage::useCustomUserAgent() +bool &UserAgentPage::useCustomUserAgent() { static bool useCustomUserAgent = false; return useCustomUserAgent; } -QString &NetworkUserAgentOptionPage::customUserAgent() +QString &UserAgentPage::customUserAgent() { static QString userAgent; return userAgent; } -NetworkMiscOptionPage::NetworkMiscOptionPage() : +MiscPage::MiscPage(QWidget *parentWidget) : + OptionPage(parentWidget), m_redirectCheckBox(nullptr) {} -NetworkMiscOptionPage::~NetworkMiscOptionPage() +MiscPage::~MiscPage() {} -QString NetworkMiscOptionPage::displayName() const -{ - return QApplication::translate("QtGui::NetworkMiscOptionPage", "Misc"); -} - -bool NetworkMiscOptionPage::apply() +bool MiscPage::apply() { if(hasBeenShown()) { redirectWithoutAsking() = m_redirectCheckBox->isChecked(); @@ -335,67 +316,65 @@ bool NetworkMiscOptionPage::apply() return true; } -void NetworkMiscOptionPage::reset() +void MiscPage::reset() { if(hasBeenShown()) { m_redirectCheckBox->setChecked(redirectWithoutAsking()); } } -bool &NetworkMiscOptionPage::redirectWithoutAsking() +bool &MiscPage::redirectWithoutAsking() { static bool val = false; return val; } -QWidget *NetworkMiscOptionPage::setupWidget() +QWidget *MiscPage::setupWidget() { QWidget *widget = new QWidget(); + widget->setWindowTitle(QApplication::translate("QtGui::NetworkMiscOptionPage", "Misc")); QVBoxLayout *layout = new QVBoxLayout(widget); layout->addWidget(m_redirectCheckBox = new QCheckBox(QApplication::translate("QtGui::NetworkMiscOptionPage", "follow redirections without asking"), widget)); widget->setLayout(layout); return widget; } -NetworkStatsOptionPage::NetworkStatsOptionPage() : +StatsPage::StatsPage(QWidget *parentWidget) : + OptionPage(parentWidget), m_receivedLabel(nullptr) {} -NetworkStatsOptionPage::~NetworkStatsOptionPage() +StatsPage::~StatsPage() {} -QString NetworkStatsOptionPage::displayName() const -{ - return QApplication::translate("QtGui::NetworkStatsOptionPage", "Statistics"); -} - -bool NetworkStatsOptionPage::apply() +bool StatsPage::apply() { return true; } -void NetworkStatsOptionPage::reset() +void StatsPage::reset() { if(hasBeenShown()) { m_receivedLabel->setText(QString::fromStdString(ConversionUtilities::dataSizeToString(bytesReceived(), true))); } } -quint64 &NetworkStatsOptionPage::bytesReceived() +quint64 &StatsPage::bytesReceived() { static quint64 received; return received; } -QWidget *NetworkStatsOptionPage::setupWidget() +QWidget *StatsPage::setupWidget() { QWidget *widget = new QWidget(); + widget->setWindowTitle(QApplication::translate("QtGui::NetworkStatsOptionPage", "Statistics")); QVBoxLayout *mainLayout = new QVBoxLayout(widget); QFormLayout *formLayout = new QFormLayout(widget); formLayout->addRow(QApplication::translate("QtGui::NetworkStatsOptionPage", "Received data"), m_receivedLabel = new QLabel()); QPushButton *refreshButton = new QPushButton(QApplication::translate("QtGui::NetworkStatsOptionPage", "Refresh")); refreshButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - QObject::connect(refreshButton, &QPushButton::clicked, std::bind(&NetworkStatsOptionPage::reset, this)); + QObject::connect(refreshButton, &QPushButton::clicked, std::bind(&StatsPage::reset, this)); mainLayout->addLayout(formLayout); mainLayout->addWidget(refreshButton); widget->setLayout(mainLayout); @@ -411,14 +390,14 @@ SettingsDialog::SettingsDialog(QWidget *parent) : category = new Dialogs::OptionCategory(this); category->setDisplayName(tr("General")); - category->assignPages(QList() << new GeneralTargetOptionPage(this) << new GeneralUiOptionPage()); + category->assignPages(QList() << new TargetPage(this) << new UiPage()); category->setIcon(QIcon::fromTheme(QStringLiteral("preferences-other"), QIcon(QStringLiteral(":/icons/hicolor/32x32/categories/preferences-general.png")))); categories << category; category = new Dialogs::OptionCategory(this); category->setDisplayName(tr("Network")); category->setIcon(QIcon::fromTheme(QStringLiteral("preferences-system-network"), QIcon(QStringLiteral(":/icons/hicolor/32x32/categories/preferences-network.png")))); - category->assignPages(QList() << new NetworkProxyOptionPage() << new NetworkUserAgentOptionPage() << new NetworkMiscOptionPage() << new NetworkStatsOptionPage()); + category->assignPages(QList() << new ProxyPage() << new UserAgentPage() << new MiscPage() << new StatsPage()); categories << category; category = new Dialogs::OptionCategory(this); @@ -440,18 +419,18 @@ void restoreSettings() QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName()); settings.beginGroup("application"); - GeneralTargetOptionPage::targetDirectory() = settings.value("defaulttargetdirectory").toString(); - GeneralTargetOptionPage::overwriteWithoutAsking() = settings.value("overwritewithoutasking", false).toBool(); - GeneralTargetOptionPage::determineTargetFileWithoutAsking() = settings.value("determinetargetfilewithoutasking", true).toBool(); - NetworkMiscOptionPage::redirectWithoutAsking() = settings.value("redirectwithoutasking", true).toBool(); - NetworkUserAgentOptionPage::useCustomUserAgent() = settings.value("usecustomuseragent", false).toBool(); - NetworkUserAgentOptionPage::customUserAgent() = settings.value("customuseragent").toString(); + TargetPage::targetDirectory() = settings.value("defaulttargetdirectory").toString(); + TargetPage::overwriteWithoutAsking() = settings.value("overwritewithoutasking", false).toBool(); + TargetPage::determineTargetFileWithoutAsking() = settings.value("determinetargetfilewithoutasking", true).toBool(); + MiscPage::redirectWithoutAsking() = settings.value("redirectwithoutasking", true).toBool(); + UserAgentPage::useCustomUserAgent() = settings.value("usecustomuseragent", false).toBool(); + UserAgentPage::customUserAgent() = settings.value("customuseragent").toString(); settings.beginGroup("proxy"); bool validProxyType; int proxyType = settings.value("type", QVariant(QNetworkProxy::NoProxy)).toInt(&validProxyType); validProxyType = proxyType >= 0 && proxyType <= 5; - QNetworkProxy &proxy = NetworkProxyOptionPage::proxy(); + QNetworkProxy &proxy = ProxyPage::proxy(); proxy.setType(validProxyType ? static_cast(proxyType) : QNetworkProxy::NoProxy); proxy.setHostName(settings.value("hostname").toString()); proxy.setPort(settings.value("port", QVariant(0)).toUInt()); @@ -461,13 +440,13 @@ void restoreSettings() settings.endGroup(); settings.beginGroup("statistics"); - NetworkStatsOptionPage::bytesReceived() = settings.value("totalbytesreceived", 0).toLongLong(); + StatsPage::bytesReceived() = settings.value("totalbytesreceived", 0).toLongLong(); settings.endGroup(); settings.beginGroup("mainwindow"); - GeneralUiOptionPage::mainWindowGeometry() = settings.value("geometry").toByteArray(); - GeneralUiOptionPage::mainWindowState() = settings.value("state").toByteArray(); - GeneralUiOptionPage::multiSelection() = settings.value("multiselection").toBool(); + UiPage::mainWindowGeometry() = settings.value("geometry").toByteArray(); + UiPage::mainWindowState() = settings.value("state").toByteArray(); + UiPage::multiSelection() = settings.value("multiselection").toBool(); // load grooveshark authentication file const auto errorMsg = QApplication::translate("QtGui::Settings", "Unable to read Grooveshark authentication information file.\n\nReason: %1\n\nThe values stored in this file are required when connection to Grooveshark. Built-in will values be used instead, but these might be deprecated."); @@ -487,15 +466,15 @@ void saveSettings() QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName()); settings.beginGroup("application"); - settings.setValue("defaulttargetdirectory", GeneralTargetOptionPage::targetDirectory()); - settings.setValue("overwritewithoutasking", GeneralTargetOptionPage::overwriteWithoutAsking()); - settings.setValue("determinetargetfilewithoutasking", GeneralTargetOptionPage::determineTargetFileWithoutAsking()); - settings.setValue("redirectwithoutasking", NetworkMiscOptionPage::redirectWithoutAsking()); - settings.setValue("usecustomuseragent", NetworkUserAgentOptionPage::useCustomUserAgent()); - settings.setValue("customuseragent", NetworkUserAgentOptionPage::customUserAgent()); + settings.setValue("defaulttargetdirectory", TargetPage::targetDirectory()); + settings.setValue("overwritewithoutasking", TargetPage::overwriteWithoutAsking()); + settings.setValue("determinetargetfilewithoutasking", TargetPage::determineTargetFileWithoutAsking()); + settings.setValue("redirectwithoutasking", MiscPage::redirectWithoutAsking()); + settings.setValue("usecustomuseragent", UserAgentPage::useCustomUserAgent()); + settings.setValue("customuseragent", UserAgentPage::customUserAgent()); settings.beginGroup("proxy"); - const QNetworkProxy &proxy = NetworkProxyOptionPage::proxy(); + const QNetworkProxy &proxy = ProxyPage::proxy(); settings.setValue("type", proxy.type()); settings.setValue("hostname", proxy.hostName()); settings.setValue("port", proxy.port()); @@ -505,21 +484,21 @@ void saveSettings() settings.endGroup(); settings.beginGroup("statistics"); - settings.setValue("totalbytesreceived", NetworkStatsOptionPage::bytesReceived()); + settings.setValue("totalbytesreceived", StatsPage::bytesReceived()); settings.endGroup(); settings.beginGroup("mainwindow"); - settings.setValue("geometry", GeneralUiOptionPage::mainWindowGeometry()); - settings.setValue("state", GeneralUiOptionPage::mainWindowState()); - settings.setValue("multiselection", GeneralUiOptionPage::multiSelection()); + settings.setValue("geometry", UiPage::mainWindowGeometry()); + settings.setValue("state", UiPage::mainWindowState()); + settings.setValue("multiselection", UiPage::multiSelection()); settings.endGroup(); } void applySettingsToDownload(Download *download) { - download->setDefaultUserAgentUsed(!NetworkUserAgentOptionPage::useCustomUserAgent()); - download->setCustomUserAgent(NetworkUserAgentOptionPage::useCustomUserAgent() ? NetworkUserAgentOptionPage::customUserAgent() : QString()); - download->setProxy(NetworkProxyOptionPage::proxy()); + download->setDefaultUserAgentUsed(!UserAgentPage::useCustomUserAgent()); + download->setCustomUserAgent(UserAgentPage::useCustomUserAgent() ? UserAgentPage::customUserAgent() : QString()); + download->setProxy(ProxyPage::proxy()); } } diff --git a/gui/settings.h b/gui/settings.h index 01dff1e..e29bf08 100644 --- a/gui/settings.h +++ b/gui/settings.h @@ -9,13 +9,11 @@ #include #include -QT_BEGIN_NAMESPACE -class QByteArray; -class QLabel; -class QLineEdit; -class QCheckBox; -class QNetworkProxy; -QT_END_NAMESPACE +QT_FORWARD_DECLARE_CLASS(QByteArray) +QT_FORWARD_DECLARE_CLASS(QLabel) +QT_FORWARD_DECLARE_CLASS(QLineEdit) +QT_FORWARD_DECLARE_CLASS(QCheckBox) +QT_FORWARD_DECLARE_CLASS(QNetworkProxy) namespace Network { class Download; @@ -23,118 +21,55 @@ class Download; namespace QtGui { -namespace Ui { -class TargetPage; -class ProxyPage; -class UserAgentPage; -} - -class GeneralTargetOptionPage : public Dialogs::UiFileBasedOptionPage -{ +BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(TargetPage) + DECLARE_SETUP_WIDGETS public: - explicit GeneralTargetOptionPage(QWidget *parentWindow); - ~GeneralTargetOptionPage(); - - QString displayName() const; - bool apply(); - void reset(); static QString &targetDirectory(); static bool &overwriteWithoutAsking(); static bool &determineTargetFileWithoutAsking(); - -protected: - QWidget *setupWidget(); - private: void selectTargetDirectory(); -}; +END_DECLARE_OPTION_PAGE -class GeneralUiOptionPage : public Dialogs::OptionPage -{ +BEGIN_DECLARE_OPTION_PAGE(UiPage) + DECLARE_SETUP_WIDGETS public: - explicit GeneralUiOptionPage(); - ~GeneralUiOptionPage(); - - QString displayName() const; - bool apply(); - void reset(); static QByteArray &mainWindowGeometry(); static QByteArray &mainWindowState(); static bool &multiSelection(); - -protected: - QWidget *setupWidget(); - private: QCheckBox *m_multiSelectionCheckBox; -}; +END_DECLARE_OPTION_PAGE -class NetworkProxyOptionPage : public Dialogs::UiFileBasedOptionPage -{ +BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(ProxyPage) + DECLARE_SETUP_WIDGETS public: - explicit NetworkProxyOptionPage(); - ~NetworkProxyOptionPage(); - - QString displayName() const; - bool apply(); - void reset(); static QNetworkProxy &proxy(); - -protected: - QWidget *setupWidget(); - private: void updateProxy(); -}; +END_DECLARE_OPTION_PAGE -class NetworkUserAgentOptionPage : public Dialogs::UiFileBasedOptionPage -{ +BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE(UserAgentPage) public: - explicit NetworkUserAgentOptionPage(); - ~NetworkUserAgentOptionPage(); - - QString displayName() const; - bool apply(); - void reset(); static bool &useCustomUserAgent(); static QString &customUserAgent(); -}; +END_DECLARE_OPTION_PAGE -class NetworkMiscOptionPage : public Dialogs::OptionPage -{ +BEGIN_DECLARE_OPTION_PAGE(MiscPage) + DECLARE_SETUP_WIDGETS public: - explicit NetworkMiscOptionPage(); - ~NetworkMiscOptionPage(); - - QString displayName() const; - bool apply(); - void reset(); static bool &redirectWithoutAsking(); - -protected: - QWidget *setupWidget(); - private: QCheckBox *m_redirectCheckBox; -}; +END_DECLARE_OPTION_PAGE -class NetworkStatsOptionPage : public Dialogs::OptionPage -{ +BEGIN_DECLARE_OPTION_PAGE(StatsPage) + DECLARE_SETUP_WIDGETS public: - explicit NetworkStatsOptionPage(); - ~NetworkStatsOptionPage(); - - QString displayName() const; - bool apply(); - void reset(); static quint64 &bytesReceived(); - -protected: - QWidget *setupWidget(); - private: QLabel *m_receivedLabel; -}; +END_DECLARE_OPTION_PAGE class SettingsDialog : public Dialogs::SettingsDialog { diff --git a/gui/targetpage.ui b/gui/targetpage.ui index c63bd05..d2aea90 100644 --- a/gui/targetpage.ui +++ b/gui/targetpage.ui @@ -2,8 +2,16 @@ QtGui::TargetPage + + + 0 + 0 + 331 + 180 + + - Select target directory + Target directory diff --git a/gui/useragentpage.ui b/gui/useragentpage.ui index 88939cb..088539a 100644 --- a/gui/useragentpage.ui +++ b/gui/useragentpage.ui @@ -2,8 +2,16 @@ QtGui::UserAgentPage + + + 0 + 0 + 239 + 68 + + - Configure user agent + HTTP user agent @@ -15,7 +23,7 @@ - Use a random default user agent + Use a ra&ndom default user agent @@ -30,7 +38,7 @@ - Custom user agent + &Custom user agent