Skin class now emits a signal when a skin has (hopefully) been loaded.

Widgets interested in such events handle the signal and update their
pixmaps accordingly.
This commit is contained in:
Daniel Svensson 2006-02-18 04:15:45 +01:00
parent 1b1cf78647
commit 9fb1376afe
15 changed files with 391 additions and 273 deletions

View file

@ -1,22 +1,28 @@
#include "Button.h"
#include "MainWindow.h"
#include "Display.h"
Button::Button (QWidget *parent, uint normal, uint pressed) : PixWidget (parent)
{
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW();
m_name_normal = normal;
m_name_pressed = pressed;
}
m_pixmap_normal = mw->getSkin ()->getItem (normal);
m_pixmap_pressed = mw->getSkin ()->getItem (pressed);
Button::~Button ()
{
}
void
Button::setPixmaps(Skin *skin)
{
m_pixmap_normal = skin->getItem (m_name_normal);
m_pixmap_pressed = skin->getItem (m_name_pressed);
m_pixmap = m_pixmap_normal;
m_func = NULL;
setMinimumSize (m_pixmap.size ());
setMaximumSize (m_pixmap.size ());
}
Button::~Button ()
{
update();
}
void Button::mousePressEvent (QMouseEvent *event)
@ -49,22 +55,37 @@ ToggleButton::ToggleButton (QWidget *parent, uint on_normal, uint on_pressed,
uint off_normal, uint off_pressed) :
Button (parent, off_normal, off_pressed)
{
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW();
m_pixmap_on_normal = mw->getSkin()->getItem(on_normal);
m_pixmap_on_pressed = mw->getSkin()->getItem(on_pressed);
m_pixmap_off_normal = mw->getSkin()->getItem(off_normal);
m_pixmap_off_pressed = mw->getSkin()->getItem(off_pressed);
m_name_on_normal = on_normal;
m_name_on_pressed = on_pressed;
m_name_off_normal = off_normal;
m_name_off_pressed = off_pressed;
m_func = clicked;
m_userdata = (void *)this;
m_func2 = NULL;
m_userdata2 = NULL;
toggleOn (false);
}
void
ToggleButton::setPixmaps(Skin *skin)
{
m_pixmap_on_normal = skin->getItem(m_name_on_normal);
m_pixmap_on_pressed = skin->getItem(m_name_on_pressed);
m_pixmap_off_normal = skin->getItem(m_name_off_normal);
m_pixmap_off_pressed = skin->getItem(m_name_off_pressed);
toggleOn(m_toggled_on);
setMinimumSize (m_pixmap.size ());
setMaximumSize (m_pixmap.size ());
update();
}
void
ToggleButton::runFunc ()
{

View file

@ -14,10 +14,16 @@ class Button : public PixWidget
~Button ();
void setFunc (void (*func)(void *userdata), void *userdata) { m_func = func; m_userdata = userdata; }
public slots:
void setPixmaps(Skin *skin);
protected:
void mousePressEvent (QMouseEvent *event);
void mouseReleaseEvent (QMouseEvent *event);
uint m_name_normal;
uint m_name_pressed;
QPixmap m_pixmap_normal;
QPixmap m_pixmap_pressed;
void (*m_func)(void *userdata);
@ -37,10 +43,18 @@ class ToggleButton : public Button
bool getOn () const { return m_toggled_on; }
void runFunc ();
public slots:
void setPixmaps(Skin *skin);
private:
void (*m_func2)(void *userdata);
void *m_userdata2;
uint m_name_on_normal;
uint m_name_on_pressed;
uint m_name_off_normal;
uint m_name_off_pressed;
QPixmap m_pixmap_on_normal;
QPixmap m_pixmap_on_pressed;
QPixmap m_pixmap_off_normal;

View file

@ -1,9 +1,17 @@
#include "Display.h"
#include "MainWindow.h"
SkinDisplay::SkinDisplay (QWidget *parent) : QWidget(parent)
{
m_noDrag = false;
m_mw = parent;
connect(((MainWindow *)m_mw)->getSkin(), SIGNAL(skinChanged(Skin *)), this, SLOT(setPixmaps(Skin *)));
}
void
SkinDisplay::setPixmaps (Skin *skin)
{
}
void

View file

@ -24,6 +24,8 @@ class SkinDisplay : public QWidget
void setNoDrag(bool d) { m_noDrag = d; }
QWidget *getMW() const { return m_mw; }
public slots:
virtual void setPixmaps(Skin *skin);
protected:
void mousePressEvent (QMouseEvent *);

View file

@ -4,16 +4,6 @@
MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent)
{
QPalette palette = QPalette();
QBrush brush = QBrush(Qt::TexturePattern);
brush.setTexture((((MainWindow *)m_mw)->getSkin()->getItem(Skin::MAIN_WINDOW)));
palette.setBrush(QPalette::Background, brush);
setPalette(palette);
setMaximumSize(QSize(275, 116));
setMinimumSize(QSize(275, 116));
m_tbar = new TitleBar(this, false);
m_tbar->move(0, 0);
m_tbar->resize(275, 14);
@ -32,6 +22,19 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent)
}
void
MainDisplay::setPixmaps (Skin *skin)
{
QPalette palette = QPalette();
QBrush brush = QBrush(Qt::TexturePattern);
brush.setTexture(skin->getItem(Skin::MAIN_WINDOW));
palette.setBrush(QPalette::Background, brush);
setPalette(palette);
setMaximumSize(QSize(275, 116));
setMinimumSize(QSize(275, 116));
}
void
MainDisplay::SetupToggleButtons (void)
{

View file

@ -25,6 +25,8 @@ class MainDisplay : public SkinDisplay
public:
MainDisplay (QWidget *parent);
~MainDisplay ();
public slots:
void setPixmaps(Skin *skin);
protected:
void SetupPushButtons (void);
void MainDisplay::SetupToggleButtons (void);

View file

@ -8,6 +8,8 @@ MainWindow::MainWindow ()
skin = new Skin("Debian");
MainDisplay *display = new MainDisplay(this);
setCentralWidget(display);
skin->setSkin("./CleanAMP/");
display->show();
}

View file

@ -14,6 +14,22 @@ NumberDisplay::NumberDisplay (QWidget *parent, uint w, uint startpx) : PixWidget
setNumber (0,0);
}
void
NumberDisplay::setPixmaps (Skin *skin)
{
QBrush b (Qt::TexturePattern);
b.setTexture (skin->getNumber (10));
QPainter paint;
paint.begin (&m_pixmap);
paint.fillRect (m_pixmap.rect (), b);
paint.drawPixmap (m_startpx, 0, skin->getNumber (m_n1));
paint.drawPixmap (m_startpx+12, 0, skin->getNumber (m_n2));
paint.end();
update ();
}
void
NumberDisplay::setNumber (uint n1, uint n2)
{
@ -22,17 +38,7 @@ NumberDisplay::setNumber (uint n1, uint n2)
m_n1 = n1;
m_n2 = n2;
QBrush b (Qt::TexturePattern);
b.setTexture (mw->getSkin ()->getNumber (10));
QPainter paint;
paint.begin (&m_pixmap);
paint.fillRect (m_pixmap.rect (), b);
paint.drawPixmap (m_startpx, 0, mw->getSkin ()->getNumber (n1));
paint.drawPixmap (m_startpx+12, 0, mw->getSkin ()->getNumber (n2));
paint.end();
update ();
setPixmaps (mw->getSkin());
}
NumberDisplay::~NumberDisplay ()

View file

@ -15,9 +15,12 @@ class NumberDisplay : public PixWidget
public:
NumberDisplay (QWidget *parent, uint, uint);
~NumberDisplay ();
void setNumber (uint, uint);
public slots:
void setPixmaps (Skin *skin);
protected:
int m_w;
int m_startpx;

View file

@ -1,9 +1,14 @@
#include "PixWidget.h"
#include "MainWindow.h"
PixWidget::PixWidget (QWidget *parent) : QWidget (parent)
{
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW();
m_pixmap = QPixmap(0,0);
connect (mw->getSkin(), SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
}
@ -12,6 +17,11 @@ PixWidget::~PixWidget ()
}
void
PixWidget::setPixmaps(Skin *skin)
{
}
/*
* Since almost every Widget I have here
* is done by drawing self.pixmap onto self

View file

@ -7,6 +7,7 @@
#include <QPainter>
#include <QWidget>
#include "Skin.h"
class PixWidget : public QWidget
{
@ -15,6 +16,8 @@ class PixWidget : public QWidget
PixWidget(QWidget *parent = 0);
~PixWidget();
void paintEvent (QPaintEvent *event);
public slots:
virtual void setPixmaps(Skin *skin);
protected:
QPixmap m_pixmap;
};

464
Skin.cpp
View file

@ -10,15 +10,7 @@ Skin::Skin (string m_skinname) : m_skinname (m_skinname)
m_balance = new QHash<uint, QPixmap>;
m_pledit_txt = new QHash<QByteArray, QByteArray>;
m_numbers = new QHash<uint, QPixmap>;
BuildLetterMap();
BuildButtons();
BuildToggleButtons();
BuildSliders();
BuildOther();
BuildTitleBar();
BuildNumbers();
ParsePLEdit();
m_letterMap = new QHash<uint, QPixmap>;
}
@ -26,66 +18,35 @@ Skin::~Skin ()
{
}
void
Skin::BuildNumbers (void)
{
uint num = 11;
QPixmap *img = GetPixmap("numbers.bmp");
if (!img) {
num = 12;
img = GetPixmap ("nums_ex.bmp");
}
for (uint i = 0; i < num; i++) {
m_numbers->insert (i, img->copy (i*9, 0, 9, 13));
}
delete img;
}
void
Skin::ParsePLEdit (void)
Skin::setSkin (QString name)
{
QDir dir;
QString path;
m_path = name;
dir.setPath (m_path);
dir.setFilter (QDir::Files);
m_items->clear();
BuildButtons();
BuildToggleButtons();
BuildTitleBar();
BuildOther();
QFileInfoList list = 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;
}
}
m_letterMap->clear();
BuildLetterMap();
if (path.isNull ()) {
qDebug ("trasigt!");
return;
}
BuildSliders();
QFile file (path);
m_pledit_txt->clear();
ParsePLEdit();
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd ()) {
QByteArray line = file.readLine ();
QList<QByteArray> l = line.split ('=');
if (l.count () == 2) {
m_pledit_txt->insert (l[0].toLower (), l[1].trimmed());
} else if (line.length() == 0) {
break;
}
}
m_numbers->clear();
BuildNumbers();
emit skinChanged(this);
}
QPixmap *Skin::GetPixmap (string file)
QPixmap *
Skin::getPixmap (string file)
{
/* check for files in zip and check if file exists */
@ -108,164 +69,11 @@ QPixmap *Skin::GetPixmap (string file)
/*return new QPixmap ((m_path+file).c_str());*/
}
void Skin::BuildToggleButtons (void)
void
Skin::BuildLetterMap (void)
{
QPixmap *img = GetPixmap("shufrep.bmp");
m_items->insert(REPEAT_ON_0, img->copy(0, 30, 28, 15));
m_items->insert(REPEAT_ON_1, img->copy(0, 45, 28, 15));
m_items->insert(REPEAT_OFF_0, img->copy(0, 0, 28, 15));
m_items->insert(REPEAT_OFF_1, img->copy(0, 15, 28, 15));
m_items->insert(SHUFFLE_ON_0, img->copy(28, 30, 46, 15));
m_items->insert(SHUFFLE_ON_1, img->copy(28, 45, 46, 15));
m_items->insert(SHUFFLE_OFF_0, img->copy(28, 0, 46, 15));
m_items->insert(SHUFFLE_OFF_1, img->copy(28, 15, 46, 15));
m_items->insert(EQ_ON_0, img->copy( 0, 73, 23, 12));
m_items->insert(EQ_ON_1, img->copy(46, 73, 23, 12));
m_items->insert(EQ_OFF_0, img->copy( 0, 61, 23, 12));
m_items->insert(EQ_OFF_1, img->copy(46, 61, 23, 12));
m_items->insert(PLS_ON_0, img->copy(23, 73, 23, 12));
m_items->insert(PLS_ON_1, img->copy(69, 73, 23, 12));
m_items->insert(PLS_OFF_0, img->copy(23, 61, 23, 12));
m_items->insert(PLS_OFF_1, img->copy(69, 61, 23, 12));
delete img;
}
void Skin::BuildSliders (void)
{
QPixmap *img;
img = GetPixmap("volume.bmp");
for (int i = VOLUMEBAR_POS_MIN; i < VOLUMEBAR_POS_MAX; i++) {
m_volume_bar->insert(i, img->copy(0, i*15, 68, 13));
}
delete img;
img = GetPixmap("balance.bmp");
if (!img) {
img = GetPixmap("volume.bmp");
}
for (int i = BALANCE_POS_MIN; i < BALANCE_POS_MAX; i++) {
m_balance->insert(i, img->copy(9, i*15, 38, 13));
}
delete img;
}
void Skin::BuildTitleBar (void)
{
QPixmap *img = GetPixmap("titlebar.bmp");
m_items->insert(MENUBUTTON_0, img->copy(0, 0, 9, 9));
m_items->insert(MENUBUTTON_1, img->copy(0, 9, 9, 9));
m_items->insert(MINIMIZE_0, img->copy(9, 0, 9, 9));
m_items->insert(MINIMIZE_1, img->copy(9, 9, 9, 9));
m_items->insert(CLOSE_0, img->copy(18, 0, 9, 9));
m_items->insert(CLOSE_1, img->copy(18, 9, 9 ,9));
m_items->insert(SHADE_1_0, img->copy(0, 18, 9, 9));
m_items->insert(SHADE_1_1, img->copy(9, 18, 9, 9));
m_items->insert(SHADE_2_0, img->copy(0, 27, 9, 9));
m_items->insert(SHADE_2_1, img->copy(9, 27, 9, 9));
m_items->insert(TITLEBAR_0, img->copy(27, 0, 275, 14));
m_items->insert(TITLEBAR_1, img->copy(27, 15, 275, 14));
m_items->insert(STATUSBAR_0, img->copy(27, 29, 275, 14));
m_items->insert(STATUSBAR_1, img->copy(27, 29+13, 275, 14));
delete img;
}
void Skin::BuildButtons (void)
{
QPixmap *img = GetPixmap("cbuttons.bmp");
m_items->insert (BTN_PREV_0, img->copy(0, 0, 23, 18));
m_items->insert (BTN_PREV_1, img->copy(0, 18, 23, 18));
m_items->insert (BTN_PLAY_0, img->copy(23, 0, 23, 18));
m_items->insert (BTN_PLAY_1, img->copy(23, 18, 23, 18));
m_items->insert (BTN_PAUSE_0, img->copy(46, 0, 23, 18));
m_items->insert (BTN_PAUSE_1, img->copy(46, 18, 23, 18));
m_items->insert (BTN_STOP_0, img->copy(69, 0, 23, 18));
m_items->insert (BTN_STOP_1, img->copy(69, 18, 23, 18));
m_items->insert (BTN_NEXT_0, img->copy(92, 0, 22, 18));
m_items->insert (BTN_NEXT_1, img->copy(92, 18, 22, 18));
m_items->insert (BTN_EJECT_0, img->copy(114, 0, 22, 16));
m_items->insert (BTN_EJECT_1, img->copy(114, 16, 22, 16));
delete img;
}
void Skin::BuildOther (void)
{
QPixmap *img, *part;
QPainter(painter);
img = GetPixmap("monoster.bmp");
m_items->insert (MONO_0, img->copy(29, 0, 27, 12));
m_items->insert (MONO_1, img->copy(29, 12, 27, 12));
m_items->insert (STEREO_0, img->copy(0, 0, 29, 12));
m_items->insert (STEREO_1, img->copy(0, 12, 29, 12));
img = GetPixmap("playpaus.bmp");
part = new QPixmap(11, 9);
painter.begin(part);
painter.drawPixmap (0, 0, 3, 9, *img, 36, 0, 3, 9);
painter.drawPixmap (3, 0, 8, 9, *img, 1, 0, 8, 9);
painter.end();
m_items->insert (PIC_PLAY, part->copy());
delete part;
part = new QPixmap(11, 9);
painter.begin(part);
painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9);
painter.drawPixmap (2, 0, 9, 9, *img, 9, 0, 9, 9);
painter.end();
m_items->insert (PIC_PAUSE, part->copy());
delete part;
part = new QPixmap(11, 9);
painter.begin(part);
painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9);
painter.drawPixmap (2, 0, 9, 9, *img, 18, 0, 9, 9);
painter.end();
m_items->insert (PIC_STOP, part->copy());
delete part;
delete img;
img = GetPixmap ("main.bmp");
m_items->insert (MAIN_WINDOW, img->copy());
m_items->insert (ABOUT_0, img->copy(247, 83, 20, 25));
m_items->insert (ABOUT_1, img->copy(247, 83, 20, 24));
delete img;
}
void Skin::BuildLetterMap (void)
{
QPixmap *img = GetPixmap("text.bmp");
QPixmap *img = getPixmap("text.bmp");
QList<QList<QPixmap> >(letters);
for (int i = 0; i < 3; i++) {
@ -278,7 +86,6 @@ void Skin::BuildLetterMap (void)
delete img;
m_letterMap = new QHash<uint, QPixmap>;
/* alphabet */
for (uint i = 97; i < 123; i++) {
@ -324,3 +131,228 @@ void Skin::BuildLetterMap (void)
/* text background */
m_items->insert (TEXTBG, letters[2][6]);
}
void
Skin::BuildButtons (void)
{
QPixmap *img = getPixmap("cbuttons.bmp");
m_items->insert (BTN_PREV_0, img->copy(0, 0, 23, 18));
m_items->insert (BTN_PREV_1, img->copy(0, 18, 23, 18));
m_items->insert (BTN_PLAY_0, img->copy(23, 0, 23, 18));
m_items->insert (BTN_PLAY_1, img->copy(23, 18, 23, 18));
m_items->insert (BTN_PAUSE_0, img->copy(46, 0, 23, 18));
m_items->insert (BTN_PAUSE_1, img->copy(46, 18, 23, 18));
m_items->insert (BTN_STOP_0, img->copy(69, 0, 23, 18));
m_items->insert (BTN_STOP_1, img->copy(69, 18, 23, 18));
m_items->insert (BTN_NEXT_0, img->copy(92, 0, 22, 18));
m_items->insert (BTN_NEXT_1, img->copy(92, 18, 22, 18));
m_items->insert (BTN_EJECT_0, img->copy(114, 0, 22, 16));
m_items->insert (BTN_EJECT_1, img->copy(114, 16, 22, 16));
delete img;
}
void
Skin::BuildToggleButtons (void)
{
QPixmap *img = getPixmap("shufrep.bmp");
m_items->insert(REPEAT_ON_0, img->copy(0, 30, 28, 15));
m_items->insert(REPEAT_ON_1, img->copy(0, 45, 28, 15));
m_items->insert(REPEAT_OFF_0, img->copy(0, 0, 28, 15));
m_items->insert(REPEAT_OFF_1, img->copy(0, 15, 28, 15));
m_items->insert(SHUFFLE_ON_0, img->copy(28, 30, 46, 15));
m_items->insert(SHUFFLE_ON_1, img->copy(28, 45, 46, 15));
m_items->insert(SHUFFLE_OFF_0, img->copy(28, 0, 46, 15));
m_items->insert(SHUFFLE_OFF_1, img->copy(28, 15, 46, 15));
m_items->insert(EQ_ON_0, img->copy( 0, 73, 23, 12));
m_items->insert(EQ_ON_1, img->copy(46, 73, 23, 12));
m_items->insert(EQ_OFF_0, img->copy( 0, 61, 23, 12));
m_items->insert(EQ_OFF_1, img->copy(46, 61, 23, 12));
m_items->insert(PLS_ON_0, img->copy(23, 73, 23, 12));
m_items->insert(PLS_ON_1, img->copy(69, 73, 23, 12));
m_items->insert(PLS_OFF_0, img->copy(23, 61, 23, 12));
m_items->insert(PLS_OFF_1, img->copy(69, 61, 23, 12));
delete img;
}
void
Skin::BuildTitleBar (void)
{
QPixmap *img = getPixmap("titlebar.bmp");
m_items->insert(MENUBUTTON_0, img->copy(0, 0, 9, 9));
m_items->insert(MENUBUTTON_1, img->copy(0, 9, 9, 9));
m_items->insert(MINIMIZE_0, img->copy(9, 0, 9, 9));
m_items->insert(MINIMIZE_1, img->copy(9, 9, 9, 9));
m_items->insert(CLOSE_0, img->copy(18, 0, 9, 9));
m_items->insert(CLOSE_1, img->copy(18, 9, 9 ,9));
m_items->insert(SHADE_1_0, img->copy(0, 18, 9, 9));
m_items->insert(SHADE_1_1, img->copy(9, 18, 9, 9));
m_items->insert(SHADE_2_0, img->copy(0, 27, 9, 9));
m_items->insert(SHADE_2_1, img->copy(9, 27, 9, 9));
m_items->insert(TITLEBAR_0, img->copy(27, 0, 275, 14));
m_items->insert(TITLEBAR_1, img->copy(27, 15, 275, 14));
m_items->insert(STATUSBAR_0, img->copy(27, 29, 275, 14));
m_items->insert(STATUSBAR_1, img->copy(27, 29+13, 275, 14));
delete img;
}
void
Skin::BuildOther (void)
{
QPixmap *img, *part;
QPainter(painter);
img = getPixmap("monoster.bmp");
m_items->insert (MONO_0, img->copy(29, 0, 27, 12));
m_items->insert (MONO_1, img->copy(29, 12, 27, 12));
m_items->insert (STEREO_0, img->copy(0, 0, 29, 12));
m_items->insert (STEREO_1, img->copy(0, 12, 29, 12));
delete img;
img = getPixmap("playpaus.bmp");
part = new QPixmap(11, 9);
painter.begin(part);
painter.drawPixmap (0, 0, 3, 9, *img, 36, 0, 3, 9);
painter.drawPixmap (3, 0, 8, 9, *img, 1, 0, 8, 9);
painter.end();
m_items->insert (PIC_PLAY, part->copy());
delete part;
part = new QPixmap(11, 9);
painter.begin(part);
painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9);
painter.drawPixmap (2, 0, 9, 9, *img, 9, 0, 9, 9);
painter.end();
m_items->insert (PIC_PAUSE, part->copy());
delete part;
part = new QPixmap(11, 9);
painter.begin(part);
painter.drawPixmap (0, 0, 2, 9, *img, 27, 0, 2, 9);
painter.drawPixmap (2, 0, 9, 9, *img, 18, 0, 9, 9);
painter.end();
m_items->insert (PIC_STOP, part->copy());
delete part;
delete img;
img = getPixmap ("main.bmp");
m_items->insert (MAIN_WINDOW, img->copy());
m_items->insert (ABOUT_0, img->copy(247, 83, 20, 25));
m_items->insert (ABOUT_1, img->copy(247, 83, 20, 24));
delete img;
}
void
Skin::BuildSliders (void)
{
QPixmap *img;
img = getPixmap("volume.bmp");
for (int i = VOLUMEBAR_POS_MIN; i < VOLUMEBAR_POS_MAX; i++) {
m_volume_bar->insert(i, img->copy(0, i*15, 68, 13));
}
delete img;
img = getPixmap("balance.bmp");
if (!img) {
img = getPixmap("volume.bmp");
}
for (int i = BALANCE_POS_MIN; i < BALANCE_POS_MAX; i++) {
m_balance->insert(i, img->copy(9, i*15, 38, 13));
}
delete img;
}
void
Skin::BuildNumbers (void)
{
uint num = 11;
QPixmap *img = getPixmap("numbers.bmp");
if (!img) {
num = 12;
img = getPixmap ("nums_ex.bmp");
}
for (uint i = 0; i < num; i++) {
m_numbers->insert (i, img->copy (i*9, 0, 9, 13));
}
delete img;
}
void
Skin::ParsePLEdit (void)
{
QDir dir;
QString path;
dir.setPath (m_path);
dir.setFilter (QDir::Files);
QFileInfoList list = 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 ("trasigt!");
return;
}
QFile file (path);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd ()) {
QByteArray line = file.readLine ();
QList<QByteArray> l = line.split ('=');
if (l.count () == 2) {
m_pledit_txt->insert (l[0].toLower (), l[1].trimmed());
} else if (line.length() == 0) {
break;
}
}
}

29
Skin.h
View file

@ -18,17 +18,8 @@ class Skin : public QWidget
Skin(string m_skinname);
~Skin();
QPixmap *Pixmap (string file);
void Parse (string file);
void BuildLetterMap (void);
void BuildButtons (void);
void BuildToggleButtons (void);
void BuildTitleBar (void);
void BuildSliders (void);
void BuildOther (void);
void BuildNumbers (void);
void Skin::ParsePLEdit (void);
void setSkin (QString name);
const QPixmap getItem (uint part) const { return m_items->value(part); }
const QPixmap getVol (uint p) const { return m_volume_bar->value(p); }
const QPixmap getBal (uint p) const { return m_balance->value(p); }
@ -157,7 +148,18 @@ class Skin : public QWidget
PIC_STOP,
};
private:
QPixmap *Skin::GetPixmap (string file);
QPixmap *Skin::getPixmap (string file);
void Parse (string file);
void BuildLetterMap (void);
void BuildButtons (void);
void BuildToggleButtons (void);
void BuildTitleBar (void);
void BuildSliders (void);
void BuildOther (void);
void BuildNumbers (void);
void ParsePLEdit (void);
string m_skinname;
QString m_path;
@ -169,6 +171,9 @@ class Skin : public QWidget
QHash<QByteArray, QByteArray> *m_pledit_txt;
QList<QPixmap *> m_buttons;
signals:
void skinChanged (Skin *skin);
};
#endif

View file

@ -6,12 +6,14 @@ TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent)
{
MainWindow *mw = (MainWindow *)((SkinDisplay *)parent)->getMW();
m_skin = mw->getSkin();
connect (m_skin, SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *)));
m_h = h;
m_w = w;
m_x_off = 0;
m_x2_off = 0;
m_skin = mw->getSkin ();
setMinimumSize(m_w + 2, m_h);
setMaximumSize(m_w + 2, m_h);
@ -25,24 +27,28 @@ TextScroller::TextScroller (QWidget *parent, uint w, uint h) : QWidget (parent)
m_timer = new QTimer (this);
connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ()));
QPalette pal = palette ();
QBrush b = QBrush (Qt::TexturePattern);
b.setTexture (mw->getSkin ()->getItem (Skin::TEXTBG));
pal.setBrush (QPalette::Window, b);
setPalette (pal);
setAutoFillBackground (true);
setText (QString::fromUtf8 ("Promoe 0.1"));
//setText (QString::fromUtf8 ("Okerueu etuoduå öästö åntöå dS !! !¤ ¤ % % & & ¤"));
}
void
TextScroller::setPixmaps (Skin *skin)
{
QPalette pal = palette ();
QBrush b = QBrush (Qt::TexturePattern);
b.setTexture (skin->getItem (Skin::TEXTBG));
pal.setBrush (QPalette::Window, b);
setPalette (pal);
setText (QString::fromUtf8 ("Promoe 0.1"));
update();
}
void
TextScroller::addOffset ()
{
if (m_x2_off > 0) {
m_x2_off --;
} else if (m_x_off < m_pixmap.size().width()) {

View file

@ -26,6 +26,7 @@ class TextScroller : public QWidget
public slots:
void addOffset ();
void setPixmaps(Skin *skin);
protected:
QPixmap m_pixmap;