26 #include <QPushButton> 27 #include <QRadioButton> 34 #include <KHelpClient> 35 #include <KLocalizedString> 44 unsigned int rate,
unsigned int bits,
unsigned int tracks,
46 :QDialog(parent), Ui::NewSigDlg(), m_timer(this), m_recursive(false)
52 edSamples->setRange(0, INT_MAX);
53 edSamples->setSingleStep(1);
57 connect(rbTime, SIGNAL(toggled(
bool)),
61 connect(cbSampleRate, SIGNAL(editTextChanged(QString)),
63 connect(sbChannels, SIGNAL(valueChanged(
int)),
65 connect(sbResolution, SIGNAL(valueChanged(
int)),
69 connect(sbSeconds, SIGNAL(valueChanged(
int)),
71 connect(sbMinutes, SIGNAL(valueChanged(
int)),
73 connect(sbHours, SIGNAL(valueChanged(
int)),
77 connect(slideLength,SIGNAL(valueChanged(
int)),
81 connect(edSamples, SIGNAL(valueChanged(
int)),
85 connect(buttonBox->button(QDialogButtonBox::Help), SIGNAL(clicked()),
89 setMaximumHeight(sizeHint().height());
90 setMaximumWidth(sizeHint().width());
93 cbSampleRate->setEditText(QString::number(rate));
94 sbResolution->setValue(bits);
95 sbChannels->setValue(tracks);
97 rbSamples->setChecked(
false);
98 rbTime->setChecked(
true);
100 edSamples->setEnabled(
false);
101 sbHours->setEnabled(
true);
102 sbMinutes->setEnabled(
true);
103 sbSeconds->setEnabled(
true);
106 rbTime->setChecked(
false);
107 rbSamples->setChecked(
true);
109 edSamples->setEnabled(
true);
110 sbHours->setEnabled(
false);
111 sbMinutes->setEnabled(
false);
112 sbSeconds->setEnabled(
false);
119 setFixedHeight(sizeHint().height());
120 setFixedWidth(sizeHint().width());
123 buttonBox->button(QDialogButtonBox::Ok)->setFocus();
136 double r = cbSampleRate->currentText().toDouble(&ok);
144 static int last_samples = -1;
145 if (edSamples->value() != last_samples) {
146 last_samples = edSamples->value();
154 return sbChannels->value();
160 int res = sbResolution->value();
161 if (res < 8) res = 8;
168 return rbTime->isChecked();
183 return (max_file_size /
tracks() / bytes_per_sample);
189 if (rbTime->isChecked()) {
208 if (!rbTime->isChecked())
return;
213 int seconds = sbSeconds->value();
214 int minutes = sbMinutes->value();
215 int hours = sbHours->value();
216 if ((seconds < 0) && ((minutes > 0) || (hours > 0)) ) {
217 sbSeconds->setValue(59);
218 sbMinutes->stepDown();
220 }
else if (seconds < 0) {
221 sbSeconds->setValue(0);
222 }
else if (seconds > 59) {
223 sbSeconds->setValue(0);
228 if ((minutes < 0) && (hours > 0)) {
229 sbMinutes->setValue(59);
232 }
else if (minutes < 0) {
233 sbMinutes->setValue(0);
234 }
else if (minutes > 59) {
235 sbMinutes->setValue(0);
239 seconds = sbSeconds->value();
240 minutes = sbMinutes->value();
241 hours = sbHours->value();
242 minutes += 60 * hours;
243 seconds += 60 * minutes;
248 static_cast<double>(seconds) *
rate()));
250 if (samples > max_samples) {
252 samples = max_samples;
258 slideLength->setValue(
Kwave::toInt(100.0 * samples / max_samples));
260 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(samples > 0.0);
269 if (!rbSamples->isChecked())
return;
275 if (samples > max_samples) {
276 samples = max_samples;
282 slideLength->setValue(
Kwave::toInt(100.0 * samples / max_samples));
284 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(samples > 0.0);
300 lblTracksVerbose->setText(i18n(
"(Mono)"));
303 lblTracksVerbose->setText(i18n(
"(Stereo)"));
306 lblTracksVerbose->setText(i18n(
"(Quadro)"));
309 lblTracksVerbose->setText(
_(
""));
318 double samples =
static_cast<double>(edSamples->value());
319 double mbytes = samples *
static_cast<double>(
tracks()) *
325 if (mbytes >= 10.0) {
326 str_bytes.sprintf(
"%0.1f", mbytes);
328 str_bytes.sprintf(
"%0.3f", mbytes);
331 lblFileSize->setText(i18n(
"(Resulting file size: %1 MB)", str_bytes));
338 if (
rate() <= 0)
return;
342 static_cast<double>(percent) / 100.0);
348 buttonBox->button(QDialogButtonBox::Ok)->setEnabled(samples > 0);
357 if (rate <= 0.0)
return;
363 int hours = total_sec / (60*60);
364 int minutes = (total_sec / 60) % 60;
365 int seconds = total_sec % 60;
367 sbHours->setValue(hours);
368 sbMinutes->setValue(minutes);
369 sbSeconds->setValue(seconds);
375 KHelpClient::invokeHelp(
_(
"newsignal"));
unsigned int bitsPerSample()
sample_index_t maxSamples()
void checkTimeAndLengthInfo(int)
void checkNewSampleEdit()
NewSignalDialog(QWidget *parent, sample_index_t samples, unsigned int rate, unsigned int bits, unsigned int tracks, bool by_time)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
void setHMS(sample_index_t &samples)
void setLengthPercentage(int percent)
void sampleRateChanged(const QString &)