promoe/SkinChooser.cpp
Tobias Rundstrom 4e46089c01 Added beginning of skinchooser.
Drop your skins into ~/.xmms2/clients/promoe/skins
2006-02-27 00:10:46 -03:00

64 lines
1.5 KiB
C++

#include "MainWindow.h"
#include "Skin.h"
#include "SkinChooser.h"
#include <QDir>
#include <QFile>
#include <QSettings>
SkinChooser::SkinChooser (QWidget *parent) : QMainWindow (parent)
{
m_mw = dynamic_cast<MainWindow *>(parent);
QWidget *c = new QWidget (this);
setCentralWidget (c);
m_vbox = new QVBoxLayout (c);
QLabel *label = new QLabel ("Available skins...", c);
label->setFont (QFont ("Helvetica", 16));
m_vbox->addWidget (label);
m_skin = new SkinList (c);
m_vbox->addWidget (m_skin);
resize (500, 300);
}
SkinList::SkinList (QWidget *parent) : QListWidget (parent)
{
setIconSize (QSize (137, 58));
QString path;
path.append (QDir::homePath());
path.append ("/.xmms2/clients/promoe/skins/");
QDir d;
d.setPath (path);
d.setFilter (QDir::Dirs);
QFileInfoList list = d.entryInfoList();
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
QDir dir (fileInfo.filePath());
QPixmap p = Skin::getPixmap ("main.bmp", dir);
if (!p.isNull()) {
new QListWidgetItem (QIcon (p), dir.dirName(), this);
}
}
connect (this, SIGNAL (itemClicked (QListWidgetItem *)), this, SLOT (changeSkin (QListWidgetItem *)));
}
void
SkinList::changeSkin (QListWidgetItem *item)
{
QSettings settings;
SkinChooser *sc = dynamic_cast<SkinChooser *>(window());
qDebug ("change skin to %s", qPrintable (item->text()));
sc->getMW()->getSkin ()->setSkin (QDir::homePath()+"/.xmms2/clients/promoe/skins/"+item->text());
settings.setValue ("skin/path", QDir::homePath()+"/.xmms2/clients/promoe/skins/"+item->text());
}