2 * Common Source Project/ Qt
3 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
4 * Qt: Menu->Adjust Volume.
5 * History: Jul 28, 2015 : Initial
8 #include "menuclasses.h"
9 #include "sound_dialog.h"
12 Ui_SndSliderObject::Ui_SndSliderObject(EMU *_emu, Qt::Orientation orientation, QWidget *parent, int num)
13 : QSlider(orientation, parent)
17 parent_widget = parent;
20 Ui_SndSliderObject::~Ui_SndSliderObject()
24 void Ui_SndSliderObject::setValue(int level)
26 if(bind_num < 0) return;
28 if(level < -32768) level = -32678;
29 if(level > 32768) level = 32768;
31 config.general_sound_level = level;
32 emit sig_emu_update_config();
33 QSlider::setValue(level);
38 void Ui_SndSliderObject::setLevelValue(int level)
43 #ifdef USE_SOUND_VOLUME
45 if(level < -60) level = -60;
46 if(level > 3) level = 3;
47 if(bind_num <= USE_SOUND_VOLUME) {
48 emit sig_emu_update_volume_level(bind_num - 1, level);
52 QSlider::setValue(level);
55 void Ui_SndSliderObject::setBalanceValue(int level)
60 #ifdef USE_SOUND_VOLUME
62 if(level < -20) level = -20;
63 if(level > 20) level = 20;
64 if(bind_num <= USE_SOUND_VOLUME) {
65 emit sig_emu_update_volume_balance(bind_num - 1, level);
69 QSlider::setValue(level);
72 Ui_SoundDialog::Ui_SoundDialog(EMU *_emu, QWidget *parent) : QWidget(0)
76 parent_widget = parent;
80 VBoxWindow = new QVBoxLayout;
81 HBoxWindow = new QHBoxLayout;
83 sliderMasterVolume = new Ui_SndSliderObject(_emu, Qt::Vertical, this, 0);
84 boxMasterVolume = new QGroupBox(QApplication::translate("Ui_SoundDialog", "Main", 0));
86 connect(sliderMasterVolume, SIGNAL(sig_emu_update_config()),
87 parent_widget, SLOT(do_emu_update_config()));
89 sliderMasterVolume->setMinimum(-32768);
90 sliderMasterVolume->setMaximum(32768);
91 sliderMasterVolume->setSingleStep(256);
92 sliderMasterVolume->setPageStep(4096);
93 sliderMasterVolume->setValue(config.general_sound_level);
94 sliderMasterVolume->connect(sliderMasterVolume, SIGNAL(valueChanged(int)),
95 sliderMasterVolume, SLOT(setValue(int)));
97 HBoxMasterVolume = new QHBoxLayout;
98 HBoxMasterVolume->addWidget(sliderMasterVolume);
99 boxMasterVolume->setLayout(HBoxMasterVolume);
101 HBoxWindow->addWidget(boxMasterVolume);
102 #ifdef USE_SOUND_VOLUME
106 for(ii = 0; ii < USE_SOUND_VOLUME; ii++) {
107 QString lbl = QApplication::translate("Ui_SoundDialog", sound_device_caption[ii], 0);
109 //n_s.setNum(ii + 1);
112 sliderDeviceVolume[ij] = new Ui_SndSliderObject(_emu, Qt::Vertical, this, ii + 1);
113 sliderDeviceVolume[ij]->setMinimum(-60);
114 sliderDeviceVolume[ij]->setMaximum(3);
115 sliderDeviceVolume[ij]->setSingleStep(1);
116 sliderDeviceVolume[ij]->setPageStep(4);
118 sliderDeviceVolume[ij]->setValue((config.sound_volume_l[ii] + config.sound_volume_r[ii]) / 2);
119 sliderDeviceVolume[ij]->connect(sliderDeviceVolume[ij], SIGNAL(valueChanged(int)),
120 sliderDeviceVolume[ij], SLOT(setLevelValue(int)));
121 connect(sliderDeviceVolume[ij], SIGNAL(sig_emu_update_volume_level(int, int)),
122 parent_widget, SLOT(do_emu_update_volume_level(int, int)));
124 if(!sound_device_monophonic[ii]) {
125 sliderDeviceVolume[ij + 1] = new Ui_SndSliderObject(_emu, Qt::Vertical, this, ii + 1);
126 sliderDeviceVolume[ij + 1]->setMinimum(-20);
127 sliderDeviceVolume[ij + 1]->setMaximum(20);
128 sliderDeviceVolume[ij + 1]->setSingleStep(1);
129 sliderDeviceVolume[ij + 1]->setPageStep(4);
131 sliderDeviceVolume[ij + 1]->setValue((config.sound_volume_r[ii] - config.sound_volume_l[ii]) / 2);
132 sliderDeviceVolume[ij + 1]->connect(sliderDeviceVolume[ij + 1], SIGNAL(valueChanged(int)),
133 sliderDeviceVolume[ij + 1], SLOT(setBalanceValue(int)));
134 connect(sliderDeviceVolume[ij + 1], SIGNAL(sig_emu_update_volume_balance(int, int)),
135 parent_widget, SLOT(do_emu_update_volume_balance(int, int)));
137 boxDeviceVolume[ii] = new QGroupBox(lbl);
138 HBoxDeviceVolume[ii] = new QHBoxLayout;
139 HBoxDeviceVolume[ii]->addWidget(sliderDeviceVolume[ij]);
140 if(!sound_device_monophonic[ii]) {
141 HBoxDeviceVolume[ii]->addWidget(sliderDeviceVolume[ij + 1]);
143 boxDeviceVolume[ii]->setLayout(HBoxDeviceVolume[ii]);
144 HBoxWindow->addWidget(boxDeviceVolume[ii]);
149 this->setLayout(HBoxWindow);
152 Ui_SoundDialog::~Ui_SoundDialog()
156 void Ui_SoundDialog::do_emu_update_config()
160 p_emu->update_config();
165 void Ui_SoundDialog::setDeviceLabel(int num, QString s)
169 boxMasterVolume->setTitle(s);
174 void Ui_SoundDialog::setSliderVisible(int num, bool visible)