Warning, file /multimedia/k3b/plugins/encoder/lame/k3blameencoderconfigwidget.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 0003 SPDX-FileCopyrightText: 2003-2009 Sebastian Trueg <trueg@k3b.org> 0004 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "k3blameencoderconfigwidget.h" 0010 #include "k3blameencoderdefaults.h" 0011 #include "k3blamemanualsettingsdialog.h" 0012 #include "k3blametyes.h" 0013 0014 #include <KAboutData> 0015 #include <KConfig> 0016 #include <KConfigGroup> 0017 #include <KSharedConfig> 0018 0019 #include <QDebug> 0020 #include <QFile> 0021 #include <QCheckBox> 0022 #include <QLayout> 0023 #include <QLabel> 0024 #include <QPushButton> 0025 #include <QRadioButton> 0026 #include <QSlider> 0027 0028 namespace { 0029 0030 int mode2Index( const QString& mode ) 0031 { 0032 if( mode == "stereo" ) 0033 return 0; 0034 else if( mode == "joint" ) 0035 return 1; 0036 else // mono 0037 return 2; 0038 } 0039 0040 } // namespace 0041 0042 0043 K3B_EXPORT_PLUGIN_CONFIG_WIDGET( kcm_k3blameencoder, K3bLameEncoderSettingsWidget ) 0044 0045 0046 K3bLameEncoderSettingsWidget::K3bLameEncoderSettingsWidget( QObject* parent, const KPluginMetaData& metaData, const QVariantList& args ) 0047 : K3b::PluginConfigWidget( parent, metaData, args ) 0048 { 0049 setupUi( widget() ); 0050 0051 m_manualSettingsDialog = new K3bLameManualSettingsDialog( widget() ); 0052 for( int i = 0; s_lame_bitrates[i]; ++i ) 0053 m_manualSettingsDialog->m_comboMaximumBitrate->addItem( i18n("%1 kbps" , s_lame_bitrates[i]) ); 0054 0055 for( int i = 0; s_lame_bitrates[i]; ++i ) 0056 m_manualSettingsDialog->m_comboMinimumBitrate->addItem( i18n("%1 kbps" , s_lame_bitrates[i]) ); 0057 0058 for( int i = 0; s_lame_bitrates[i]; ++i ) 0059 m_manualSettingsDialog->m_comboConstantBitrate->addItem( i18n("%1 kbps" , s_lame_bitrates[i]) ); 0060 0061 0062 // TODO: add whatsthis help for the quality level. 0063 // QString qualityLevelWhatsThis = i18n("<p>"); 0064 0065 connect( m_buttonManualSettings, SIGNAL(clicked()), 0066 this, SLOT(slotShowManualSettings()) ); 0067 connect( m_sliderQuality, SIGNAL(valueChanged(int)), 0068 this, SLOT(slotQualityLevelChanged(int)) ); 0069 0070 updateManualSettingsLabel(); 0071 slotQualityLevelChanged( 5 ); 0072 0073 connect( m_radioQualityLevel, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0074 connect( m_sliderQuality, SIGNAL(valueChanged(int)), this, SLOT(changed()) ); 0075 connect( m_radioManual, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0076 connect( m_spinEncoderQuality, SIGNAL(valueChanged(int)), this, SLOT(changed()) ); 0077 connect( m_checkCopyright, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0078 connect( m_checkOriginal, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0079 connect( m_checkISO, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0080 connect( m_checkError, SIGNAL(toggled(bool)), this, SLOT(changed()) ); 0081 } 0082 0083 0084 K3bLameEncoderSettingsWidget::~K3bLameEncoderSettingsWidget() 0085 { 0086 } 0087 0088 0089 void K3bLameEncoderSettingsWidget::slotShowManualSettings() 0090 { 0091 // save current settings for proper cancellation 0092 bool constant = m_manualSettingsDialog->m_radioConstantBitrate->isChecked(); 0093 int constBitrate = m_manualSettingsDialog->m_comboConstantBitrate->currentIndex(); 0094 int max = m_manualSettingsDialog->m_comboMaximumBitrate->currentIndex(); 0095 int min = m_manualSettingsDialog->m_comboMinimumBitrate->currentIndex(); 0096 int av = m_manualSettingsDialog->m_spinAverageBitrate->value(); 0097 int mode = m_manualSettingsDialog->m_comboMode->currentIndex(); 0098 0099 if( m_manualSettingsDialog->exec() == QDialog::Rejected ) { 0100 m_manualSettingsDialog->m_radioConstantBitrate->setChecked( constant ); 0101 m_manualSettingsDialog->m_comboConstantBitrate->setCurrentIndex( constBitrate ); 0102 m_manualSettingsDialog->m_comboMaximumBitrate->setCurrentIndex( max ); 0103 m_manualSettingsDialog->m_comboMinimumBitrate->setCurrentIndex( min ); 0104 m_manualSettingsDialog->m_spinAverageBitrate->setValue( av ); 0105 m_manualSettingsDialog->m_comboMode->setCurrentIndex( mode ); 0106 } 0107 else 0108 updateManualSettingsLabel(); 0109 0110 markAsChanged(); 0111 } 0112 0113 0114 void K3bLameEncoderSettingsWidget::updateManualSettingsLabel() 0115 { 0116 if( m_manualSettingsDialog->m_radioConstantBitrate->isChecked() ) 0117 m_labelManualSettings->setText( i18n("Constant Bitrate: %1 kbps (%2)", 0118 s_lame_bitrates[m_manualSettingsDialog->m_comboConstantBitrate->currentIndex()], 0119 s_lame_mode_strings[m_manualSettingsDialog->m_comboMode->currentIndex()].toString()) ); 0120 else 0121 m_labelManualSettings->setText( i18n("Variable Bitrate (%1)", 0122 s_lame_mode_strings[m_manualSettingsDialog->m_comboMode->currentIndex()].toString()) ); 0123 } 0124 0125 0126 void K3bLameEncoderSettingsWidget::slotQualityLevelChanged( int val ) 0127 { 0128 m_labelQualityLevel->setText( s_lame_preset_strings[val].toString() ); 0129 } 0130 0131 0132 void K3bLameEncoderSettingsWidget::load() 0133 { 0134 qDebug(); 0135 0136 KSharedConfig::Ptr c = KSharedConfig::openConfig(); 0137 KConfigGroup grp(c, QStringLiteral("K3bLameEncoderPlugin") ); 0138 0139 QString mode = grp.readEntry( "Mode", DEFAULT_MODE ); 0140 m_manualSettingsDialog->m_comboMode->setCurrentIndex( mode2Index( mode ) ); 0141 0142 bool manual = grp.readEntry( "Manual Bitrate Settings", DEFAULT_MANUAL_BITRATE ); 0143 if( manual ) 0144 m_radioManual->setChecked(true); 0145 else 0146 m_radioQualityLevel->setChecked(true); 0147 0148 if(grp.readEntry( "VBR", DEFAULT_VBR ) ) 0149 m_manualSettingsDialog->m_radioVariableBitrate->setChecked( true ); 0150 else 0151 m_manualSettingsDialog->m_radioConstantBitrate->setChecked( true ); 0152 0153 m_manualSettingsDialog->m_comboConstantBitrate->setCurrentText( i18n("%1 kbps",grp.readEntry( "Constant Bitrate", DEFAULT_CONSTANT_BITRATE )) ); 0154 m_manualSettingsDialog->m_comboMaximumBitrate->setCurrentText( i18n("%1 kbps",grp.readEntry( "Maximum Bitrate", DEFAULT_MAXIMUM_BITRATE )) ); 0155 m_manualSettingsDialog->m_comboMinimumBitrate->setCurrentText( i18n("%1 kbps",grp.readEntry( "Minimum Bitrate", DEFAULT_MINIMUM_BITRATE )) ); 0156 m_manualSettingsDialog->m_spinAverageBitrate->setValue( grp.readEntry( "Average Bitrate", DEFAULT_AVERAGE_BITRATE) ); 0157 0158 m_manualSettingsDialog->m_checkBitrateMaximum->setChecked( grp.readEntry( "Use Maximum Bitrate", DEFAULT_USE_MAXIMUM_BITRATE ) ); 0159 m_manualSettingsDialog->m_checkBitrateMinimum->setChecked( grp.readEntry( "Use Minimum Bitrate", DEFAULT_USE_MINIMUM_BITRATE ) ); 0160 m_manualSettingsDialog->m_checkBitrateAverage->setChecked( grp.readEntry( "Use Average Bitrate", DEFAULT_USE_AVERAGE_BITRATE ) ); 0161 0162 m_sliderQuality->setValue( grp.readEntry( "Quality Level", DEFAULT_QUALITY_LEVEL ) ); 0163 0164 m_checkCopyright->setChecked( grp.readEntry( "Copyright", DEFAULT_COPYRIGHT ) ); 0165 m_checkOriginal->setChecked( grp.readEntry( "Original", DEFAULT_ORIGINAL ) ); 0166 m_checkISO->setChecked( grp.readEntry( "ISO compliance", DEFAULT_ISO_COMPLIANCE ) ); 0167 m_checkError->setChecked( grp.readEntry( "Error Protection", DEFAULT_ERROR_PROTECTION ) ); 0168 0169 // default to 2 which is the same as the -h lame option 0170 m_spinEncoderQuality->setValue( grp.readEntry( "Encoder Quality", DEFAULT_ENCODER_QUALITY ) ); 0171 0172 updateManualSettingsLabel(); 0173 } 0174 0175 0176 void K3bLameEncoderSettingsWidget::save() 0177 { 0178 qDebug(); 0179 0180 KSharedConfig::Ptr c = KSharedConfig::openConfig(); 0181 KConfigGroup grp(c, QStringLiteral("K3bLameEncoderPlugin") ); 0182 0183 QString mode; 0184 switch( m_manualSettingsDialog->m_comboMode->currentIndex() ) { 0185 case 0: 0186 mode = "stereo"; 0187 break; 0188 case 1: 0189 mode = "joint"; 0190 break; 0191 case 2: 0192 mode = "mono"; 0193 break; 0194 } 0195 grp.writeEntry( "Mode", mode ); 0196 0197 grp.writeEntry( "Manual Bitrate Settings", m_radioManual->isChecked() ); 0198 0199 grp.writeEntry( "VBR", !m_manualSettingsDialog->m_radioConstantBitrate->isChecked() ); 0200 grp.writeEntry( "Constant Bitrate", m_manualSettingsDialog->m_comboConstantBitrate->currentText().left(3).toInt() ); 0201 grp.writeEntry( "Maximum Bitrate", m_manualSettingsDialog->m_comboMaximumBitrate->currentText().left(3).toInt() ); 0202 grp.writeEntry( "Minimum Bitrate", m_manualSettingsDialog->m_comboMinimumBitrate->currentText().left(3).toInt() ); 0203 grp.writeEntry( "Average Bitrate", m_manualSettingsDialog->m_spinAverageBitrate->value() ); 0204 0205 grp.writeEntry( "Use Maximum Bitrate", m_manualSettingsDialog->m_checkBitrateMaximum->isChecked() ); 0206 grp.writeEntry( "Use Minimum Bitrate", m_manualSettingsDialog->m_checkBitrateMinimum->isChecked() ); 0207 grp.writeEntry( "Use Average Bitrate", m_manualSettingsDialog->m_checkBitrateAverage->isChecked() ); 0208 0209 grp.writeEntry( "Quality Level", m_sliderQuality->value() ); 0210 0211 grp.writeEntry( "Copyright", m_checkCopyright->isChecked() ); 0212 grp.writeEntry( "Original", m_checkOriginal->isChecked() ); 0213 grp.writeEntry( "ISO compliance", m_checkISO->isChecked() ); 0214 grp.writeEntry( "Error Protection", m_checkError->isChecked() ); 0215 0216 // default to 2 which is the same as the -h lame option 0217 grp.writeEntry( "Encoder Quality", m_spinEncoderQuality->value() ); 0218 } 0219 0220 0221 void K3bLameEncoderSettingsWidget::defaults() 0222 { 0223 qDebug(); 0224 0225 m_manualSettingsDialog->m_comboMode->setCurrentIndex( mode2Index( DEFAULT_MODE ) ); 0226 0227 if( DEFAULT_MANUAL_BITRATE ) 0228 m_radioManual->setChecked(true); 0229 else 0230 m_radioQualityLevel->setChecked(true); 0231 0232 if( DEFAULT_VBR ) 0233 m_manualSettingsDialog->m_radioVariableBitrate->setChecked( true ); 0234 else 0235 m_manualSettingsDialog->m_radioConstantBitrate->setChecked( true ); 0236 0237 m_manualSettingsDialog->m_comboConstantBitrate->setCurrentText( i18n("%1 kbps", DEFAULT_CONSTANT_BITRATE ) ); 0238 m_manualSettingsDialog->m_comboMaximumBitrate->setCurrentText( i18n("%1 kbps", DEFAULT_MAXIMUM_BITRATE ) ); 0239 m_manualSettingsDialog->m_comboMinimumBitrate->setCurrentText( i18n("%1 kbps", DEFAULT_MINIMUM_BITRATE ) ); 0240 m_manualSettingsDialog->m_spinAverageBitrate->setValue( DEFAULT_AVERAGE_BITRATE ); 0241 0242 m_manualSettingsDialog->m_checkBitrateMaximum->setChecked( DEFAULT_USE_MAXIMUM_BITRATE ); 0243 m_manualSettingsDialog->m_checkBitrateMinimum->setChecked( DEFAULT_USE_MINIMUM_BITRATE ); 0244 m_manualSettingsDialog->m_checkBitrateAverage->setChecked( DEFAULT_USE_AVERAGE_BITRATE ); 0245 0246 m_sliderQuality->setValue( DEFAULT_QUALITY_LEVEL ); 0247 0248 m_checkCopyright->setChecked( DEFAULT_COPYRIGHT ); 0249 m_checkOriginal->setChecked( DEFAULT_ORIGINAL ); 0250 m_checkISO->setChecked( DEFAULT_ISO_COMPLIANCE ); 0251 m_checkError->setChecked( DEFAULT_ERROR_PROTECTION ); 0252 0253 // default to 2 which is the same as the -h lame option 0254 m_spinEncoderQuality->setValue( DEFAULT_ENCODER_QUALITY ); 0255 0256 updateManualSettingsLabel(); 0257 setNeedsSave( true ); 0258 } 0259 0260 #include "k3blameencoderconfigwidget.moc" 0261 0262 #include "moc_k3blameencoderconfigwidget.cpp"