File indexing completed on 2024-04-21 15:38:27
0001 /** 0002 * Copyright (C) 2003 Joonas Koivunen <rzei@mbnet.fi> 0003 * Copyright (C) 2003 Koos Vriezen <koos.vriezen@xs4all.nl> 0004 * 0005 * This library is free software; you can redistribute it and/or 0006 * modify it under the terms of the GNU Library General Public 0007 * License as published by the Free Software Foundation; either 0008 * version 2 of the License, or (at your option) any later version. 0009 * 0010 * This library is distributed in the hope that it will be useful, 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0013 * Library General Public License for more details. 0014 * 0015 * You should have received a copy of the GNU Library General Public License 0016 * along with this library; see the file COPYING.LIB. If not, write to 0017 * the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, 0018 * Boston, MA 02110-1301, USA. 0019 */ 0020 0021 #undef Always 0022 0023 #include <QIcon> 0024 #include <QVBoxLayout> 0025 #include <qlayout.h> 0026 #include <qlabel.h> 0027 #include <qpushbutton.h> 0028 #include <qradiobutton.h> 0029 #include <qcheckbox.h> 0030 #include <qstringlist.h> 0031 #include <qcombobox.h> 0032 #include <qlineedit.h> 0033 #include <qwhatsthis.h> 0034 #include <qtabwidget.h> 0035 #include <qslider.h> 0036 #include <qspinbox.h> 0037 #include <qmap.h> 0038 #include <qtimer.h> 0039 #include <qfont.h> 0040 #include <QAbstractButton> 0041 #include <QButtonGroup> 0042 #include <QGroupBox> 0043 #include <QListWidget> 0044 0045 #include <klocalizedstring.h> 0046 #include <kdebug.h> 0047 #include <kmessagebox.h> 0048 #include <klineedit.h> 0049 #include <kiconloader.h> 0050 #include <kdeversion.h> 0051 #include <kcombobox.h> 0052 #include <kcolorbutton.h> 0053 #include <kurlrequester.h> 0054 #include <kfontdialog.h> 0055 #include <kvbox.h> 0056 #include <KTextWidgets/kpluralhandlingspinbox.h> 0057 #include "pref.h" 0058 #include "kmplayerpartbase.h" 0059 #include "kmplayerprocess.h" 0060 #include "mediaobject.h" 0061 #include "kmplayerconfig.h" 0062 0063 using namespace KMPlayer; 0064 0065 KDE_NO_CDTOR_EXPORT Preferences::Preferences(PartBase * player, Settings * settings) 0066 : KPageDialog (player->view ()) 0067 { 0068 setFaceType (KPageDialog::List); 0069 setWindowTitle(i18n("Preferences")); 0070 setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Apply); 0071 button(QDialogButtonBox::Ok)->setDefault(true); 0072 0073 KVBox *page = new KVBox (this); 0074 KPageWidgetItem *item = addPage (page, i18n ("General Options")); 0075 item->setIcon(QIcon::fromTheme("kmplayer")); 0076 QTabWidget *tab = new QTabWidget (page); 0077 m_GeneralPageGeneral = new PrefGeneralPageGeneral (tab, settings); 0078 tab->addTab (m_GeneralPageGeneral, i18n("General")); 0079 m_GeneralPageLooks = new PrefGeneralPageLooks (tab, settings); 0080 tab->addTab (m_GeneralPageLooks, i18n("Looks")); 0081 m_GeneralPageOutput = new PrefGeneralPageOutput 0082 (tab, settings->audiodrivers, settings->videodrivers); 0083 tab->addTab (m_GeneralPageOutput, i18n("Output")); 0084 entries.insert (i18n("General Options"), tab); 0085 0086 page = new KVBox (this); 0087 m_url_item = addPage (page, i18n ("Source")); 0088 m_url_item->setIcon(QIcon::fromTheme("document-import")); 0089 tab = new QTabWidget (page); 0090 m_SourcePageURL = new PrefSourcePageURL (tab); 0091 tab->addTab (m_SourcePageURL, i18n ("URL")); 0092 entries.insert (i18n("Source"), tab); 0093 0094 page = new KVBox (this); 0095 m_record_item = addPage (page, i18n ("Recording")); 0096 m_record_item->setIcon(QIcon::fromTheme("folder-video")); 0097 tab = new QTabWidget (page); 0098 0099 int recorders_count = 3; 0100 m_MEncoderPage = new PrefMEncoderPage (tab, player); 0101 tab->addTab (m_MEncoderPage, i18n ("MEncoder")); 0102 recorders = m_MEncoderPage; 0103 0104 m_FFMpegPage = new PrefFFMpegPage (tab, player); 0105 tab->addTab (m_FFMpegPage, i18n ("FFMpeg")); 0106 m_MEncoderPage->next = m_FFMpegPage; 0107 0108 m_MPlayerDumpstreamPage = new PrefMPlayerDumpstreamPage (tab, player); 0109 // tab->addTab (m_MPlayerDumpstreamPage, i18n ("MPlayer -dumpstream")); 0110 m_FFMpegPage->next = m_MPlayerDumpstreamPage; 0111 #ifdef KMPLAYER_WITH_XINE 0112 recorders_count = 4; 0113 m_XinePage = new PrefXinePage (tab, player); 0114 // tab->addTab (m_XinePage, i18n ("Xine")); 0115 m_MPlayerDumpstreamPage->next = m_XinePage; 0116 #endif 0117 m_RecordPage = new PrefRecordPage (tab, player, recorders, recorders_count); 0118 tab->insertTab (0, m_RecordPage, i18n ("General")); 0119 tab->setCurrentIndex (0); 0120 entries.insert (i18n("Recording"), tab); 0121 0122 page = new KVBox (this); 0123 item = addPage (page, i18n ("Output Plugins")); 0124 item->setIcon(QIcon::fromTheme("folder-image")); 0125 tab = new QTabWidget (page); 0126 m_OPPagePostproc = new PrefOPPagePostProc (tab); 0127 tab->addTab (m_OPPagePostproc, i18n ("Postprocessing")); 0128 entries.insert (i18n("Postprocessing"), tab); 0129 0130 for (PreferencesPage * p = settings->pagelist; p; p = p->next) 0131 addPrefPage (p); 0132 0133 //connect (this, SIGNAL (defaultClicked ()), SLOT (confirmDefaults ())); 0134 } 0135 0136 KDE_NO_EXPORT void Preferences::setPage (const char * name) { 0137 KPageWidgetItem *item = NULL; 0138 if (!strcmp (name, "RecordPage")) 0139 item = m_record_item; 0140 else if (!strcmp (name, "URLPage")) 0141 item = m_url_item; 0142 if (item) { 0143 setCurrentPage (item); 0144 QWidget* page = findChild<QWidget*>(name); 0145 if (!page) 0146 return; 0147 QWidget * w = page->parentWidget (); 0148 while (w && !qobject_cast <QTabWidget *> (w)) 0149 w = w->parentWidget (); 0150 if (!w) 0151 return; 0152 QTabWidget *t = static_cast <QTabWidget*> (w); 0153 t->setCurrentIndex (t->indexOf(page)); 0154 } 0155 } 0156 0157 KDE_NO_EXPORT void Preferences::addPrefPage (PreferencesPage * page) { 0158 QString item, subitem, icon; 0159 KPageWidgetItem *witem; 0160 QTabWidget *tab; 0161 page->prefLocation (item, icon, subitem); 0162 if (item.isEmpty ()) 0163 return; 0164 QMap<QString, QTabWidget *>::iterator en_it = entries.find (item); 0165 if (en_it == entries.end ()) { 0166 KVBox *page = new KVBox (this); 0167 witem = addPage (page, item); 0168 witem->setIcon(QIcon::fromTheme(icon)); 0169 tab = new QTabWidget (page); 0170 entries.insert (item, tab); 0171 } else 0172 tab = en_it.value (); 0173 QFrame *frame = page->prefPage (tab); 0174 tab->addTab (frame, subitem); 0175 } 0176 0177 KDE_NO_EXPORT void Preferences::removePrefPage(PreferencesPage * page) { 0178 QString item, subitem, icon; 0179 page->prefLocation (item, icon, subitem); 0180 if (item.isEmpty ()) 0181 return; 0182 QMap<QString, QTabWidget *>::iterator en_it = entries.find (item); 0183 if (en_it == entries.end ()) 0184 return; 0185 QTabWidget * tab = en_it.value (); 0186 for (int i = 0; i < tab->count (); i++) 0187 if (tab->tabText (i) == subitem) { 0188 QWidget* w = tab->widget (i); 0189 tab->removeTab (i); 0190 delete w; 0191 break; 0192 } 0193 if (!tab->count ()) { 0194 QWidget * w = tab->parentWidget (); 0195 while (w && !w->inherits ("QFrame")) 0196 w = w->parentWidget (); 0197 delete w; 0198 entries.erase (en_it); 0199 } 0200 } 0201 0202 KDE_NO_CDTOR_EXPORT Preferences::~Preferences() { 0203 } 0204 0205 KDE_NO_CDTOR_EXPORT PrefGeneralPageGeneral::PrefGeneralPageGeneral(QWidget *parent, Settings *) 0206 : QWidget(parent) 0207 { 0208 QGroupBox *windowbox = new QGroupBox(i18n("Window")); 0209 QWidget * bbox = new QWidget (windowbox); 0210 QGridLayout * gridlayout = new QGridLayout (bbox/*, 2, 2*/); 0211 keepSizeRatio = new QCheckBox (i18n ("Keep size ratio"), bbox); 0212 keepSizeRatio->setWhatsThis(i18n("When checked, the movie will keep its aspect ratio\nwhen the window is resized.")); 0213 dockSysTray = new QCheckBox (i18n ("Dock in system tray"), bbox); 0214 dockSysTray->setWhatsThis(i18n ("When checked, an icon for KMPlayer will be added to the system tray.\nWhen clicked, it will hide KMPlayer's main window and remove KMPlayer's task bar button.")); 0215 autoResize = new QCheckBox (i18n ("Auto resize to video sizes"), bbox); 0216 autoResize->setWhatsThis(i18n("When checked, KMPlayer will resize to movie sizes\nwhen video starts.")); 0217 gridlayout->addWidget (keepSizeRatio, 0, 0); 0218 gridlayout->addWidget (dockSysTray, 1, 0); 0219 gridlayout->addWidget (autoResize, 0, 1); 0220 QRadioButton* sizeexit = new QRadioButton(i18n("Remember window size on exit")); 0221 QRadioButton* sizefixed = new QRadioButton (i18n("Always start with fixed size")); 0222 sizesChoice = new QButtonGroup(windowbox); 0223 sizesChoice->addButton(sizeexit, 0); 0224 sizesChoice->addButton(sizefixed, 1); 0225 QVBoxLayout* vbox = new QVBoxLayout; 0226 vbox->addWidget(bbox); 0227 vbox->addWidget(sizeexit); 0228 vbox->addWidget(sizefixed); 0229 windowbox->setLayout(vbox); 0230 0231 QGroupBox *playbox = new QGroupBox(i18n("Playing")); 0232 loop = new QCheckBox (i18n("Loop")); 0233 loop->setWhatsThis(i18n("Makes current movie loop")); 0234 framedrop = new QCheckBox (i18n ("Allow frame drops")); 0235 framedrop->setWhatsThis(i18n ("Allow dropping frames for better audio and video synchronization")); 0236 adjustvolume = new QCheckBox(i18n("Auto set volume on start")); 0237 adjustvolume->setWhatsThis(i18n ("When a new source is selected, the volume will be set according the volume control")); 0238 adjustcolors = new QCheckBox(i18n("Auto set colors on start")); 0239 adjustcolors->setWhatsThis(i18n ("When a movie starts, the colors will be set according the sliders for colors")); 0240 vbox = new QVBoxLayout; 0241 vbox->addWidget(loop); 0242 vbox->addWidget(framedrop); 0243 vbox->addWidget(adjustvolume); 0244 vbox->addWidget(adjustcolors); 0245 playbox->setLayout(vbox); 0246 0247 QGroupBox* controlbox = new QGroupBox(i18n("Control Panel")); 0248 showConfigButton = new QCheckBox(i18n("Show config button")); 0249 showConfigButton->setWhatsThis(i18n ("Add a button that will popup a config menu")); 0250 showPlaylistButton = new QCheckBox(i18n("Show playlist button")); 0251 showPlaylistButton->setWhatsThis(i18n ("Add a playlist button to the control buttons")); 0252 showRecordButton = new QCheckBox(i18n("Show record button")); 0253 showRecordButton->setWhatsThis(i18n ("Add a record button to the control buttons")); 0254 showBroadcastButton = new QCheckBox (i18n ("Show broadcast button")); 0255 showBroadcastButton->setWhatsThis(i18n ("Add a broadcast button to the control buttons")); 0256 gridlayout = new QGridLayout; 0257 gridlayout->addWidget (showConfigButton, 0, 0); 0258 gridlayout->addWidget (showPlaylistButton, 0, 1); 0259 gridlayout->addWidget (showRecordButton, 1, 0); 0260 gridlayout->addWidget (showBroadcastButton, 1, 1); 0261 QHBoxLayout *seekLayout = new QHBoxLayout; 0262 seekLayout->addWidget(new QLabel(i18n("Forward/backward seek time:"))); 0263 seekLayout->addItem(new QSpacerItem(0,0,QSizePolicy::Minimum, QSizePolicy::Minimum)); 0264 KPluralHandlingSpinBox* pluralSeekBox = new KPluralHandlingSpinBox; 0265 pluralSeekBox->setRange(1, 600); 0266 pluralSeekBox->setSingleStep(1); 0267 pluralSeekBox->setValue(10); 0268 #if KDE_IS_VERSION(4, 2, 80) 0269 pluralSeekBox->setSuffix(ki18np(" second", " seconds")); 0270 #else 0271 pluralSeekBox->setSuffix(i18n(" seconds")); 0272 #endif 0273 seekTime = pluralSeekBox; 0274 seekLayout->addWidget(seekTime); 0275 seekLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0276 gridlayout->addLayout (seekLayout, 2, 0, 1, 2); 0277 controlbox->setLayout(gridlayout); 0278 0279 QVBoxLayout* pagelayout = new QVBoxLayout; 0280 pagelayout->setMargin(5); 0281 pagelayout->setSpacing(2); 0282 pagelayout->addWidget(windowbox); 0283 pagelayout->addWidget(playbox); 0284 pagelayout->addWidget(controlbox); 0285 pagelayout->addItem (new QSpacerItem (0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0286 setLayout(pagelayout); 0287 } 0288 0289 KDE_NO_CDTOR_EXPORT PrefGeneralPageLooks::PrefGeneralPageLooks (QWidget *parent, Settings * settings) 0290 : QWidget(parent), colors (settings->colors), fonts (settings->fonts) 0291 { 0292 QGroupBox *colorbox= new QGroupBox(i18n("Colors")); 0293 colorscombo = new QComboBox; 0294 for (int i = 0; i < int (ColorSetting::last_target); i++) 0295 colorscombo->addItem (colors[i].title); 0296 colorscombo->setCurrentIndex (0); 0297 connect (colorscombo, SIGNAL (activated (int)), 0298 this, SLOT (colorItemChanged(int))); 0299 colorbutton = new KColorButton; 0300 colorbutton->setColor (colors[0].color); 0301 connect (colorbutton, SIGNAL (changed (const QColor &)), 0302 this, SLOT (colorCanged (const QColor &))); 0303 QHBoxLayout* hbox = new QHBoxLayout; 0304 hbox->addWidget(colorscombo); 0305 hbox->addWidget(colorbutton); 0306 colorbox->setLayout(hbox); 0307 0308 QGroupBox* fontbox = new QGroupBox(i18n ("Fonts")); 0309 fontscombo = new QComboBox; 0310 for (int i = 0; i < int (FontSetting::last_target); i++) 0311 fontscombo->addItem (fonts[i].title); 0312 fontscombo->setCurrentIndex (0); 0313 connect (fontscombo, SIGNAL (activated (int)), 0314 this, SLOT (fontItemChanged(int))); 0315 fontbutton = new QPushButton(i18n ("AaBbCc")); 0316 fontbutton->setFlat (true); 0317 fontbutton->setFont (fonts[0].font); 0318 connect (fontbutton, SIGNAL (clicked ()), this, SLOT (fontClicked ())); 0319 hbox = new QHBoxLayout; 0320 hbox->addWidget(fontscombo); 0321 hbox->addWidget(fontbutton); 0322 fontbox->setLayout(hbox); 0323 0324 QVBoxLayout* vbox = new QVBoxLayout; 0325 vbox->setMargin (5); 0326 vbox->setSpacing (2); 0327 vbox->addWidget(colorbox); 0328 vbox->addWidget(fontbox); 0329 vbox->addItem (new QSpacerItem (0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0330 setLayout(vbox); 0331 } 0332 0333 KDE_NO_EXPORT void PrefGeneralPageLooks::colorItemChanged (int c) { 0334 if (c < int (ColorSetting::last_target)) 0335 colorbutton->setColor (colors[c].newcolor); 0336 } 0337 0338 KDE_NO_EXPORT void PrefGeneralPageLooks::colorCanged (const QColor & c) { 0339 if (colorscombo->currentIndex () < int (ColorSetting::last_target)) 0340 colors[colorscombo->currentIndex ()].newcolor = c; 0341 } 0342 0343 KDE_NO_EXPORT void PrefGeneralPageLooks::fontItemChanged (int f) { 0344 if (f < int (FontSetting::last_target)) 0345 fontbutton->setFont (fonts[f].newfont); 0346 } 0347 0348 KDE_NO_EXPORT void PrefGeneralPageLooks::fontClicked () { 0349 if (fontscombo->currentIndex () < int (FontSetting::last_target)) { 0350 QFont myfont = fonts [fontscombo->currentIndex ()].newfont; 0351 int res = KFontDialog::getFont (myfont, KFontChooser::NoDisplayFlags, this); 0352 if (res == KFontDialog::Accepted) { 0353 fonts [fontscombo->currentIndex ()].newfont = myfont; 0354 fontbutton->setFont (myfont); 0355 } 0356 } 0357 } 0358 0359 KDE_NO_CDTOR_EXPORT PrefSourcePageURL::PrefSourcePageURL (QWidget *parent) 0360 : QWidget(parent) 0361 { 0362 setObjectName ("URLPage"); 0363 QHBoxLayout* urllayout = new QHBoxLayout; 0364 QHBoxLayout* sub_urllayout = new QHBoxLayout; 0365 QLabel *urlLabel = new QLabel(i18n("Location:")); 0366 urllist = new KComboBox (true); 0367 urllist->setMaxCount (20); 0368 urllist->setDuplicatesEnabled (false); // not that it helps much :( 0369 url = new KUrlRequester(urllist, NULL); 0370 url->setWhatsThis(i18n ("Location of the playable item")); 0371 //url->setShowLocalProtocol (true); 0372 url->setSizePolicy (QSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred)); 0373 QLabel *sub_urlLabel = new QLabel(i18n("Sub title:")); 0374 sub_urllist = new KComboBox(true); 0375 sub_urllist->setMaxCount (20); 0376 sub_urllist->setDuplicatesEnabled (false); // not that it helps much :( 0377 sub_url = new KUrlRequester(sub_urllist, NULL); 0378 sub_url->setWhatsThis(i18n ("Optional location of a file containing the subtitles of the URL above")); 0379 sub_url->setSizePolicy (QSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred)); 0380 backend = new QListWidget; 0381 clicktoplay = new QCheckBox(i18n("Load on demand")); 0382 clicktoplay->setWhatsThis(i18n ("When enabled, all embedded movies will start with a image that needs to be clicked to start the video playback")); 0383 grabhref = new QCheckBox(i18n("Grab image when 'Click to Play' detected")); 0384 grabhref->setWhatsThis(i18n ("When enabled and a HTML object has a HREF attribute, grab and save an image of the first frame of initial link. This image will be shown instead of a default picture.")); 0385 urllayout->addWidget (urlLabel); 0386 urllayout->addWidget (url); 0387 sub_urllayout->addWidget (sub_urlLabel); 0388 sub_urllayout->addWidget (sub_url); 0389 0390 QGridLayout * gridlayout = new QGridLayout (/*2, 2*/); 0391 QLabel *backendLabel = new QLabel(i18n ("Use movie player:")); 0392 //QWhatsThis::add (allowhref, i18n ("Explain this in a few lines")); 0393 gridlayout->addWidget (backendLabel, 0, 0); 0394 gridlayout->addWidget (backend, 1, 0); 0395 gridlayout->addItem (new QSpacerItem (0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 1, 1, 1); 0396 0397 QGroupBox *bandwidthbox = new QGroupBox(i18n("Network bandwidth")); 0398 prefBitRate = new QLineEdit; 0399 prefBitRate->setValidator( new QIntValidator( prefBitRate ) ); 0400 prefBitRate->setWhatsThis(i18n("Sometimes it is possible to choose between various streams given a particular bitrate.\nThis option sets how much bandwidth you would prefer to allocate to video.")); 0401 maxBitRate = new QLineEdit; 0402 maxBitRate->setValidator( new QIntValidator( maxBitRate ) ); 0403 maxBitRate->setWhatsThis(i18n("Sometimes it is possible to choose between various streams given a particular bitrate.\nThis option sets the maximum bandwidth you have available for video.")); 0404 QGridLayout* bitratelayout = new QGridLayout; 0405 bitratelayout->addWidget(new QLabel(i18n("Preferred bitrate:")), 0, 0); 0406 bitratelayout->addWidget (prefBitRate, 0, 1); 0407 bitratelayout->addWidget (new QLabel (i18n ("kbit/s")), 0, 2); 0408 bitratelayout->addWidget (new QLabel(i18n("Maximum bitrate:")), 1, 0); 0409 bitratelayout->addWidget (maxBitRate, 1, 1); 0410 bitratelayout->addWidget (new QLabel (i18n ("kbit/s")), 1, 2); 0411 bandwidthbox->setLayout(bitratelayout); 0412 0413 QVBoxLayout* vbox = new QVBoxLayout; 0414 vbox->setMargin(5); 0415 vbox->setSpacing(2); 0416 vbox->addLayout(urllayout); 0417 vbox->addLayout(sub_urllayout); 0418 vbox->addItem (new QSpacerItem (0, 10, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0419 vbox->addWidget(clicktoplay); 0420 vbox->addWidget(grabhref); 0421 vbox->addItem (new QSpacerItem (0, 10, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0422 vbox->addWidget(bandwidthbox); 0423 vbox->addItem (new QSpacerItem (0, 10, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0424 vbox->addLayout(gridlayout); 0425 vbox->addItem (new QSpacerItem (0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0426 setLayout(vbox); 0427 0428 connect (url, SIGNAL(textChanged(const QString&)), 0429 this, SLOT (slotTextChanged (const QString &))); 0430 connect (sub_url, SIGNAL(textChanged(const QString&)), 0431 this, SLOT (slotTextChanged (const QString &))); 0432 } 0433 0434 KDE_NO_EXPORT void PrefSourcePageURL::slotBrowse () { 0435 } 0436 0437 KDE_NO_EXPORT void PrefSourcePageURL::slotTextChanged (const QString &) { 0438 changed = true; 0439 } 0440 0441 KDE_NO_CDTOR_EXPORT PrefRecordPage::PrefRecordPage(QWidget* parent, 0442 PartBase * player, RecorderPage * rl, int rec_len) 0443 : QWidget(parent), 0444 m_player (player), 0445 m_recorders (rl), 0446 m_recorders_length (rec_len) 0447 { 0448 setObjectName ("RecordPage"); 0449 QHBoxLayout * urllayout = new QHBoxLayout (); 0450 QLabel* urlLabel = new QLabel(i18n("Output file:")); 0451 url = new KUrlRequester; 0452 urllayout->addWidget (urlLabel); 0453 urllayout->addWidget (url); 0454 0455 source = new QLabel (i18n ("Current source: ") + 0456 (m_player->source () ? m_player->source ()->prettyName () : QString ())); 0457 QGroupBox* group = new QGroupBox(i18n("Recorder")); 0458 QVBoxLayout *vbox = new QVBoxLayout; 0459 recorder = new QButtonGroup; 0460 int id = 0; 0461 for (RecorderPage* p = m_recorders; p; p = p->next) { 0462 QRadioButton* button = new QRadioButton(p->name()); 0463 vbox->addWidget(button); 0464 recorder->addButton(button, id++); 0465 } 0466 recorder->button(0)->setChecked(true); // for now 0467 group->setLayout(vbox); 0468 0469 QGroupBox* autogroup = new QGroupBox(i18n("Auto Playback")); 0470 vbox = new QVBoxLayout; 0471 replay = new QButtonGroup; 0472 QRadioButton* radio = new QRadioButton (i18n ("&No")); 0473 vbox->addWidget(radio); 0474 replay->addButton(radio, 0); 0475 radio = new QRadioButton (i18n ("&When recording finished")); 0476 vbox->addWidget(radio); 0477 replay->addButton(radio, 1); 0478 radio = new QRadioButton (i18n ("A&fter")); 0479 vbox->addWidget(radio); 0480 replay->addButton(radio, 2); 0481 QWidget* customreplay = new QWidget; 0482 KPluralHandlingSpinBox* pluralReplayBox = new KPluralHandlingSpinBox; 0483 pluralReplayBox = new KPluralHandlingSpinBox; 0484 #if KDE_IS_VERSION(4, 2, 80) 0485 pluralReplayBox->setSuffix(ki18np(" second", " seconds")); 0486 #else 0487 pluralReplayBox->setSuffix(i18n(" seconds")); 0488 #endif 0489 replaytime = pluralReplayBox; 0490 QHBoxLayout *replaylayout = new QHBoxLayout; 0491 replaylayout->addWidget(new QLabel(i18n("Time:"))); 0492 replaylayout->addWidget (replaytime); 0493 replaylayout->addItem (new QSpacerItem (0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum)); 0494 customreplay->setLayout(replaylayout); 0495 vbox->addWidget(customreplay); 0496 autogroup->setLayout(vbox); 0497 0498 recordButton = new QPushButton (i18n ("Start &Recording")); 0499 QHBoxLayout *buttonlayout = new QHBoxLayout; 0500 buttonlayout->addItem (new QSpacerItem (0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0501 buttonlayout->addWidget (recordButton); 0502 #ifdef KMPLAYER_WITH_XINE 0503 connect (recorder, SIGNAL (clicked(int)), this, SLOT(recorderClicked(int))); 0504 #endif 0505 //connect(replay, SIGNAL(buttonClicked (int)), this, SLOT (replayClicked (int))); 0506 connect (player, SIGNAL (recording (bool)), this, SLOT (recording (bool))); 0507 connect(recordButton, SIGNAL(clicked()), this, SLOT(slotRecord())); 0508 0509 QVBoxLayout* pagelayout = new QVBoxLayout; 0510 pagelayout->setMargin(5); 0511 pagelayout->setSpacing(2); 0512 pagelayout->addItem(new QSpacerItem(5, 0, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0513 pagelayout->addLayout(urllayout); 0514 pagelayout->addItem(new QSpacerItem(5, 0, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0515 pagelayout->addWidget(source); 0516 pagelayout->addItem(new QSpacerItem(5, 0, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0517 pagelayout->addWidget(group); 0518 pagelayout->addItem(new QSpacerItem(5, 0, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0519 pagelayout->addWidget(autogroup); 0520 pagelayout->addLayout(buttonlayout); 0521 pagelayout->addItem(new QSpacerItem(5, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0522 setLayout(pagelayout); 0523 } 0524 0525 PrefRecordPage::~PrefRecordPage () { 0526 } 0527 0528 KDE_NO_EXPORT void PrefRecordPage::recording (bool on) { 0529 kDebug() << "PrefRecordPage::recording " << on << endl; 0530 recordButton->setText (on 0531 ? i18n ("Stop &Recording") 0532 : i18n ("Start &Recording")); 0533 url->setEnabled (!on); 0534 if (on) 0535 topLevelWidget ()->hide (); 0536 } 0537 0538 KDE_NO_EXPORT void PrefRecordPage::showEvent (QShowEvent *e) { 0539 Source *src = m_player->source (); 0540 if (recordButton->text () == i18n ("Start &Recording") && src && 0541 src->current ()) { 0542 int id = 0; 0543 int nr_recs = 0; 0544 for (RecorderPage * p = m_recorders; p; p = p->next, ++id) { 0545 QAbstractButton * radio = recorder->button(id); 0546 bool b = m_player->mediaManager ()->recorderInfos () 0547 [p->recorderName ()]->supports (src->name ()); 0548 radio->setEnabled (b); 0549 if (b) nr_recs++; 0550 } 0551 source_url = src->current ()->src; 0552 source->setText (i18n ("Current Source: ") + source_url); 0553 recordButton->setEnabled (nr_recs > 0); 0554 } 0555 QWidget::showEvent (e); 0556 } 0557 0558 KDE_NO_EXPORT void PrefRecordPage::recorderClicked (int /*id*/) { 0559 /*bool b = recorder->button(id)->text().indexOf (QString::fromLatin1("Xine")) > -1; 0560 replay->setEnabled (!b); 0561 if (b) 0562 replay->setButton (Settings::ReplayNo);*/ 0563 0564 } 0565 0566 KDE_NO_EXPORT void PrefRecordPage::replayClicked (int id) { 0567 replaytime->setEnabled (id == Settings::ReplayAfter); 0568 } 0569 0570 KDE_NO_EXPORT void PrefRecordPage::slotRecord () { 0571 if (m_player->isRecording ()) { 0572 m_player->stopRecording (); 0573 } else if (!url->lineEdit()->text().isEmpty()) { 0574 m_player->source ()->document ()->reset (); 0575 m_player->settings ()->recordfile = url->lineEdit()->text(); 0576 m_player->settings ()->replaytime = replaytime->value(); 0577 int id = recorder->checkedId (); 0578 int replayid = replay->checkedId (); 0579 m_player->settings ()->recorder = Settings::Recorder (id); 0580 m_player->settings ()->replayoption = Settings::ReplayOption (replayid); 0581 for (RecorderPage * p = m_recorders; p; p = p->next) 0582 if (id-- == 0) { 0583 int start_after = 0; 0584 if (replay->checkedId () == Settings::ReplayAfter) { 0585 int t = replaytime->value (); 0586 if (t > 0) 0587 start_after = 1000 * t; 0588 } else if (replay->checkedId () != Settings::ReplayNo) { 0589 start_after = -1; 0590 } 0591 p->startRecording (); 0592 m_player->record (source_url, url->lineEdit()->text(), 0593 p->recorderName (), start_after); 0594 break; 0595 } 0596 } 0597 } 0598 0599 KDE_NO_CDTOR_EXPORT RecorderPage::RecorderPage (QWidget *parent, PartBase * player) 0600 : QWidget(parent), next(0L), m_player(player) {} 0601 0602 KDE_NO_CDTOR_EXPORT PrefMEncoderPage::PrefMEncoderPage(QWidget* parent, PartBase* player) 0603 : RecorderPage (parent, player) 0604 { 0605 QGroupBox* formatbox = new QGroupBox(i18n("Format")); 0606 QVBoxLayout* vbox = new QVBoxLayout; 0607 format = new QButtonGroup(this); 0608 QRadioButton* radio = new QRadioButton (i18n ("Same as source")); 0609 vbox->addWidget(radio); 0610 format->addButton(radio, 0); 0611 radio = new QRadioButton (i18n ("Custom")); 0612 vbox->addWidget(radio); 0613 format->addButton(radio, 1); 0614 QGridLayout* gridlayout = new QGridLayout; 0615 QLabel *argLabel = new QLabel (i18n("Mencoder arguments:")); 0616 arguments = new QLineEdit (""); 0617 gridlayout->addWidget (argLabel, 0, 0); 0618 gridlayout->addWidget (arguments, 0, 1); 0619 vbox->addLayout(gridlayout); 0620 formatbox->setLayout(vbox); 0621 connect (format, SIGNAL (buttonClicked (int)), this, SLOT (formatClicked (int))); 0622 0623 QVBoxLayout* pagelayout = new QVBoxLayout; 0624 pagelayout->setMargin(5); 0625 pagelayout->setSpacing(2); 0626 pagelayout->addWidget(formatbox); 0627 pagelayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0628 setLayout(pagelayout); 0629 } 0630 0631 KDE_NO_EXPORT void PrefMEncoderPage::formatClicked (int id) { 0632 arguments->setEnabled (!!id); 0633 } 0634 0635 KDE_NO_EXPORT void PrefMEncoderPage::startRecording () { 0636 m_player->settings ()->recordcopy = !format->checkedId (); 0637 m_player->settings ()->mencoderarguments = arguments->text (); 0638 } 0639 0640 KDE_NO_EXPORT QString PrefMEncoderPage::name () { 0641 return i18n ("&MEncoder"); 0642 } 0643 0644 KDE_NO_CDTOR_EXPORT PrefMPlayerDumpstreamPage::PrefMPlayerDumpstreamPage (QWidget *parent, PartBase * player) : RecorderPage (parent, player) { 0645 hide(); 0646 } 0647 0648 KDE_NO_EXPORT QString PrefMPlayerDumpstreamPage::name () { 0649 return i18n ("MPlayer -&dumpstream"); 0650 } 0651 0652 KDE_NO_CDTOR_EXPORT PrefFFMpegPage::PrefFFMpegPage(QWidget* parent, PartBase* player) 0653 : RecorderPage(parent, player) 0654 { 0655 QGridLayout *gridlayout = new QGridLayout (/*1, 2, 2*/); 0656 QLabel *argLabel = new QLabel (i18n("FFMpeg arguments:")); 0657 arguments = new QLineEdit (""); 0658 gridlayout->addWidget (argLabel, 0, 0); 0659 gridlayout->addWidget (arguments, 0, 1); 0660 0661 QVBoxLayout* pagelayout = new QVBoxLayout; 0662 pagelayout->setMargin(5); 0663 pagelayout->setSpacing(2); 0664 pagelayout->addLayout (gridlayout); 0665 pagelayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0666 setLayout(pagelayout); 0667 } 0668 0669 KDE_NO_EXPORT void PrefFFMpegPage::startRecording () { 0670 m_player->settings ()->ffmpegarguments = arguments->text (); 0671 } 0672 0673 KDE_NO_EXPORT QString PrefFFMpegPage::name () { 0674 return i18n ("&FFMpeg"); 0675 } 0676 0677 #ifdef KMPLAYER_WITH_XINE 0678 KDE_NO_CDTOR_EXPORT PrefXinePage::PrefXinePage (QWidget *parent, PartBase * player) : RecorderPage (parent, player) { 0679 hide(); 0680 } 0681 0682 KDE_NO_EXPORT QString PrefXinePage::name () { 0683 return i18n ("&Xine"); 0684 } 0685 #endif 0686 0687 KDE_NO_CDTOR_EXPORT PrefGeneralPageOutput::PrefGeneralPageOutput(QWidget *parent, OutputDriver * ad, OutputDriver * vd) 0688 : QWidget(parent) 0689 { 0690 videoDriver = new QListWidget; 0691 for (int i = 0; vd[i].driver; i++) 0692 videoDriver->addItem(vd[i].description); 0693 videoDriver->setWhatsThis(i18n("Sets video driver. Recommended is XVideo, or, if it is not supported, X11, which is slower.")); 0694 0695 audioDriver = new QListWidget; 0696 for (int i = 0; ad[i].driver; i++) 0697 audioDriver->addItem(ad[i].description); 0698 0699 QVBoxLayout* pagelayout = new QVBoxLayout; 0700 pagelayout->setMargin(5); 0701 pagelayout->setSpacing(2); 0702 pagelayout->addWidget(videoDriver); 0703 pagelayout->addWidget(audioDriver); 0704 pagelayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0705 setLayout(pagelayout); 0706 } 0707 0708 KDE_NO_CDTOR_EXPORT PrefOPPagePostProc::PrefOPPagePostProc(QWidget *parent) 0709 : QWidget(parent) 0710 { 0711 postProcessing = new QCheckBox(i18n("Enable use of postprocessing filters")); 0712 postProcessing->setEnabled( true ); 0713 disablePPauto = new QCheckBox(i18n("Disable use of postprocessing when watching TV/DVD")); 0714 0715 PostprocessingOptions = new QTabWidget; 0716 PostprocessingOptions->setEnabled (true); 0717 //PostprocessingOptions->setAutoMask (false); 0718 PostprocessingOptions->setTabShape( QTabWidget::Rounded ); 0719 PostprocessingOptions->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum )); 0720 0721 QGroupBox* presetSelection = new QGroupBox; 0722 defaultPreset = new QRadioButton (i18n ("Default")); 0723 customPreset = new QRadioButton (i18n ("Custom")); 0724 fastPreset = new QRadioButton (i18n ("Fast")); 0725 defaultPreset->setChecked( true ); 0726 QVBoxLayout* vbox = new QVBoxLayout; 0727 vbox->addWidget(defaultPreset); 0728 vbox->addWidget(customPreset); 0729 vbox->addWidget(fastPreset); 0730 QButtonGroup* buttongroup = new QButtonGroup(presetSelection); 0731 buttongroup->addButton(defaultPreset, 0); 0732 buttongroup->addButton(customPreset, 1); 0733 buttongroup->addButton(fastPreset, 2); 0734 vbox->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0735 presetSelection->setLayout(vbox); 0736 PostprocessingOptions->addTab(presetSelection, i18n("General")); 0737 0738 // 0739 // SECOND!!! 0740 // 0741 /* I JUST WASN'T ABLE TO GET THIS WORKING WITH QGridLayouts */ 0742 QVBoxLayout *customFiltersLayout = new QVBoxLayout; 0743 0744 QGroupBox *customFilters = new QGroupBox; 0745 customFilters->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum)); 0746 customFilters->setFlat(false); 0747 customFilters->setEnabled( false ); 0748 //customFilters->setInsideSpacing(7); 0749 0750 QHBoxLayout* hbox = new QHBoxLayout; 0751 HzDeblockFilter = new QCheckBox (i18n ("Horizontal deblocking")); 0752 HzDeblockAQuality = new QCheckBox (i18n ("Auto quality")); 0753 HzDeblockAQuality->setEnabled (false); 0754 HzDeblockCFiltering = new QCheckBox (i18n ("Chrominance filtering")); 0755 HzDeblockCFiltering->setEnabled (false); 0756 hbox->addWidget( HzDeblockFilter ); 0757 hbox->addItem( new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum ) ); 0758 hbox->addWidget( HzDeblockAQuality ); 0759 hbox->addWidget( HzDeblockCFiltering ); 0760 customFiltersLayout->addLayout(hbox); 0761 0762 QFrame* line = new QFrame; 0763 line->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Maximum ) ); 0764 line->setFrameShape( QFrame::HLine ); 0765 line->setFrameShadow( QFrame::Sunken ); 0766 customFiltersLayout->addWidget(line); 0767 0768 hbox = new QHBoxLayout; 0769 VtDeblockFilter = new QCheckBox(i18n("Vertical deblocking")); 0770 VtDeblockAQuality = new QCheckBox (i18n ("Auto quality")); 0771 VtDeblockAQuality->setEnabled (false); 0772 VtDeblockCFiltering = new QCheckBox (i18n ("Chrominance filtering")); 0773 VtDeblockCFiltering->setEnabled (false); 0774 hbox->addWidget( VtDeblockFilter ); 0775 hbox->addItem( new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum ) ); 0776 hbox->addWidget( VtDeblockAQuality ); 0777 hbox->addWidget( VtDeblockCFiltering ); 0778 customFiltersLayout->addLayout(hbox); 0779 0780 line = new QFrame; 0781 line->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Maximum ) ); 0782 line->setFrameShape( QFrame::HLine ); 0783 line->setFrameShadow( QFrame::Sunken ); 0784 customFiltersLayout->addWidget(line); 0785 0786 hbox = new QHBoxLayout; 0787 DeringFilter = new QCheckBox (i18n ("Dering filter")); 0788 DeringAQuality = new QCheckBox (i18n ("Auto quality")); 0789 DeringAQuality->setEnabled (false); 0790 DeringCFiltering=new QCheckBox(i18n("Chrominance filtering")); 0791 DeringCFiltering->setEnabled (false); 0792 hbox->addWidget( DeringFilter ); 0793 hbox->addItem( new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum ) ); 0794 hbox->addWidget( DeringAQuality ); 0795 hbox->addWidget( DeringCFiltering ); 0796 customFiltersLayout->addLayout(hbox); 0797 0798 line = new QFrame; 0799 line->setFrameShape( QFrame::HLine ); 0800 line->setFrameShadow( QFrame::Sunken ); 0801 line->setFrameShape( QFrame::HLine ); 0802 customFiltersLayout->addWidget(line); 0803 0804 hbox = new QHBoxLayout; 0805 AutolevelsFilter = new QCheckBox (i18n ("Auto brightness/contrast")); 0806 AutolevelsFullrange = new QCheckBox (i18n ("Stretch luminance to full range")); 0807 AutolevelsFullrange->setEnabled (false); 0808 hbox->addWidget(AutolevelsFilter); 0809 hbox->addItem(new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum )); 0810 hbox->addWidget(AutolevelsFullrange); 0811 customFiltersLayout->addLayout(hbox); 0812 0813 hbox = new QHBoxLayout; 0814 TmpNoiseFilter =new QCheckBox(i18n("Temporal noise reducer"),customFilters); 0815 /* Note: Change TmpNoiseFilter text back to "Label:" if this slider gets reactivated 0816 TmpNoiseSlider = new QSlider( customFilters, "TmpNoiseSlider" ); 0817 TmpNoiseSlider->setEnabled( false ); 0818 TmpNoiseSlider->setMinValue( 1 ); 0819 TmpNoiseSlider->setMaxValue( 3 ); 0820 TmpNoiseSlider->setValue( 1 ); 0821 TmpNoiseSlider->setOrientation( QSlider::Horizontal ); 0822 TmpNoiseSlider->setTickmarks( QSlider::Left ); 0823 TmpNoiseSlider->setTickInterval( 1 ); 0824 TmpNoiseSlider->setSizePolicy(QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum);*/ 0825 0826 /*customFiltersLayout->addWidget(TmpNoiseFilter,7,0); 0827 customFiltersLayout->addWidget(TmpNoiseSlider,7,2);*/ 0828 hbox->addWidget(TmpNoiseFilter); 0829 hbox->addItem(new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum )); 0830 //hbox->addWidget(TmpNoiseSlider); 0831 customFiltersLayout->addLayout(hbox); 0832 0833 customFiltersLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0834 customFilters->setLayout(customFiltersLayout); 0835 0836 PostprocessingOptions->addTab(customFilters, i18n("Custom Preset")); 0837 // 0838 //THIRD!!! 0839 // 0840 QGroupBox* deintSelectionWidget = new QGroupBox; 0841 vbox = new QVBoxLayout; 0842 LinBlendDeinterlacer = new QCheckBox(i18n ("Linear blend deinterlacer")); 0843 LinIntDeinterlacer = new QCheckBox(i18n ("Linear interpolating deinterlacer")); 0844 CubicIntDeinterlacer = new QCheckBox(i18n ("Cubic interpolating deinterlacer")); 0845 MedianDeinterlacer = new QCheckBox(i18n ("Median deinterlacer")); 0846 FfmpegDeinterlacer = new QCheckBox(i18n ("FFmpeg deinterlacer")); 0847 vbox->addWidget(LinBlendDeinterlacer); 0848 vbox->addWidget(LinIntDeinterlacer); 0849 vbox->addWidget(CubicIntDeinterlacer); 0850 vbox->addWidget(MedianDeinterlacer); 0851 vbox->addWidget(FfmpegDeinterlacer); 0852 vbox->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0853 deintSelectionWidget->setLayout(vbox); 0854 PostprocessingOptions->addTab(deintSelectionWidget, i18n( "Deinterlacing")); 0855 0856 QVBoxLayout* pagelayout = new QVBoxLayout; 0857 pagelayout->setMargin(5); 0858 pagelayout->setSpacing(2); 0859 pagelayout->addWidget(postProcessing); 0860 pagelayout->addWidget(disablePPauto); 0861 pagelayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Minimum, QSizePolicy::Minimum)); 0862 pagelayout->addWidget(PostprocessingOptions); 0863 pagelayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding)); 0864 setLayout(pagelayout); 0865 0866 PostprocessingOptions->setEnabled(false); 0867 connect( customPreset, SIGNAL (toggled(bool) ), customFilters, SLOT(setEnabled(bool))); 0868 connect( postProcessing, SIGNAL( toggled(bool) ), PostprocessingOptions, SLOT( setEnabled(bool) ) ); 0869 connect( HzDeblockFilter, SIGNAL( toggled(bool) ), HzDeblockAQuality, SLOT( setEnabled(bool) ) ); 0870 connect( HzDeblockFilter, SIGNAL( toggled(bool) ), HzDeblockCFiltering, SLOT( setEnabled(bool) ) ); 0871 connect( VtDeblockFilter, SIGNAL( toggled(bool) ), VtDeblockCFiltering, SLOT( setEnabled(bool) ) ); 0872 connect( VtDeblockFilter, SIGNAL( toggled(bool) ), VtDeblockAQuality, SLOT( setEnabled(bool) ) ); 0873 connect( DeringFilter, SIGNAL( toggled(bool) ), DeringAQuality, SLOT( setEnabled(bool) ) ); 0874 connect( DeringFilter, SIGNAL( toggled(bool) ), DeringCFiltering, SLOT( setEnabled(bool) ) ); 0875 //connect( TmpNoiseFilter, SIGNAL( toggled(bool) ), TmpNoiseSlider, SLOT( setEnabled(bool) ) ); 0876 0877 connect( AutolevelsFilter, SIGNAL( toggled(bool) ), AutolevelsFullrange, SLOT( setEnabled(bool) ) ); 0878 0879 defaultPreset->setWhatsThis(i18n( "Enable mplayer's default postprocessing filters" ) ); 0880 customPreset->setWhatsThis(i18n( "Enable custom postprocessing filters (See: Custom preset -tab)" ) ); 0881 fastPreset->setWhatsThis(i18n( "Enable mplayer's fast postprocessing filters" ) ); 0882 HzDeblockAQuality->setWhatsThis(i18n( "Filter is used if there is enough CPU" ) ); 0883 VtDeblockAQuality->setWhatsThis(i18n( "Filter is used if there is enough CPU" ) ); 0884 DeringAQuality->setWhatsThis(i18n( "Filter is used if there is enough CPU" ) ); 0885 //QWhatsThis::add( TmpNoiseSlider, i18n( "Strength of the noise reducer" ) ); 0886 AutolevelsFullrange->setWhatsThis(i18n( "Stretches luminance to full range (0..255)" ) ); 0887 PostprocessingOptions->adjustSize(); 0888 } 0889 0890 KDE_NO_EXPORT void Preferences::confirmDefaults() { 0891 switch( KMessageBox::warningContinueCancel( this, 0892 i18n("You are about to have all your settings overwritten with defaults.\nPlease confirm.\n"), 0893 i18n("Reset Settings?"))) { 0894 case KMessageBox::Continue: 0895 Preferences::setDefaults(); 0896 break; 0897 case KMessageBox::Cancel: 0898 default: // avoid warnings for the unhandled enum values 0899 break; 0900 } 0901 } 0902 0903 KDE_NO_EXPORT void Preferences::setDefaults() { 0904 m_GeneralPageGeneral->keepSizeRatio->setChecked(true); 0905 m_GeneralPageGeneral->loop->setChecked(false); 0906 m_GeneralPageGeneral->seekTime->setValue(10); 0907 0908 m_GeneralPageOutput->videoDriver->setCurrentRow(0); 0909 m_GeneralPageOutput->audioDriver->setCurrentRow(0); 0910 0911 m_OPPagePostproc->postProcessing->setChecked(false); 0912 m_OPPagePostproc->disablePPauto->setChecked(true); 0913 0914 m_OPPagePostproc->defaultPreset->setChecked(true); 0915 0916 m_OPPagePostproc->LinBlendDeinterlacer->setChecked(false); 0917 m_OPPagePostproc->LinIntDeinterlacer->setChecked(false); 0918 m_OPPagePostproc->CubicIntDeinterlacer->setChecked(false); 0919 m_OPPagePostproc->MedianDeinterlacer->setChecked(false); 0920 m_OPPagePostproc->FfmpegDeinterlacer->setChecked(false); 0921 0922 } 0923 #include "pref.moc"