OTHER: fix mousewheel in sliders
This commit is contained in:
parent
3981ff34fc
commit
d91e8e8d35
4 changed files with 39 additions and 23 deletions
|
|
@ -33,19 +33,20 @@ EqualizerSlider::EqualizerSlider (QWidget *parent, int id) :
|
||||||
PixmapSlider (parent)
|
PixmapSlider (parent)
|
||||||
{
|
{
|
||||||
m_id = id;
|
m_id = id;
|
||||||
connect ( this, SIGNAL (sliderMoved (int)),
|
connect ( this, SIGNAL (valueChanged (int)),
|
||||||
this, SLOT (on_self_slider_moved (int)) );
|
this, SLOT (on_self_value_changed (int)) );
|
||||||
setMinimum (-20);
|
setMinimum (-20);
|
||||||
setMaximum (20);
|
setMaximum (20);
|
||||||
|
setPageStep (2);
|
||||||
setSliderOffset (QPoint (1, 0));
|
setSliderOffset (QPoint (1, 0));
|
||||||
setInvertedAppearance (true);
|
setInvertedAppearance (true);
|
||||||
setOrientation (Qt::Vertical);
|
setOrientation (Qt::Vertical);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
EqualizerSlider::on_self_slider_moved (int value)
|
EqualizerSlider::on_self_value_changed (int value)
|
||||||
{
|
{
|
||||||
emit numberedSliderMoved (value, m_id);
|
emit numberedValueChanged (value, m_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -101,14 +102,14 @@ EqualizerWidget::EqualizerWidget (QWidget *parent) : QWidget (parent)
|
||||||
m_preamp = new EqualizerSlider(this, -1);
|
m_preamp = new EqualizerSlider(this, -1);
|
||||||
m_preamp->resize (skin->getSize (Skin::SLIDER_EQUALIZER_BGS));
|
m_preamp->resize (skin->getSize (Skin::SLIDER_EQUALIZER_BGS));
|
||||||
m_preamp->move(21, 38);
|
m_preamp->move(21, 38);
|
||||||
connect (m_preamp, SIGNAL (sliderMoved (int)),
|
connect (m_preamp, SIGNAL (valueChanged (int)),
|
||||||
this, SLOT (updateServerPreamp (int)));
|
this, SLOT (updateServerPreamp (int)));
|
||||||
|
|
||||||
for (int i=0; i < 10; i++) {
|
for (int i=0; i < 10; i++) {
|
||||||
m_bands[i] = new EqualizerSlider(this, i);
|
m_bands[i] = new EqualizerSlider(this, i);
|
||||||
m_bands[i]->resize (skin->getSize (Skin::SLIDER_EQUALIZER_BGS));
|
m_bands[i]->resize (skin->getSize (Skin::SLIDER_EQUALIZER_BGS));
|
||||||
m_bands[i]->move(78+i*18, 38);
|
m_bands[i]->move(78+i*18, 38);
|
||||||
connect (m_bands[i], SIGNAL (numberedSliderMoved (int, int)),
|
connect (m_bands[i], SIGNAL (numberedValueChanged (int, int)),
|
||||||
this, SLOT (updateServerBands (int, int)));
|
this, SLOT (updateServerBands (int, int)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
* This file is a part of Promoe, an XMMS2 Client.
|
* This file is a part of Promoe, an XMMS2 Client.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2005-2008 XMMS2 Team
|
* Copyright (C) 2005-2010 XMMS2 Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
@ -37,10 +37,10 @@ class EqualizerSlider : public PixmapSlider
|
||||||
EqualizerSlider (QWidget*, int);
|
EqualizerSlider (QWidget*, int);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void numberedSliderMoved (int value, int id);
|
void numberedValueChanged (int value, int id);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void on_self_slider_moved (int value);
|
void on_self_value_changed (int value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_id;
|
int m_id;
|
||||||
|
|
|
||||||
|
|
@ -101,23 +101,25 @@ MainDisplay::MainDisplay (MainWindow *parent) : SkinDisplay(parent)
|
||||||
m_vslider = new PixmapSlider(this);
|
m_vslider = new PixmapSlider(this);
|
||||||
m_vslider->setMinimum (0);
|
m_vslider->setMinimum (0);
|
||||||
m_vslider->setMaximum (100);
|
m_vslider->setMaximum (100);
|
||||||
|
m_vslider->setPageStep (3);
|
||||||
m_vslider->setSliderOffset (QPoint (0, 1));
|
m_vslider->setSliderOffset (QPoint (0, 1));
|
||||||
m_vslider->resize (skin->getSize (Skin::SLIDER_VOLUMEBAR_BGS));
|
m_vslider->resize (skin->getSize (Skin::SLIDER_VOLUMEBAR_BGS));
|
||||||
m_vslider->move (skin->getPos (Skin::SLIDER_VOLUMEBAR_BGS));
|
m_vslider->move (skin->getPos (Skin::SLIDER_VOLUMEBAR_BGS));
|
||||||
connect (m_volumehandler, SIGNAL (volume (int)),
|
connect (m_volumehandler, SIGNAL (volume (int)),
|
||||||
m_vslider, SLOT (setValue (int)));
|
m_vslider, SLOT (setValue (int)));
|
||||||
connect (m_vslider, SIGNAL (sliderMoved (int)),
|
connect (m_vslider, SIGNAL (valueChanged (int)),
|
||||||
m_volumehandler, SLOT (setVolume (int)));
|
m_volumehandler, SLOT (setVolume (int)));
|
||||||
|
|
||||||
m_bslider = new PixmapSlider (this);
|
m_bslider = new PixmapSlider (this);
|
||||||
m_bslider->setMinimum (-MAX_STEREO_BALANCE);
|
m_bslider->setMinimum (-MAX_STEREO_BALANCE);
|
||||||
m_bslider->setMaximum (MAX_STEREO_BALANCE);
|
m_bslider->setMaximum (MAX_STEREO_BALANCE);
|
||||||
|
m_bslider->setPageStep (3);
|
||||||
m_bslider->setSliderOffset (QPoint (0, 1));
|
m_bslider->setSliderOffset (QPoint (0, 1));
|
||||||
m_bslider->resize (skin->getSize (Skin::SLIDER_BALANCEBAR_BGS));
|
m_bslider->resize (skin->getSize (Skin::SLIDER_BALANCEBAR_BGS));
|
||||||
m_bslider->move (skin->getPos (Skin::SLIDER_BALANCEBAR_BGS));
|
m_bslider->move (skin->getPos (Skin::SLIDER_BALANCEBAR_BGS));
|
||||||
connect (m_volumehandler, SIGNAL (balance (int)),
|
connect (m_volumehandler, SIGNAL (balance (int)),
|
||||||
m_bslider, SLOT (setValue (int)));
|
m_bslider, SLOT (setValue (int)));
|
||||||
connect (m_bslider, SIGNAL (sliderMoved (int)),
|
connect (m_bslider, SIGNAL (valueChanged (int)),
|
||||||
m_volumehandler, SLOT (setBalance (int)));
|
m_volumehandler, SLOT (setBalance (int)));
|
||||||
|
|
||||||
connect (client->cache (), SIGNAL (activeEntryChanged (QVariantHash)),
|
connect (client->cache (), SIGNAL (activeEntryChanged (QVariantHash)),
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
* This file is a part of Promoe, an XMMS2 Client
|
* This file is a part of Promoe, an XMMS2 Client
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2009 XMMS2 Team
|
* Copyright (C) 2008-2010 XMMS2 Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
|
@ -59,11 +59,10 @@ PixmapSlider::mouseMoveEvent (QMouseEvent *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
int val = sliderMovePosition (event);
|
int val = sliderMovePosition (event);
|
||||||
|
if (val != value ()) {
|
||||||
if (val == value ()) {
|
QAbstractSlider::setValue (val);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
QAbstractSlider::setValue (val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -77,11 +76,10 @@ PixmapSlider::mousePressEvent (QMouseEvent *event)
|
||||||
setSliderDown (true);
|
setSliderDown (true);
|
||||||
|
|
||||||
int val = sliderMovePosition (event);
|
int val = sliderMovePosition (event);
|
||||||
|
if (val != value ()) {
|
||||||
if (val == value ()) {
|
QAbstractSlider::setValue (val);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
QAbstractSlider::setValue (val);
|
|
||||||
|
|
||||||
update ();
|
update ();
|
||||||
}
|
}
|
||||||
|
|
@ -95,8 +93,10 @@ PixmapSlider::mouseReleaseEvent (QMouseEvent *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
int val = sliderMovePosition (event);
|
int val = sliderMovePosition (event);
|
||||||
|
if (val != value ()) {
|
||||||
|
QAbstractSlider::setValue (val);
|
||||||
|
}
|
||||||
|
|
||||||
QAbstractSlider::setValue (val);
|
|
||||||
|
|
||||||
setSliderDown (false);
|
setSliderDown (false);
|
||||||
|
|
||||||
|
|
@ -106,12 +106,21 @@ PixmapSlider::mouseReleaseEvent (QMouseEvent *event)
|
||||||
int
|
int
|
||||||
PixmapSlider::sliderMovePosition (QMouseEvent *event)
|
PixmapSlider::sliderMovePosition (QMouseEvent *event)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
if (orientation () == Qt::Vertical) {
|
if (orientation () == Qt::Vertical) {
|
||||||
return sliderValueFromPosition (event->y() - m_pressed.height () /2);
|
ret = sliderValueFromPosition (event->y() - m_pressed.height () /2);
|
||||||
} else {
|
} else {
|
||||||
return sliderValueFromPosition (event->x() - m_pressed.width () /2);
|
ret = sliderValueFromPosition (event->x() - m_pressed.width () /2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make sliders snap to center. Usefull for equalizer sliders and balance
|
||||||
|
const int centerValue = 0;
|
||||||
|
if ((ret > centerValue - pageStep ()) &&
|
||||||
|
(ret < centerValue + pageStep ())) {
|
||||||
|
ret = centerValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -120,6 +129,10 @@ PixmapSlider::setValue (int val)
|
||||||
if (isSliderDown ()){
|
if (isSliderDown ()){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (val == value()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QAbstractSlider::setValue (val);
|
QAbstractSlider::setValue (val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue