23 #include <QPushButton> 24 #include <QRadioButton> 28 #include <KHelpClient> 29 #include <KLocalizedString> 45 :QDialog(parent), Ui::VolumeDlg(), m_factor(1.0), m_mode(MODE_DECIBEL),
46 m_enable_updates(true), m_overview_cache(overview_cache)
52 connect(rbFactor, SIGNAL(toggled(
bool)),
54 connect(rbPercentage, SIGNAL(toggled(
bool)),
56 connect(rbLogarithmic, SIGNAL(toggled(
bool)),
60 connect(slider, SIGNAL(valueChanged(
int)),
62 connect(spinbox, SIGNAL(valueChanged(
int)),
69 int h = preview->height();
71 preview->setFixedHeight(h);
74 h = (sizeHint().height() * 12) / 10;
76 if (sizeHint().width() > w) w = sizeHint().width();
84 buttonBox->button(QDialogButtonBox::Ok)->setFocus();
102 rbFactor->setChecked(
true);
103 slider->setMinimum(-9);
104 slider->setMaximum(+9);
105 slider->setPageStep(1);
106 slider->setTickInterval(1);
107 spinbox->setMinimum(-10);
108 spinbox->setMaximum(+10);
112 rbPercentage->setChecked(
true);
114 slider->setMinimum(1);
115 slider->setMaximum(10*100);
116 slider->setPageStep(100);
117 slider->setTickInterval(1*100);
118 spinbox->setMinimum(1);
119 spinbox->setMaximum(+10*100);
123 rbLogarithmic->setChecked(
true);
125 slider->setMinimum(-21);
126 slider->setMaximum(+21);
127 slider->setPageStep(6);
128 slider->setTickInterval(6);
129 spinbox->setMinimum(-21);
130 spinbox->setMaximum(+21);
156 int new_spinbox_value = 0;
157 int new_slider_value = 0;
161 if (!qFuzzyCompare(
m_factor, value)) {
167 int width = preview->width();
168 int height = preview->height();
169 QColor fg = Qt::white;
170 QColor bg = Qt::black;
177 int middle = height >> 1;
183 for (
int y = 0; y < height; y++) {
188 p.setCompositionMode(QPainter::CompositionMode_SourceOver);
191 p.setCompositionMode(QPainter::CompositionMode_Multiply);
192 if ((y < middle - red) || (y > middle + red))
195 else if ((y < middle - orange) || (y > middle + orange))
200 color = preview->palette().light().color();
204 p.drawLine(0, y, width-1, y);
209 preview->setImage(image);
221 spinbox->setPrefix(
_(
"x "));
222 spinbox->setSuffix(
_(
""));
223 spinbox->setInverse(
false);
225 new_spinbox_value = new_value;
226 new_slider_value = new_value-1;
231 spinbox->setPrefix(
_(
"1/"));
232 spinbox->setSuffix(
_(
""));
233 spinbox->setInverse(
true);
235 new_spinbox_value = -1*new_value;
236 new_slider_value = (new_value+1);
246 new_slider_value = new_spinbox_value;
247 spinbox->setPrefix(
_(
""));
248 spinbox->setSuffix(
_(
"%"));
249 spinbox->setInverse(
false);
254 new_slider_value =
Kwave::toInt(rint(20.0 * log10(value)));
255 new_spinbox_value = new_slider_value;
256 if (new_spinbox_value >= 0) {
257 spinbox->setPrefix(new_spinbox_value ?
_(
"+") :
_(
"+/- "));
260 spinbox->setPrefix(
_(
""));
262 spinbox->setSuffix(
_(
" ") + i18n(
"dB"));
263 spinbox->setInverse(
false);
269 if (spinbox->value() != new_spinbox_value) spinbox->setValue(new_spinbox_value);
272 int sv = slider->maximum() + slider->minimum() - new_slider_value;
273 if (slider->value() != sv) slider->setValue(sv);
283 int sv = slider->maximum() + slider->minimum() - pos;
294 factor = -1.0 /
static_cast<double>(sv - 1);
316 int sv = spinbox->value();
326 factor = sv ? sv : 0.5;
329 factor = 1.0 /
static_cast<double>(sv);
335 factor =
static_cast<double>(pos) / 100.0;
340 factor = pow(10.0, pos / 20.0);
353 list << QString::number(static_cast<int>(
m_mode));
361 double factor = params[0].toDouble();
362 switch (params[1].toUInt()) {
381 KHelpClient::invokeHelp(
_(
"plugin_sect_volume"));
virtual QImage getOverView(int width, int height, const QColor &fg, const QColor &bg, double gain=1.0)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)