aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/skin.cpp117
-rw-r--r--src/ui/skin.h3
2 files changed, 52 insertions, 68 deletions
diff --git a/src/ui/skin.cpp b/src/ui/skin.cpp
index 555b08a0a..eabbbc09f 100644
--- a/src/ui/skin.cpp
+++ b/src/ui/skin.cpp
@@ -27,6 +27,7 @@
#include <QPainter>
#include <QPolygon>
#include <QImage>
+#include <QBuffer>
#include "skin.h"
@@ -78,8 +79,8 @@ void Skin::setSkin ( const QString& path )
QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
settings.setValue("skin_path",path);
- qDebug ( path.toAscii() ); //TODO don't clear lists
- m_skin_dir = QDir ( path );
+ qDebug ("Skin: set skin %s",qPrintable(path)); //TODO don't clear lists
+ m_skin_dir = QDir (path);
m_pledit_txt.clear();
loadPLEdit();
@@ -280,15 +281,15 @@ void Skin::loadPlayList()
}
-QPixmap *Skin::getPixmap ( const QString& name )
+QPixmap *Skin::getPixmap (const QString& name)
{
m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
QFileInfoList f = m_skin_dir.entryInfoList();
- for ( int j = 0; j < f.size(); ++j )
+ for (int j = 0; j < f.size(); ++j)
{
QFileInfo fileInfo = f.at ( j );
QString fn = fileInfo.fileName().toLower();
- if ( fn.section ( ".",0,0 ) == name )
+ if (fn.section (".",0,0) == name)
{
return new QPixmap ( fileInfo.filePath() );
}
@@ -298,30 +299,15 @@ QPixmap *Skin::getPixmap ( const QString& name )
void Skin::loadPLEdit()
{
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QString path;
- QFileInfoList list = m_skin_dir.entryInfoList();
- for ( int i = 0; i < list.size(); ++i )
- {
- QFileInfo fileInfo = list.at ( i );
- if ( fileInfo.fileName().toLower() == "pledit.txt" )
- {
- path = fileInfo.filePath ();
- break;
- }
- }
-
- if ( path.isNull () )
- {
- qDebug ( "Skin: Cannot find pledit.txt" );
- return;
- }
-
+ QString path = findFile("pledit.txt", m_skin_dir);
+ if(path.isEmpty())
+ path = findFile("pledit.txt", ":/default");
+ if(path.isEmpty())
+ qFatal("Skin: invalid default skin");
- QFile file ( path );
-
- if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) )
- return;
+ QFile file(path);
+ if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ qFatal("Skin: unable to open %s", qPrintable(path));
while ( !file.atEnd () )
{
@@ -336,9 +322,9 @@ void Skin::loadPLEdit()
break;
}
}
- if(!m_pledit_txt.keys().contains("mbbg"))
+ if (!m_pledit_txt.keys().contains("mbbg"))
m_pledit_txt["mbbg"] = m_pledit_txt["normalbg"];
- if(!m_pledit_txt.keys().contains("mbfg"))
+ if (!m_pledit_txt.keys().contains("mbfg"))
m_pledit_txt["mbfg"] = m_pledit_txt["normal"];
}
@@ -413,38 +399,22 @@ void Skin::loadEq_ex()
void Skin::loadVisColor()
{
- //QList <QColor> colors;
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QString path;
- QFileInfoList list = m_skin_dir.entryInfoList();
- for ( int i = 0; i < list.size(); ++i )
- {
- QFileInfo fileInfo = list.at ( i );
- if ( fileInfo.fileName().toLower() == "viscolor.txt" )
- {
- path = fileInfo.filePath ();
- break;
- }
- }
+ QString path = findFile("viscolor.txt", m_skin_dir);
+ if(path.isEmpty())
+ path = findFile("viscolor.txt", ":/default");
+ if(path.isEmpty())
+ qFatal("Skin: invalid default skin");
- if ( path.isNull () )
- {
- qDebug ( "Skin: Cannot find viscolor.txt" );
- return;
- }
-
-
- QFile file ( path );
-
- if ( !file.open ( QIODevice::ReadOnly | QIODevice::Text ) )
- return;
+ QFile file(path);
+ if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ qFatal("Skin: unable to open %s", qPrintable(path));
int j = 0;
while ( !file.atEnd () && j<24 )
{
j++;
QByteArray line = file.readLine ();
- QString tmp = QString::fromAscii ( line );
+ QString tmp = QString::fromAscii (line);
tmp = tmp.trimmed ();
int i = tmp.indexOf ( "//" );
if ( i>0 )
@@ -674,18 +644,7 @@ void Skin::loadRegion()
{
m_mwRegion = QRegion();
m_plRegion = QRegion();
- m_skin_dir.setFilter ( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
- QString path;
- QFileInfoList list = m_skin_dir.entryInfoList();
- for ( int i = 0; i < list.size(); ++i )
- {
- QFileInfo fileInfo = list.at ( i );
- if ( fileInfo.fileName().toLower() == "region.txt" )
- {
- path = fileInfo.filePath ();
- break;
- }
- }
+ QString path = findFile("region.txt", m_skin_dir);
if ( path.isNull () )
{
@@ -743,6 +702,28 @@ QPixmap * Skin::getDummyPixmap(const QString& name)
return new QPixmap ( fileInfo.filePath() );
}
}
- qFatal("Skin:: default skin corrupted");
+ qFatal("Skin: default skin corrupted");
return 0;
}
+
+const QString Skin::findFile(const QString &name, QDir dir)
+{
+ dir.setFilter (QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QString path;
+ QFileInfoList list = dir.entryInfoList();
+ for (int i = 0; i < list.size(); ++i)
+ {
+ QFileInfo fileInfo = list.at ( i );
+ if ( fileInfo.fileName().toLower() == name )
+ {
+ path = fileInfo.filePath ();
+ break;
+ }
+ }
+ return path;
+}
+
+const QString Skin::findFile(const QString &name, const QString &dir)
+{
+ return findFile(name, QDir(dir));
+}
diff --git a/src/ui/skin.h b/src/ui/skin.h
index e266b9df7..aed75eadd 100644
--- a/src/ui/skin.h
+++ b/src/ui/skin.h
@@ -31,6 +31,7 @@
#include <QRegion>
+
class Skin : public QObject
{
Q_OBJECT
@@ -282,6 +283,8 @@ signals:
private:
QPixmap *getPixmap(const QString&);
+ const QString findFile(const QString&, QDir);
+ const QString findFile(const QString&, const QString&);
/*!
* As far as there is no standard in skin making we cannot be sure