diff --git a/MainDisplay.cpp b/MainDisplay.cpp index df8746d..a52f90c 100644 --- a/MainDisplay.cpp +++ b/MainDisplay.cpp @@ -31,6 +31,10 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent) m_khz->move (156, 43); m_khz->setNumber (44, 2); + m_stereo = new StereoMono (this); + m_stereo->move (212, 41); + m_stereo->setStereoMono (0, 0); + } void diff --git a/MainDisplay.h b/MainDisplay.h index 1026cc9..3a379a3 100644 --- a/MainDisplay.h +++ b/MainDisplay.h @@ -21,6 +21,7 @@ class MainDisplay; #include "MainWindow.h" #include "NumberDisplay.h" #include "SmallNumberDisplay.h" +#include "StereoMono.h" using namespace std; @@ -38,6 +39,8 @@ class MainDisplay : public SkinDisplay SmallNumberDisplay *m_kbps; SmallNumberDisplay *m_khz; + StereoMono *m_stereo; + public slots: void setPixmaps(Skin *skin); protected: diff --git a/MainWindow.cpp b/MainWindow.cpp index cd1a678..6c39aed 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -8,12 +8,12 @@ MainWindow::MainWindow () m_handler = new XMMSHandler (this); - skin = new Skin("Debian"); + skin = new Skin("./Debian/"); m_display = new MainDisplay(this); setCentralWidget(m_display); - skin->setSkin("./CleanAMP/"); + skin->setSkin("./Debian/"); m_display->show(); } diff --git a/Skin.cpp b/Skin.cpp index fbbc219..5927a11 100644 --- a/Skin.cpp +++ b/Skin.cpp @@ -1,10 +1,9 @@ #include "Skin.h" -Skin::Skin (string m_skinname) : m_skinname (m_skinname) +Skin::Skin (QString path) { - m_path = QString ("./CleanAMP/"); - + m_path = path; m_items = new QHash; m_volume_bar = new QHash; m_balance = new QHash; @@ -230,10 +229,10 @@ Skin::BuildOther (void) 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)); + m_items->insert (MONO_1, img->copy(29, 0, 27, 12)); + m_items->insert (MONO_0, img->copy(29, 12, 27, 12)); + m_items->insert (STEREO_1, img->copy(0, 0, 29, 12)); + m_items->insert (STEREO_0, img->copy(0, 12, 29, 12)); delete img; diff --git a/Skin.h b/Skin.h index 301952a..b2b0449 100644 --- a/Skin.h +++ b/Skin.h @@ -15,7 +15,7 @@ class Skin : public QWidget { Q_OBJECT public: - Skin(string m_skinname); + Skin (QString); ~Skin(); void setSkin (QString name); diff --git a/StereoMono.cpp b/StereoMono.cpp new file mode 100644 index 0000000..66067e7 --- /dev/null +++ b/StereoMono.cpp @@ -0,0 +1,62 @@ +#include "StereoMono.h" + +StereoMono::StereoMono (QWidget *parent) : PixWidget (parent) +{ + setMinimumSize (56, 12); + setMaximumSize (56, 12); + + m_pixmap = QPixmap (56, 12); +} + +void +StereoMono::setPixmaps (Skin *skin) +{ + m_pixmap_stereo_on = skin->getItem (Skin::STEREO_1); + m_pixmap_stereo_off = skin->getItem (Skin::STEREO_0); + m_pixmap_mono_on = skin->getItem (Skin::MONO_1); + m_pixmap_mono_off = skin->getItem (Skin::MONO_0); + + setStereoMono (m_stereo, m_mono); +} + +void +StereoMono::drawPixmaps () +{ + QPainter paint; + paint.begin (&m_pixmap); + + paint.drawPixmap (QRect (0, 0, 27, 12), + m_pixmap_mono, + m_pixmap.rect ()); + + paint.drawPixmap (QRect (27, 0, 29, 12), + m_pixmap_stereo, + m_pixmap.rect ()); + paint.end (); + + update(); +} + +void +StereoMono::setStereoMono (bool stereo, bool mono) +{ + + if (stereo) { + m_pixmap_stereo = m_pixmap_stereo_on; + } else { + m_pixmap_stereo = m_pixmap_stereo_off; + } + + if (mono) { + m_pixmap_mono = m_pixmap_mono_on; + } else { + m_pixmap_mono = m_pixmap_mono_off; + } + + m_stereo = stereo; + m_mono = mono; + + drawPixmaps (); + +} + diff --git a/StereoMono.h b/StereoMono.h new file mode 100644 index 0000000..9f72abf --- /dev/null +++ b/StereoMono.h @@ -0,0 +1,27 @@ +#include "PixWidget.h" + +class StereoMono : public PixWidget +{ + public: + StereoMono (QWidget *parent); + ~StereoMono () { } + + void setStereoMono (bool, bool); + + public slots: + void setPixmaps (Skin *skin); + + private: + void drawPixmaps (); + bool m_stereo; + bool m_mono; + + QPixmap m_pixmap_stereo_on; + QPixmap m_pixmap_stereo_off; + QPixmap m_pixmap_mono_on; + QPixmap m_pixmap_mono_off; + + QPixmap m_pixmap_mono; + QPixmap m_pixmap_stereo; +}; + diff --git a/XMMSHandler.cpp b/XMMSHandler.cpp index 66cf010..c0716c4 100644 --- a/XMMSHandler.cpp +++ b/XMMSHandler.cpp @@ -72,6 +72,14 @@ XMMSHandler::medialib_info (XMMSResult *res) m_mw->getMD ()->m_khz->setNumber (b/1000, 2); } + if (res->getDictValue ("channels:out", &b)) { + if (b == 1) { + m_mw->getMD ()->m_stereo->setStereoMono (0, 1); + } else { + m_mw->getMD ()->m_stereo->setStereoMono (1, 0); + } + } + delete res; } diff --git a/promoe.pro b/promoe.pro index cce394b..1dc1e17 100644 --- a/promoe.pro +++ b/promoe.pro @@ -9,7 +9,8 @@ SOURCES += XmmsQT4.cpp \ TextBar.cpp \ NumberDisplay.cpp \ XMMSHandler.cpp \ - SmallNumberDisplay.cpp + SmallNumberDisplay.cpp \ + StereoMono.cpp HEADERS += XmmsQT4.h \ PixWidget.h \ @@ -22,7 +23,8 @@ HEADERS += XmmsQT4.h \ TextBar.h \ NumberDisplay.h \ XMMSHandler.h \ - SmallNumberDisplay.h + SmallNumberDisplay.h \ + StereoMono.h CONFIG += link_pkgconfig CONFIG += debug