summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/skin/skincontext.cpp12
-rw-r--r--src/skin/svgparser.cpp11
-rw-r--r--src/skin/svgparser.h4
-rw-r--r--src/widget/wpixmapstore.cpp2
-rw-r--r--src/widget/wpushbutton.cpp9
-rw-r--r--src/widget/wpushbutton.h2
6 files changed, 23 insertions, 17 deletions
diff --git a/src/skin/skincontext.cpp b/src/skin/skincontext.cpp
index c7024cfff9..37bebd6f1a 100644
--- a/src/skin/skincontext.cpp
+++ b/src/skin/skincontext.cpp
@@ -215,14 +215,14 @@ QString SkinContext::getPixmapPath(const QDomNode& pixmapNode) const {
QDomNode svgNode = selectNode(pixmapNode, "svg");
if (!svgNode.isNull()) {
// inline svg
- pixmapPath = pSvgParser->parseSvgTree(svgNode);
+ pixmapPath = pSvgParser->saveToTempFile(pSvgParser->parseSvgTree(svgNode));
} else {
// filename
pixmapName = nodeToString(pixmapNode);
if (!pixmapName.isEmpty()) {
pixmapName = getSkinPath(pixmapName);
if (pixmapName.endsWith(".svg", Qt::CaseInsensitive)) {
- pixmapPath = pSvgParser->parseSvgFile(pixmapName);
+ pixmapPath = pSvgParser->saveToTempFile( pSvgParser->parseSvgFile(pixmapName) );
} else {
pixmapPath = pixmapName;
}
@@ -237,13 +237,14 @@ QString SkinContext::getPixmapPath(const QDomNode& pixmapNode) const {
QByteArray SkinContext::getPixmapBundle(const QDomNode& pixmapNode) const {
/**/
QString pixmapPath, pixmapName;
+ QByteArray out;
const SvgParser* pSvgParser = new SvgParser(*this);
if (!pixmapNode.isNull()) {
QDomNode svgNode = selectNode(pixmapNode, "svg");
if (!svgNode.isNull()) {
// inline svg
- pixmapPath = pSvgParser->saveToTempFile(
+ out = pSvgParser->saveToQByteArray(
pSvgParser->parseSvgTree(svgNode) );
} else {
// filename
@@ -251,7 +252,7 @@ QByteArray SkinContext::getPixmapBundle(const QDomNode& pixmapNode) const {
if (!pixmapName.isEmpty()) {
pixmapName = getSkinPath(pixmapName);
if (pixmapName.endsWith(".svg", Qt::CaseInsensitive)) {
- pixmapPath = pSvgParser->parseAsQByteArray(pixmapName);
+ pixmapPath = pSvgParser->saveToQByteArray( pSvgParser->parseSvgFile(pixmapName) );
} else {
pixmapPath = pixmapName;
}
@@ -260,8 +261,7 @@ QByteArray SkinContext::getPixmapBundle(const QDomNode& pixmapNode) const {
}
/**/
- QByteArray tmp;
- return tmp;
+ return out;
}
diff --git a/src/skin/svgparser.cpp b/src/skin/svgparser.cpp
index 84d9548961..2cdf3c1c4e 100644
--- a/src/skin/svgparser.cpp
+++ b/src/skin/svgparser.cpp
@@ -37,18 +37,19 @@ QDomDocument SvgParser::getDocument(const QDomNode& node) const {
return document;
}
-QString SvgParser::parseSvgFile(const QString& svgFileName) const {
+QDomNode SvgParser::parseSvgFile(const QString& svgFileName) const {
QFile* file = new QFile(svgFileName);
+ QDomNode out;
if (file->open(QIODevice::ReadWrite|QIODevice::Text)) {
QDomDocument document;
document.setContent(file);
QDomNode svgNode = document.elementsByTagName("svg").item(0);
- QString pixmapPath = parseSvgTree(svgNode);
+ out = parseSvgTree(svgNode);
file->close();
- return pixmapPath;
- } else {
- return svgFileName;
+ return out;
}
+
+ return out;
}
QDomNode SvgParser::parseSvgTree(const QDomNode& svgSkinNode) const {
diff --git a/src/skin/svgparser.h b/src/skin/svgparser.h
index bfef437b87..72ed1558d6 100644
--- a/src/skin/svgparser.h
+++ b/src/skin/svgparser.h
@@ -38,9 +38,9 @@ class SvgParser {
QDomNode parseSvgTree(const QDomNode& svgSkinNode) const;
- QString parseSvgFile(const QString& svgFileName) const;
+ QDomNode parseSvgFile(const QString& svgFileName) const;
QString saveToTempFile(const QDomNode& svgNode) const;
- QByteArray parseToQByteArray(const QDomNode& svgNode) const;
+ QByteArray saveToQByteArray(const QDomNode& svgNode) const;
void parseVariableElements(const QDomNode& svgNode) const;
diff --git a/src/widget/wpixmapstore.cpp b/src/widget/wpixmapstore.cpp
index b354773340..bf8a6764fc 100644
--- a/src/widget/wpixmapstore.cpp
+++ b/src/widget/wpixmapstore.cpp
@@ -68,6 +68,7 @@ Paintable::Paintable(const QString& fileName, DrawMode mode)
}
}
+/** /
Paintable::Paintable(const QByteArray& pixmapData, DrawMode mode)
: m_draw_mode(mode) {
if (fileName.endsWith(".svg", Qt::CaseInsensitive)) {
@@ -92,6 +93,7 @@ Paintable::Paintable(const QByteArray& pixmapData, DrawMode mode)
m_pPixmap.reset(pPixmap);
}
}
+/**/
bool Paintable::isNull() const {
diff --git a/src/widget/wpushbutton.cpp b/src/widget/wpushbutton.cpp
index bac14aef5f..3c31a0cf59 100644
--- a/src/widget/wpushbutton.cpp
+++ b/src/widget/wpushbutton.cpp
@@ -203,7 +203,8 @@ void WPushButton::setStates(int iStates) {
}
// void WPushButton::setPixmap(int iState, bool bPressed, const QString& filename) {
-template<typename pixmapBundle> void WPushButton::setPixmap(int iState, bool bPressed, const pixmapBundle sPixmapBundle) {
+template<typename pixmapSource>
+void WPushButton::setPixmap(int iState, bool bPressed, const pixmapSource sPixmapSource) {
QVector<PaintablePointer>& pixmaps = bPressed ?
m_pressedPixmaps : m_unpressedPixmaps;
@@ -211,13 +212,13 @@ template<typename pixmapBundle> void WPushButton::setPixmap(int iState, bool bPr
return;
}
- PaintablePointer pPixmap = WPixmapStore::getPaintable(sPixmapBundle,
+ PaintablePointer pPixmap = WPixmapStore::getPaintable(sPixmapSource,
Paintable::STRETCH);
if (pPixmap.isNull() || pPixmap->isNull()) {
// Only log if it looks like the user tried to specify a pixmap.
- if (!sPixmapBundle.isEmpty()) {
- qDebug() << "WPushButton: Error loading pixmap:" << sPixmapBundle;
+ if (!sPixmapSource.isEmpty()) {
+ qDebug() << "WPushButton: Error loading pixmap:" << sPixmapSource;
}
} else {
// Set size of widget equal to pixmap size
diff --git a/src/widget/wpushbutton.h b/src/widget/wpushbutton.h
index f318078f69..4b327128a8 100644
--- a/src/widget/wpushbutton.h
+++ b/src/widget/wpushbutton.h
@@ -79,6 +79,8 @@ class WPushButton : public WWidget {
private:
// Associates a pixmap of a given state of the button with the widget
void setPixmap(int iState, bool bPressed, const QString &filename);
+ template<typename pixmapSource>
+ void setPixmap(int iState, bool bPressed, const pixmapSource sPixmapSource);
// Associates a background pixmap with the widget. This is only needed if
// the button pixmaps contains alpha channel values.