aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg/settingsdialog.cpp
Commit message (Collapse)AuthorAgeFilesLines
* added libav-10 supporttrialuser022014-02-211-1/+28
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4112 90c681e8-e032-0410-971d-27865f9a5e38
* ffmpeg plugin: enabled more formats by default, updated linguist filestrialuser022013-02-121-2/+1
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3234 90c681e8-e032-0410-971d-27865f9a5e38
* ffmpeg plugin: cleanuptrialuser022013-02-121-2/+0
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3232 90c681e8-e032-0410-971d-27865f9a5e38
* removed legacy code from ffmpeg plugintrialuser022013-02-101-8/+1
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3218 90c681e8-e032-0410-971d-27865f9a5e38
* fixed FSF headerstrialuser022012-07-311-1/+1
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2845 90c681e8-e032-0410-971d-27865f9a5e38
* fixed FSF address (trunk)trialuser022012-07-311-1/+1
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2844 90c681e8-e032-0410-971d-27865f9a5e38
* legacy ffmpeg supporttrialuser022012-01-171-1/+7
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2539 90c681e8-e032-0410-971d-27865f9a5e38
* ffmpeg plugin: latest api support (Closes issue 512)trialuser022011-12-171-1/+0
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2535 90c681e8-e032-0410-971d-27865f9a5e38
* added vqf supporttrialuser022011-12-011-1/+4
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2529 90c681e8-e032-0410-971d-27865f9a5e38
* ffmpeg plugin: ffmpeg 0.8.x support, removed previous versions supporttrialuser022011-12-011-4/+2
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2528 90c681e8-e032-0410-971d-27865f9a5e38
* fixed buildtrialuser022011-08-281-0/+4
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2318 90c681e8-e032-0410-971d-27865f9a5e38
* EAC3, DTS, and Dolby TrueHD support (patch by Makis Kalofolias)trialuser022011-08-151-2/+10
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2303 90c681e8-e032-0410-971d-27865f9a5e38
* fixed alac support (Closes issue 472)trialuser022011-05-121-5/+2
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2188 90c681e8-e032-0410-971d-27865f9a5e38
* removed unused codetrialuser022011-04-251-1/+1
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2172 90c681e8-e032-0410-971d-27865f9a5e38
* ac3 supporttrialuser022011-04-251-0/+3
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2169 90c681e8-e032-0410-971d-27865f9a5e38
* added latest ffmpeg support, fixed bug with ape seeking, removed legacytrialuser022011-04-151-31/+2
| | | | | | | code git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2162 90c681e8-e032-0410-971d-27865f9a5e38
* added shorten audio formattrialuser022010-05-111-3/+12
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1731 90c681e8-e032-0410-971d-27865f9a5e38
* reapplied previous patchtrialuser022010-03-111-2/+2
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1620 90c681e8-e032-0410-971d-27865f9a5e38
* fixed ffmpeg plugin bugstrialuser022009-05-031-0/+7
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@929 90c681e8-e032-0410-971d-27865f9a5e38
* fixed ffmpeg regressiontrialuser022009-03-061-25/+8
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@824 90c681e8-e032-0410-971d-27865f9a5e38
* old ffmpeg support (Sergey Dryabzhinsky)trialuser022009-03-011-0/+23
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@814 90c681e8-e032-0410-971d-27865f9a5e38
* mp3 support by ffmpeg plugin (Csaba Hrushka)trialuser022009-01-161-0/+4
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@747 90c681e8-e032-0410-971d-27865f9a5e38
* global config file pathtrialuser022008-12-241-3/+4
| | | | git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@702 90c681e8-e032-0410-971d-27865f9a5e38
* more ffmpeg formats support (including ape); ffmpeg plugin settingstrialuser022008-12-191-0/+95
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@692 90c681e8-e032-0410-971d-27865f9a5e38
GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include <QtGui> #include <QFileDialog> #include <QDir> #include <QAction> #include <QMenu> #include <math.h> #include <qmmp/soundcore.h> #include <qmmp/visual.h> #include <qmmp/metadatamanager.h> #include <qmmpui/uihelper.h> #include <qmmpui/general.h> #include <qmmpui/playlistparser.h> #include <qmmpui/playlistformat.h> #include <qmmpui/commandlinemanager.h> #include <qmmpui/filedialog.h> #include <qmmpui/playlistmodel.h> #include <qmmpui/playlistmanager.h> #include <qmmpui/mediaplayer.h> #include <qmmpui/configdialog.h> #include <qmmpui/qmmpuisettings.h> #include "hotkeyeditor.h" #include "skinnedsettings.h" #include "mainwindow.h" #include "skin.h" #include "playlist.h" #include "dock.h" #include "eqwidget.h" #include "mainvisual.h" #include "listwidget.h" #include "visualmenu.h" #include "windowsystem.h" #include "actionmanager.h" #define KEY_OFFSET 10000 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { #ifdef Q_WS_X11 qDebug("MainWindow: detected wm: %s", qPrintable(WindowSystem::netWindowManagerName())); #endif m_vis = 0; m_update = false; setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint); setWindowTitle("Qmmp"); new ActionManager(this); m_player = MediaPlayer::instance(); m_core = SoundCore::instance(); m_pl_manager = PlayListManager::instance(); m_uiHelper = UiHelper::instance(); m_ui_settings = QmmpUiSettings::instance(); //user interface m_skin = new Skin(this); resize(275 * m_skin->ratio(),116 * m_skin->ratio()); Dock *dock = new Dock(this); dock->setMainWidget(this); m_display = new MainDisplay(this); setCentralWidget(m_display); m_display->setFocus (); m_playlist = new PlayList(m_pl_manager, this); dock->addWidget(m_playlist); m_equalizer = new EqWidget(this); dock->addWidget(m_equalizer); createActions(); //prepare visualization Visual::initialize(this, m_visMenu, SLOT(updateActions())); m_vis = MainVisual::instance(); Visual::add(m_vis); //connections connect (m_playlist,SIGNAL(next()),SLOT(next())); connect (m_playlist,SIGNAL(prev()),SLOT(previous())); connect (m_playlist,SIGNAL(play()),SLOT(play())); connect (m_playlist,SIGNAL(pause()), m_core ,SLOT(pause())); connect (m_playlist,SIGNAL(stop()),SLOT(stop())); connect (m_playlist,SIGNAL(eject()),SLOT(playFiles())); connect (m_playlist,SIGNAL(loadPlaylist()),SLOT(loadPlaylist())); connect (m_playlist,SIGNAL(savePlaylist()),SLOT(savePlaylist())); connect(m_display,SIGNAL(shuffleToggled(bool)),m_ui_settings,SLOT(setShuffle(bool))); connect(m_display,SIGNAL(repeatableToggled(bool)),m_ui_settings,SLOT(setRepeatableList(bool))); connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(showState(Qmmp::State))); connect(m_core, SIGNAL(elapsedChanged(qint64)),m_playlist, SLOT(setTime(qint64))); connect(m_core, SIGNAL(metaDataChanged()),SLOT(showMetaData())); connect(m_uiHelper, SIGNAL(toggleVisibilityCalled()), SLOT(toggleVisibility())); connect(m_uiHelper, SIGNAL(showMainWindowCalled()), SLOT(showAndRaise())); readSettings(); m_display->setEQ(m_equalizer); m_display->setPL(m_playlist); dock->updateDock(); m_pl_manager->currentPlayList()->doCurrentVisibleRequest(); if (m_startHidden && m_uiHelper->visibilityControl()) toggleVisibility(); } MainWindow::~MainWindow() {} void MainWindow::play() { m_player->play(); } void MainWindow::replay() { stop(); m_pl_manager->activatePlayList(m_pl_manager->selectedPlayList()); play(); } void MainWindow::forward() { m_core->seek(m_core->elapsed() + KEY_OFFSET); } void MainWindow::backward() { m_core->seek(qMax(qint64(0), m_core->elapsed() - KEY_OFFSET)); } void MainWindow::pause(void) { m_core->pause(); } void MainWindow::stop() { m_player->stop(); } void MainWindow::next() { m_player->next(); } void MainWindow::previous() { m_player->previous(); } void MainWindow::showState(Qmmp::State state) { switch ((int) state) { case Qmmp::Playing: if (m_pl_manager->currentPlayList()->currentTrack()) m_equalizer->loadPreset(m_pl_manager->currentPlayList()->currentTrack()->url().section("/",-1)); break; case Qmmp::Paused: break; case Qmmp::Stopped: m_playlist->setTime(-1); if (m_pl_manager->currentPlayList()->currentTrack()) setWindowTitle(m_pl_manager->currentPlayList()->currentTrack()->formattedTitle()); else setWindowTitle("Qmmp"); break; } } void MainWindow::showMetaData() { PlayListTrack *track = m_pl_manager->currentPlayList()->currentTrack(); if (track && track->url() == m_core->metaData().value(Qmmp::URL)) { setWindowTitle(track->formattedTitle()); } } void MainWindow::closeEvent (QCloseEvent *) { writeSettings(); m_playlist->close(); m_equalizer->close(); if (!m_hideOnClose || !m_uiHelper->visibilityControl()) m_uiHelper->exit(); } void MainWindow::addDir() { m_uiHelper->addDirectory(this); } void MainWindow::addFile() { m_uiHelper->addFile(this); } void MainWindow::playFiles() { m_uiHelper->playFiles(this); } void MainWindow::changeEvent (QEvent * event) { if (event->type() == QEvent::ActivationChange) { m_display->setActive(isActiveWindow()); } } void MainWindow::readSettings() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("Skinned"); if (!m_update) { move(settings.value("mw_pos", QPoint(100, 100)).toPoint()); //geometry m_startHidden = settings.value("start_hidden", false).toBool(); if(settings.value("always_on_top", false).toBool()) { ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->setChecked(true); setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); } ACTION(ActionManager::WM_STICKY)->setChecked(settings.value("show_on_all_desktops", false).toBool()); show(); qApp->processEvents(); //visibility m_playlist->setVisible(settings.value("pl_visible",true).toBool()); qApp->processEvents(); m_equalizer->setVisible(settings.value("eq_visible",true).toBool()); qApp->processEvents(); // Repeat/Shuffle m_display->setIsRepeatable(m_ui_settings->isRepeatableList()); m_display->setIsShuffle(m_ui_settings->isShuffle()); ACTION(ActionManager::REPEAT_ALL)->setChecked(m_ui_settings->isRepeatableList()); ACTION(ActionManager::SHUFFLE)->setChecked(m_ui_settings->isShuffle()); ACTION(ActionManager::REPEAT_TRACK)->setChecked(m_ui_settings->isRepeatableTrack()); ACTION(ActionManager::NO_PL_ADVANCE)->setChecked(m_ui_settings->isNoPlayListAdvance()); m_update = true; } else { if(ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked()) { setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); m_playlist->setWindowFlags(m_playlist->windowFlags() | Qt::WindowStaysOnTopHint); m_equalizer->setWindowFlags(m_equalizer->windowFlags() | Qt::WindowStaysOnTopHint); } else { setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint); m_playlist->setWindowFlags(m_playlist->windowFlags() & ~Qt::WindowStaysOnTopHint); m_equalizer->setWindowFlags(m_equalizer->windowFlags() & ~Qt::WindowStaysOnTopHint); } show(); qApp->processEvents(); m_playlist->setVisible(m_display->isPlaylistVisible()); m_equalizer->setVisible(m_display->isEqualizerVisible()); } #ifdef Q_WS_X11 WindowSystem::changeWinSticky(winId(), ACTION(ActionManager::WM_STICKY)->isChecked()); WindowSystem::setWinHint(winId(), "player", "Qmmp"); #endif //Call setWindowOpacity only if needed double opacity = settings.value("mw_opacity", 1.0).toDouble(); if(opacity != windowOpacity ()) setWindowOpacity(opacity); opacity = settings.value("eq_opacity", 1.0).toDouble(); if(opacity != m_equalizer->windowOpacity ()) m_equalizer->setWindowOpacity(opacity); opacity = settings.value("pl_opacity", 1.0).toDouble(); if(opacity != m_playlist->windowOpacity ()) m_playlist->setWindowOpacity(opacity); m_hideOnClose = settings.value("hide_on_close", false).toBool(); settings.endGroup(); Dock::instance()->addActions(m_uiHelper->actions(UiHelper::PLAYLIST_MENU)); Dock::instance()->addActions(m_uiHelper->actions(UiHelper::TOOLS_MENU)); } void MainWindow::writeSettings() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("Skinned"); //geometry settings.setValue("mw_pos", this->pos()); //look & feel settings.setValue("double_size", ACTION(ActionManager::WM_DOUBLE_SIZE)->isChecked()); settings.setValue("always_on_top", ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked()); settings.setValue("show_on_all_desktops", ACTION(ActionManager::WM_STICKY)->isChecked()); settings.endGroup(); } void MainWindow::showSettings() { ConfigDialog *confDialog = new ConfigDialog(this); SkinnedSettings *skinnedSettings = new SkinnedSettings(this); confDialog->addPage(tr("Appearance"), skinnedSettings, QIcon(":/skinned/interface.png")); confDialog->addPage(tr("Shortcuts"), new HotkeyEditor(this), QIcon(":/skinned/shortcuts.png")); confDialog->exec(); skinnedSettings->writeSettings(); confDialog->deleteLater(); updateSettings(); ActionManager::instance()->saveActions(); } void MainWindow::toggleVisibility() { if (isHidden()) { show(); raise(); activateWindow(); m_playlist->setVisible(m_display->isPlaylistVisible()); m_equalizer->setVisible(m_display->isEqualizerVisible()); #ifdef Q_WS_X11 if(WindowSystem::netWindowManagerName() == "Metacity") { m_playlist->activateWindow(); m_equalizer->activateWindow(); } #endif qApp->processEvents(); setFocus (); if (isMinimized()) { if (isMaximized()) showMaximized(); else showNormal(); } #ifdef Q_WS_X11 WindowSystem::changeWinSticky(winId(), ACTION(ActionManager::WM_STICKY)->isChecked()); WindowSystem::setWinHint(winId(), "player", "Qmmp"); raise(); #endif } else { if (m_playlist->isVisible()) m_playlist->hide(); if (m_equalizer->isVisible()) m_equalizer->hide(); hide(); } qApp->processEvents(); } void MainWindow::showAndRaise() { if(isHidden()) toggleVisibility(); else { activateWindow(); raise(); } } void MainWindow::createActions() { m_mainMenu = new QMenu(this); m_mainMenu->addAction(SET_ACTION(ActionManager::PLAY, this, SLOT(play()))); m_mainMenu->addAction(SET_ACTION(ActionManager::PAUSE, this, SLOT(pause()))); m_mainMenu->addAction(SET_ACTION(ActionManager::STOP, this, SLOT(stop()))); m_mainMenu->addAction(SET_ACTION(ActionManager::PREVIOUS, this, SLOT(previous()))); m_mainMenu->addAction(SET_ACTION(ActionManager::NEXT, this, SLOT(next()))); m_mainMenu->addAction(SET_ACTION(ActionManager::PLAY_PAUSE, this, SLOT(playPause()))); m_mainMenu->addSeparator(); m_mainMenu->addAction(SET_ACTION(ActionManager::JUMP, this, SLOT(jumpToTrack()))); m_mainMenu->addSeparator(); QMenu *viewMenu = m_mainMenu->addMenu(tr("View")); viewMenu->addAction(ACTION(ActionManager::SHOW_PLAYLIST)); viewMenu->addAction(ACTION(ActionManager::SHOW_EQUALIZER)); viewMenu->addSeparator(); viewMenu->addAction(SET_ACTION(ActionManager::WM_ALLWAYS_ON_TOP, this, SLOT(updateSettings()))); viewMenu->addAction(SET_ACTION(ActionManager::WM_STICKY, this, SLOT(updateSettings()))); viewMenu->addAction(SET_ACTION(ActionManager::WM_DOUBLE_SIZE, this, SLOT(updateSettings()))); QMenu *plMenu = m_mainMenu->addMenu(tr("Playlist")); plMenu->addAction(SET_ACTION(ActionManager::REPEAT_ALL, m_ui_settings, SLOT(setRepeatableList(bool)))); plMenu->addAction(SET_ACTION(ActionManager::REPEAT_TRACK, m_ui_settings, SLOT(setRepeatableTrack(bool)))); plMenu->addAction(SET_ACTION(ActionManager::SHUFFLE, m_ui_settings, SLOT(setShuffle(bool)))); plMenu->addAction(SET_ACTION(ActionManager::NO_PL_ADVANCE, m_ui_settings, SLOT(setNoPlayListAdvance(bool)))); plMenu->addAction(SET_ACTION(ActionManager::STOP_AFTER_SELECTED, m_pl_manager, SLOT(stopAfterSelected()))); plMenu->addAction(SET_ACTION(ActionManager::CLEAR_QUEUE, m_pl_manager, SLOT(clearQueue()))); connect(m_ui_settings, SIGNAL(repeatableListChanged(bool)), ACTION(ActionManager::REPEAT_ALL), SLOT(setChecked(bool))); connect(m_ui_settings, SIGNAL (repeatableTrackChanged(bool)), ACTION(ActionManager::REPEAT_TRACK), SLOT(setChecked(bool))); connect(m_ui_settings, SIGNAL (noPlayListAdvanceChanged(bool)), ACTION(ActionManager::NO_PL_ADVANCE), SLOT(setChecked(bool))); connect(m_ui_settings, SIGNAL(shuffleChanged(bool)), ACTION(ActionManager::SHUFFLE), SLOT(setChecked(bool))); QMenu *audioMenu = m_mainMenu->addMenu(tr("Audio")); QSignalMapper *mapper = new QSignalMapper(this); mapper->setMapping(ACTION(ActionManager::VOL_ENC), 5); mapper->setMapping(ACTION(ActionManager::VOL_DEC), -5); connect(mapper, SIGNAL(mapped(int)), m_core, SLOT(changeVolume(int))); audioMenu->addAction(SET_ACTION(ActionManager::VOL_ENC, mapper, SLOT(map()))); audioMenu->addAction(SET_ACTION(ActionManager::VOL_DEC, mapper, SLOT(map()))); audioMenu->addAction(SET_ACTION(ActionManager::VOL_MUTE, m_core, SLOT(setMuted(bool)))); connect(m_core, SIGNAL(mutedChanged(bool)), ACTION(ActionManager::VOL_MUTE), SLOT(setChecked(bool))); m_visMenu = new VisualMenu(this); m_mainMenu->addMenu(m_visMenu); m_mainMenu->addMenu(m_uiHelper->createMenu(UiHelper::TOOLS_MENU, tr("Tools"), this)); m_mainMenu->addSeparator(); m_mainMenu->addAction(SET_ACTION(ActionManager::SETTINGS, this, SLOT(showSettings()))); m_mainMenu->addSeparator(); m_mainMenu->addAction(SET_ACTION(ActionManager::ABOUT, this, SLOT(about()))); m_mainMenu->addAction(SET_ACTION(ActionManager::ABOUT_QT, qApp, SLOT(aboutQt()))); m_mainMenu->addSeparator(); m_mainMenu->addAction(SET_ACTION(ActionManager::QUIT, this, SLOT(close()))); QAction* forward = new QAction(this); forward->setShortcut(QKeySequence(Qt::Key_Right)); connect(forward,SIGNAL(triggered(bool)),this,SLOT(forward())); QAction* backward = new QAction(this); backward->setShortcut(QKeySequence(Qt::Key_Left)); connect(backward,SIGNAL(triggered(bool)),this,SLOT(backward())); Dock::instance()->addActions(QList<QAction*>() << forward << backward); Dock::instance()->addActions(ActionManager::instance()->actions()); } void MainWindow::about() { m_uiHelper->about(this); } void MainWindow::updateSettings() { readSettings(); m_playlist->readSettings(); m_visMenu->updateActions(); m_skin->reloadSkin(); Dock::instance()->updateDock(); } QMenu* MainWindow::menu() { return m_mainMenu; } void MainWindow::loadPlaylist() { m_uiHelper->loadPlayList(this); } void MainWindow::savePlaylist() { m_uiHelper->savePlayList(this); } void MainWindow::playPause() { if (m_core->state() == Qmmp::Playing) m_core->pause(); else play(); } void MainWindow::jumpToTrack() { m_uiHelper->jumpToTrack(this); } void MainWindow::addUrl() { m_uiHelper->addUrl(this); } MainDisplay * MainWindow::mainDisplay() const { return m_display; } void MainWindow::keyPressEvent(QKeyEvent *ke) { QKeyEvent event = QKeyEvent(ke->type(), ke->key(), ke->modifiers(), ke->text(),ke->isAutoRepeat(), ke->count()); QApplication::sendEvent(m_playlist,&event); }