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:
parent
1b1cf78647
commit
9fb1376afe
15 changed files with 391 additions and 273 deletions
49
Button.cpp
49
Button.cpp
|
@ -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 ()
|
||||
{
|
||||
|
|
14
Button.h
14
Button.h
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -8,6 +8,8 @@ MainWindow::MainWindow ()
|
|||
skin = new Skin("Debian");
|
||||
MainDisplay *display = new MainDisplay(this);
|
||||
setCentralWidget(display);
|
||||
|
||||
skin->setSkin("./CleanAMP/");
|
||||
display->show();
|
||||
}
|
||||
|
||||
|
|
|
@ -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 ()
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
464
Skin.cpp
|
@ -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
29
Skin.h
|
@ -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
|
||||
|
|
24
TextBar.cpp
24
TextBar.cpp
|
@ -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()) {
|
||||
|
|
|
@ -26,6 +26,7 @@ class TextScroller : public QWidget
|
|||
|
||||
public slots:
|
||||
void addOffset ();
|
||||
void setPixmaps(Skin *skin);
|
||||
|
||||
protected:
|
||||
QPixmap m_pixmap;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue