File indexing completed on 2024-04-21 04:48:17
0001 /* AUDEX CDDA EXTRACTOR 0002 * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles 0003 * <https://userbase.kde.org/Audex> 0004 * 0005 * SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #include "oggencwidget.h" 0009 0010 #include <QDebug> 0011 0012 oggencWidget::oggencWidget(Parameters *parameters, QWidget *parent) 0013 : oggencWidgetUI(parent) 0014 { 0015 Q_UNUSED(parent); 0016 0017 this->parameters = parameters; 0018 if (!parameters) { 0019 qDebug() << "ParameterString is NULL!"; 0020 return; 0021 } 0022 0023 horizontalSlider_quality->setValue(parameters->value(ENCODER_OGGENC_QUALITY_KEY, ENCODER_OGGENC_QUALITY).toInt() * 10); 0024 0025 kdoublenuminput_quality->setValue(parameters->value(ENCODER_OGGENC_QUALITY_KEY, ENCODER_OGGENC_QUALITY).toReal()); 0026 0027 set_bitrate(parameters->value(ENCODER_OGGENC_QUALITY_KEY, ENCODER_OGGENC_QUALITY).toInt()); 0028 0029 enable_min_bitrate(parameters->value(ENCODER_OGGENC_MINBITRATE_KEY).toBool()); 0030 checkBox_minbitrate->setChecked(parameters->value(ENCODER_OGGENC_MINBITRATE_KEY).toBool()); 0031 kintspinbox_minbitrate->setValue(parameters->value(ENCODER_OGGENC_MINBITRATE_VALUE_KEY, ENCODER_OGGENC_MINBITRATE_VALUE).toInt()); 0032 set_minbitrate(parameters->value(ENCODER_OGGENC_MINBITRATE_VALUE_KEY, ENCODER_OGGENC_MINBITRATE_VALUE).toInt()); 0033 enable_max_bitrate(parameters->value(ENCODER_OGGENC_MAXBITRATE_KEY).toBool()); 0034 checkBox_maxbitrate->setChecked(parameters->value(ENCODER_OGGENC_MAXBITRATE_KEY).toBool()); 0035 kintspinbox_maxbitrate->setValue(parameters->value(ENCODER_OGGENC_MAXBITRATE_VALUE_KEY, ENCODER_OGGENC_MAXBITRATE_VALUE).toInt()); 0036 set_maxbitrate(parameters->value(ENCODER_OGGENC_MAXBITRATE_VALUE_KEY, ENCODER_OGGENC_MAXBITRATE_VALUE).toInt()); 0037 qlineedit_suffix->setText(parameters->value(ENCODER_OGGENC_SUFFIX_KEY, ENCODER_OGGENC_SUFFIX).toString()); 0038 0039 connect(horizontalSlider_quality, SIGNAL(valueChanged(int)), this, SLOT(quality_changed_by_slider(int))); 0040 connect(horizontalSlider_quality, SIGNAL(valueChanged(int)), this, SLOT(trigger_changed())); 0041 0042 connect(kdoublenuminput_quality, SIGNAL(valueChanged(double)), this, SLOT(quality_changed_by_spinbox(double))); 0043 connect(kdoublenuminput_quality, SIGNAL(valueChanged(double)), this, SLOT(trigger_changed())); 0044 0045 connect(checkBox_minbitrate, SIGNAL(toggled(bool)), this, SLOT(enable_min_bitrate(bool))); 0046 connect(checkBox_minbitrate, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); 0047 connect(checkBox_maxbitrate, SIGNAL(toggled(bool)), this, SLOT(enable_max_bitrate(bool))); 0048 connect(checkBox_maxbitrate, SIGNAL(toggled(bool)), this, SLOT(trigger_changed())); 0049 0050 connect(kintspinbox_minbitrate, SIGNAL(valueChanged(int)), this, SLOT(trigger_changed())); 0051 connect(kintspinbox_minbitrate, SIGNAL(valueChanged(int)), this, SLOT(set_minbitrate(int))); 0052 connect(kintspinbox_maxbitrate, SIGNAL(valueChanged(int)), this, SLOT(trigger_changed())); 0053 connect(kintspinbox_maxbitrate, SIGNAL(valueChanged(int)), this, SLOT(set_maxbitrate(int))); 0054 0055 connect(qlineedit_suffix, SIGNAL(textEdited(const QString &)), this, SLOT(trigger_changed())); 0056 0057 changed = false; 0058 } 0059 0060 oggencWidget::~oggencWidget() 0061 { 0062 } 0063 0064 bool oggencWidget::save() 0065 { 0066 bool success = true; 0067 0068 parameters->setValue(ENCODER_OGGENC_QUALITY_KEY, kdoublenuminput_quality->value()); 0069 parameters->setValue(ENCODER_OGGENC_MINBITRATE_KEY, checkBox_minbitrate->isChecked()); 0070 parameters->setValue(ENCODER_OGGENC_MINBITRATE_VALUE_KEY, kintspinbox_minbitrate->value()); 0071 parameters->setValue(ENCODER_OGGENC_MAXBITRATE_KEY, checkBox_maxbitrate->isChecked()); 0072 parameters->setValue(ENCODER_OGGENC_MAXBITRATE_VALUE_KEY, kintspinbox_maxbitrate->value()); 0073 parameters->setValue(ENCODER_OGGENC_SUFFIX_KEY, qlineedit_suffix->text()); 0074 0075 changed = false; 0076 0077 return success; 0078 } 0079 0080 void oggencWidget::quality_changed_by_slider(int quality) 0081 { 0082 auto q = (float)((float)quality / 10.0f); 0083 0084 kdoublenuminput_quality->blockSignals(true); 0085 kdoublenuminput_quality->setValue(q); 0086 kdoublenuminput_quality->blockSignals(false); 0087 0088 set_bitrate(q); 0089 } 0090 0091 void oggencWidget::quality_changed_by_spinbox(double quality) 0092 { 0093 int q = (int)((float)quality * 10.0f); 0094 0095 horizontalSlider_quality->blockSignals(true); 0096 horizontalSlider_quality->setValue(q); 0097 horizontalSlider_quality->blockSignals(false); 0098 0099 set_bitrate(quality); 0100 } 0101 0102 void oggencWidget::set_bitrate(float quality) 0103 { 0104 int q = (int)quality; 0105 0106 switch (q) { 0107 case -1: 0108 lineEdit_kbps->setText("48"); 0109 break; 0110 case 0: 0111 lineEdit_kbps->setText("64"); 0112 break; 0113 case 1: 0114 lineEdit_kbps->setText("80"); 0115 break; 0116 case 2: 0117 lineEdit_kbps->setText("96"); 0118 break; 0119 case 3: 0120 lineEdit_kbps->setText("112"); 0121 break; 0122 case 4: 0123 lineEdit_kbps->setText("128"); 0124 break; 0125 case 5: 0126 lineEdit_kbps->setText("160"); 0127 break; 0128 case 6: 0129 lineEdit_kbps->setText("192"); 0130 break; 0131 case 7: 0132 lineEdit_kbps->setText("224"); 0133 break; 0134 case 8: 0135 lineEdit_kbps->setText("256"); 0136 break; 0137 case 9: 0138 lineEdit_kbps->setText("320"); 0139 break; 0140 case 10: 0141 lineEdit_kbps->setText("500"); 0142 break; 0143 } 0144 } 0145 0146 void oggencWidget::enable_min_bitrate(bool enable) 0147 { 0148 kintspinbox_minbitrate->setEnabled(enable); 0149 label_minbitrate_kbps->setEnabled(enable); 0150 } 0151 0152 void oggencWidget::set_minbitrate(int bitrate) 0153 { 0154 kintspinbox_maxbitrate->blockSignals(true); 0155 kintspinbox_maxbitrate->setMinimum(bitrate); 0156 kintspinbox_maxbitrate->blockSignals(false); 0157 } 0158 0159 void oggencWidget::enable_max_bitrate(bool enable) 0160 { 0161 kintspinbox_maxbitrate->setEnabled(enable); 0162 label_maxbitrate_kbps->setEnabled(enable); 0163 } 0164 0165 void oggencWidget::set_maxbitrate(int bitrate) 0166 { 0167 kintspinbox_minbitrate->blockSignals(true); 0168 kintspinbox_minbitrate->setMaximum(bitrate); 0169 kintspinbox_minbitrate->blockSignals(false); 0170 } 0171 0172 void oggencWidget::trigger_changed() 0173 { 0174 changed = (kdoublenuminput_quality->value() != parameters->value(ENCODER_OGGENC_QUALITY_KEY, ENCODER_OGGENC_QUALITY).toReal() 0175 || kintspinbox_minbitrate->value() != parameters->value(ENCODER_OGGENC_MINBITRATE_VALUE_KEY, ENCODER_OGGENC_MINBITRATE_VALUE).toInt() 0176 || checkBox_minbitrate->isChecked() != parameters->value(ENCODER_OGGENC_MINBITRATE_KEY).toBool() 0177 || kintspinbox_maxbitrate->value() != parameters->value(ENCODER_OGGENC_MAXBITRATE_VALUE_KEY, ENCODER_OGGENC_MAXBITRATE_VALUE).toInt() 0178 || checkBox_maxbitrate->isChecked() != parameters->value(ENCODER_OGGENC_MAXBITRATE_KEY).toBool() 0179 || qlineedit_suffix->text() != parameters->value(ENCODER_OGGENC_SUFFIX_KEY, ENCODER_OGGENC_SUFFIX).toString()); 0180 0181 Q_EMIT triggerChanged(); 0182 }