Skin format converted.
This commit is contained in:
parent
5dafdec7e3
commit
dac3a30a04
File diff suppressed because one or more lines are too long
1
resources/skins/vergilius/html_enclosure_every.html
Executable file
1
resources/skins/vergilius/html_enclosure_every.html
Executable file
@ -0,0 +1 @@
|
||||
<a class="btn btn-primary btn-sm" href="%1">%2 (%3)</a>
|
1
resources/skins/vergilius/html_enclosure_image.html
Executable file
1
resources/skins/vergilius/html_enclosure_image.html
Executable file
@ -0,0 +1 @@
|
||||
<a href="%1"><img src="%1" alt="%2" height="%3" /></a>
|
19
resources/skins/vergilius/html_single_message.html
Executable file
19
resources/skins/vergilius/html_single_message.html
Executable file
@ -0,0 +1,19 @@
|
||||
<div class="card">
|
||||
<div class="card-block">
|
||||
<h4 class="card-title">%1 <a class="btn btn-primary btn-sm" href="%3">URL</a> %6</h4>
|
||||
<div class="buttons" style="margin-bottom: 10px;">
|
||||
<img class="%7" message_id="%9" onclick="switchReadStatus(this); return false;"></img>
|
||||
<img class="%8" message_id="%9" onclick="switchStarredStatus(this); return false;"></img>
|
||||
</div>
|
||||
<div class="card-text">
|
||||
<div style="padding: 2px; margin: 0px;">
|
||||
%10
|
||||
</div>
|
||||
%4
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-footer" style="text-align: center;">
|
||||
%2, %5
|
||||
</div>
|
||||
</div>
|
5973
resources/skins/vergilius/html_wrapper.html
Executable file
5973
resources/skins/vergilius/html_wrapper.html
Executable file
File diff suppressed because one or more lines are too long
7
resources/skins/vergilius/metadata.xml
Executable file
7
resources/skins/vergilius/metadata.xml
Executable file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<skin version="0.20">
|
||||
<author>
|
||||
<name>Martin Rotter</name>
|
||||
<email>rotter.martinos@gmail.com</email>
|
||||
</author>
|
||||
</skin>
|
38
resources/skins/vergilius/theme.css
Executable file
38
resources/skins/vergilius/theme.css
Executable file
@ -0,0 +1,38 @@
|
||||
/* This is Qt CSS theme file for the overall GUI of the application. */
|
||||
|
||||
QTreeView::branch:has-siblings:!adjoins-item {
|
||||
border-image: url(qss/dummy.png) 0;
|
||||
}
|
||||
|
||||
QTreeView::branch:has-siblings:adjoins-item {
|
||||
border-image: url(qss/dummy.png) 0;
|
||||
}
|
||||
|
||||
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
|
||||
border-image: url(qss/dummy.png) 0;
|
||||
}
|
||||
|
||||
QTreeView::branch:has-children:!has-siblings:closed,
|
||||
QTreeView::branch:closed:has-children:has-siblings {
|
||||
border-image: none;
|
||||
image: url(qss/branch-closed.png);
|
||||
}
|
||||
|
||||
QTreeView::branch:open:has-children:!has-siblings,
|
||||
QTreeView::branch:open:has-children:has-siblings {
|
||||
border-image: none;
|
||||
image: url(qss/branch-open.png);
|
||||
}
|
||||
|
||||
QTreeView::item {
|
||||
padding: 1px 1px 1px 1px;
|
||||
}
|
||||
|
||||
QTreeView[hideTree="true"]::branch:!has-chlidren:hasSiblings {
|
||||
border-image: none;
|
||||
image: none;
|
||||
}
|
||||
|
||||
QStatusBar::item {
|
||||
border: none;
|
||||
}
|
@ -123,7 +123,8 @@
|
||||
|
||||
#define APP_QUIT_INSTANCE "-q"
|
||||
#define APP_IS_RUNNING "app_is_running"
|
||||
#define APP_SKIN_DEFAULT "base/vergilius.xml"
|
||||
#define APP_SKIN_DEFAULT "vergilius"
|
||||
#define APP_SKIN_METADATA_FILE "metadata.xml"
|
||||
#define APP_STYLE_DEFAULT "Fusion"
|
||||
#define APP_THEME_DEFAULT "Faenza"
|
||||
#define APP_NO_THEME ""
|
||||
|
@ -80,7 +80,7 @@ QString SkinFactory::selectedSkinName() const {
|
||||
|
||||
Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) const {
|
||||
Skin skin;
|
||||
QFile skin_file(APP_SKIN_PATH + QDir::separator() + skin_name);
|
||||
QFile skin_file(APP_SKIN_PATH + QDir::separator() + skin_name + QDir::separator() + APP_SKIN_METADATA_FILE);
|
||||
QDomDocument dokument;
|
||||
|
||||
if (!skin_file.open(QIODevice::Text | QIODevice::ReadOnly) || !dokument.setContent(&skin_file, true)) {
|
||||
@ -94,7 +94,7 @@ Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) const {
|
||||
const QDomNode skin_node = dokument.namedItem(QSL("skin"));
|
||||
|
||||
// Obtain visible skin name.
|
||||
skin.m_visibleName = skin_node.namedItem(QSL("name")).toElement().text();
|
||||
skin.m_visibleName = skin_name;
|
||||
|
||||
// Obtain author.
|
||||
skin.m_author = skin_node.namedItem(QSL("author")).namedItem(QSL("name")).toElement().text();
|
||||
@ -106,10 +106,11 @@ Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) const {
|
||||
skin.m_version = skin_node.attributes().namedItem(QSL("version")).toAttr().value();
|
||||
|
||||
// Obtain other information.
|
||||
skin.m_baseName = QString(skin_name).replace(QDir::separator(), '/');
|
||||
skin.m_baseName = skin_name;
|
||||
|
||||
// Obtain base folder.
|
||||
const QString base_folder = skin.m_baseName.split(QL1C('/'), QString::SkipEmptyParts).at(0);
|
||||
// Free resources.
|
||||
skin_file.close();
|
||||
skin_file.deleteLater();
|
||||
|
||||
// Here we use "/" instead of QDir::separator() because CSS2.1 url field
|
||||
// accepts '/' as path elements separator.
|
||||
@ -120,34 +121,22 @@ Skin SkinFactory::skinInfo(const QString &skin_name, bool *ok) const {
|
||||
// replaced by fully absolute path and target file can
|
||||
// be safely loaded.
|
||||
|
||||
// Obtain layout markup wrapper.
|
||||
skin.m_layoutMarkupWrapper = skin_node.namedItem(QSL("markup_wrapper")).toElement().text();
|
||||
skin.m_layoutMarkupWrapper = QByteArray::fromBase64(skin.m_layoutMarkupWrapper.toLocal8Bit());
|
||||
skin.m_layoutMarkupWrapper = skin.m_layoutMarkupWrapper.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + base_folder);
|
||||
const QString base_folder = APP_SKIN_PATH + QDir::separator() + skin_name + QDir::separator();
|
||||
|
||||
// Obtain enclosure image layout
|
||||
skin.m_enclosureImageMarkup = skin_node.namedItem(QSL("enclosure_image")).toElement().text();
|
||||
skin.m_enclosureImageMarkup = QByteArray::fromBase64(skin.m_enclosureImageMarkup.toLocal8Bit());
|
||||
skin.m_enclosureImageMarkup = skin.m_enclosureImageMarkup.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + base_folder);
|
||||
skin.m_layoutMarkupWrapper = QString::fromUtf8(IOFactory::readTextFile(base_folder + QL1S("html_wrapper.html")));
|
||||
skin.m_layoutMarkupWrapper = skin.m_layoutMarkupWrapper.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + skin_name);
|
||||
|
||||
// Obtain layout markup.
|
||||
skin.m_layoutMarkup = skin_node.namedItem(QSL("markup")).toElement().text();
|
||||
skin.m_layoutMarkup = QByteArray::fromBase64(skin.m_layoutMarkup.toLocal8Bit());
|
||||
skin.m_layoutMarkup = skin.m_layoutMarkup.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + base_folder);
|
||||
skin.m_enclosureImageMarkup = QString::fromUtf8(IOFactory::readTextFile(base_folder + QL1S("html_enclosure_image.html")));
|
||||
skin.m_enclosureImageMarkup = skin.m_enclosureImageMarkup.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + skin_name);
|
||||
|
||||
// Obtain enclosure hyperlink wrapper.
|
||||
skin.m_enclosureMarkup = skin_node.namedItem(QSL("markup_enclosure")).toElement().text();
|
||||
skin.m_enclosureMarkup = QByteArray::fromBase64(skin.m_enclosureMarkup.toLocal8Bit());
|
||||
skin.m_enclosureMarkup = skin.m_enclosureMarkup.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + base_folder);
|
||||
skin.m_layoutMarkup = QString::fromUtf8(IOFactory::readTextFile(base_folder + QL1S("html_single_message.html")));
|
||||
skin.m_layoutMarkup = skin.m_layoutMarkup.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + skin_name);
|
||||
|
||||
// Obtain skin raw data.
|
||||
skin.m_rawData = skin_node.namedItem(QSL("data")).toElement().text();
|
||||
skin.m_rawData = QByteArray::fromBase64(skin.m_rawData.toLocal8Bit());
|
||||
skin.m_rawData = skin.m_rawData.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + base_folder);
|
||||
skin.m_enclosureMarkup = QString::fromUtf8(IOFactory::readTextFile(base_folder + QL1S("html_enclosure_every.html")));
|
||||
skin.m_enclosureMarkup = skin.m_enclosureMarkup.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + skin_name);
|
||||
|
||||
// Free resources.
|
||||
skin_file.close();
|
||||
skin_file.deleteLater();
|
||||
skin.m_rawData = QString::fromUtf8(IOFactory::readTextFile(base_folder + QL1S("theme.css")));
|
||||
skin.m_rawData = skin.m_rawData.replace(QSL("##"), APP_SKIN_PATH + QL1S("/") + skin_name);
|
||||
|
||||
if (ok != nullptr) {
|
||||
*ok = !skin.m_author.isEmpty() && !skin.m_version.isEmpty() &&
|
||||
@ -167,17 +156,10 @@ QList<Skin> SkinFactory::installedSkins() const {
|
||||
QDir::Readable);
|
||||
|
||||
foreach (const QString &base_directory, skin_directories) {
|
||||
// Check skins installed in this base directory.
|
||||
const QStringList skin_files = QDir(APP_SKIN_PATH + QDir::separator() + base_directory).entryList(QStringList() << QSL("*.xml"),
|
||||
QDir::Files | QDir::Readable | QDir::NoDotAndDotDot | QDir::NoSymLinks);
|
||||
const Skin skin_info = skinInfo(base_directory, &skin_load_ok);
|
||||
|
||||
foreach (const QString &skin_file, skin_files) {
|
||||
// Check if skin file is valid and add it if it is valid.
|
||||
const Skin skin_info = skinInfo(base_directory + QDir::separator() + skin_file, &skin_load_ok);
|
||||
|
||||
if (skin_load_ok) {
|
||||
skins.append(skin_info);
|
||||
}
|
||||
if (skin_load_ok) {
|
||||
skins.append(skin_info);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user