1
2 #include "codecoptimizations.h"
3
4 #include <KLocale>
5 #include <KIcon>
6 #include <QLayout>
7 #include <QLabel>
8 #include <QScrollArea>
9 #include <QButtonGroup>
10 #include <QRadioButton>
11
12
CodecOptimizations(const QList<Optimization> & _optimizationList,QWidget * parent,Qt::WFlags f)13 CodecOptimizations::CodecOptimizations( const QList<Optimization>& _optimizationList, QWidget* parent, Qt::WFlags f )
14 : KDialog( parent, f ),
15 optimizationList( _optimizationList )
16 {
17 setCaption( i18n("Solutions for backend problems") );
18 setWindowIcon( KIcon("help-about") );
19 setButtons( KDialog::Ok | KDialog::Cancel );
20 setButtonFocus( KDialog::Cancel );
21 connect( this, SIGNAL(okClicked()), this, SLOT(okClicked()) );
22
23 QWidget *widget = new QWidget( this );
24 setMainWidget( widget );
25 QVBoxLayout *box = new QVBoxLayout( widget );
26
27 QLabel *messageLabel = new QLabel( i18n("You have installed or removed backends and your soundKonverter settings can be optimized."), this );
28 box->addWidget( messageLabel );
29
30 QFrame *frame = new QFrame( widget );
31 frame->setFrameShape( QFrame::StyledPanel );
32 frame->setFrameShadow( QFrame::Sunken );
33 box->addWidget( frame );
34
35 QGridLayout *grid = new QGridLayout( frame );
36 grid->setColumnStretch( 1, 0 );
37 grid->setColumnStretch( 2, 0 );
38
39 for( int i=0; i<optimizationList.count(); i++ )
40 {
41 const QString codecName = optimizationList.at(i).codecName;
42 const Optimization::Mode mode = optimizationList.at(i).mode;
43 const QString currentBackend = optimizationList.at(i).currentBackend;
44 const QString betterBackend = optimizationList.at(i).betterBackend;
45 const Optimization::Solution solution = optimizationList.at(i).solution;
46
47 QLabel *solutionLabel = new QLabel( frame );
48 grid->addWidget( solutionLabel, i, 0 );
49 if( mode == Optimization::Encode )
50 {
51 solutionLabel->setText( i18n( "For encoding %1 files the backend '%2' can be replaced with '%3'.", codecName, currentBackend, betterBackend ) );
52 }
53 else if( mode == Optimization::Decode && codecName == "audio cd" )
54 {
55 solutionLabel->setText( i18n( "For ripping audio CDs the backend '%1' can be replaced with '%2'.", currentBackend, betterBackend ) );
56 }
57 else if( mode == Optimization::Decode )
58 {
59 solutionLabel->setText( i18n( "For decoding %1 files the backend '%2' can be replaced with '%3'.", codecName, currentBackend, betterBackend ) );
60 }
61 else if( mode == Optimization::ReplayGain )
62 {
63 solutionLabel->setText( i18n( "For applying Replay Gain to %1 files the backend '%2' can be replaced with '%3'.", codecName, currentBackend, betterBackend ) );
64 }
65
66 QRadioButton *solutionIgnore = new QRadioButton( i18n("Ignore"), frame );
67 if( solution == Optimization::Ignore )
68 solutionIgnore->setChecked( true );
69 grid->addWidget( solutionIgnore, i, 1 );
70
71 QRadioButton *solutionFix = new QRadioButton( i18n("Fix"), frame );
72 solutionFixButtons.append( solutionFix );
73 if( solution != Optimization::Ignore )
74 solutionFix->setChecked( true );
75 grid->addWidget( solutionFix, i, 2 );
76
77 QButtonGroup *solutionButtonGroup = new QButtonGroup( frame );
78 solutionButtonGroup->addButton( solutionIgnore );
79 solutionButtonGroup->addButton( solutionFix );
80 }
81 }
82
~CodecOptimizations()83 CodecOptimizations::~CodecOptimizations()
84 {}
85
okClicked()86 void CodecOptimizations::okClicked()
87 {
88 for( int i=0; i<optimizationList.count(); i++ )
89 {
90 if( solutionFixButtons.at(i) && solutionFixButtons.at(i)->isChecked() )
91 optimizationList[i].solution = Optimization::Fix;
92 else
93 optimizationList[i].solution = Optimization::Ignore;
94 }
95
96 emit solutions( optimizationList );
97 }
98
99