diff --git a/PlaylistShade.cpp b/PlaylistShade.cpp new file mode 100644 index 0000000..19fb4bc --- /dev/null +++ b/PlaylistShade.cpp @@ -0,0 +1,99 @@ +#include "XMMSHandler.h" + +#include "PlaylistShade.h" +#include "Playlist.h" + +PlaylistShade::PlaylistShade (QWidget *parent) : QWidget (parent) +{ + XMMSHandler *xmmsh = XMMSHandler::getInstance (); + + Skin *skin = Skin::getInstance (); + setMinimumSize (275, 14); + connect (skin, SIGNAL (skinChanged (Skin *)), + this, SLOT (setPixmaps(Skin *))); + + connect (xmmsh, SIGNAL(currentSong (QHash)), + this, SLOT(setMediainfo (QHash))); + + m_text = "Promoe 0.1 - A very neat XMMS2 client"; +} + +void +PlaylistShade::setMediainfo (QHash h) +{ + QString n; + if (h.contains ("artist") && h.contains ("album") && h.contains ("title")) { + n = h.value("artist") + " - " + h.value("album") + " - " + h.value("title"); + } else { + n = h.value("url"); + } + m_text = (n); + + update (); +} + +void +PlaylistShade::setPixmaps (Skin *skin) +{ + + m_pixmap_le = skin->getPls (Skin::PLS_WS_LE_0); + m_pixmap_re_0 = skin->getPls (Skin::PLS_WS_RE_0); + m_pixmap_re_1 = skin->getPls (Skin::PLS_WS_RE_1); + m_pixmap_mid = skin->getPls (Skin::PLS_WS_MID_0); + m_pixmap_re = m_pixmap_re_0; + + m_font = QFont (skin->getPLeditValue ("font")); + m_font.setPixelSize (8); + m_color.setNamedColor (skin->getPLeditValue ("normal")); + + update (); + +} + +void +PlaylistShade::setActive (bool b) +{ + if (b) { + m_pixmap_re = m_pixmap_re_0; + } else { + m_pixmap_re = m_pixmap_re_1; + } + + update (); +} + +void +PlaylistShade::mouseDoubleClickEvent (QMouseEvent *event) +{ + PlaylistWindow *pw = dynamic_cast(window ()); + pw->switchDisplay (); +} + +void +PlaylistShade::paintEvent (QPaintEvent *event) +{ + QRect r; + + QPainter p; + p.begin (this); + r.setRect (0, 0, m_pixmap_le.size().width(), m_pixmap_le.size().height()); + p.drawPixmap (r, m_pixmap_le, m_pixmap_le.rect()); + int s = size().width() - m_pixmap_le.size().width() - m_pixmap_re.size().width(); + r.setRect (m_pixmap_le.size().width(), 0, s, m_pixmap_mid.size().height()); + p.drawPixmap (r, m_pixmap_mid, m_pixmap_mid.rect ()); + r.setRect (size().width() - m_pixmap_re.size().width(), 0, m_pixmap_re.size().width(), + m_pixmap_re.size().height()); + p.drawPixmap (r, m_pixmap_re, m_pixmap_re.rect ()); + + /* Text */ + p.setFont (m_font); + p.setPen (m_color); + + p.drawText (QRect (5, 4, size().width()-25, 7), + Qt::AlignLeft | Qt::AlignVCenter, + m_text); + + p.end (); + +} + diff --git a/PlaylistShade.h b/PlaylistShade.h new file mode 100644 index 0000000..aeeb69f --- /dev/null +++ b/PlaylistShade.h @@ -0,0 +1,37 @@ +#ifndef __PLAYLISTSHADE_H__ +#define __PLAYLISTSHADE_H__ + +#include "Skin.h" + +#include + +class PlaylistShade : public QWidget { + Q_OBJECT + + public: + PlaylistShade (QWidget *parent); + ~PlaylistShade () {} + + void paintEvent (QPaintEvent *event); + void mouseDoubleClickEvent (QMouseEvent *event); + void setActive (bool); + + public slots: + void setPixmaps (Skin *skin); + void setMediainfo (QHash h); + + private: + QPixmap m_pixmap_le; + QPixmap m_pixmap_re; + QPixmap m_pixmap_mid; + + QPixmap m_pixmap_re_0; + QPixmap m_pixmap_re_1; + + QFont m_font; + QColor m_color; + QString m_text; +// QFontMetrics m_fm; +}; + +#endif