summaryrefslogtreecommitdiffstats
path: root/src/kmplayerconfig.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-17 00:54:13 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-17 00:54:13 +0000
commit092be7678b67552cb3161fe162242bf8d3aeed2f (patch)
treebe0693f45b101252c370e40f6e84da2cd7a52f75 /src/kmplayerconfig.cpp
downloadkmplayer-092be7678b67552cb3161fe162242bf8d3aeed2f.tar.gz
kmplayer-092be7678b67552cb3161fe162242bf8d3aeed2f.zip
Added old abandoned KDE3 version of kmplayer
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kmplayer@1091557 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/kmplayerconfig.cpp')
-rw-r--r--src/kmplayerconfig.cpp749
1 files changed, 749 insertions, 0 deletions
diff --git a/src/kmplayerconfig.cpp b/src/kmplayerconfig.cpp
new file mode 100644
index 0000000..bbc13b1
--- /dev/null
+++ b/src/kmplayerconfig.cpp
@@ -0,0 +1,749 @@
+/**
+ * Copyright (C) 2002-2003 by Koos Vriezen <koos.vriezen@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#include <algorithm>
+#include <functional>
+#include <config.h>
+#include <qcheckbox.h>
+#include <qtextedit.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qtabwidget.h>
+#include <qslider.h>
+#include <qspinbox.h>
+#include <qlabel.h>
+#include <qbuttongroup.h>
+#include <qfileinfo.h>
+
+#include <kurlrequester.h>
+#include <klineedit.h>
+#include <kstatusbar.h>
+
+#include <kconfig.h>
+#include <kapplication.h>
+#include <kurl.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kcombobox.h>
+#include <kmessagebox.h>
+#include <kglobalsettings.h>
+
+#include "kmplayersource.h"
+#include "kmplayerconfig.h"
+#include "kmplayerpartbase.h"
+#include "kmplayerprocess.h"
+#include "playlistview.h"
+#include "viewarea.h"
+#include "pref.h"
+
+using namespace KMPlayer;
+
+static OutputDriver _ads[] = {
+ { "alsa,oss,sdl,arts", i18n ("Auto") },
+ { "oss", i18n ("Open Sound System") },
+ { "sdl", i18n ("Simple DirectMedia Layer") },
+ { "alsa", i18n ("Advanced Linux Sound Architecture") },
+ { "arts", i18n ("Analog Real-Time Synthesizer") },
+ { "jack", i18n ("JACK Audio Connection Kit") },
+ { "openal", i18n ("OpenAL") },
+ { "esd", i18n ("Enlightened Sound Daemon") },
+ { "alsa5", i18n ("Advanced Linux Sound Architecture v0.5") },
+ { "alsa9", i18n ("Advanced Linux Sound Architecture v0.9") },
+ { "", i18n ("Use back-end defaults") },
+ { 0, QString () }
+};
+
+static OutputDriver _vds [] = {
+ { "xv,sdl,x11", i18n ("Auto") },
+ { "x11", i18n ("X11Shm") },
+ { "xvidix", i18n ("XVidix") },
+ { "xvmc,xv", i18n ("XvMC") },
+ { "sdl", i18n ("SDL") },
+ { "gl", i18n ("OpenGL") },
+ { "gl2", i18n ("OpenGL MT") },
+ { "xv", i18n ("XVideo") },
+ { 0, QString () }
+};
+
+static const int ADRIVER_ARTS_INDEX = 4;
+
+
+KDE_NO_CDTOR_EXPORT Settings::Settings (PartBase * player, KConfig * config)
+ : pagelist (0L), configdialog (0L), m_config (config), m_player (player) {
+ audiodrivers = _ads;
+ videodrivers = _vds;
+ colors [ColorSetting::playlist_background].title = i18n ("Playlist background");
+ colors [ColorSetting::playlist_background].option = "PlaylistBackground";
+ colors [ColorSetting::playlist_background].color = KGlobalSettings::baseColor ();
+ colors [ColorSetting::playlist_foreground].title = i18n ("Playlist foreground");
+ colors [ColorSetting::playlist_foreground].option = "PlaylistForeground";
+ colors [ColorSetting::playlist_foreground].color = KGlobalSettings::textColor();
+ colors [ColorSetting::console_background].title =i18n("Console background");
+ colors [ColorSetting::playlist_active].title = i18n("Playlist active item");
+ colors [ColorSetting::playlist_active].option = "PlaylistActive";
+ colors [ColorSetting::playlist_active].color = KGlobalSettings::linkColor();
+ colors [ColorSetting::console_background].option = "ConsoleBackground";
+ colors [ColorSetting::console_background].color = QColor (0, 0, 0);
+ colors [ColorSetting::console_foreground].title = i18n ("Console foreground");
+ colors [ColorSetting::console_foreground].option = "ConsoleForeground";
+ colors [ColorSetting::console_foreground].color = QColor (0xB2, 0xB2, 0xB2);
+ colors [ColorSetting::video_background].title = i18n ("Video background");
+ colors [ColorSetting::video_background].option = "VideoBackground";
+ colors [ColorSetting::video_background].color = QColor (0, 0, 0);
+ colors [ColorSetting::area_background].title = i18n ("Viewing area background");
+ colors [ColorSetting::area_background].option = "ViewingAreaBackground";
+ colors [ColorSetting::area_background].color = QColor (0, 0, 0);
+ colors [ColorSetting::infowindow_background].title = i18n ("Info window background");
+ colors [ColorSetting::infowindow_background].option ="InfoWindowBackground";
+ colors [ColorSetting::infowindow_background].color = KGlobalSettings::baseColor ();
+ colors [ColorSetting::infowindow_foreground].title = i18n ("Info window foreground");
+ colors [ColorSetting::infowindow_foreground].option ="InfoWindowForeground";
+ colors [ColorSetting::infowindow_foreground].color = KGlobalSettings::textColor();
+ fonts [FontSetting::playlist].title = i18n ("Playlist");
+ fonts [FontSetting::playlist].option = "PlaylistFont";
+ fonts [FontSetting::playlist].font = KGlobalSettings::generalFont();
+ fonts [FontSetting::playlist].font.setItalic (true);
+ fonts [FontSetting::infowindow].title = i18n ("Info window");
+ fonts [FontSetting::infowindow].option = "InfoWindowFont";
+ fonts [FontSetting::infowindow].font = KGlobalSettings::generalFont();
+}
+
+KDE_NO_CDTOR_EXPORT Settings::~Settings () {
+ // configdialog should be destroyed when the view is destroyed
+ //delete configdialog;
+}
+
+KDE_EXPORT const char * strMPlayerGroup = "MPlayer";
+const char * strGeneralGroup = "General Options";
+static const char * strKeepSizeRatio = "Keep Size Ratio";
+static const char * strRememberSize = "Remember Size";
+static const char * strAutoResize = "Auto Resize";
+static const char * strDockSysTray = "Dock in System Tray";
+static const char * strNoIntro = "No Intro";
+static const char * strVolume = "Volume";
+static const char * strContrast = "Contrast";
+static const char * strBrightness = "Brightness";
+static const char * strHue = "Hue";
+static const char * strSaturation = "Saturation";
+static const char * strURLList = "URL List";
+static const char * strSubURLList = "URL Sub Title List";
+static const char * strPrefBitRate = "Prefered Bitrate";
+static const char * strMaxBitRate = "Maximum Bitrate";
+//static const char * strUseArts = "Use aRts";
+static const char * strVoDriver = "Video Driver";
+static const char * strAoDriver = "Audio Driver";
+static const char * strLoop = "Loop";
+static const char * strFrameDrop = "Frame Drop";
+static const char * strAdjustVolume = "Auto Adjust Volume";
+static const char * strAdjustColors = "Auto Adjust Colors";
+static const char * strAddConfigButton = "Add Configure Button";
+static const char * strAddPlaylistButton = "Add Playlist Button";
+static const char * strAddRecordButton = "Add Record Button";
+static const char * strAddBroadcastButton = "Add Broadcast Button";
+static const char * strPostMPlayer090 = "Post MPlayer 0.90";
+//static const char * strAutoHideSlider = "Auto Hide Slider";
+static const char * strSeekTime = "Forward/Backward Seek Time";
+static const char * strDVDDevice = "DVD Device";
+//static const char * strShowDVD = "Show DVD Menu";
+//static const char * strShowVCD = "Show VCD Menu";
+static const char * strVCDDevice = "VCD Device";
+const char * strUrlBackend = "URL Backend";
+static const char * strAllowHref = "Allow HREF";
+// postproc thingies
+static const char * strPPGroup = "Post processing options";
+static const char * strPostProcessing = "Post processing";
+static const char * strDisablePPauto = "Automaticly disable post processing";
+static const char * strPP_Default = "Default preset";
+static const char * strPP_Fast = "Fast preset";
+static const char * strPP_Custom = "Custom preset";
+
+static const char * strCustom_Hz = "Horizontal deblocking";
+static const char * strCustom_Hz_Aq = "Horizontal deblocking auto quality";
+static const char * strCustom_Hz_Ch = "Horizontal deblocking chrominance";
+
+static const char * strCustom_Vt = "Vertical deblocking";
+static const char * strCustom_Vt_Aq = "Vertical deblocking auto quality";
+static const char * strCustom_Vt_Ch = "Vertical deblocking chrominance";
+
+static const char * strCustom_Dr = "Dering filter";
+static const char * strCustom_Dr_Aq = "Dering auto quality";
+static const char * strCustom_Dr_Ch = "Dering chrominance";
+
+static const char * strCustom_Al = "Autolevel";
+static const char * strCustom_Al_F = "Autolevel full range";
+
+static const char * strCustom_Tn = "Temporal Noise Reducer";
+static const char * strCustom_Tn_S = "Temporal Noise Reducer strength";
+
+static const char * strPP_Lin_Blend_Int = "Linear Blend Deinterlacer";
+static const char * strPP_Lin_Int = "Linear Interpolating Deinterlacer";
+static const char * strPP_Cub_Int = "Cubic Interpolating Deinterlacer";
+static const char * strPP_Med_Int = "Median Interpolating Deinterlacer";
+static const char * strPP_FFmpeg_Int = "FFmpeg Interpolating Deinterlacer";
+// end of postproc
+// recording
+static const char * strRecordingGroup = "Recording";
+static const char * strRecorder = "Recorder";
+static const char * strMencoderArgs = "Mencoder Arguments";
+static const char * strFFMpegArgs = "FFMpeg Arguments";
+static const char * strRecordingFile = "Last Recording Ouput File";
+static const char * strAutoPlayAfterRecording = "Auto Play After Recording";
+static const char * strAutoPlayAfterTime = "Auto Play After Recording Time";
+static const char * strRecordingCopy = "Recording Is Copy";
+
+KDE_NO_EXPORT void Settings::applyColorSetting (bool only_changed_ones) {
+ View *view = static_cast <View *> (m_player->view ());
+ if (!view) return;
+ for (int i = 0; i < int (ColorSetting::last_target); i++)
+ if (!only_changed_ones || colors[i].color != colors[i].newcolor) {
+ colors[i].color = colors[i].newcolor;
+ switch (ColorSetting::Target (i)) {
+ case ColorSetting::playlist_background:
+ view->playList()->setPaletteBackgroundColor(colors[i].color);
+ break;
+ case ColorSetting::playlist_foreground:
+ view->playList()->setPaletteForegroundColor(colors[i].color);
+ break;
+ case ColorSetting::playlist_active:
+ view->playList()->setActiveForegroundColor (colors[i].color);
+ break;
+ case ColorSetting::console_background:
+ view->console()->setPaper (QBrush (colors[i].color));
+ break;
+ case ColorSetting::console_foreground:
+ view->console()->setColor(colors[i].color);
+ break;
+ case ColorSetting::video_background:
+ view->viewer ()->setBackgroundColor (colors[i].color);
+ break;
+ case ColorSetting::area_background:
+ view->viewArea()->setPaletteBackgroundColor(colors[i].color);
+ break;
+ case ColorSetting::infowindow_background:
+ view->infoPanel ()->setPaper (QBrush (colors[i].color));
+ break;
+ case ColorSetting::infowindow_foreground:
+ view->infoPanel()->setPaletteForegroundColor(colors[i].color);
+ view->infoPanel ()->setColor (colors[i].color);
+ break;
+ default:
+ ;
+ }
+ }
+ for (int i = 0; i < int (FontSetting::last_target); i++)
+ if (!only_changed_ones || fonts[i].font != fonts[i].newfont) {
+ fonts[i].font = fonts[i].newfont;
+ switch (FontSetting::Target (i)) {
+ case FontSetting::playlist:
+ view->playList ()->setFont (fonts[i].font);
+ break;
+ case FontSetting::infowindow:
+ view->infoPanel ()->setFont (fonts[i].font);
+ break;
+ default:
+ ;
+ }
+ }
+}
+
+View * Settings::defaultView () {
+ return static_cast <View *> (m_player->view ());
+}
+
+KDE_NO_EXPORT void Settings::readConfig () {
+ m_config->setGroup (strGeneralGroup);
+ no_intro = m_config->readBoolEntry (strNoIntro, false);
+ urllist = m_config->readListEntry (strURLList, ';');
+ sub_urllist = m_config->readListEntry (strSubURLList, ';');
+ prefbitrate = m_config->readNumEntry (strPrefBitRate, 512);
+ maxbitrate = m_config->readNumEntry (strMaxBitRate, 1024);
+ volume = m_config->readNumEntry (strVolume, 20);
+ contrast = m_config->readNumEntry (strContrast, 0);
+ brightness = m_config->readNumEntry (strBrightness, 0);
+ hue = m_config->readNumEntry (strHue, 0);
+ saturation = m_config->readNumEntry (strSaturation, 0);
+ const QMap <QString, Source*>::const_iterator e = m_player->sources ().end ();
+ QMap <QString, Source *>::const_iterator i = m_player->sources().begin ();
+ for (; i != e; ++i)
+ backends[i.data()->name ()] = m_config->readEntry (i.data()->name ());
+ for (int i = 0; i < int (ColorSetting::last_target); i++)
+ colors[i].newcolor = colors[i].color = m_config->readColorEntry (colors[i].option, &colors[i].color);
+ for (int i = 0; i < int (FontSetting::last_target); i++)
+ fonts[i].newfont = fonts[i].font = m_config->readFontEntry (fonts[i].option, &fonts[i].font);
+
+ m_config->setGroup (strMPlayerGroup);
+ sizeratio = m_config->readBoolEntry (strKeepSizeRatio, true);
+ remembersize = m_config->readBoolEntry (strRememberSize, true);
+ autoresize = m_config->readBoolEntry (strAutoResize, true);
+ docksystray = m_config->readBoolEntry (strDockSysTray, true);
+ loop = m_config->readBoolEntry (strLoop, false);
+ framedrop = m_config->readBoolEntry (strFrameDrop, true);
+ autoadjustvolume = m_config->readBoolEntry (strAdjustVolume, true);
+ autoadjustcolors = m_config->readBoolEntry (strAdjustColors, true);
+ mplayerpost090 = m_config->readBoolEntry (strPostMPlayer090, true);
+ showcnfbutton = m_config->readBoolEntry (strAddConfigButton, true);
+ showrecordbutton = m_config->readBoolEntry (strAddRecordButton, true);
+ showbroadcastbutton = m_config->readBoolEntry (strAddBroadcastButton, true);
+ showplaylistbutton = m_config->readBoolEntry (strAddPlaylistButton, true);
+ seektime = m_config->readNumEntry (strSeekTime, 10);
+ dvddevice = m_config->readEntry (strDVDDevice, "/dev/dvd");
+ vcddevice = m_config->readEntry (strVCDDevice, "/dev/cdrom");
+ videodriver = m_config->readNumEntry (strVoDriver, 0);
+ audiodriver = m_config->readNumEntry (strAoDriver, 0);
+ allowhref = m_config->readBoolEntry(strAllowHref, false);
+
+ // recording
+ m_config->setGroup (strRecordingGroup);
+ mencoderarguments = m_config->readEntry (strMencoderArgs, "-oac mp3lame -ovc lavc");
+ ffmpegarguments = m_config->readEntry (strFFMpegArgs, "-f avi -acodec mp3 -vcodec mpeg4");
+ recordfile = m_config->readPathEntry(strRecordingFile, QDir::homeDirPath () + "/record.avi");
+ recorder = Recorder (m_config->readNumEntry (strRecorder, int (MEncoder)));
+ replayoption = ReplayOption (m_config->readNumEntry (strAutoPlayAfterRecording, ReplayFinished));
+ replaytime = m_config->readNumEntry (strAutoPlayAfterTime, 60);
+ recordcopy = m_config->readBoolEntry(strRecordingCopy, true);
+
+ // postproc
+ m_config->setGroup (strPPGroup);
+ postprocessing = m_config->readBoolEntry (strPostProcessing, false);
+ disableppauto = m_config->readBoolEntry (strDisablePPauto, true);
+
+ pp_default = m_config->readBoolEntry (strPP_Default, true);
+ pp_fast = m_config->readBoolEntry (strPP_Fast, false);
+ pp_custom = m_config->readBoolEntry (strPP_Custom, false);
+ // default these to default preset
+ pp_custom_hz = m_config->readBoolEntry (strCustom_Hz, true);
+ pp_custom_hz_aq = m_config->readBoolEntry (strCustom_Hz_Aq, true);
+ pp_custom_hz_ch = m_config->readBoolEntry (strCustom_Hz_Ch, false);
+
+ pp_custom_vt = m_config->readBoolEntry (strCustom_Vt, true);
+ pp_custom_vt_aq = m_config->readBoolEntry (strCustom_Vt_Aq, true);
+ pp_custom_vt_ch = m_config->readBoolEntry (strCustom_Vt_Ch, false);
+
+ pp_custom_dr = m_config->readBoolEntry (strCustom_Dr, true);
+ pp_custom_dr_aq = m_config->readBoolEntry (strCustom_Dr_Aq, true);
+ pp_custom_dr_ch = m_config->readBoolEntry (strCustom_Dr_Ch, false);
+
+ pp_custom_al = m_config->readBoolEntry (strCustom_Al, true);
+ pp_custom_al_f = m_config->readBoolEntry (strCustom_Al_F, false);
+
+ pp_custom_tn = m_config->readBoolEntry (strCustom_Tn, true);
+ pp_custom_tn_s = m_config->readNumEntry (strCustom_Tn_S, 0);
+
+ pp_lin_blend_int = m_config->readBoolEntry (strPP_Lin_Blend_Int, false);
+ pp_lin_int = m_config->readBoolEntry (strPP_Lin_Int, false);
+ pp_cub_int = m_config->readBoolEntry (strPP_Cub_Int, false);
+ pp_med_int = m_config->readBoolEntry (strPP_Med_Int, false);
+ pp_ffmpeg_int = m_config->readBoolEntry (strPP_FFmpeg_Int, false);
+
+ for (PreferencesPage * p = pagelist; p; p = p->next)
+ p->read (m_config);
+ emit configChanged ();
+}
+
+KDE_NO_EXPORT bool Settings::createDialog () {
+ if (configdialog) return false;
+ configdialog = new Preferences (m_player, this);
+ int id = 0;
+ const PartBase::ProcessMap::const_iterator e = m_player->players ().end ();
+ for (PartBase::ProcessMap::const_iterator i = m_player->players ().begin(); i != e; ++i) {
+ Process * p = i.data ();
+ if (p->supports ("urlsource"))
+ configdialog->m_SourcePageURL->backend->insertItem (p->menuName ().remove (QChar ('&')), id++);
+ }
+ connect (configdialog, SIGNAL (okClicked ()),
+ this, SLOT (okPressed ()));
+ connect (configdialog, SIGNAL (applyClicked ()),
+ this, SLOT (okPressed ()));
+ if (KApplication::kApplication())
+ connect (configdialog, SIGNAL (helpClicked ()),
+ this, SLOT (getHelp ()));
+ return true;
+}
+
+void Settings::addPage (PreferencesPage * page) {
+ for (PreferencesPage * p = pagelist; p; p = p->next)
+ if (p == page)
+ return;
+ page->read (m_config);
+ if (configdialog) {
+ configdialog->addPrefPage (page);
+ page->sync (false);
+ }
+ page->next = pagelist;
+ pagelist = page;
+}
+
+void Settings::removePage (PreferencesPage * page) {
+ if (configdialog)
+ configdialog->removePrefPage (page);
+ PreferencesPage * prev = 0L;
+ for (PreferencesPage * p = pagelist; p; prev = p, p = p->next)
+ if (p == page) {
+ if (prev)
+ prev->next = p->next;
+ else
+ pagelist = p->next;
+ break;
+ }
+}
+
+void Settings::show (const char * pagename) {
+ bool created = createDialog ();
+ configdialog->m_GeneralPageGeneral->keepSizeRatio->setChecked (sizeratio);
+ configdialog->m_GeneralPageGeneral->autoResize->setChecked (autoresize);
+ configdialog->m_GeneralPageGeneral->sizesChoice->setButton (remembersize ? 0 : 1);
+ configdialog->m_GeneralPageGeneral->dockSysTray->setChecked (docksystray);
+ configdialog->m_GeneralPageGeneral->loop->setChecked (loop);
+ configdialog->m_GeneralPageGeneral->framedrop->setChecked (framedrop);
+ configdialog->m_GeneralPageGeneral->adjustvolume->setChecked (autoadjustvolume);
+ configdialog->m_GeneralPageGeneral->adjustcolors->setChecked (autoadjustcolors);
+ //configdialog->m_GeneralPageGeneral->autoHideSlider->setChecked (autohideslider);
+ configdialog->m_GeneralPageGeneral->showConfigButton->setChecked (showcnfbutton);
+ configdialog->m_GeneralPageGeneral->showPlaylistButton->setChecked (showplaylistbutton);
+ configdialog->m_GeneralPageGeneral->showRecordButton->setChecked (showrecordbutton);
+ configdialog->m_GeneralPageGeneral->showBroadcastButton->setChecked (showbroadcastbutton);
+ configdialog->m_GeneralPageGeneral->seekTime->setValue(seektime);
+ for (int i = 0; i < int (ColorSetting::last_target); i++)
+ colors[i].newcolor = colors[i].color;
+ for (int i = 0; i < int (FontSetting::last_target); i++)
+ fonts[i].newfont = fonts[i].font;
+ configdialog->m_SourcePageURL->urllist->clear ();
+ configdialog->m_SourcePageURL->urllist->insertStringList (urllist);
+ configdialog->m_SourcePageURL->urllist->setCurrentText (m_player->source ()->url ().prettyURL ());
+ configdialog->m_SourcePageURL->sub_urllist->clear ();
+ configdialog->m_SourcePageURL->sub_urllist->insertStringList (sub_urllist);
+ configdialog->m_SourcePageURL->sub_urllist->setCurrentText (m_player->source ()->subUrl ().prettyURL ());
+ configdialog->m_SourcePageURL->changed = false;
+ configdialog->m_SourcePageURL->prefBitRate->setText (QString::number (prefbitrate));
+ configdialog->m_SourcePageURL->maxBitRate->setText (QString::number (maxbitrate));
+
+ configdialog->m_GeneralPageOutput->videoDriver->setCurrentItem (videodriver);
+ configdialog->m_GeneralPageOutput->audioDriver->setCurrentItem (audiodriver);
+ configdialog->m_SourcePageURL->backend->setCurrentItem (configdialog->m_SourcePageURL->backend->findItem (backends["urlsource"]));
+ int id = 0;
+ const PartBase::ProcessMap::const_iterator e = m_player->players ().end ();
+ for (PartBase::ProcessMap::const_iterator i = m_player->players ().begin(); i != e; ++i) {
+ Process * p = i.data ();
+ if (p->supports ("urlsource")) {
+ if (backends["urlsource"] == QString (p->name()))
+ configdialog->m_SourcePageURL->backend->setCurrentItem (id);
+ id++;
+ }
+ }
+ configdialog->m_SourcePageURL->allowhref->setChecked (allowhref);
+
+ // postproc
+ configdialog->m_OPPagePostproc->postProcessing->setChecked (postprocessing);
+ configdialog->m_OPPagePostproc->disablePPauto->setChecked (disableppauto);
+ configdialog->m_OPPagePostproc->PostprocessingOptions->setEnabled (postprocessing);
+
+ configdialog->m_OPPagePostproc->defaultPreset->setChecked (pp_default);
+ configdialog->m_OPPagePostproc->fastPreset->setChecked (pp_fast);
+ configdialog->m_OPPagePostproc->customPreset->setChecked (pp_custom);
+
+ configdialog->m_OPPagePostproc->HzDeblockFilter->setChecked (pp_custom_hz);
+ configdialog->m_OPPagePostproc->HzDeblockAQuality->setChecked (pp_custom_hz_aq);
+ configdialog->m_OPPagePostproc->HzDeblockCFiltering->setChecked (pp_custom_hz_ch);
+
+ configdialog->m_OPPagePostproc->VtDeblockFilter->setChecked (pp_custom_vt);
+ configdialog->m_OPPagePostproc->VtDeblockAQuality->setChecked (pp_custom_vt_aq);
+ configdialog->m_OPPagePostproc->VtDeblockCFiltering->setChecked (pp_custom_vt_ch);
+
+ configdialog->m_OPPagePostproc->DeringFilter->setChecked (pp_custom_dr);
+ configdialog->m_OPPagePostproc->DeringAQuality->setChecked (pp_custom_dr_aq);
+ configdialog->m_OPPagePostproc->DeringCFiltering->setChecked (pp_custom_dr_ch);
+
+ configdialog->m_OPPagePostproc->AutolevelsFilter->setChecked (pp_custom_al);
+ configdialog->m_OPPagePostproc->AutolevelsFullrange->setChecked (pp_custom_al_f);
+ configdialog->m_OPPagePostproc->TmpNoiseFilter->setChecked (pp_custom_tn);
+ //configdialog->m_OPPagePostproc->TmpNoiseSlider->setValue (pp_custom_tn_s);
+
+ configdialog->m_OPPagePostproc->LinBlendDeinterlacer->setChecked (pp_lin_blend_int);
+ configdialog->m_OPPagePostproc->LinIntDeinterlacer->setChecked (pp_lin_int);
+ configdialog->m_OPPagePostproc->CubicIntDeinterlacer->setChecked (pp_cub_int);
+ configdialog->m_OPPagePostproc->MedianDeinterlacer->setChecked (pp_med_int);
+ configdialog->m_OPPagePostproc->FfmpegDeinterlacer->setChecked (pp_ffmpeg_int);
+ // recording
+ configdialog->m_RecordPage->url->lineEdit()->setText (recordfile);
+ configdialog->m_RecordPage->replay->setButton (int (replayoption));
+ configdialog->m_RecordPage->recorder->setButton (int (recorder));
+ configdialog->m_RecordPage->replayClicked (int (replayoption));
+ configdialog->m_RecordPage->recorderClicked (int (recorder));
+ configdialog->m_RecordPage->replaytime->setText (QString::number (replaytime));
+ configdialog->m_MEncoderPage->arguments->setText (mencoderarguments);
+ configdialog->m_MEncoderPage->format->setButton (recordcopy ? 0 : 1);
+ configdialog->m_MEncoderPage->formatClicked (recordcopy ? 0 : 1);
+ configdialog->m_FFMpegPage->arguments->setText (ffmpegarguments);
+
+ //dynamic stuff
+ for (PreferencesPage * p = pagelist; p; p = p->next)
+ p->sync (false);
+ //\dynamic stuff
+ if (pagename)
+ configDialog ()->setPage (pagename);
+ if (created)
+ configdialog->resize (configdialog->minimumSize ());
+ configdialog->show ();
+}
+
+void Settings::writeConfig () {
+ m_config->setGroup (strGeneralGroup);
+ m_config->writeEntry (strURLList, urllist, ';');
+ m_config->writeEntry (strSubURLList, sub_urllist, ';');
+ m_config->writeEntry (strPrefBitRate, prefbitrate);
+ m_config->writeEntry (strMaxBitRate, maxbitrate);
+ m_config->writeEntry (strVolume, volume);
+ m_config->writeEntry (strContrast, contrast);
+ m_config->writeEntry (strBrightness, brightness);
+ m_config->writeEntry (strHue, hue);
+ m_config->writeEntry (strSaturation, saturation);
+ const QMap<QString,QString>::iterator b_end = backends.end ();
+ for (QMap<QString,QString>::iterator i = backends.begin(); i != b_end; ++i)
+ m_config->writeEntry (i.key (), i.data ());
+ for (int i = 0; i < int (ColorSetting::last_target); i++)
+ m_config->writeEntry (colors[i].option, colors[i].color);
+ for (int i = 0; i < int (FontSetting::last_target); i++)
+ m_config->writeEntry (fonts[i].option, fonts[i].font);
+ m_config->setGroup (strMPlayerGroup);
+ m_config->writeEntry (strKeepSizeRatio, sizeratio);
+ m_config->writeEntry (strAutoResize, autoresize);
+ m_config->writeEntry (strRememberSize, remembersize);
+ m_config->writeEntry (strDockSysTray, docksystray);
+ m_config->writeEntry (strLoop, loop);
+ m_config->writeEntry (strFrameDrop, framedrop);
+ m_config->writeEntry (strAdjustVolume, autoadjustvolume);
+ m_config->writeEntry (strAdjustColors, autoadjustcolors);
+ m_config->writeEntry (strSeekTime, seektime);
+ m_config->writeEntry (strVoDriver, videodriver);
+ m_config->writeEntry (strAoDriver, audiodriver);
+ m_config->writeEntry (strAllowHref, allowhref);
+ m_config->writeEntry (strAddConfigButton, showcnfbutton);
+ m_config->writeEntry (strAddPlaylistButton, showplaylistbutton);
+ m_config->writeEntry (strAddRecordButton, showrecordbutton);
+ m_config->writeEntry (strAddBroadcastButton, showbroadcastbutton);
+
+ m_config->writeEntry (strDVDDevice, dvddevice);
+ m_config->writeEntry (strVCDDevice, vcddevice);
+
+ //postprocessing stuff
+ m_config->setGroup (strPPGroup);
+ m_config->writeEntry (strPostProcessing, postprocessing);
+ m_config->writeEntry (strDisablePPauto, disableppauto);
+ m_config->writeEntry (strPP_Default, pp_default);
+ m_config->writeEntry (strPP_Fast, pp_fast);
+ m_config->writeEntry (strPP_Custom, pp_custom);
+
+ m_config->writeEntry (strCustom_Hz, pp_custom_hz);
+ m_config->writeEntry (strCustom_Hz_Aq, pp_custom_hz_aq);
+ m_config->writeEntry (strCustom_Hz_Ch, pp_custom_hz_ch);
+
+ m_config->writeEntry (strCustom_Vt, pp_custom_vt);
+ m_config->writeEntry (strCustom_Vt_Aq, pp_custom_vt_aq);
+ m_config->writeEntry (strCustom_Vt_Ch, pp_custom_vt_ch);
+
+ m_config->writeEntry (strCustom_Dr, pp_custom_dr);
+ m_config->writeEntry (strCustom_Dr_Aq, pp_custom_vt_aq);
+ m_config->writeEntry (strCustom_Dr_Ch, pp_custom_vt_ch);
+
+ m_config->writeEntry (strCustom_Al, pp_custom_al);
+ m_config->writeEntry (strCustom_Al_F, pp_custom_al_f);
+
+ m_config->writeEntry (strCustom_Tn, pp_custom_tn);
+ m_config->writeEntry (strCustom_Tn_S, pp_custom_tn_s);
+
+ m_config->writeEntry (strPP_Lin_Blend_Int, pp_lin_blend_int);
+ m_config->writeEntry (strPP_Lin_Int, pp_lin_int);
+ m_config->writeEntry (strPP_Cub_Int, pp_cub_int);
+ m_config->writeEntry (strPP_Med_Int, pp_med_int);
+ m_config->writeEntry (strPP_FFmpeg_Int, pp_ffmpeg_int);
+
+ // recording
+ m_config->setGroup (strRecordingGroup);
+ m_config->writePathEntry (strRecordingFile, recordfile);
+ m_config->writeEntry (strAutoPlayAfterRecording, int (replayoption));
+ m_config->writeEntry (strAutoPlayAfterTime, replaytime);
+ m_config->writeEntry (strRecorder, int (recorder));
+ m_config->writeEntry (strRecordingCopy, recordcopy);
+ m_config->writeEntry (strMencoderArgs, mencoderarguments);
+ m_config->writeEntry (strFFMpegArgs, ffmpegarguments);
+
+ //dynamic stuff
+ for (PreferencesPage * p = pagelist; p; p = p->next)
+ p->write (m_config);
+ //\dynamic stuff
+ m_config->sync ();
+}
+
+void Settings::okPressed () {
+ bool urlchanged = configdialog->m_SourcePageURL->changed;
+ bool playerchanged = false;
+ if (urlchanged) {
+ if (configdialog->m_SourcePageURL->url->url ().isEmpty ())
+ urlchanged = false;
+ else {
+ if (KURL::fromPathOrURL (configdialog->m_SourcePageURL->url->url ()).isLocalFile () ||
+ KURL::isRelativeURL (configdialog->m_SourcePageURL->url->url ())) {
+ QFileInfo fi (configdialog->m_SourcePageURL->url->url ());
+ int hpos = configdialog->m_SourcePageURL->url->url ().findRev ('#');
+ QString xine_directives ("");
+ while (!fi.exists () && hpos > -1) {
+ xine_directives = configdialog->m_SourcePageURL->url->url ().mid (hpos);
+ fi.setFile (configdialog->m_SourcePageURL->url->url ().left (hpos));
+ hpos = configdialog->m_SourcePageURL->url->url ().findRev ('#', hpos-1);
+ }
+ if (!fi.exists ()) {
+ urlchanged = false;
+ KMessageBox::error (m_player->view (), i18n ("File %1 does not exist.").arg (configdialog->m_SourcePageURL->url->url ()), i18n ("Error"));
+ } else
+ configdialog->m_SourcePageURL->url->setURL (fi.absFilePath () + xine_directives);
+ }
+ if (urlchanged &&
+ !configdialog->m_SourcePageURL->sub_url->url ().isEmpty () &&
+ (KURL::fromPathOrURL (configdialog->m_SourcePageURL->sub_url->url ()).isLocalFile () ||
+ KURL::isRelativeURL (configdialog->m_SourcePageURL->sub_url->url ()))) {
+ QFileInfo sfi (configdialog->m_SourcePageURL->sub_url->url ());
+ if (!sfi.exists ()) {
+ KMessageBox::error (m_player->view (), i18n ("Sub title file %1 does not exist.").arg (configdialog->m_SourcePageURL->sub_url->url ()), i18n ("Error"));
+ configdialog->m_SourcePageURL->sub_url->setURL (QString ());
+ } else
+ configdialog->m_SourcePageURL->sub_url->setURL (sfi.absFilePath ());
+ }
+ }
+ }
+ if (urlchanged) {
+ KURL url = KURL::fromPathOrURL (configdialog->m_SourcePageURL->url->url ());
+ m_player->setURL (url);
+ if (urllist.find (url.prettyURL ()) == urllist.end ())
+ configdialog->m_SourcePageURL->urllist->insertItem (url.prettyURL (), 0);
+ KURL sub_url = KURL::fromPathOrURL (configdialog->m_SourcePageURL->sub_url->url ());
+ if (sub_urllist.find (sub_url.prettyURL ()) == sub_urllist.end ())
+ configdialog->m_SourcePageURL->sub_urllist->insertItem (sub_url.prettyURL (), 0);
+ }
+ urllist.clear ();
+ for (int i = 0; i < configdialog->m_SourcePageURL->urllist->count () && i < 20; ++i)
+ // damnit why don't maxCount and setDuplicatesEnabled(false) work :(
+ // and why can I put a qstringlist in it, but cannot get it out of it again..
+ if (!configdialog->m_SourcePageURL->urllist->text (i).isEmpty ())
+ urllist.push_back (configdialog->m_SourcePageURL->urllist->text (i));
+ sub_urllist.clear ();
+ for (int i = 0; i < configdialog->m_SourcePageURL->sub_urllist->count () && i < 20; ++i)
+ if (!configdialog->m_SourcePageURL->sub_urllist->text (i).isEmpty ())
+ sub_urllist.push_back (configdialog->m_SourcePageURL->sub_urllist->text (i));
+ prefbitrate = configdialog->m_SourcePageURL->prefBitRate->text ().toInt ();
+ maxbitrate = configdialog->m_SourcePageURL->maxBitRate->text ().toInt ();
+ sizeratio = configdialog->m_GeneralPageGeneral->keepSizeRatio->isChecked ();
+ autoresize = configdialog->m_GeneralPageGeneral->autoResize->isChecked ();
+ remembersize=!configdialog->m_GeneralPageGeneral->sizesChoice->selectedId();
+ docksystray = configdialog->m_GeneralPageGeneral->dockSysTray->isChecked ();
+ loop = configdialog->m_GeneralPageGeneral->loop->isChecked ();
+ framedrop = configdialog->m_GeneralPageGeneral->framedrop->isChecked ();
+ autoadjustvolume = configdialog->m_GeneralPageGeneral->adjustvolume->isChecked ();
+ autoadjustcolors = configdialog->m_GeneralPageGeneral->adjustcolors->isChecked ();
+ showcnfbutton = configdialog->m_GeneralPageGeneral->showConfigButton->isChecked ();
+ showplaylistbutton = configdialog->m_GeneralPageGeneral->showPlaylistButton->isChecked ();
+ showrecordbutton = configdialog->m_GeneralPageGeneral->showRecordButton->isChecked ();
+ showbroadcastbutton = configdialog->m_GeneralPageGeneral->showBroadcastButton->isChecked ();
+ seektime = configdialog->m_GeneralPageGeneral->seekTime->value();
+
+ videodriver = configdialog->m_GeneralPageOutput->videoDriver->currentItem();
+ audiodriver = configdialog->m_GeneralPageOutput->audioDriver->currentItem();
+ if (!strcmp (m_player->source()->name (), "urlsource")) {
+ int backend = configdialog->m_SourcePageURL->backend->currentItem ();
+ const PartBase::ProcessMap::const_iterator e = m_player->players ().end();
+ for (PartBase::ProcessMap::const_iterator i = m_player->players ().begin(); backend >=0 && i != e; ++i) {
+ Process * proc = i.data ();
+ if (proc->supports ("urlsource") && backend-- == 0) {
+ backends["urlsource"] = proc->name ();
+ if (proc != m_player->process ()) {
+ m_player->setProcess (proc->name ());
+ playerchanged = true;
+ }
+ }
+ }
+ }
+ allowhref = configdialog->m_SourcePageURL->allowhref->isChecked ();
+ //postproc
+ postprocessing = configdialog->m_OPPagePostproc->postProcessing->isChecked();
+ disableppauto = configdialog->m_OPPagePostproc->disablePPauto->isChecked();
+ pp_default = configdialog->m_OPPagePostproc->defaultPreset->isChecked();
+ pp_fast = configdialog->m_OPPagePostproc->fastPreset->isChecked();
+ pp_custom = configdialog->m_OPPagePostproc->customPreset->isChecked();
+
+ pp_custom_hz = configdialog->m_OPPagePostproc->HzDeblockFilter->isChecked();
+ pp_custom_hz_aq = configdialog->m_OPPagePostproc->HzDeblockAQuality->isChecked();
+ pp_custom_hz_ch = configdialog->m_OPPagePostproc->HzDeblockCFiltering->isChecked();
+
+ pp_custom_vt = configdialog->m_OPPagePostproc->VtDeblockFilter->isChecked();
+ pp_custom_vt_aq = configdialog->m_OPPagePostproc->VtDeblockAQuality->isChecked();
+ pp_custom_vt_ch = configdialog->m_OPPagePostproc->VtDeblockCFiltering->isChecked();
+
+ pp_custom_dr = configdialog->m_OPPagePostproc->DeringFilter->isChecked();
+ pp_custom_dr_aq = configdialog->m_OPPagePostproc->DeringAQuality->isChecked();
+ pp_custom_dr_ch = configdialog->m_OPPagePostproc->DeringCFiltering->isChecked();
+
+ pp_custom_al = configdialog->m_OPPagePostproc->AutolevelsFilter->isChecked();
+ pp_custom_al_f = configdialog->m_OPPagePostproc->AutolevelsFullrange->isChecked();
+
+ pp_custom_tn = configdialog->m_OPPagePostproc->TmpNoiseFilter->isChecked();
+ pp_custom_tn_s = 0; // gotta fix this later
+ //pp_custom_tn_s = configdialog->m_OPPagePostproc->TmpNoiseSlider->value();
+
+ pp_lin_blend_int = configdialog->m_OPPagePostproc->LinBlendDeinterlacer->isChecked();
+ pp_lin_int = configdialog->m_OPPagePostproc->LinIntDeinterlacer->isChecked();
+ pp_cub_int = configdialog->m_OPPagePostproc->CubicIntDeinterlacer->isChecked();
+ pp_med_int = configdialog->m_OPPagePostproc->MedianDeinterlacer->isChecked();
+ pp_ffmpeg_int = configdialog->m_OPPagePostproc->FfmpegDeinterlacer->isChecked();
+ // recording
+#if (QT_VERSION < 0x030200)
+ recorder = Recorder (configdialog->m_RecordPage->recorder->id (configdialog->m_RecordPage->recorder->selected ()));
+#else
+ recorder = Recorder (configdialog->m_RecordPage->recorder->selectedId ());
+#endif
+ replaytime = configdialog->m_RecordPage->replaytime->text ().toInt ();
+ configdialog->m_RecordPage->replaytime->setText (QString::number (replaytime));
+ recordfile = configdialog->m_RecordPage->url->lineEdit()->text ();
+ mencoderarguments = configdialog->m_MEncoderPage->arguments->text ();
+ ffmpegarguments = configdialog->m_FFMpegPage->arguments->text ();
+#if (QT_VERSION < 0x030200)
+ recordcopy = !configdialog->m_MEncoderPage->format->id (configdialog->m_MEncoderPage->format->selected ());
+#else
+ recordcopy = !configdialog->m_MEncoderPage->format->selectedId ();
+#endif
+
+ //dynamic stuff
+ for (PreferencesPage * p = pagelist; p; p = p->next)
+ p->sync (true);
+ //\dynamic stuff
+
+ writeConfig ();
+ emit configChanged ();
+
+ if (urlchanged || playerchanged) {
+ m_player->sources () ["urlsource"]->setSubURL
+ (KURL(configdialog->m_SourcePageURL->sub_url->url()));
+ m_player->openURL (KURL::fromPathOrURL (configdialog->m_SourcePageURL->url->url ()));
+ m_player->source ()->setSubURL (KURL::fromPathOrURL (configdialog->m_SourcePageURL->sub_url->url ()));
+ }
+}
+
+KDE_NO_EXPORT void Settings::getHelp () {
+ KApplication::kApplication()->invokeBrowser ("man:/mplayer");
+}
+
+#include "kmplayerconfig.moc"
+