From aec15d017634a54a4dbe1515be2a55e836e5e16e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Pejakovi=C4=87?= Date: Mon, 13 Feb 2012 19:09:02 +0100 Subject: [PATCH] Added QupZilla config page providing usefull information for troubleshooting --- src/app/settings.cpp | 5 ++ src/app/settings.h | 2 + src/data/html.qrc | 1 + src/network/qupzillaschemehandler.cpp | 76 ++++++++++++++++++++++++++- src/network/qupzillaschemehandler.h | 1 + 5 files changed, 84 insertions(+), 1 deletion(-) diff --git a/src/app/settings.cpp b/src/app/settings.cpp index 0777bd73a..c4b43b4d2 100644 --- a/src/app/settings.cpp +++ b/src/app/settings.cpp @@ -36,6 +36,11 @@ void Settings::endGroup() m_settings->endGroup(); } +QSettings* Settings::globalSettings() +{ + return m_settings; +} + Settings::~Settings() { if (!m_settings->group().isEmpty()) { diff --git a/src/app/settings.h b/src/app/settings.h index 73acca421..39b6a3bd0 100644 --- a/src/app/settings.h +++ b/src/app/settings.h @@ -13,6 +13,8 @@ public: static void createSettings(const QString &fileName); static void syncSettings(); + static QSettings* globalSettings(); + void setValue(const QString &key, const QVariant &defaultValue = QVariant()); QVariant value(const QString &key, const QVariant &defaultValue = QVariant()); diff --git a/src/data/html.qrc b/src/data/html.qrc index 54382bc18..781cfc53b 100644 --- a/src/data/html.qrc +++ b/src/data/html.qrc @@ -21,5 +21,6 @@ html/qupzilla.ico html/broken-page.png html/setting.png + html/config.html diff --git a/src/network/qupzillaschemehandler.cpp b/src/network/qupzillaschemehandler.cpp index 4d0e474e4..d50a086a6 100644 --- a/src/network/qupzillaschemehandler.cpp +++ b/src/network/qupzillaschemehandler.cpp @@ -23,6 +23,8 @@ #include "webpage.h" #include "speeddial.h" #include "pluginproxy.h" +#include "plugininterface.h" +#include "settings.h" QString authorString(const char* name, const QString &mail) { @@ -53,7 +55,7 @@ QupZillaSchemeReply::QupZillaSchemeReply(const QNetworkRequest &req, QObject* pa setUrl(req.url()); m_pageName = req.url().path(); - if (m_pageName == "about" || m_pageName == "reportbug" || m_pageName == "start" || m_pageName == "speeddial") { + if (m_pageName == "about" || m_pageName == "reportbug" || m_pageName == "start" || m_pageName == "speeddial" || m_pageName == "config") { m_buffer.open(QIODevice::ReadWrite); setError(QNetworkReply::NoError, tr("No Error")); @@ -83,6 +85,9 @@ void QupZillaSchemeReply::loadPage() else if (m_pageName == "speeddial") { stream << speeddialPage(); } + else if (m_pageName == "config") { + stream << configPage(); + } stream.flush(); m_buffer.reset(); @@ -287,3 +292,72 @@ QString QupZillaSchemeReply::speeddialPage() page.replace("%SD-SIZE%", QString::number(dial->sdSize())); return page; } + + +QString QupZillaSchemeReply::configPage() +{ + static QString cPage; + + if (cPage.isEmpty()) { + cPage.append(qz_readAllFileContents(":html/config.html")); + cPage.replace("%FAVICON%", "qrc:icons/qupzilla.png"); + cPage.replace("%BOX-BORDER%", "qrc:html/box-border.png"); + cPage.replace("%ABOUT-IMG%", "qrc:icons/other/about.png"); + + cPage.replace("%TITLE%", tr("QupZilla Configuration Information")); + cPage.replace("%CONFIG%", tr("Configuration Information")); + cPage.replace("%INFORMATIONS-ABOUT-VERSION%", tr("Information about version")); + cPage.replace("%CONFIG-ABOUT%", tr("This page contains information about Qupzilla's current configuration, plugins, etc, all relevant information for troubleshooting. Please include these information when sending bug reports.")); + cPage.replace("%PREFS%", tr("Preferences")); + cPage.replace("%OPTION%", tr("Option")); + cPage.replace("%VALUE%", tr("Value")); + cPage.replace("%PLUGINS%", tr("Plugins")); + cPage.replace("%PL-NAME%", tr("Name")); + cPage.replace("%PL-VER%", tr("Version")); + cPage.replace("%PL-AUTH%", tr("Author")); + cPage.replace("%PL-DESC%", tr("Description")); + + cPage.replace("%VERSION-INFO%", + QString("
%1
%2
").arg(tr("Version"), QupZilla::VERSION +#ifdef GIT_REVISION + + " (" + GIT_REVISION + ")" +#endif + ) + + QString("
%1
%2
").arg(tr("WebKit version"), QupZilla::WEBKITVERSION) + + QString("
%1
%2
").arg(tr("Build time"), QupZilla::BUILDTIME) + + QString("
%1
%2
").arg(tr("Platform"), qz_buildSystem())); + + QString allGroupsString; + QSettings* settings = Settings::globalSettings(); + foreach (const QString &group, settings->childGroups()) { + QString groupString = QString("%1").arg(group); + settings->beginGroup(group); + + foreach (const QString &key, settings->childKeys()) { + groupString.append(QString("%1%2").arg(key, settings->value(key).toString())); + } + + settings->endGroup(); + + allGroupsString.append(groupString); + } + + cPage.replace("%PREFS-INFO%", allGroupsString); + +// getPluginsList()); + QString pluginsString; + QStringList availablePlugins = mApp->plugins()->getAvailablePlugins(); + QStringList allowedPlugins = mApp->plugins()->getAllowedPlugins(); + foreach(const QString & fileName, availablePlugins) { + PluginInterface* plugin = mApp->plugins()->getPlugin(fileName); + if (!plugin) { + continue; + } + pluginsString.append(QString("%1%2%3%4").arg(plugin->pluginName(), plugin->pluginVersion(), plugin->pluginAuthor().replace("<", "<"), plugin->pluginDescription())); + } + +cPage.replace("%PLUGINS-INFO%", pluginsString); + + } + return cPage; +} \ No newline at end of file diff --git a/src/network/qupzillaschemehandler.h b/src/network/qupzillaschemehandler.h index 7dd8d81d9..a9553fc85 100644 --- a/src/network/qupzillaschemehandler.h +++ b/src/network/qupzillaschemehandler.h @@ -55,6 +55,7 @@ private: QString reportbugPage(); QString startPage(); QString speeddialPage(); + QString configPage(); QBuffer m_buffer; QString m_pageName;