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
This commit is contained in:
Thomas Frauendorfer 2008-10-31 04:53:09 +01:00
parent 97707922c9
commit d0d07f7553
11 changed files with 47 additions and 95 deletions

View file

@ -40,21 +40,6 @@ XMMSHandler::XMMSHandler (QObject *parent, const std::string &name) : XClient (p
bool bool
XMMSHandler::connect_handler (const char *ipcpath, const bool &sync, QWidget *parent) 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 //TODO must be moved elsewere later
m_playlist_model = new PlaylistModel(NULL, this, "_active"); 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<QString, QString> &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<QHash<QString, QString> > l;
for (;res->listValid (); res->listNext()) {
QHash<QString, QString> h(DictToQHash (static_cast<XMMSResultDict *>(res)));
l.append (h);
}
emit medialibResponse (res->getCID (), l);
}
*/

View file

@ -46,30 +46,14 @@ class XMMSHandler : public XClient {
void medialibQueryAdd (QString q) { delete m_xmmsc->medialib_add_to_playlist (q.toUtf8 ()); } 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; } Xmms::Client *getClient () { return m_client; }
PlaylistModel *getPlaylistModel () {return m_playlist_model; } PlaylistModel *getPlaylistModel () {return m_playlist_model; }
signals:
void settingsSaved ();
/*
void medialibResponse (uint, const QList<QHash<QString, QString> > &);
*/
private: private:
void DictToQHash (const std::string &key, void DictToQHash (const std::string &key,
const Xmms::Dict::Variant &value, const Xmms::Dict::Variant &value,
QHash<QString, QString> &hash); QHash<QString, QString> &hash);
// void PropDictToQHash (const std::string &key,
// const Xmms::Dict::Variant &value,
// const std::string &source,
// QHash<QString, QString> &hash);
XmmsQT4 *m_qt4;
PlaylistModel *m_playlist_model; PlaylistModel *m_playlist_model;
}; };

View file

@ -25,6 +25,9 @@ class Application : public QApplication
{ {
Q_OBJECT Q_OBJECT
signals:
void settingsChanged (void);
public: public:
Application (int &argc, char **argv); Application (int &argc, char **argv);

View file

@ -26,7 +26,7 @@
#include <QSettings> #include <QSettings>
#include <QTimer> #include <QTimer>
#include <QtDebug> #include <application.h>
TextScroller::TextScroller (QWidget *parent, uint w, TextScroller::TextScroller (QWidget *parent, uint w,
uint h, const QString &name) : QWidget (parent) uint h, const QString &name) : QWidget (parent)
@ -65,11 +65,12 @@ TextScroller::TextScroller (QWidget *parent, uint w,
m_timer = new QTimer (this); m_timer = new QTimer (this);
m_timer->setInterval (40); m_timer->setInterval (40);
connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ())); connect (m_timer, SIGNAL (timeout()), this, SLOT (addOffset ()));
//connect (xmmsh, SIGNAL (settingsSaved ()), this, SLOT (settingsSaved ())); connect (qApp, SIGNAL (settingsChanged ()),
this, SLOT (settingsChanged ()));
} }
void void
TextScroller::settingsSaved (void) TextScroller::settingsChanged (void)
{ {
QSettings s; QSettings s;
s.beginGroup ("display_" + m_name); s.beginGroup ("display_" + m_name);

View file

@ -38,7 +38,7 @@ class TextScroller : public QWidget
public slots: public slots:
void addOffset (); void addOffset ();
void setPixmaps(Skin *skin); void setPixmaps(Skin *skin);
void settingsSaved (void); void settingsChanged (void);
protected: protected:
void paintEvent (QPaintEvent *event); void paintEvent (QPaintEvent *event);

View file

@ -17,6 +17,7 @@
#include <xmmsclient/xmmsclient++.h> #include <xmmsclient/xmmsclient++.h>
#include "xclientcache.h" #include "xclientcache.h"
#include "application.h"
#include "playlistshade.h" #include "playlistshade.h"
#include "playlistwindow.h" #include "playlistwindow.h"
#include "pixmapbutton.h" #include "pixmapbutton.h"
@ -49,15 +50,15 @@ PlaylistShade::PlaylistShade (PlaylistWindow *parent) : QWidget (parent)
connect (xmmsh.cache (), SIGNAL (activeEntryChanged (QVariantHash)), connect (xmmsh.cache (), SIGNAL (activeEntryChanged (QVariantHash)),
this, SLOT (setMediainfo (QVariantHash))); this, SLOT (setMediainfo (QVariantHash)));
connect (&xmmsh, SIGNAL(settingsSaved ()), connect (qApp, SIGNAL(settingsChanged ()),
this, SLOT(settingsSaved ())); this, SLOT(settingsChanged ()));
m_text = "Promoe " PROMOE_VERSION " - A very neat XMMS2 client"; m_text = "Promoe " PROMOE_VERSION " - A very neat XMMS2 client";
setMinimumSize (275, 14); setMinimumSize (275, 14);
} }
void void
PlaylistShade::settingsSaved () PlaylistShade::settingsChanged ()
{ {
QSettings s; QSettings s;

View file

@ -43,7 +43,7 @@ class PlaylistShade : public QWidget {
public slots: public slots:
void setPixmaps (Skin *skin); void setPixmaps (Skin *skin);
void setMediainfo (QVariantHash); void setMediainfo (QVariantHash);
void settingsSaved (); void settingsChanged ();
void resizeEvent (QResizeEvent *); void resizeEvent (QResizeEvent *);
private: private:

View file

@ -18,6 +18,7 @@
#include "XMMSHandler.h" #include "XMMSHandler.h"
#include "xplayback.h" #include "xplayback.h"
#include "application.h"
#include "playlistview.h" #include "playlistview.h"
#include "playlistmodel.h" #include "playlistmodel.h"
#include "playlistwidget.h" #include "playlistwidget.h"
@ -137,8 +138,8 @@ PlaylistView::PlaylistView (QWidget *parent) : QListView (parent)
XMMSHandler &xmmsh = XMMSHandler::getInstance (); XMMSHandler &xmmsh = XMMSHandler::getInstance ();
connect (&xmmsh, SIGNAL(settingsSaved()), connect (qApp, SIGNAL (settingsChanged ()),
this, SLOT(settingsSaved())); this, SLOT (settingsChanged ()));
connect (xmmsh.xplayback (), SIGNAL(playbackStatusChanged(Xmms::Playback::Status)), connect (xmmsh.xplayback (), SIGNAL(playbackStatusChanged(Xmms::Playback::Status)),
this, SLOT(handleStatus(Xmms::Playback::Status))); this, SLOT(handleStatus(Xmms::Playback::Status)));
@ -219,7 +220,7 @@ PlaylistView::handleStatus (const Xmms::Playback::Status st)
} }
void void
PlaylistView::settingsSaved () PlaylistView::settingsChanged ()
{ {
QSettings s; QSettings s;
m_font->setPixelSize (s.value ("playlist/fontsize").toInt ()); m_font->setPixelSize (s.value ("playlist/fontsize").toInt ());

View file

@ -60,7 +60,7 @@ class PlaylistView : public QListView {
void cropSelected (void); void cropSelected (void);
void removeSelected (void); void removeSelected (void);
void showEntryInfo (void); void showEntryInfo (void);
void settingsSaved (void); void settingsChanged (void);
void setPixmaps (Skin *skin); void setPixmaps (Skin *skin);
protected: protected:

View file

@ -38,6 +38,9 @@ SettingsDialog::SettingsDialog (QWidget *parent) : QDialog (parent)
resize (400, 500); resize (400, 500);
connect (this, SIGNAL (settingsChanged (void)),
qApp, SIGNAL (settingsChanged (void)));
QVBoxLayout *vbox = new QVBoxLayout (this); QVBoxLayout *vbox = new QVBoxLayout (this);
setLayout(vbox); setLayout(vbox);
@ -66,8 +69,13 @@ SettingsDialog::SettingsDialog (QWidget *parent) : QDialog (parent)
void void
SettingsDialog::okButton (void) SettingsDialog::okButton (void)
{ {
m_mainwindow->saveSettings (); bool changed = false;
m_playlistwin->saveSettings ();
changed |= m_mainwindow->saveSettings ();
changed |= m_playlistwin->saveSettings ();
if (changed)
emit settingsChanged ();
close (); close ();
} }
@ -306,13 +314,15 @@ SettingsTabPlaylist::SettingsTabPlaylist (QWidget *parent) : QWidget (parent)
s.endGroup (); s.endGroup ();
} }
void bool
SettingsTabPlaylist::saveSettings (void) SettingsTabPlaylist::saveSettings (void)
{ {
QSettings s; QSettings s;
s.setValue ("playlist/fontsize", m_fontsize->value ()); s.setValue ("playlist/fontsize", m_fontsize->value ());
s.setValue ("playlist/shadedsize", m_shadesize->value ()); s.setValue ("playlist/shadedsize", m_shadesize->value ());
s.setValue ("playlist/useremote", m_remote_fs->checkState () == Qt::Checked); 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) SettingsTabMain::SettingsTabMain (QWidget *parent) : QWidget (parent)
@ -472,7 +482,7 @@ SettingsTabMain::SettingsTabMain (QWidget *parent) : QWidget (parent)
} }
void bool
SettingsTabMain::saveSettings (void) SettingsTabMain::saveSettings (void)
{ {
QSettings s; QSettings s;
@ -490,4 +500,7 @@ SettingsTabMain::saveSettings (void)
s.setValue ("fontsize", m_shadesize->value ()); s.setValue ("fontsize", m_shadesize->value ());
s.setValue ("ttf", m_shadettf->checkState () == Qt::Checked); s.setValue ("ttf", m_shadettf->checkState () == Qt::Checked);
s.endGroup (); s.endGroup ();
//TODO: Check if we really changed something
return true;
} }

View file

@ -19,6 +19,8 @@
#include <QWidget> #include <QWidget>
#include <QDialog> #include <QDialog>
#include <application.h>
class QCheckBox; class QCheckBox;
class QSpinBox; class QSpinBox;
class QComboBox; class QComboBox;
@ -29,7 +31,7 @@ class SettingsTabMedialib : public QWidget {
public: public:
SettingsTabMedialib (QWidget *parent); SettingsTabMedialib (QWidget *parent);
~SettingsTabMedialib () {} ~SettingsTabMedialib () {}
void saveSettings (void); bool saveSettings (void);
private: private:
QComboBox *m_selected; QComboBox *m_selected;
@ -43,7 +45,7 @@ class SettingsTabPlaylist : public QWidget {
public: public:
SettingsTabPlaylist (QWidget *parent); SettingsTabPlaylist (QWidget *parent);
~SettingsTabPlaylist () {} ~SettingsTabPlaylist () {}
void saveSettings (void); bool saveSettings (void);
private: private:
QSpinBox *m_fontsize; QSpinBox *m_fontsize;
@ -56,7 +58,7 @@ class SettingsTabMain : public QWidget {
public: public:
SettingsTabMain (QWidget *parent); SettingsTabMain (QWidget *parent);
~SettingsTabMain () {} ~SettingsTabMain () {}
void saveSettings (void); bool saveSettings (void);
private: private:
@ -72,6 +74,10 @@ class SettingsTabMain : public QWidget {
class SettingsDialog : public QDialog { class SettingsDialog : public QDialog {
Q_OBJECT Q_OBJECT
signals:
void settingsChanged (void);
public: public:
SettingsDialog (QWidget *parent); SettingsDialog (QWidget *parent);
~SettingsDialog () {} ~SettingsDialog () {}