OTHER: Let promoe enable xmms2d's equalizer plugin

This commit is contained in:
Thomas Frauendorfer 2008-12-03 21:32:58 +01:00
parent c6b75de31d
commit 8b1a61082c
5 changed files with 67 additions and 32 deletions

View file

@ -25,6 +25,7 @@
#include "Skin.h"
#include <QPainter>
#include <QMessageBox>
EqualizerSlider::EqualizerSlider (QWidget *parent, int id) :
PixmapSlider (parent)
@ -110,28 +111,13 @@ EqualizerWidget::EqualizerWidget (QWidget *parent) : QWidget (parent)
}
connect (m_xconfig, SIGNAL (configChanged (QString, QString)),
this, SLOT (serverConfigChanged (QString, QString)));
this, SLOT (serverConfigValueChanged (QString, QString)));
// if the config from the server were already loaded, we will only
// receive configChanged signals for values that really change
// so we must request the existing values manually
// we request the config values manually if we already are connected
connect (m_xconfig, SIGNAL (configLoaded ()),
this, SLOT (loadServerConfig ()));
if (m_xconfig->isReady()) {
QString key;
QString value;
// set enabled checkbox
key = QString ("equalizer.enabled");
value = m_xconfig->value_get (key);
serverConfigChanged (key, value);
// set preamp
key = QString ("equalizer.preamp");
value = m_xconfig->value_get (key);
serverConfigChanged (key, value);
// Set band-sliders
for (int i=0; i < 10; i++) {
key = QString ("equalizer.legacy%1").arg(i);
value = m_xconfig->value_get (key);
serverConfigChanged (key, value);
}
loadServerConfig ();
}
}
@ -197,11 +183,51 @@ EqualizerWidget::paintEvent (QPaintEvent *event)
* update the serverconfiguraten if we change something
*/
void
EqualizerWidget::serverConfigChanged (QString key, QString value)
EqualizerWidget::loadServerConfig ()
{
// qDebug (key.toAscii ());
// qDebug (value.toAscii ());
// FIXME: Disable Widget if doesn't get enabled
// TODO: Add 'don't bother me again' checkbox
if (!(m_xconfig->values_get (QRegExp ("effect\\.order\\.\\d+")).
contains ("equalizer"))) {
int button = QMessageBox::information (this, "Equalizer not enabled",
"You need to enable the equalizer plugin on\n" \
"the server or the equalizer will not work\n\n" \
"Should promoe enable the equalizer plugin?",
"Enable", "Ignore");
if (button == 0) {
// Add 'equalizer' to first empty 'effect.order.<num>' entry,
// xmms2d takes care that there alway is at least one empty entry
int i = 0;
QString key = "effect.order.%1";
while (m_xconfig->has_key (key.arg (i))) {
if (m_xconfig->value_get (key.arg (i)).isEmpty ()) {
m_xconfig->value_set (key.arg (i), "equalizer");
break;
}
}
}
}
QString key;
QString value;
// set enabled checkbox
key = QString ("equalizer.enabled");
value = m_xconfig->value_get (key);
serverConfigValueChanged (key, value);
// set preamp
key = QString ("equalizer.preamp");
value = m_xconfig->value_get (key);
serverConfigValueChanged (key, value);
// Set band-sliders
for (int i=0; i < 10; i++) {
key = QString ("equalizer.legacy%1").arg(i);
value = m_xconfig->value_get (key);
serverConfigValueChanged (key, value);
}
}
void
EqualizerWidget::serverConfigValueChanged (QString key, QString value)
{
// FIXME: also test on use_legacy
if (key.startsWith ("equalizer.enabled")) {
if (value != "0") {

View file

@ -59,12 +59,14 @@ class EqualizerWidget : public QWidget
void setPixmaps(Skin *skin);
protected slots:
void serverConfigChanged (QString key, QString value);
void loadServerConfig ();
void serverConfigValueChanged (QString key, QString value);
void setEqualizerEnabled (bool enabled);
void updateServerPreamp (int value);
void updateServerBands (int value, int id);
private:
XConfig *m_xconfig;
QPixmap m_pixmap;
QPixmap m_graph;