From ab01e4750133bb826d633444d95bb2d8c8512068 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 15 Nov 2013 10:03:18 +0100 Subject: [PATCH] Some skins changes. --- resources/skins/base/luxuous.xml | 36 +++++++++++++++++++ resources/skins/base/plain.xml | 13 ------- resources/skins/base/vergilius.xml | 36 +++++++++++++++++++ src/gui/skinfactory.cpp | 55 ++++++------------------------ src/gui/skinfactory.h | 3 -- 5 files changed, 82 insertions(+), 61 deletions(-) create mode 100644 resources/skins/base/luxuous.xml delete mode 100644 resources/skins/base/plain.xml create mode 100644 resources/skins/base/vergilius.xml diff --git a/resources/skins/base/luxuous.xml b/resources/skins/base/luxuous.xml new file mode 100644 index 000000000..dbc8bed5a --- /dev/null +++ b/resources/skins/base/luxuous.xml @@ -0,0 +1,36 @@ + + + plain + + Martin Rotter + rotter.martinos@gmail.com + + + PGh0bWw+IDxoZWFkPiA8c3R5bGU+cHJle3doaXRlLXNwYWNlOnByZS13cmFwfS5oZWFkZXJ0ZXh0 +e2ZvbnQtc2l6ZToxOXB4O21hcmdpbi1ib3R0b206MTBweH0uaGVhZGVye2ZvbnQtc2l6ZToxNXB4 +Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDFzIGVhc2Utb3V0O2JhY2tncm91bmQ6LXdl +YmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sY29sb3Itc3RvcCgwJSwj +NDU0ODRkKSxjb2xvci1zdG9wKDEwMCUsIzAwMDAwMCkpO2JhY2tncm91bmQ6LXdlYmtpdC1saW5l +YXItZ3JhZGllbnQodG9wLCM0NTQ4NGQgMCwjMDAwMDAwIDEwMCUpOy13ZWJraXQtYm9yZGVyLXJh +ZGl1czozcHg7dGV4dC1zaGFkb3c6MCAwIDFweCAjZmZmO2ZpbHRlcjpkcm9wc2hhZG93KGNvbG9y +PSNmZmZmZmYsb2ZmeD0wLG9mZnk9MCk7cGFkZGluZzo4cHg7bWFyZ2luOjVweCBhdXRvIDVweCBh +dXRvO2NvbG9yOndoaXRlfS5oZWFkZXIgYXtjb2xvcjp3aGl0ZX0uY29udGVudHtmb250LXNpemU6 +MTRweDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90 +dG9tLGNvbG9yLXN0b3AoMCUscmdiYSgyMzgsMjM4LDIzOCwwLjY2KSksY29sb3Itc3RvcCgxMDAl +LHJnYmEoMjM4LDIzOCwyMzgsMC42NikpKTtiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRp +ZW50KHRvcCxyZ2JhKDIzOCwyMzgsMjM4LDAuNjYpIDAscmdiYSgyMzgsMjM4LDIzOCwwLjY2KSAx +MDAlKTstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O21hcmdpbjo1cHggYXV0byA1cHggYXV0bztw +YWRkaW5nOjhweH0uZm9vdGVye2ZvbnQtc2l6ZToxMnB4O3RleHQtYWxpZ246Y2VudGVyO3ZlcnRp +Y2FsLWFsaWduOm1pZGRsZTstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZCAxcyBlYXNlLW91 +dDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9t +LGNvbG9yLXN0b3AoMCUsIzQ1NDg0ZCksY29sb3Itc3RvcCgxMDAlLCMwMDAwMDApKTtiYWNrZ3Jv +dW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNDU0ODRkIDAsIzAwMDAwMCAxMDAlKTst +d2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O3RleHQtc2hhZG93OjAgMCAxcHggI2ZmZjtmaWx0ZXI6 +ZHJvcHNoYWRvdyhjb2xvcj0jZmZmZmZmLG9mZng9MCxvZmZ5PTApO3BhZGRpbmc6OHB4O21hcmdp +bjo1cHggYXV0byA1cHggYXV0bztjb2xvcjp3aGl0ZX08L3N0eWxlPiA8dGl0bGU+JTE8L3RpdGxl +PiA8L2hlYWQ+IDxib2R5PiA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+IDxkaXYgY2xhc3M9XCJoZWFk +ZXJ0ZXh0XCI+JTE8L2Rpdj4gJTI8YnI+IDxhIGhyZWY9XCIlM1wiPiUzPC9hPiA8L2Rpdj4gPGRp +diBjbGFzcz1cImNvbnRlbnRcIj4gJTQgPC9kaXY+IDxkaXYgY2xhc3M9XCJmb290ZXJcIj4gJTUg +PC9kaXY+IDwvYm9keT4gPC9odG1sPg== + + \ No newline at end of file diff --git a/resources/skins/base/plain.xml b/resources/skins/base/plain.xml deleted file mode 100644 index 2cd28f993..000000000 --- a/resources/skins/base/plain.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - plain - - Martin Rotter - rotter.martinos@gmail.com - - - - %1
%1
%2
%3
%4
%5
-
- -
\ No newline at end of file diff --git a/resources/skins/base/vergilius.xml b/resources/skins/base/vergilius.xml new file mode 100644 index 000000000..a8e59d906 --- /dev/null +++ b/resources/skins/base/vergilius.xml @@ -0,0 +1,36 @@ + + + vergilius + + Martin Rotter + rotter.martinos@gmail.com + + + PGh0bWw+IDxoZWFkPiA8c3R5bGU+cHJle3doaXRlLXNwYWNlOnByZS13cmFwfS5oZWFkZXJ0ZXh0 +e2ZvbnQtc2l6ZToxOXB4O21hcmdpbi1ib3R0b206MTBweH0uaGVhZGVye2ZvbnQtc2l6ZToxNXB4 +Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDFzIGVhc2Utb3V0O2JhY2tncm91bmQ6LXdl +YmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sY29sb3Itc3RvcCgwJSwj +NDU0ODRkKSxjb2xvci1zdG9wKDEwMCUsIzAwMDAwMCkpO2JhY2tncm91bmQ6LXdlYmtpdC1saW5l +YXItZ3JhZGllbnQodG9wLCM0NTQ4NGQgMCwjMDAwMDAwIDEwMCUpOy13ZWJraXQtYm9yZGVyLXJh +ZGl1czozcHg7dGV4dC1zaGFkb3c6MCAwIDFweCAjZmZmO2ZpbHRlcjpkcm9wc2hhZG93KGNvbG9y +PSNmZmZmZmYsb2ZmeD0wLG9mZnk9MCk7cGFkZGluZzo4cHg7bWFyZ2luOjVweCBhdXRvIDVweCBh +dXRvO2NvbG9yOndoaXRlfS5oZWFkZXIgYXtjb2xvcjp3aGl0ZX0uY29udGVudHtmb250LXNpemU6 +MTRweDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90 +dG9tLGNvbG9yLXN0b3AoMCUscmdiYSgyMzgsMjM4LDIzOCwwLjY2KSksY29sb3Itc3RvcCgxMDAl +LHJnYmEoMjM4LDIzOCwyMzgsMC42NikpKTtiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRp +ZW50KHRvcCxyZ2JhKDIzOCwyMzgsMjM4LDAuNjYpIDAscmdiYSgyMzgsMjM4LDIzOCwwLjY2KSAx +MDAlKTstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O21hcmdpbjo1cHggYXV0byA1cHggYXV0bztw +YWRkaW5nOjhweH0uZm9vdGVye2ZvbnQtc2l6ZToxMnB4O3RleHQtYWxpZ246Y2VudGVyO3ZlcnRp +Y2FsLWFsaWduOm1pZGRsZTstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZCAxcyBlYXNlLW91 +dDtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9t +LGNvbG9yLXN0b3AoMCUsIzQ1NDg0ZCksY29sb3Itc3RvcCgxMDAlLCMwMDAwMDApKTtiYWNrZ3Jv +dW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNDU0ODRkIDAsIzAwMDAwMCAxMDAlKTst +d2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O3RleHQtc2hhZG93OjAgMCAxcHggI2ZmZjtmaWx0ZXI6 +ZHJvcHNoYWRvdyhjb2xvcj0jZmZmZmZmLG9mZng9MCxvZmZ5PTApO3BhZGRpbmc6OHB4O21hcmdp +bjo1cHggYXV0byA1cHggYXV0bztjb2xvcjp3aGl0ZX08L3N0eWxlPiA8dGl0bGU+JTE8L3RpdGxl +PiA8L2hlYWQ+IDxib2R5PiA8ZGl2IGNsYXNzPSJoZWFkZXIiPiA8ZGl2IGNsYXNzPSJoZWFkZXJ0 +ZXh0Ij4lMTwvZGl2PiAlMjxicj4gPGEgaHJlZj0iJTMiPiUzPC9hPiA8L2Rpdj4gPGRpdiBjbGFz +cz0iY29udGVudCI+ICU0IDwvZGl2PiA8ZGl2IGNsYXNzPSJmb290ZXIiPiAlNSA8L2Rpdj4gPC9i +b2R5PiA8L2h0bWw+ + + \ No newline at end of file diff --git a/src/gui/skinfactory.cpp b/src/gui/skinfactory.cpp index 4be44a61e..b698d65f3 100644 --- a/src/gui/skinfactory.cpp +++ b/src/gui/skinfactory.cpp @@ -14,6 +14,10 @@ QPointer SkinFactory::s_instance; SkinFactory::SkinFactory(QObject *parent) : QObject(parent) { } +// TODO: Skin "base/vergilius.xml" is now NEEDED for rssguard +// to run. IT IS DEFAULT skin. It sets no styles and stylesheet. +// It just contains markup for webbrowser. + SkinFactory::~SkinFactory() { qDebug("Destroying SkinFactory instance."); } @@ -28,16 +32,6 @@ SkinFactory *SkinFactory::getInstance() { void SkinFactory::loadCurrentSkin() { QString skin_name_from_settings = getSelectedSkinName(); - - if (skin_name_from_settings == APP_THEME_SYSTEM) { - m_currentSkin = generateDefaultSkin(); - - // User selected default skin for loading. - // NOTE: No need to do anything here. - qDebug("'Default system skin' loaded."); - return; - } - bool skin_parsed; Skin skin_data = getSkinInfo(skin_name_from_settings, &skin_parsed); @@ -62,21 +56,6 @@ void SkinFactory::loadCurrentSkin() { } } -Skin SkinFactory::generateDefaultSkin() { - Skin default_skin; - - default_skin.m_author = "-"; - default_skin.m_baseName = APP_THEME_SYSTEM; - default_skin.m_email = "-"; - default_skin.m_version = "-"; - default_skin.m_visibleName = tr("default system skin"); - - // NOTE: Used http://www.htmlcompressor.com/compressor/ for compression. - default_skin.m_layoutMarkup = " %1
%1
%2
%3
%4
%5
"; - - return default_skin; -} - bool SkinFactory::loadSkinFromData(QString skin_data, const QString &skin_path) { QStringList skin_parts = skin_path.split('/', QString::SkipEmptyParts); @@ -112,7 +91,7 @@ void SkinFactory::setCurrentSkinName(const QString &skin_name) { QString SkinFactory::getSelectedSkinName() { return Settings::getInstance()->value(APP_CFG_GUI, "skin", - APP_THEME_SYSTEM).toString(); + "base/vergilius.xml").toString(); } QString SkinFactory::getCurrentSkinName() { @@ -123,26 +102,13 @@ QString SkinFactory::getCurrentMarkup() { return m_currentSkin.m_layoutMarkup; } -Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) { - if (skin_name == APP_THEME_SYSTEM) { - if (ok != NULL) { - *ok = true; - } - - if (m_currentSkin.m_baseName == APP_THEME_SYSTEM) { - return m_currentSkin; - } - else { - return generateDefaultSkin(); - } - } - +Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) { Skin skin; QXmlQuery query; QString styles; QFile skin_file(APP_SKIN_PATH + QDir::separator() + skin_name); - if (!skin_file.open(QIODevice::ReadOnly) || !query.setFocus(&skin_file)) { + if (!skin_file.open(QIODevice::Text | QIODevice::ReadOnly) || !query.setFocus(&skin_file)) { if (ok) { *ok = false; } @@ -157,6 +123,7 @@ Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) { // Obtain skin raw data. query.setQuery("string(skin/data)"); query.evaluateTo(&skin.m_rawData); + skin.m_rawData = QByteArray::fromBase64(skin.m_rawData.toLocal8Bit()); // Obtain style name. query.setQuery("string(/skin/style)"); @@ -181,6 +148,7 @@ Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) { // Obtain layout markup. query.setQuery("string(/skin/markup)"); query.evaluateTo(&skin.m_layoutMarkup); + skin.m_layoutMarkup = QByteArray::fromBase64(skin.m_layoutMarkup.toLocal8Bit()); // Obtain other information. skin.m_baseName = skin_name; @@ -192,7 +160,7 @@ Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) { if (ok) { *ok = !skin.m_author.isEmpty() && !skin.m_version.isEmpty() && !skin.m_baseName.isEmpty() && !skin.m_email.isEmpty() && - !skin.m_rawData.isEmpty() && !skin.m_stylesNames.isEmpty(); + !skin.m_layoutMarkup.isEmpty(); } return skin; @@ -200,9 +168,6 @@ Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) { QList SkinFactory::getInstalledSkins() { QList skins; - - skins.append(generateDefaultSkin()); - bool skin_load_ok; QStringList skin_directories = QDir(APP_SKIN_PATH).entryList(QDir::Dirs | QDir::NoDotAndDotDot | diff --git a/src/gui/skinfactory.h b/src/gui/skinfactory.h index f9e6c8451..ee81ef758 100644 --- a/src/gui/skinfactory.h +++ b/src/gui/skinfactory.h @@ -31,9 +31,6 @@ class SkinFactory : public QObject { // external resources. bool loadSkinFromData(QString skin_data, const QString &skin_path); - // Generates "default" skin. - Skin generateDefaultSkin(); - public: // Singleton getter. static SkinFactory *getInstance();