Warning, file /multimedia/k3b/plugins/encoder/ogg/k3boggvorbisencoderconfigwidget.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 "k3boggvorbisencoderconfigwidget.h"
0010 #include "k3boggvorbisencoderdefaults.h"
0011 #include "k3bcore.h"
0012 #include "k3bplugin_i18n.h"
0013 
0014 #include <KConfig>
0015 #include <KConfigGroup>
0016 #include <KSharedConfig>
0017 
0018 #include <QCheckBox>
0019 #include <QDebug>
0020 #include <QHBoxLayout>
0021 #include <QLabel>
0022 #include <QLayout>
0023 #include <QRadioButton>
0024 #include <QSlider>
0025 #include <QToolTip>
0026 
0027 
0028 
0029 K3B_EXPORT_PLUGIN_CONFIG_WIDGET( kcm_k3bexternalencoder, K3bOggVorbisEncoderSettingsWidget )
0030 
0031 namespace {
0032 
0033     // quality levels -1 to 10 map to 0 to 11
0034     const int s_rough_average_quality_level_bitrates[] = {
0035         45,
0036         64,
0037         80,
0038         96,
0039         112,
0040         128,
0041         160,
0042         192,
0043         224,
0044         256,
0045         320,
0046         400
0047     };
0048 
0049 } // namespace
0050 
0051 K3bOggVorbisEncoderSettingsWidget::K3bOggVorbisEncoderSettingsWidget(QObject *parent, const KPluginMetaData& metaData, const QVariantList& args )
0052     : K3b::PluginConfigWidget( parent, metaData, args )
0053 {
0054     w = new base_K3bOggVorbisEncoderSettingsWidget( widget() );
0055 
0056     QString ttQuality = i18n("Controls the quality of the encoded files.");
0057     QString wsQuality = i18n("<p>Vorbis' audio quality is not best measured in kilobits per second, "
0058                              "but on a scale from -1 to 10 called <em>quality</em>."
0059                              "<p>For now, quality -1 is roughly equivalent to 45kbps average, "
0060                              "5 is roughly 160kbps, and 10 gives about 400kbps. "
0061                              "Most people seeking very-near-CD-quality audio encode at a quality of 5 or, "
0062                              "for lossless stereo coupling, 6. The quality 3 gives, at "
0063                              "approximately 110kbps a smaller filesize and significantly better fidelity "
0064                              "than .mp3 compression at 128kbps."
0065                              "<p><em>This explanation is based on the one from the www.vorbis.com FAQ.</em>");
0066 
0067     w->m_radioQualityLevel->setToolTip( ttQuality );
0068     w->m_labelQualityLevel->setToolTip( ttQuality );
0069     w->m_slideQualityLevel->setToolTip( ttQuality );
0070     w->m_radioQualityLevel->setWhatsThis( wsQuality );
0071     w->m_labelQualityLevel->setWhatsThis( wsQuality );
0072     w->m_slideQualityLevel->setWhatsThis( wsQuality );
0073 
0074 
0075     QHBoxLayout* lay = new QHBoxLayout( widget() );
0076     lay->setContentsMargins( 0, 0, 0, 0 );
0077 
0078     lay->addWidget( w );
0079 
0080     connect( w->m_slideQualityLevel, SIGNAL(valueChanged(int)),
0081              this, SLOT(slotQualityLevelChanged(int)) );
0082 
0083     slotQualityLevelChanged( 4 );
0084 
0085     connect( w->m_radioQualityLevel, SIGNAL(toggled(bool)), this, SLOT(changed()) );
0086     connect( w->m_slideQualityLevel, SIGNAL(valueChanged(int)), this, SLOT(changed()) );
0087     connect( w->m_radioManual, SIGNAL(toggled(bool)), this, SLOT(changed()) );
0088     connect( w->m_checkBitrateUpper, SIGNAL(toggled(bool)), this, SLOT(changed()) );
0089     connect( w->m_checkBitrateNominal, SIGNAL(toggled(bool)), this, SLOT(changed()) );
0090     connect( w->m_checkBitrateLower, SIGNAL(toggled(bool)), this, SLOT(changed()) );
0091     connect( w->m_inputBitrateUpper, SIGNAL(valueChanged(int)), this, SLOT(changed()) );
0092     connect( w->m_inputBitrateNominal, SIGNAL(valueChanged(int)), this, SLOT(changed()) );
0093     connect( w->m_inputBitrateLower, SIGNAL(valueChanged(int)), this, SLOT(changed()) );
0094 }
0095 
0096 
0097 K3bOggVorbisEncoderSettingsWidget::~K3bOggVorbisEncoderSettingsWidget()
0098 {
0099 }
0100 
0101 
0102 void K3bOggVorbisEncoderSettingsWidget::slotQualityLevelChanged( int val )
0103 {
0104     w->m_labelQualityLevel->setText( QString::number(val) + ' '
0105                                      + i18n("(targeted VBR of %1)",s_rough_average_quality_level_bitrates[val+1]) );
0106 }
0107 
0108 
0109 void K3bOggVorbisEncoderSettingsWidget::load()
0110 {
0111     KSharedConfig::Ptr c = KSharedConfig::openConfig();
0112 
0113     KConfigGroup grp(c, QStringLiteral("K3bOggVorbisEncoderPlugin") );
0114 
0115     if( grp.readEntry( "manual bitrate", DEFAULT_MANUAL_BITRATE ) )
0116         w->m_radioManual->setChecked(true);
0117     else
0118         w->m_radioQualityLevel->setChecked(true);
0119     w->m_slideQualityLevel->setValue( grp.readEntry( "quality level", DEFAULT_QUALITY_LEVEL ) );
0120     w->m_inputBitrateUpper->setValue( grp.readEntry( "bitrate upper", DEFAULT_BITRATE_UPPER ) );
0121     w->m_checkBitrateUpper->setChecked( grp.readEntry( "bitrate upper", DEFAULT_BITRATE_UPPER ) != -1 );
0122     w->m_inputBitrateNominal->setValue( grp.readEntry( "bitrate nominal", DEFAULT_BITRATE_NOMINAL ) );
0123     w->m_checkBitrateNominal->setChecked( grp.readEntry( "bitrate nominal", DEFAULT_BITRATE_NOMINAL ) != -1 );
0124     w->m_inputBitrateLower->setValue( grp.readEntry( "bitrate lower", DEFAULT_BITRATE_LOWER ) );
0125     w->m_checkBitrateLower->setChecked( grp.readEntry( "bitrate lower", DEFAULT_BITRATE_LOWER ) != -1 );
0126     //  w->m_inputSamplerate->setValue( grp.readEntry( "samplerate", DEFAULT_SAMPLERATE ) );
0127 }
0128 
0129 
0130 void K3bOggVorbisEncoderSettingsWidget::save()
0131 {
0132     KSharedConfig::Ptr c = KSharedConfig::openConfig();
0133 
0134     KConfigGroup grp(c, QStringLiteral("K3bOggVorbisEncoderPlugin") );
0135 
0136     grp.writeEntry( "manual bitrate", w->m_radioManual->isChecked() );
0137     grp.writeEntry( "quality level", w->m_slideQualityLevel->value() );
0138     grp.writeEntry( "bitrate upper", w->m_checkBitrateUpper->isChecked() ? w->m_inputBitrateUpper->value() : -1 );
0139     grp.writeEntry( "bitrate nominal", w->m_checkBitrateNominal->isChecked() ? w->m_inputBitrateNominal->value() : -1 );
0140     grp.writeEntry( "bitrate lower", w->m_checkBitrateLower->isChecked() ? w->m_inputBitrateLower->value() : -1 );
0141     //  c->writeEntry( "samplerate", w->m_inputSamplerate->value() );
0142 }
0143 
0144 
0145 void K3bOggVorbisEncoderSettingsWidget::defaults()
0146 {
0147     if( DEFAULT_MANUAL_BITRATE )
0148         w->m_radioManual->setChecked(true);
0149     else
0150         w->m_radioQualityLevel->setChecked(true);
0151     w->m_slideQualityLevel->setValue( DEFAULT_QUALITY_LEVEL );
0152     w->m_inputBitrateUpper->setValue( DEFAULT_BITRATE_UPPER );
0153     w->m_checkBitrateUpper->setChecked( DEFAULT_BITRATE_UPPER != -1 );
0154     w->m_inputBitrateNominal->setValue( DEFAULT_BITRATE_NOMINAL );
0155     w->m_checkBitrateNominal->setChecked( DEFAULT_BITRATE_NOMINAL != -1 );
0156     w->m_inputBitrateLower->setValue( DEFAULT_BITRATE_LOWER );
0157     w->m_checkBitrateLower->setChecked( DEFAULT_BITRATE_LOWER != -1 );
0158     //  w->m_inputSamplerate->setValue( DEFAULT_SAMPLERATE );
0159     setNeedsSave( true );
0160 }
0161 
0162 #include "k3boggvorbisencoderconfigwidget.moc"
0163 
0164 #include "moc_k3boggvorbisencoderconfigwidget.cpp"