diff --git a/Display.cpp b/Display.cpp index 50b9023..b4d4d03 100644 --- a/Display.cpp +++ b/Display.cpp @@ -60,19 +60,19 @@ SkinDisplay::paintEvent (QPaintEvent *event) void SkinDisplay::fileOpen (void) { - XMMSHandler *xmmsh = XMMSHandler::getInstance(); QStringList files; files = QFileDialog::getOpenFileNames (this, "Select files to play", QDir::homePath(), "Music (*.mp3 *.ogg *.flac *.wav *.mpc *.mp4)"); + XMMSHandler &xmmsh = XMMSHandler::getInstance(); if (files.count() > 0) { - xmmsh->playlistClear (); + xmmsh.playlistClear (); } for (int i = 0; i < files.count(); i++) { - xmmsh->playlistAddURL ("file://" + files.value(i)); + xmmsh.playlistAddURL ("file://" + files.value(i)); } } diff --git a/MainDisplay.cpp b/MainDisplay.cpp index eb40581..5d53f26 100644 --- a/MainDisplay.cpp +++ b/MainDisplay.cpp @@ -1,3 +1,4 @@ +#include #include "XMMSHandler.h" #include "MainDisplay.h" #include "MainWindow.h" @@ -19,8 +20,6 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); - m_tbar = new TitleBar(this, false); m_tbar->move(0, 0); m_tbar->resize(275, 14); @@ -59,11 +58,12 @@ MainDisplay::MainDisplay (QWidget *parent) : SkinDisplay(parent) m_vslider = new VolumeSlider(this); m_vslider->move (107, 57); - connect (xmmsh, SIGNAL(currentSong (const QHash &)), + XMMSHandler &xmmsh = XMMSHandler::getInstance (); + connect (&xmmsh, SIGNAL(currentSong (const QHash &)), this, SLOT(setMediainfo (const QHash &))); - connect (xmmsh, SIGNAL(playbackStatusChanged(uint)), - this, SLOT(setStatus(uint))); - connect (xmmsh, SIGNAL(playtimeChanged(uint)), + connect (&xmmsh, SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), + this, SLOT(setStatus(Xmms::Playback::Status))); + connect (&xmmsh, SIGNAL(playtimeChanged(uint)), this, SLOT(setPlaytime(uint))); } @@ -97,9 +97,9 @@ MainDisplay::setPixmaps (Skin *skin) } void -MainDisplay::setStatus (uint status) +MainDisplay::setStatus (Xmms::Playback::Status status) { - if (status == XMMS_PLAYBACK_STATUS_STOP) { + if (status == Xmms::Playback::STOPPED) { m_time->setTime(0); m_slider->setPos (0); m_slider->hideBar (true); @@ -184,28 +184,28 @@ MainDisplay::toggleTime (void) void MainDisplay::SetupPushButtons (void) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); /* Normal buttons */ m_prev = new Button (this, Skin::BTN_PREV_0, Skin::BTN_PREV_1); m_prev->move(16, 88); - connect (m_prev, SIGNAL(clicked()), xmmsh, SLOT(prev())); + connect (m_prev, SIGNAL(clicked()), &xmmsh, SLOT(prev())); m_play = new Button (this, Skin::BTN_PLAY_0, Skin::BTN_PLAY_1); m_play->move(39, 88); - connect (m_play, SIGNAL(clicked()), xmmsh, SLOT(play())); + connect (m_play, SIGNAL(clicked()), &xmmsh, SLOT(play())); m_pause = new Button (this, Skin::BTN_PAUSE_0, Skin::BTN_PAUSE_1); m_pause->move(62, 88); - connect (m_pause, SIGNAL(clicked()), xmmsh, SLOT(pause())); + connect (m_pause, SIGNAL(clicked()), &xmmsh, SLOT(pause())); m_stop = new Button (this, Skin::BTN_STOP_0, Skin::BTN_STOP_1); m_stop->move(85, 88); - connect (m_stop, SIGNAL(clicked()), xmmsh, SLOT(stop())); + connect (m_stop, SIGNAL(clicked()), &xmmsh, SLOT(stop())); m_next = new Button (this, Skin::BTN_NEXT_0, Skin::BTN_NEXT_1); m_next->move(108, 88); - connect (m_next, SIGNAL(clicked()), xmmsh, SLOT(next())); + connect (m_next, SIGNAL(clicked()), &xmmsh, SLOT(next())); m_eject = new Button (this, Skin::BTN_EJECT_0, Skin::BTN_EJECT_1); m_eject->move(136, 89); diff --git a/MainDisplay.h b/MainDisplay.h index aac1f54..763b425 100644 --- a/MainDisplay.h +++ b/MainDisplay.h @@ -3,6 +3,7 @@ class MainDisplay; +#include #include "XMMSHandler.h" #include @@ -65,7 +66,7 @@ class MainDisplay : public SkinDisplay public slots: void setPixmaps(Skin *skin); - void setStatus (uint status); + void setStatus (Xmms::Playback::Status status); void setPlaytime (uint time); void setMediainfo (const QHash &); void togglePL(void); diff --git a/MainWindow.cpp b/MainWindow.cpp index 068ee9a..c1e8f47 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -54,7 +54,6 @@ MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent) MainWindow::~MainWindow () { delete Skin::getInstance (); - delete XMMSHandler::getInstance(); } void diff --git a/PlayStatus.cpp b/PlayStatus.cpp index bd70ef8..c89f2f6 100644 --- a/PlayStatus.cpp +++ b/PlayStatus.cpp @@ -1,17 +1,17 @@ +#include #include "PlayStatus.h" #include "Skin.h" PlayStatus::PlayStatus (QWidget *parent) : PixWidget (parent) { - XMMSHandler *xmmsh = XMMSHandler::getInstance(); - setMinimumSize(11, 9); setMaximumSize(11, 9); - m_status = XMMS_PLAYBACK_STATUS_STOP; + m_status = Xmms::Playback::STOPPED; - connect (xmmsh, SIGNAL(playbackStatusChanged(uint)), - this, SLOT(setStatus(uint))); + connect (&XMMSHandler::getInstance (), + SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), + this, SLOT(setStatus(Xmms::Playback::Status))); } void @@ -25,13 +25,14 @@ PlayStatus::setPixmaps (Skin *skin) } void -PlayStatus::setStatus (uint status) +PlayStatus::setStatus (Xmms::Playback::Status status) { - if (status == XMMS_PLAYBACK_STATUS_STOP) { + using Xmms::Playback; + if (status == Playback::STOPPED) { m_pixmap = m_pixmap_stop; - } else if (status == XMMS_PLAYBACK_STATUS_PLAY) { + } else if (status == Playback::PLAYING) { m_pixmap = m_pixmap_play; - } else if (status == XMMS_PLAYBACK_STATUS_PAUSE) { + } else if (status == Playback::PAUSED) { m_pixmap = m_pixmap_pause; } diff --git a/PlayStatus.h b/PlayStatus.h index 907b126..a806fb6 100644 --- a/PlayStatus.h +++ b/PlayStatus.h @@ -1,6 +1,7 @@ #ifndef __PLAYSTATUS_H__ #define __PLAYSTATUS_H__ +#include #include "XMMSHandler.h" #include "PixWidget.h" @@ -14,10 +15,10 @@ class PlayStatus : public PixWidget public slots: void setPixmaps (Skin *skin); - void setStatus (uint status); + void setStatus (Xmms::Playback::Status status); private: - int m_status; + Xmms::Playback::Status m_status; QPixmap m_pixmap_stop; QPixmap m_pixmap_play; diff --git a/Playlist.cpp b/Playlist.cpp index 13c1722..1f778d2 100644 --- a/Playlist.cpp +++ b/Playlist.cpp @@ -266,7 +266,6 @@ void PlaylistWidget::addButtons (void) { PlaylistMenuButton *b; - XMMSHandler *xmmsh = XMMSHandler::getInstance(); m_add = new PlaylistMenu (this, Skin::PLS_ADD, Skin::PLS_ADD_DEC); @@ -287,7 +286,8 @@ PlaylistWidget::addButtons (void) Skin::PLS_MSC_BTN_1); b = new PlaylistMenuButton (m_del, Skin::PLS_DEL_ALL_0, Skin::PLS_DEL_ALL_1); - connect (b, SIGNAL(activated ()), xmmsh, SLOT (playlistClear ())); + connect (b, SIGNAL(activated ()), + &XMMSHandler::getInstance(), SLOT (playlistClear ())); b = new PlaylistMenuButton (m_del, Skin::PLS_DEL_CRP_0, Skin::PLS_DEL_CRP_1); b = new PlaylistMenuButton (m_del, Skin::PLS_DEL_FIL_0, @@ -325,7 +325,6 @@ PlaylistWidget::addButtons (void) void PlaylistWidget::diveDir (const QString &dir) { - XMMSHandler *xmmsh = XMMSHandler::getInstance(); QDir d (dir); d.setFilter (QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); @@ -337,7 +336,7 @@ PlaylistWidget::diveDir (const QString &dir) diveDir (fileInfo.filePath ()); } else { QString fname = fileInfo.filePath(); - xmmsh->playlistAddURL ("file://" + fname); + XMMSHandler::getInstance ().playlistAddURL ("file://" + fname); } } } @@ -355,7 +354,6 @@ PlaylistWidget::menuAddDir () void PlaylistWidget::menuAddFile () { - XMMSHandler *xmmsh = XMMSHandler::getInstance(); QStringList files; files = QFileDialog::getOpenFileNames (this, "Select files to play", @@ -363,7 +361,7 @@ PlaylistWidget::menuAddFile () "Music (*.mp3 *.ogg *.flac *.wav *.mpc *.mp4)"); for (int i = 0; i < files.count(); i++) { - xmmsh->playlistAddURL ("file://" + files.value(i)); + XMMSHandler::getInstance ().playlistAddURL ("file://" + files.value(i)); } } diff --git a/PlaylistList.cpp b/PlaylistList.cpp index fe6961b..afd1368 100644 --- a/PlaylistList.cpp +++ b/PlaylistList.cpp @@ -1,3 +1,4 @@ +#include #include "XMMSHandler.h" #include "PlaylistList.h" @@ -31,12 +32,11 @@ PlaylistItem::PlaylistItem (PlaylistList *pl, uint id, uint pos) QString PlaylistItem::text (void) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); if (m_text.count() < 1) { if (!m_req) { - xmmsh->requestMediainfo (m_id); + XMMSHandler::getInstance ().requestMediainfo (m_id); m_req = true; } @@ -52,7 +52,7 @@ PlaylistItem::text (void) PlaylistList::PlaylistList (QWidget *parent) : QWidget (parent) { QSettings s; - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); Skin *skin = Skin::getInstance (); if (!s.contains("playlist/fontsize")) @@ -75,22 +75,22 @@ PlaylistList::PlaylistList (QWidget *parent) : QWidget (parent) m_status = XMMS_PLAYBACK_STATUS_STOP; m_bar = -2; - connect (xmmsh, SIGNAL(playlistList(const QList &)), + connect (&xmmsh, SIGNAL(playlistList(const QList &)), this, SLOT(playlistList(const QList &))); - connect (xmmsh, SIGNAL(currentID(uint)), + connect (&xmmsh, SIGNAL(currentID(uint)), this, SLOT(currentID(uint))); - connect (xmmsh, SIGNAL(mediainfoChanged(uint, const QHash &)), + connect (&xmmsh, SIGNAL(mediainfoChanged(uint, const QHash &)), this, SLOT(mediainfoChanged(uint, const QHash &))); - connect (xmmsh, SIGNAL(playlistChanged(const QHash &)), + connect (&xmmsh, SIGNAL(playlistChanged(const QHash &)), this, SLOT(playlistChanged(const QHash &))); - connect (xmmsh, SIGNAL(playbackStatusChanged(uint)), - this, SLOT(setStatus(uint))); + connect (&xmmsh, SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), + this, SLOT(setStatus(Xmms::Playback::Status))); - connect (xmmsh, SIGNAL(settingsSaved()), + connect (&xmmsh, SIGNAL(settingsSaved()), this, SLOT(settingsSaved())); } @@ -108,7 +108,7 @@ PlaylistList::settingsSaved () } void -PlaylistList::setStatus (uint s) +PlaylistList::setStatus (Xmms::Playback::Status s) { m_status = s; } @@ -117,7 +117,7 @@ void PlaylistList::playlistChanged (const QHash &h) { int signal = h.value("type").toUInt(); - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); switch (signal) { case XMMS_PLAYLIST_CHANGED_ADD: { @@ -184,7 +184,7 @@ PlaylistList::playlistChanged (const QHash &h) m_itemmap->clear (); if (signal != XMMS_PLAYLIST_CHANGED_CLEAR) { - xmmsh->requestPlaylistList (); + xmmsh.requestPlaylistList (); } else { doResize (); } @@ -254,8 +254,6 @@ PlaylistList::playlistList (const QList &l) void PlaylistList::mouseDoubleClickEvent (QMouseEvent *event) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); - if (m_items->count() < 1 || m_selected->count() < 1) { return; } @@ -265,11 +263,12 @@ PlaylistList::mouseDoubleClickEvent (QMouseEvent *event) return; } - xmmsh->requestTrackChange (m_items->indexOf(it)); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); + xmmsh.requestTrackChange (m_items->indexOf(it)); if (m_status == XMMS_PLAYBACK_STATUS_STOP || m_status == XMMS_PLAYBACK_STATUS_PAUSE) { - xmmsh->play (); + xmmsh.play (); } } @@ -451,14 +450,14 @@ PlaylistList::dragLeaveEvent (QDragLeaveEvent *event) void PlaylistList::dropEvent (QDropEvent *event) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); if (event->mimeData()->hasFormat("application/playlist.move")) { if (m_bar == -2) { m_items->insert (m_pos, m_itemmap->value (m_drag_id)); } else { m_items->insert (m_bar + 1, m_itemmap->value (m_drag_id)); - xmmsh->playlistMove (m_pos, m_bar + 1); + xmmsh.playlistMove (m_pos, m_bar + 1); } m_selected->append (m_drag_id); @@ -521,9 +520,9 @@ PlaylistList::dropEvent (QDropEvent *event) event->acceptProposedAction (); } - */ m_bar = -2; update (); + */ } void @@ -595,12 +594,12 @@ PlaylistList::keyPressEvent (QKeyEvent *event) void PlaylistList::deleteFiles () { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); - /* Sort list and remove in reverse order */ + //Sort list and remove in reverse order qSort (*m_selected); for (int i = (m_selected->count () - 1); i >= 0; i --) { - xmmsh->playlistRemove (m_selected->value (i)); + xmmsh.playlistRemove (m_selected->value (i)); } m_selected->clear (); } diff --git a/PlaylistList.h b/PlaylistList.h index bb6921e..76a5536 100644 --- a/PlaylistList.h +++ b/PlaylistList.h @@ -1,6 +1,7 @@ #ifndef __PLAYLISTLIST_H__ #define __PLAYLISTLIST_H__ +#include #include "Skin.h" #include #include @@ -29,7 +30,7 @@ class PlaylistList : public QWidget { void mediainfoChanged (uint, const QHash &); void playlistChanged (const QHash &); void currentID (uint); - void setStatus (uint); + void setStatus (Xmms::Playback::Status s); void settingsSaved (); void deleteFiles (); @@ -69,7 +70,7 @@ class PlaylistList : public QWidget { int m_drag_id; int m_pos; QPoint m_dragstart; - uint m_status; + Xmms::Playback::Status m_status; QDrag *m_drag; QMimeData *m_md; diff --git a/PlaylistShade.cpp b/PlaylistShade.cpp index 2a6a1ac..0bf29fb 100644 --- a/PlaylistShade.cpp +++ b/PlaylistShade.cpp @@ -8,7 +8,7 @@ PlaylistShade::PlaylistShade (QWidget *parent) : QWidget (parent) { QSettings s; - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); if (!s.contains ("playlist/shadedsize")) s.setValue ("playlist/shadedsize", 8); @@ -18,10 +18,10 @@ PlaylistShade::PlaylistShade (QWidget *parent) : QWidget (parent) connect (skin, SIGNAL (skinChanged (Skin *)), this, SLOT (setPixmaps(Skin *))); - connect (xmmsh, SIGNAL(currentSong (QHash)), + connect (&xmmsh, SIGNAL(currentSong (QHash)), this, SLOT(setMediainfo (QHash))); - connect (xmmsh, SIGNAL(settingsSaved ()), + connect (&xmmsh, SIGNAL(settingsSaved ()), this, SLOT(settingsSaved ())); m_text = "Promoe 0.1 - A very neat XMMS2 client"; diff --git a/SettingsWindow.cpp b/SettingsWindow.cpp index 1bc34fc..4d3e097 100644 --- a/SettingsWindow.cpp +++ b/SettingsWindow.cpp @@ -51,13 +51,12 @@ SettingsWindow::SettingsWindow (QWidget *parent) : QMainWindow (parent) void SettingsWindow::okButton (void) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); m_mainwindow->saveSettings (); m_playlistwin->saveSettings (); m_medialib->saveSettings (); close (); - xmmsh->updateSettings (); + XMMSHandler::getInstance ().updateSettings (); } SettingsTabMedialib::SettingsTabMedialib (QWidget *parent) : QWidget (parent) diff --git a/ShadedDisplay.cpp b/ShadedDisplay.cpp index 2cd569f..5b109b9 100644 --- a/ShadedDisplay.cpp +++ b/ShadedDisplay.cpp @@ -1,3 +1,4 @@ +#include #include "XMMSHandler.h" #include "ShadedDisplay.h" @@ -9,7 +10,7 @@ ShadedDisplay::ShadedDisplay (QWidget *parent) : SkinDisplay (parent) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); setMinimumSize (275, 14); setMaximumSize (275, 14); @@ -31,38 +32,38 @@ ShadedDisplay::ShadedDisplay (QWidget *parent) : SkinDisplay (parent) m_prev = new Button (this); m_prev->move(169, 4); m_prev->resize (8, 7); - connect (m_prev, SIGNAL(clicked()), xmmsh, SLOT(prev())); + connect (m_prev, SIGNAL(clicked()), &xmmsh, SLOT(prev())); m_play = new Button (this); m_play->move(177, 4); m_play->resize (10, 7); - connect (m_play, SIGNAL(clicked()), xmmsh, SLOT(play())); + connect (m_play, SIGNAL(clicked()), &xmmsh, SLOT(play())); m_pause = new Button (this); m_pause->move(187, 4); m_pause->resize (10, 7); - connect (m_pause, SIGNAL(clicked()), xmmsh, SLOT(pause())); + connect (m_pause, SIGNAL(clicked()), &xmmsh, SLOT(pause())); m_stop = new Button (this); m_stop->move(197, 4); m_stop->resize (9, 7); - connect (m_stop, SIGNAL(clicked()), xmmsh, SLOT(stop())); + connect (m_stop, SIGNAL(clicked()), &xmmsh, SLOT(stop())); m_next = new Button (this); m_next->move(206, 4); m_next->resize (8, 7); - connect (m_next, SIGNAL(clicked()), xmmsh, SLOT(next())); + connect (m_next, SIGNAL(clicked()), &xmmsh, SLOT(next())); m_eject = new Button (this); m_eject->move(216, 4); m_eject->resize (9, 7); connect (m_eject, SIGNAL(clicked()), this, SLOT(fileOpen())); - connect (xmmsh, SIGNAL(playbackStatusChanged(uint)), - this, SLOT(setStatus(uint))); - connect (xmmsh, SIGNAL(playtimeChanged(uint)), + connect (&xmmsh, SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), + this, SLOT(setStatus(Xmms::Playback::Status))); + connect (&xmmsh, SIGNAL(playtimeChanged(uint)), this, SLOT(setPlaytime(uint))); - connect (xmmsh, SIGNAL(currentSong (const QHash &)), + connect (&xmmsh, SIGNAL(currentSong (const QHash &)), this, SLOT(setMediainfo (const QHash &))); } @@ -79,9 +80,9 @@ ShadedDisplay::setMediainfo (const QHash &h) } void -ShadedDisplay::setStatus (uint status) +ShadedDisplay::setStatus (Xmms::Playback::Status status) { - if (status == XMMS_PLAYBACK_STATUS_STOP) { + if (status == Xmms::Playback::STOPPED) { m_number->setNumber (0, 2); m_number2->setNumber (0, 2); } diff --git a/ShadedDisplay.h b/ShadedDisplay.h index 81e05c0..55d757c 100644 --- a/ShadedDisplay.h +++ b/ShadedDisplay.h @@ -3,6 +3,7 @@ class ShadedDisplay; +#include #include "Display.h" class MainWindow; @@ -30,7 +31,7 @@ class ShadedDisplay : public SkinDisplay Button *m_eject; public slots: - void setStatus (uint status); + void setStatus (Xmms::Playback::Status status); void setPlaytime (uint time); void setMediainfo (const QHash &h); }; diff --git a/Slider.cpp b/Slider.cpp index c396361..ee0f623 100644 --- a/Slider.cpp +++ b/Slider.cpp @@ -152,10 +152,7 @@ Slider::setPos (uint p) void Slider::requestPos (float value) { - XMMSHandler *xmmsh = XMMSHandler::getInstance(); - - uint new_pos = (uint)(m_max * value); - xmmsh->setPlaytime (new_pos); + XMMSHandler::getInstance ().setPlaytime (m_max * value); } void diff --git a/TextBar.cpp b/TextBar.cpp index 02cec98..33c3e9c 100644 --- a/TextBar.cpp +++ b/TextBar.cpp @@ -6,7 +6,7 @@ TextScroller::TextScroller (QWidget *parent, uint w, uint h, const QString &name) : QWidget (parent) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + //XMMSHandler *xmmsh = XMMSHandler::getInstance (); Skin *skin = Skin::getInstance (); connect (skin, SIGNAL (skinChanged (Skin *)), @@ -42,7 +42,7 @@ TextScroller::TextScroller (QWidget *parent, uint w, m_timer = new QTimer (this); connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ())); - connect (xmmsh, SIGNAL (settingsSaved ()), this, SLOT (settingsSaved ())); + //connect (xmmsh, SIGNAL (settingsSaved ()), this, SLOT (settingsSaved ())); } void diff --git a/VolumeSlider.cpp b/VolumeSlider.cpp index 1388168..7131a10 100644 --- a/VolumeSlider.cpp +++ b/VolumeSlider.cpp @@ -12,7 +12,7 @@ VolumeSlider::VolumeSlider (QWidget *parent) : PixWidget (parent) { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); + XMMSHandler &xmmsh = XMMSHandler::getInstance (); setMinimumSize (68, 13); setMaximumSize (68, 13); @@ -23,10 +23,10 @@ VolumeSlider::VolumeSlider (QWidget *parent) : PixWidget (parent) m_pixmap = QPixmap (68, 13); - connect (xmmsh, SIGNAL(getVolume (uint)), - this, SLOT(setVolume (uint))); + connect (&xmmsh, SIGNAL(getVolume (uint)), + this, SLOT(setVolume (uint))); - xmmsh->volumeGet (); + xmmsh.volumeGet (); } VolumeSlider::~VolumeSlider () @@ -86,8 +86,7 @@ VolumeSlider::setPixmaps (Skin *skin) void VolumeSlider::changePixmap () { - XMMSHandler *xmmsh = XMMSHandler::getInstance (); - xmmsh->volumeSet (m_volume_base100); + XMMSHandler::getInstance ().volumeSet (m_volume_base100); m_volslider = m_skin->getVol (m_volume); drawPixmaps (); diff --git a/XMMSHandler.cpp b/XMMSHandler.cpp index 3c20628..3a2c8ff 100644 --- a/XMMSHandler.cpp +++ b/XMMSHandler.cpp @@ -1,7 +1,11 @@ -#include "xmmsclient_promoe.h" +#include #include "XmmsQT4.h" #include "XMMSHandler.h" +#include + +#include +#include #include #include @@ -9,245 +13,200 @@ #include #include -XMMSHandler *XMMSHandler::singleton = NULL; - -XMMSHandler *XMMSHandler::getInstance (void) +static bool log ( /*const std::string& text = ""*/ ) { - if (!singleton) { - singleton = new XMMSHandler (); -#ifndef HAVE_SERVERBROWSER - singleton->connect (getenv ("XMMS_PATH")); -#endif - } + return false; +} +static bool logUint ( const unsigned int & /*, const std::string& text = "" */ ) +{ + return false; +} + +XMMSHandler &XMMSHandler::getInstance () +{ + static XMMSHandler singleton; return singleton; } -XMMSHandler::XMMSHandler () : QObject (), sigc::trackable () +XMMSHandler::XMMSHandler () : QObject (), m_client ("promoe") { - m_xmmsc = new XMMSClient ("promoe"); + connect (std::getenv ( "XMMS_PATH" )); } bool XMMSHandler::connect (const char *path) { - if (!m_xmmsc->connect (path)) { + try { + m_client.connect (path ? path : ""); + } + catch (Xmms::connection_error& e) { QErrorMessage *err = new QErrorMessage (); err->showMessage ("Couldn't connect to XMMS2, please try again."); err->exec (); + delete err; return false; } - m_qt4 = new XmmsQT4 (m_xmmsc->getConn (), qApp); + m_qt4 = new XmmsQT4 (m_client.getConnection (), qApp); - XMMSResultValueList *l = m_xmmsc->playlist_list (); - l->connect (sigc::mem_fun (this, &XMMSHandler::playlist_list)); + using Xmms::bind; + m_client.playlist.list (bind (&XMMSHandler::playlist_list, this)); + m_client.playlist.broadcastChanged ( + bind (&XMMSHandler::playlist_changed, this)); - XMMSResultDict *p = m_xmmsc->broadcast_playlist_changed (); - p->connect (sigc::mem_fun (this, &XMMSHandler::playlist_changed)); + m_client.medialib.broadcastEntryChanged ( + bind (&XMMSHandler::medialib_entry_changed, this)); - XMMSResultValue *r = m_xmmsc->signal_playback_playtime (); - r->connect (sigc::mem_fun (this, &XMMSHandler::playback_playtime)); + m_client.playback.currentID ( + bind (&XMMSHandler::playback_current_id, this)); + m_client.playback.broadcastCurrentID ( + bind (&XMMSHandler::playback_current_id, this)); - r = m_xmmsc->playback_current_id (); - r->connect (sigc::mem_fun (this, &XMMSHandler::playback_current_id)); + m_client.playback.getStatus (bind (&XMMSHandler::playback_status, this)); + m_client.playback.broadcastStatus ( + bind (&XMMSHandler::playback_status, this)); - r = m_xmmsc->broadcast_playback_current_id (); - r->connect (sigc::mem_fun (this, &XMMSHandler::playback_current_id)); + m_client.playback.broadcastVolumeChanged ( + bind (&XMMSHandler::volume_changed, this)); - r = m_xmmsc->playback_status (); - r->connect (sigc::mem_fun (this, &XMMSHandler::playback_status)); - - r = m_xmmsc->broadcast_playback_status (); - r->connect (sigc::mem_fun (this, &XMMSHandler::playback_status)); - - r = m_xmmsc->broadcast_medialib_entry_changed (); - r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_entry_changed)); - - XMMSResult *xr = m_xmmsc->broadcast_playback_volume_changed (); - xr->connect (sigc::mem_fun (this, &XMMSHandler::volume_changed)); - - QObject::connect (&m_playtime_timer, SIGNAL (timeout ()), this, SLOT (restartPlaytime ())); + QObject::connect (&m_playtime_timer, SIGNAL (timeout ()), + this, SLOT (restartPlaytime ())); + m_playtime_timer.start(0); return true; } void -XMMSHandler::restartPlaytime (void) +XMMSHandler::restartPlaytime () { - m_playtime->restart (); + m_client.playback.getPlaytime (Xmms::bind (&XMMSHandler::playback_playtime, + this)); +} + +bool +XMMSHandler::medialib_entry_changed (const unsigned int &id) +{ + if (id > 0) { + requestMediainfo (id); + } + return true; } void -XMMSHandler::medialib_entry_changed (XMMSResultValue *res) +XMMSHandler::playlistAddURL (const QString &s) { - uint i; - res->getValue (&i); - - if (i > 0) { - XMMSResultDict *r = m_xmmsc->medialib_get_info (i); - r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_info)); - } - - if (res->getClass() == XMMSC_RESULT_CLASS_DEFAULT) { - delete res; - } + m_client.playlist.addUrl (s.toAscii ().constData (), &log); +} +void +XMMSHandler::playlistRemove (uint pos) +{ + m_client.playlist.remove (pos, &log); } void -XMMSHandler::playlistAddURL (QString s) +XMMSHandler::playlistMove (uint pos, uint newpos) { - delete m_xmmsc->playlist_add (s.toAscii ().constData ()); + m_client.playlist.move (pos, newpos, &log); } void XMMSHandler::requestMediainfo (uint id) { - XMMSResultDict *r = m_xmmsc->medialib_get_info (id); - r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_info)); + m_client.medialib.getInfo (id, + Xmms::bind (&XMMSHandler::medialib_info, this)); } void -XMMSHandler::requestPlaylistList (void) +XMMSHandler::requestPlaylistList () { - XMMSResultValueList *r = m_xmmsc->playlist_list (); - r->connect (sigc::mem_fun (this, &XMMSHandler::playlist_list)); + m_client.playlist.list (Xmms::bind (&XMMSHandler::playlist_list, this)); } void XMMSHandler::requestTrackChange (int pos) { - XMMSResult *r = m_xmmsc->playlist_set_next (pos); - delete r; - XMMSResult *r2 = m_xmmsc->playback_tickle (); - delete r2; + m_client.playlist.setNext (pos, &logUint); + m_client.playback.tickle (&log); } -void -XMMSHandler::playlist_list (XMMSResultValueList *res) +bool +XMMSHandler::playlist_list (const Xmms::List< unsigned int > &playlist) { QList list; - for (;res->listValid (); res->listNext()) { - uint i; - if (res->getValue (&i)) { - list.append (i); - } + for (;playlist.isValid (); ++playlist) { + list.append (*playlist); } emit playlistList (list); - - delete res; + return false; } -void -XMMSHandler::playback_status (XMMSResultValue *res) +bool +XMMSHandler::playback_status (const Xmms::Playback::Status &status) { - uint status; - res->getValue (&status); - emit playbackStatusChanged (status); - - if (res->getClass() == XMMSC_RESULT_CLASS_DEFAULT) { - delete res; - } + return true; } -void -XMMSHandler::playback_playtime (XMMSResultValue *res) +bool +XMMSHandler::playback_playtime (const unsigned int &time) { - uint i; - res->getValue (&i); - - emit playtimeChanged (i); - - m_playtime = res; + emit playtimeChanged (time); m_playtime_timer.start (500); + return false; } -void -XMMSHandler::playback_current_id (XMMSResultValue *res) +bool +XMMSHandler::playback_current_id (const unsigned int &id) { - uint i; - res->getValue (&i); + m_currentid = id; - m_currentid = i; - - if (i > 0) { - XMMSResultDict *r = m_xmmsc->medialib_get_info (i); - r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_info)); + if (id > 0) { + requestMediainfo (id); } - emit currentID(i); - - if (res->getClass() == XMMSC_RESULT_CLASS_DEFAULT) { - delete res; - } + emit currentID(id); + return true; } void XMMSHandler::setPlaytime (uint pos) { - delete m_xmmsc->playback_seek_ms (pos); + m_client.playback.seekMs (pos, &log); } -QHash -XMMSHandler::DictToQHash (XMMSResultDict *res) +void +XMMSHandler::DictToQHash (const std::string &key, + const Xmms::Dict::Variant &value, + QHash &hash) { - QHash h; - std::list l = res->getDictKeys (); - - std::list::const_iterator it; - for(it=l.begin(); it!=l.end(); ++it) - { - if (res->getDictValueType (*it) == XMMSC_RESULT_VALUE_TYPE_UINT32) { - uint i; - res->getValue (*it, &i); - QString t; - t.setNum (i); - h.insert (QString::fromLatin1(*it), t); - } else if (res->getDictValueType (*it) == XMMSC_RESULT_VALUE_TYPE_INT32) { - int i; - res->getValue (*it, &i); - QString t; - t.setNum (i); - h.insert (QString::fromLatin1(*it), t); - } else if (res->getDictValueType (*it) == XMMSC_RESULT_VALUE_TYPE_STRING) { - char *c; - res->getValue (*it, &c); - h.insert (QString::fromLatin1(*it), QString::fromUtf8 (c)); - } + if (value.type () == typeid (int)) { + hash.insert (QString::fromLatin1 (key.c_str ()), + QString::number (boost::get< int > (value))); + } else if (value.type () == typeid (unsigned int)) { + hash.insert (QString::fromLatin1 (key.c_str ()), + QString::number (boost::get< unsigned int > (value))); + } else if (value.type () == typeid (unsigned int)) { + hash.insert (QString::fromLatin1 (key.c_str ()), + QString::fromUtf8 (boost::get< std::string > (value).c_str ())); } - - return h; } -QHash -XMMSHandler::PropDictToQHash (XMMSResultDict *res) +void +XMMSHandler::PropDictToQHash (const std::string &key, + const Xmms::Dict::Variant &value, + const std::string &source, + QHash &hash) { - QHash h; - std::list l = res->getPropDictKeys (); - - std::list::const_iterator it; - for(it=l.begin(); it!=l.end(); ++it) - { - if (res->getDictValueType (*it) == XMMSC_RESULT_VALUE_TYPE_UINT32) { - uint i; - res->getValue (*it, &i); - QString t; - t.setNum (i); - h.insert (QString::fromLatin1(*it), t); - } else if (res->getDictValueType (*it) == XMMSC_RESULT_VALUE_TYPE_INT32) { - int i; - res->getValue (*it, &i); - QString t; - t.setNum (i); - h.insert (QString::fromLatin1(*it), t); - } else if (res->getDictValueType (*it) == XMMSC_RESULT_VALUE_TYPE_STRING) { - char *c; - res->getValue (*it, &c); - h.insert (QString::fromLatin1(*it), QString::fromUtf8 (c)); - } + if (value.type () == typeid (int)) { + hash.insert (QString::fromLatin1 (key.c_str ()), + QString::number (boost::get< int > (value))); + } else if (value.type () == typeid (unsigned int)) { + hash.insert (QString::fromLatin1 (key.c_str ()), + QString::number (boost::get< unsigned int > (value))); + } else { + hash.insert (QString::fromLatin1 (key.c_str ()), + QString::fromUtf8 (boost::get< std::string > (value).c_str())); } - - return h; } /* @@ -273,68 +232,83 @@ XMMSHandler::medialib_select (XMMSResultDictList *res) } */ -void -XMMSHandler::playlist_changed (XMMSResultDict *res) +bool +XMMSHandler::playlist_changed (const Xmms::Dict &list) { - QHash h(DictToQHash (res)); - emit playlistChanged (h); + QHash hash; +#ifdef foreach +#undef foreach +#endif + list.foreach (boost::bind (&XMMSHandler::DictToQHash, this, + _1, _2, boost::ref (hash))); + emit playlistChanged (hash); + return true; } -void -XMMSHandler::medialib_info (XMMSResultDict *res) +bool +XMMSHandler::medialib_info (const Xmms::PropDict &propdict) { - int id; - QHash h(PropDictToQHash (res)); - - res->getValue ("id", &id); - emit mediainfoChanged (id, h); + QHash hash; +#ifdef foreach +#undef foreach +#endif + propdict.foreach (boost::bind (&XMMSHandler::PropDictToQHash, this, + _1, _2, _3, boost::ref (hash))); + unsigned int id = propdict.get("id"); + emit mediainfoChanged (id, hash); if (id == m_currentid) { - emit currentSong (h); + emit currentSong (hash); } + return false; +} - delete res; +bool +XMMSHandler::volume_error (const std::string &error) +{ + qWarning ("couldn't get volume levels!"); + return false; } void -XMMSHandler::volumeGet (void) +XMMSHandler::volumeGet () { - XMMSResultDict *p = m_xmmsc->playback_volume_get (); - p->connect (sigc::mem_fun (this, &XMMSHandler::volume_get)); + m_client.playback.volumeGet (Xmms::bind (&XMMSHandler::volume_get, this), + Xmms::bind (&XMMSHandler::volume_error, this)); } - void XMMSHandler::volumeSet (uint volume) { if(m_masterchan) { - delete m_xmmsc->playback_volume_set ("master", volume); + m_client.playback.volumeSet ("master", volume, &log); } else { - delete m_xmmsc->playback_volume_set ("left", volume); - delete m_xmmsc->playback_volume_set ("right", volume); + m_client.playback.volumeSet ("left", volume, &log); + m_client.playback.volumeSet ("right", volume, &log); } } -void -XMMSHandler::volume_changed (XMMSResult *res) +bool +XMMSHandler::volume_changed (const Xmms::Dict &levels) { - volumeGet (); + volume_get (levels); + return true; } -void -XMMSHandler::volume_get (XMMSResultDict *res) +bool +XMMSHandler::volume_get (const Xmms::Dict &levels) { - if (res->isError()) { - qWarning ("couldn't get volume levels!"); - return; - } - - QHash h (DictToQHash (res)); - QList Values = h.values(); + QHash hash; +#ifdef foreach +#undef foreach +#endif + levels.foreach (boost::bind (&XMMSHandler::DictToQHash, this, + _1, _2, boost::ref (hash))); + QList Values = hash.values(); QListIterator vol (Values); uint right = atol (vol.next().toAscii()); @@ -354,11 +328,43 @@ XMMSHandler::volume_get (XMMSResultDict *res) emit getVolume (right); m_masterchan = true; } + return false; } + +void XMMSHandler::playlistClear () +{ + m_client.playlist.clear (&log); +} + +void XMMSHandler::play () +{ + m_client.playback.start (&log); +} + +void XMMSHandler::stop () +{ + m_client.playback.stop (&log); +} + +void XMMSHandler::pause () +{ + m_client.playback.pause (&log); +} + +void XMMSHandler::next () +{ + m_client.playlist.setNextRel (1, &logUint); + m_client.playback.tickle (&log); +} + +void XMMSHandler::prev () +{ + m_client.playlist.setNextRel (-1, &logUint); + m_client.playback.tickle (&log); +} + XMMSHandler::~XMMSHandler () { - delete m_xmmsc; } - diff --git a/XMMSHandler.h b/XMMSHandler.h index db5add2..4a3d72c 100644 --- a/XMMSHandler.h +++ b/XMMSHandler.h @@ -1,7 +1,7 @@ #ifndef __XMMS_HANDLER_H__ #define __XMMS_HANDLER_H__ -#include "xmmsclient_promoe.h" +#include #include "XmmsQT4.h" @@ -9,64 +9,61 @@ #include #include -class XMMSHandler : public QObject, public sigc::trackable { +class XMMSHandler : public QObject { Q_OBJECT public: - static XMMSHandler *getInstance (void); + static XMMSHandler &getInstance (); ~XMMSHandler (); bool connect (const char *path); - void playback_playtime (XMMSResultValue *res); - void playback_current_id (XMMSResultValue *res); - void medialib_info (XMMSResultDict *res); - void playlist_changed (XMMSResultDict *res); - void playback_status (XMMSResultValue *res); - void playlist_list (XMMSResultValueList *res); - void medialib_entry_changed (XMMSResultValue *res); - void medialib_select (XMMSResultDictList *res); - void volume_changed (XMMSResult *res); - void volume_get (XMMSResultDict *res); + bool playback_playtime (const unsigned int &time); + bool playlist_list (const Xmms::List< unsigned int > &playlist); + bool playback_current_id (const unsigned int &id); + bool medialib_info (const Xmms::PropDict &propdict); + bool medialib_entry_changed (const unsigned int &id); + bool playback_status (const Xmms::Playback::Status &status); + bool volume_changed (const Xmms::Dict &levels); + bool playlist_changed (const Xmms::Dict &list); void requestMediainfo (uint id); - void requestPlaylistList (void); + void requestPlaylistList (); void requestTrackChange (int pos); + void playlistAddURL (const QString& url); + void playlistRemove (uint pos); + void playlistMove (uint pos, uint newpos); - void playlistAddURL (QString); - void playlistRemove (uint pos) { delete m_xmmsc->playlist_remove (pos); } - void playlistMove (uint pos, uint newpos) { delete m_xmmsc->playlist_move (pos, newpos); } + /* + void medialib_select (XMMSResultDictList *res); + + + */ /* uint medialibQuery (QString); void medialibQueryAdd (QString q) { delete m_xmmsc->medialib_add_to_playlist (q.toUtf8 ()); } */ - void volumeGet (void); + void volumeSet (uint volume); + void volumeGet (); + //const XMMSClient *getXMMS () { return m_xmmsc; } - const XMMSClient *getXMMS () { return m_xmmsc; } - - void updateSettings (void) { emit settingsSaved (); } + void updateSettings () { emit settingsSaved (); } public slots: void setPlaytime (uint pos); - void restartPlaytime (void); + void restartPlaytime (); - void playlistClear () { delete m_xmmsc->playlist_clear (); } - void play () { delete m_xmmsc->playback_start (); } - void stop () { delete m_xmmsc->playback_stop (); } - void pause () { delete m_xmmsc->playback_pause (); } - void next () { - delete m_xmmsc->playlist_set_next_rel (1); - delete m_xmmsc->playback_tickle (); - } - void prev () { - delete m_xmmsc->playlist_set_next_rel (-1); - delete m_xmmsc->playback_tickle (); - } + void playlistClear (); + void play (); + void stop (); + void pause (); + void next (); + void prev (); signals: - void settingsSaved (void); - void playbackStatusChanged (uint status); + void settingsSaved (); + void playbackStatusChanged (Xmms::Playback::Status status); void playtimeChanged (uint time); void mediainfoChanged (uint, const QHash &); void currentSong (const QHash &); @@ -79,16 +76,23 @@ class XMMSHandler : public QObject, public sigc::trackable { void getVolume (uint); private: - XMMSResultValue *m_playtime; + Xmms::Client m_client; + QTimer m_playtime_timer; - XMMSHandler (void); - QHash PropDictToQHash (XMMSResultDict *res); - QHash DictToQHash (XMMSResultDict *res); + XMMSHandler (); + void DictToQHash (const std::string &key, + const Xmms::Dict::Variant &value, + QHash &hash); + void PropDictToQHash (const std::string &key, + const Xmms::Dict::Variant &value, + const std::string &source, + QHash &hash); + + bool volume_get (const Xmms::Dict &levels); + bool volume_error (const std::string &error); XmmsQT4 *m_qt4; - XMMSClient *m_xmmsc; - static XMMSHandler *singleton; int m_currentid; bool m_masterchan; }; diff --git a/XmmsQT4.cpp b/XmmsQT4.cpp index d543271..7a7d76c 100644 --- a/XmmsQT4.cpp +++ b/XmmsQT4.cpp @@ -1,7 +1,5 @@ #include "XmmsQT4.h" -using namespace std; - static void CheckWrite (int i, void *userdata); XmmsQT4::XmmsQT4 (xmmsc_connection_t *xmmsc, QObject *parent) : QObject (parent) diff --git a/promoe.pro b/promoe.pro index 67be70a..c9716c5 100644 --- a/promoe.pro +++ b/promoe.pro @@ -22,8 +22,7 @@ SOURCES += XmmsQT4.cpp \ qtmd5.cpp \ SettingsWindow.cpp \ PlaylistMenu.cpp \ - VolumeSlider.cpp \ - xmmsclient_promoe.cpp + VolumeSlider.cpp HEADERS += XmmsQT4.h \ PixWidget.h \ @@ -50,8 +49,6 @@ HEADERS += XmmsQT4.h \ SettingsWindow.h \ PlaylistMenu.h \ VolumeSlider.h \ - xmmsclient_promoe.h \ - xmmsclient_methods.h @@ -67,7 +64,7 @@ CONFIG += link_pkgconfig ;QMAKE_CXXFLAGS += -g ;CONFIG += debug warn_on QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter -PKGCONFIG += xmms2-client sigc++-2.0 +PKGCONFIG += xmms2-client sigc++-2.0 xmms2-client-cpp ;CONFIG += avahi