aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-01-12 21:26:22 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-01-12 21:26:22 +0000
commit30ab0e9dcc0a2a7dd603f65a58b95d5ebacc7822 (patch)
treed1c07931a131d634aa26cefd959bb32ebf03612c
parentcfb167d3881891ebd91e89c7493f27a1354bce4b (diff)
downloadqmmp-30ab0e9dcc0a2a7dd603f65a58b95d5ebacc7822.tar.gz
qmmp-30ab0e9dcc0a2a7dd603f65a58b95d5ebacc7822.tar.bz2
qmmp-30ab0e9dcc0a2a7dd603f65a58b95d5ebacc7822.zip
skinned: fixed crash on Futura skin (#1030)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9185 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Ui/skinned/skin.cpp30
-rw-r--r--src/plugins/Ui/skinned/skin.h4
2 files changed, 21 insertions, 13 deletions
diff --git a/src/plugins/Ui/skinned/skin.cpp b/src/plugins/Ui/skinned/skin.cpp
index b5b68b179..67cca0b06 100644
--- a/src/plugins/Ui/skinned/skin.cpp
+++ b/src/plugins/Ui/skinned/skin.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007-2019 by Ilya Kotov *
+ * Copyright (C) 2007-2020 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* Based on Promoe, an XMMS2 Client *
@@ -787,31 +787,39 @@ void Skin::loadRegion()
m_regions[EQUALIZER_WS] = createRegion(path, "EqualizerWS");
}
-QRegion Skin::createRegion(const QString &path, const QString &key)
+QRegion Skin::createRegion(const QString &path, const QString &group)
{
QRegion region;
QSettings settings(path, QSettings::IniFormat);
- QStringList numPoints = settings.value(key+"/NumPoints").toStringList();
- QStringList value = settings.value(key+"/PointList").toStringList();
+ settings.beginGroup(group);
+ QStringList numPoints, value;
+ for(const QString &key : settings.childKeys())
+ {
+ if(!key.compare("NumPoints", Qt::CaseInsensitive))
+ numPoints = settings.value(key).toStringList();
+ else if(!key.compare("PointList", Qt::CaseInsensitive))
+ value = settings.value(key).toStringList();
+ }
+ settings.endGroup();
QStringList numbers;
for(const QString &str : qAsConst(value))
- numbers << str.split(" ", QString::SkipEmptyParts);
+ numbers << str.split(" ", QString::SkipEmptyParts);
- QList<QString>::iterator n = numbers.begin();
+ QList<QString>::const_iterator n = numbers.constBegin();
int r = m_double_size ? 2 : 1;
- for (int i = 0; i < numPoints.size(); ++i)
+ for(int i = 0; i < numPoints.size(); ++i)
{
- QList <int> lp;
- for (int j = 0; j < numPoints.at(i).toInt()*2; j++)
+ QList<int> lp;
+ for (int j = 0; j < numPoints.at(i).toInt() * 2 && n != numbers.constEnd(); j++)
{
lp << n->toInt();
n ++;
}
QVector<QPoint> points;
- for (int l = 0; l < lp.size(); l+=2)
+ for(int l = 0; l < lp.size(); l += 2)
{
- points << QPoint(lp.at(l)*r, lp.at(l+1)*r);
+ points << QPoint(lp.at(l) * r, lp.at(l + 1) * r);
}
region = region.united(QRegion(QPolygon(points)));
}
diff --git a/src/plugins/Ui/skinned/skin.h b/src/plugins/Ui/skinned/skin.h
index 3077f2f07..de1dd9e1e 100644
--- a/src/plugins/Ui/skinned/skin.h
+++ b/src/plugins/Ui/skinned/skin.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007-2015 by Ilya Kotov *
+ * Copyright (C) 2007-2020 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* Based on Promoe, an XMMS2 Client *
@@ -394,7 +394,7 @@ private:
void loadVolume();
void loadBalance();
void loadRegion();
- QRegion createRegion(const QString &path, const QString &key);
+ QRegion createRegion(const QString &path, const QString &group);
QPixmap *correctSize(QPixmap *pixmap, int w, int h);
};