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
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<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 ()); }
*/
//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<QHash<QString, QString> > &);
*/
private:
void DictToQHash (const std::string &key,
const Xmms::Dict::Variant &value,
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;
};

View file

@ -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 ();
};

View file

@ -26,7 +26,7 @@
#include <QSettings>
#include <QTimer>
#include <QtDebug>
#include <application.h>
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);

View file

@ -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);

View file

@ -17,6 +17,7 @@
#include <xmmsclient/xmmsclient++.h>
#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;

View file

@ -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:

View file

@ -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 ());

View file

@ -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:

View file

@ -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;
}

View file

@ -19,6 +19,8 @@
#include <QWidget>
#include <QDialog>
#include <application.h>
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 () {}