From d0d07f75538e04decf0f8baf84b0d98f213489a8 Mon Sep 17 00:00:00 2001 From: Thomas Frauendorfer Date: Fri, 31 Oct 2008 04:53:09 +0100 Subject: [PATCH] OTHER: Make the settingsdialog emit a settingsChanged Signal It's now no longer necessary to restart promoe for new settings to take effect. The Signal is piped through Application. Updated the classes that are affected by settings changes Removed some now unused code from XMMSHandler --- src/XMMSHandler.cpp | 57 ---------------------------------- src/XMMSHandler.h | 16 ---------- src/application.h | 9 ++++-- src/mainwindow/textbar.cpp | 7 +++-- src/mainwindow/textbar.h | 2 +- src/playlist/playlistshade.cpp | 7 +++-- src/playlist/playlistshade.h | 2 +- src/playlist/playlistview.cpp | 7 +++-- src/playlist/playlistview.h | 2 +- src/settingsdialog.cpp | 21 ++++++++++--- src/settingsdialog.h | 12 +++++-- 11 files changed, 47 insertions(+), 95 deletions(-) diff --git a/src/XMMSHandler.cpp b/src/XMMSHandler.cpp index 0d0a356..2483e31 100644 --- a/src/XMMSHandler.cpp +++ b/src/XMMSHandler.cpp @@ -40,21 +40,6 @@ XMMSHandler::XMMSHandler (QObject *parent, const std::string &name) : XClient (p bool XMMSHandler::connect_handler (const char *ipcpath, const bool &sync, QWidget *parent) { -/* try { - m_client.connect(path); - //TODO reenable checking of path - //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_client.setMainloop (new XmmsQT4 (m_client.getConnection ())); -*/ //TODO must be moved elsewere later m_playlist_model = new PlaylistModel(NULL, this, "_active"); @@ -86,45 +71,3 @@ XMMSHandler::DictToQHash (const std::string &key, } } -/* -void -XMMSHandler::PropDictToQHash (const std::string &key, - const Xmms::Dict::Variant &value, - const std::string &source, - QHash &hash) -{ - if (value.type () == typeid (int32_t)) { - hash.insert (QString::fromLatin1 (key.c_str ()), - QString::number (boost::get< int32_t > (value))); - } else if (value.type () == typeid (uint32_t)) { - hash.insert (QString::fromLatin1 (key.c_str ()), - QString::number (boost::get< uint32_t > (value))); - } else { - hash.insert (QString::fromLatin1 (key.c_str ()), - QString::fromUtf8 (boost::get< std::string > (value).c_str())); - } -} -*/ -/* -uint -XMMSHandler::medialibQuery (QString q) -{ - XMMSResultDictList *r = m_xmmsc->medialib_select (q.toUtf8 ()); - r->connect (sigc::mem_fun (this, &XMMSHandler::medialib_select)); - m_mlibqs->append (r); -} - -void -XMMSHandler::medialib_select (XMMSResultDictList *res) -{ - QList > l; - - for (;res->listValid (); res->listNext()) { - QHash h(DictToQHash (static_cast(res))); - l.append (h); - } - - emit medialibResponse (res->getCID (), l); -} -*/ - diff --git a/src/XMMSHandler.h b/src/XMMSHandler.h index 0e28b16..93fafd0 100644 --- a/src/XMMSHandler.h +++ b/src/XMMSHandler.h @@ -46,30 +46,14 @@ class XMMSHandler : public XClient { void medialibQueryAdd (QString q) { delete m_xmmsc->medialib_add_to_playlist (q.toUtf8 ()); } */ - //const XMMSClient *getXMMS () { return m_xmmsc; } - - void updateSettings () { emit settingsSaved (); } - Xmms::Client *getClient () { return m_client; } PlaylistModel *getPlaylistModel () {return m_playlist_model; } - signals: - void settingsSaved (); - /* - void medialibResponse (uint, const QList > &); - */ - private: 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); - - XmmsQT4 *m_qt4; PlaylistModel *m_playlist_model; }; diff --git a/src/application.h b/src/application.h index 303e2cd..b075f06 100644 --- a/src/application.h +++ b/src/application.h @@ -25,10 +25,13 @@ class Application : public QApplication { Q_OBJECT + signals: + void settingsChanged (void); + public: - Application (int &argc, char **argv); + Application (int &argc, char **argv); public slots: - void cleanupHandler (); - void handleDisconnected (); + void cleanupHandler (); + void handleDisconnected (); }; diff --git a/src/mainwindow/textbar.cpp b/src/mainwindow/textbar.cpp index bd67537..6021b20 100644 --- a/src/mainwindow/textbar.cpp +++ b/src/mainwindow/textbar.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include TextScroller::TextScroller (QWidget *parent, uint w, uint h, const QString &name) : QWidget (parent) @@ -65,11 +65,12 @@ TextScroller::TextScroller (QWidget *parent, uint w, m_timer = new QTimer (this); m_timer->setInterval (40); connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ())); - //connect (xmmsh, SIGNAL (settingsSaved ()), this, SLOT (settingsSaved ())); + connect (qApp, SIGNAL (settingsChanged ()), + this, SLOT (settingsChanged ())); } void -TextScroller::settingsSaved (void) +TextScroller::settingsChanged (void) { QSettings s; s.beginGroup ("display_" + m_name); diff --git a/src/mainwindow/textbar.h b/src/mainwindow/textbar.h index 1d14f6b..f30a44d 100644 --- a/src/mainwindow/textbar.h +++ b/src/mainwindow/textbar.h @@ -38,7 +38,7 @@ class TextScroller : public QWidget public slots: void addOffset (); void setPixmaps(Skin *skin); - void settingsSaved (void); + void settingsChanged (void); protected: void paintEvent (QPaintEvent *event); diff --git a/src/playlist/playlistshade.cpp b/src/playlist/playlistshade.cpp index 9252e27..49ed40b 100644 --- a/src/playlist/playlistshade.cpp +++ b/src/playlist/playlistshade.cpp @@ -17,6 +17,7 @@ #include #include "xclientcache.h" +#include "application.h" #include "playlistshade.h" #include "playlistwindow.h" #include "pixmapbutton.h" @@ -49,15 +50,15 @@ PlaylistShade::PlaylistShade (PlaylistWindow *parent) : QWidget (parent) connect (xmmsh.cache (), SIGNAL (activeEntryChanged (QVariantHash)), this, SLOT (setMediainfo (QVariantHash))); - connect (&xmmsh, SIGNAL(settingsSaved ()), - this, SLOT(settingsSaved ())); + connect (qApp, SIGNAL(settingsChanged ()), + this, SLOT(settingsChanged ())); m_text = "Promoe " PROMOE_VERSION " - A very neat XMMS2 client"; setMinimumSize (275, 14); } void -PlaylistShade::settingsSaved () +PlaylistShade::settingsChanged () { QSettings s; diff --git a/src/playlist/playlistshade.h b/src/playlist/playlistshade.h index 9d89d24..0b4e7cf 100644 --- a/src/playlist/playlistshade.h +++ b/src/playlist/playlistshade.h @@ -43,7 +43,7 @@ class PlaylistShade : public QWidget { public slots: void setPixmaps (Skin *skin); void setMediainfo (QVariantHash); - void settingsSaved (); + void settingsChanged (); void resizeEvent (QResizeEvent *); private: diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index 72fe862..f97ee49 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -18,6 +18,7 @@ #include "XMMSHandler.h" #include "xplayback.h" +#include "application.h" #include "playlistview.h" #include "playlistmodel.h" #include "playlistwidget.h" @@ -137,8 +138,8 @@ PlaylistView::PlaylistView (QWidget *parent) : QListView (parent) XMMSHandler &xmmsh = XMMSHandler::getInstance (); - connect (&xmmsh, SIGNAL(settingsSaved()), - this, SLOT(settingsSaved())); + connect (qApp, SIGNAL (settingsChanged ()), + this, SLOT (settingsChanged ())); connect (xmmsh.xplayback (), SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), this, SLOT(handleStatus(Xmms::Playback::Status))); @@ -219,7 +220,7 @@ PlaylistView::handleStatus (const Xmms::Playback::Status st) } void -PlaylistView::settingsSaved () +PlaylistView::settingsChanged () { QSettings s; m_font->setPixelSize (s.value ("playlist/fontsize").toInt ()); diff --git a/src/playlist/playlistview.h b/src/playlist/playlistview.h index 9a1c0cf..6d6c810 100644 --- a/src/playlist/playlistview.h +++ b/src/playlist/playlistview.h @@ -60,7 +60,7 @@ class PlaylistView : public QListView { void cropSelected (void); void removeSelected (void); void showEntryInfo (void); - void settingsSaved (void); + void settingsChanged (void); void setPixmaps (Skin *skin); protected: diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 4539ed2..4bd870f 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -38,6 +38,9 @@ SettingsDialog::SettingsDialog (QWidget *parent) : QDialog (parent) resize (400, 500); + connect (this, SIGNAL (settingsChanged (void)), + qApp, SIGNAL (settingsChanged (void))); + QVBoxLayout *vbox = new QVBoxLayout (this); setLayout(vbox); @@ -66,8 +69,13 @@ SettingsDialog::SettingsDialog (QWidget *parent) : QDialog (parent) void SettingsDialog::okButton (void) { - m_mainwindow->saveSettings (); - m_playlistwin->saveSettings (); + bool changed = false; + + changed |= m_mainwindow->saveSettings (); + changed |= m_playlistwin->saveSettings (); + + if (changed) + emit settingsChanged (); close (); } @@ -306,13 +314,15 @@ SettingsTabPlaylist::SettingsTabPlaylist (QWidget *parent) : QWidget (parent) s.endGroup (); } -void +bool SettingsTabPlaylist::saveSettings (void) { QSettings s; s.setValue ("playlist/fontsize", m_fontsize->value ()); s.setValue ("playlist/shadedsize", m_shadesize->value ()); s.setValue ("playlist/useremote", m_remote_fs->checkState () == Qt::Checked); + //TODO: Check if we really changed something + return true; } SettingsTabMain::SettingsTabMain (QWidget *parent) : QWidget (parent) @@ -472,7 +482,7 @@ SettingsTabMain::SettingsTabMain (QWidget *parent) : QWidget (parent) } -void +bool SettingsTabMain::saveSettings (void) { QSettings s; @@ -490,4 +500,7 @@ SettingsTabMain::saveSettings (void) s.setValue ("fontsize", m_shadesize->value ()); s.setValue ("ttf", m_shadettf->checkState () == Qt::Checked); s.endGroup (); + + //TODO: Check if we really changed something + return true; } diff --git a/src/settingsdialog.h b/src/settingsdialog.h index 506081a..b362ea3 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -19,6 +19,8 @@ #include #include +#include + class QCheckBox; class QSpinBox; class QComboBox; @@ -29,7 +31,7 @@ class SettingsTabMedialib : public QWidget { public: SettingsTabMedialib (QWidget *parent); ~SettingsTabMedialib () {} - void saveSettings (void); + bool saveSettings (void); private: QComboBox *m_selected; @@ -43,7 +45,7 @@ class SettingsTabPlaylist : public QWidget { public: SettingsTabPlaylist (QWidget *parent); ~SettingsTabPlaylist () {} - void saveSettings (void); + bool saveSettings (void); private: QSpinBox *m_fontsize; @@ -56,7 +58,7 @@ class SettingsTabMain : public QWidget { public: SettingsTabMain (QWidget *parent); ~SettingsTabMain () {} - void saveSettings (void); + bool saveSettings (void); private: @@ -72,6 +74,10 @@ class SettingsTabMain : public QWidget { class SettingsDialog : public QDialog { Q_OBJECT + + signals: + void settingsChanged (void); + public: SettingsDialog (QWidget *parent); ~SettingsDialog () {}