diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-01-12 21:26:22 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-01-12 21:26:22 +0000 |
| commit | 30ab0e9dcc0a2a7dd603f65a58b95d5ebacc7822 (patch) | |
| tree | d1c07931a131d634aa26cefd959bb32ebf03612c /src/plugins/Ui/skinned/skin.cpp | |
| parent | cfb167d3881891ebd91e89c7493f27a1354bce4b (diff) | |
| download | qmmp-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
Diffstat (limited to 'src/plugins/Ui/skinned/skin.cpp')
| -rw-r--r-- | src/plugins/Ui/skinned/skin.cpp | 30 |
1 files changed, 19 insertions, 11 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))); } |
