aboutsummaryrefslogtreecommitdiff
path: root/src/playlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/playlist.cpp')
-rw-r--r--src/playlist.cpp471
1 files changed, 0 insertions, 471 deletions
diff --git a/src/playlist.cpp b/src/playlist.cpp
deleted file mode 100644
index 282463ef0..000000000
--- a/src/playlist.cpp
+++ /dev/null
@@ -1,471 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006 by Ilya Kotov *
- * forkotov02@hotmail.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program 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 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., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include <QPainter>
-#include <QResizeEvent>
-#include <QSettings>
-#include <QMenu>
-#include <QAction>
-#include <QSignalMapper>
-#include <QHBoxLayout>
-
-#include "dock.h"
-#include "fileloader.h"
-#include "playlist.h"
-#include "skin.h"
-#include "listwidget.h"
-#include "button.h"
-#include "mediafile.h"
-#include "playlistmodel.h"
-#include "playlisttitlebar.h"
-#include "playlistslider.h"
-#include "pixmapwidget.h"
-#include "symboldisplay.h"
-#include "playlistcontrol.h"
-#include "keyboardmanager.h"
-#include <output.h>
-
-PlayList::PlayList ( QWidget *parent )
- : QWidget ( parent )
-{
- setWindowFlags ( Qt::Dialog | Qt::FramelessWindowHint );
-
- m_update = FALSE;
- m_resize = FALSE;
- m_anchor_row = -1;
-
- createMenus();
-
-
- resize ( 275,116 );
- setMinimumSize ( 275,116 );
- setBaseSize ( 275,116 );
- m_listWidget = new ListWidget ( this );
- m_listWidget->show();
- m_listWidget->setGeometry ( 12,20,243,58 );
-
- m_plslider = new PlayListSlider ( this );
- m_plslider->show();
-
- setSizeIncrement ( 25,29 );
- m_skin = Skin::getPointer();
-
- m_buttonAdd = new Button ( this,Skin::PL_BT_ADD,Skin::PL_BT_ADD );
- m_buttonAdd->move ( 11,86 );
- m_buttonSub = new Button ( this,Skin::PL_BT_SUB,Skin::PL_BT_SUB );
- m_buttonSub->move ( 40,86 );
- m_selectButton = new Button ( this,Skin::PL_BT_SEL,Skin::PL_BT_SEL );
- m_selectButton->move ( 70,86 );
- m_sortButton= new Button ( this,Skin::PL_BT_SORT,Skin::PL_BT_SORT );
- m_sortButton->move ( 99,86 );
- m_playlistButton = new Button ( this,Skin::PL_BT_LST,Skin::PL_BT_LST );
-
- m_pl_control = new PlaylistControl ( this );
- m_pl_control->move ( 0,0 );
- m_pl_control->show();
-
- m_length_totalLength = new SymbolDisplay ( this,14 );
- m_length_totalLength->setAlignment ( Qt::AlignLeft );
- m_length_totalLength -> show();
-
- m_current_time = new SymbolDisplay ( this,6 );
- m_current_time->show();
-
- m_keyboardManager = new KeyboardManager ( this );
-
- connect ( m_listWidget, SIGNAL ( selectionChanged() ), parent, SLOT ( replay() ) );
-
- connect ( m_plslider, SIGNAL ( sliderMoved ( int ) ), m_listWidget, SLOT ( scroll ( int ) ) );
- connect ( m_listWidget, SIGNAL ( positionChanged ( int, int ) ), m_plslider,
- SLOT ( setPos ( int, int ) ) );
- connect ( m_skin, SIGNAL ( skinChanged() ), this, SLOT ( update() ) );
- connect ( m_buttonAdd, SIGNAL ( clicked() ), SLOT ( showAddMenu() ) );
- connect ( m_buttonSub, SIGNAL ( clicked() ), SLOT ( showSubMenu() ) );
- connect ( m_selectButton, SIGNAL ( clicked() ), SLOT ( showSelectMenu() ) );
- connect ( m_sortButton, SIGNAL ( clicked() ), SLOT ( showSortMenu() ) );
- connect ( m_playlistButton, SIGNAL ( clicked() ), SLOT ( showPlaylistMenu() ) );
-
- connect ( m_pl_control, SIGNAL ( nextClicked() ), SIGNAL ( next() ) );
- connect ( m_pl_control, SIGNAL ( previousClicked() ), SIGNAL ( prev() ) );
- connect ( m_pl_control, SIGNAL ( playClicked() ), SIGNAL ( play() ) );
- connect ( m_pl_control, SIGNAL ( pauseClicked() ), SIGNAL ( pause() ) );
- connect ( m_pl_control, SIGNAL ( stopClicked() ), SIGNAL ( stop() ) );
- connect ( m_pl_control, SIGNAL ( ejectClicked() ), SIGNAL ( eject() ) );
- m_titleBar = new PlayListTitleBar ( this );
- m_titleBar->move ( 0,0 );
- readSettings();
-}
-
-
-PlayList::~PlayList()
-{}
-
-void PlayList::createMenus()
-{
- m_addMenu = new QMenu ( this );
- m_subMenu = new QMenu ( this );
- m_selectMenu = new QMenu ( this );
- m_sortMenu = new QMenu ( this );
- m_playlistMenu = new QMenu ( this );
-}
-
-void PlayList::createActions()
-{ //add menu
- QAction *addFileAct = new QAction ( tr ( "&Add File" ),this );
- addFileAct->setShortcut ( tr ( "F" ) );
- m_addMenu->addAction ( addFileAct );
- connect ( addFileAct, SIGNAL ( triggered() ), parent(), SLOT ( addFile () ) );
- m_actions << addFileAct;
-
- QAction *addDirAct = new QAction ( tr ( "&Add Directory" ),this );
- addDirAct->setShortcut ( tr ( "D" ) );
- m_addMenu->addAction ( addDirAct );
- connect ( addDirAct, SIGNAL ( triggered() ), parent(), SLOT ( addDir () ) );
- m_actions << addDirAct;
-
- QAction *addUrlAct = new QAction ( tr ( "&Add Url" ),this );
- addUrlAct->setShortcut ( tr ( "U" ) );
- m_addMenu->addAction ( addUrlAct );
- connect ( addUrlAct, SIGNAL ( triggered() ), parent(), SLOT ( addUrl () ) );
- m_actions << addUrlAct;
-
- //remove menu
- QAction *remSelAct = new QAction ( tr ( "&Remove Selected" ),this );
- remSelAct->setShortcut ( tr ( "Del" ) );
- m_subMenu->addAction ( remSelAct );
- connect ( remSelAct, SIGNAL ( triggered() ),
- m_playListModel, SLOT ( removeSelected () ) );
- this->addAction ( remSelAct );
-
- QAction *remAllAct = new QAction ( tr ( "&Remove All" ),this );
- //remAllAct->setShortcut(tr("D")); FIXME: add correct shortcat
- m_subMenu->addAction ( remAllAct );
- connect ( remAllAct, SIGNAL ( triggered() ), m_playListModel, SLOT ( clear () ) );
- m_actions << remAllAct;
-
- QAction *remUnselAct = new QAction ( tr ( "&Remove Unselected" ),this );
- m_subMenu->addAction ( remUnselAct );
- connect ( remUnselAct, SIGNAL ( triggered() ),
- m_playListModel, SLOT ( removeUnselected () ) );
-
- //listwidget menu
- QAction *detailsAct = new QAction ( tr ( "&View Track Details" ),this );
- detailsAct->setShortcut ( tr ( "Alt+I" ) );
- m_listWidget->menu()->addAction ( detailsAct );
- connect ( detailsAct, SIGNAL ( triggered() ), m_playListModel, SLOT ( showDetails () ) );
-
- // sort menu
- m_sortMenu->addAction ( detailsAct );
- m_sortMenu->addSeparator();
-
- QMenu* sort_mode_menu = new QMenu ( tr ( "Sort List" ),m_sortMenu );
-
- QSignalMapper* signalMapper = new QSignalMapper ( this );
- QAction* titleAct = sort_mode_menu->addAction ( tr ( "By Title" ) );
- connect ( titleAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( titleAct, PlayListModel::TITLE );
-
- QAction* nameAct = sort_mode_menu->addAction ( tr ( "By Filename" ) );
- connect ( nameAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( nameAct, PlayListModel::FILENAME );
-
- QAction* pathnameAct = sort_mode_menu->addAction ( tr ( "By Path + Filename" ) );
- connect ( pathnameAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( pathnameAct, PlayListModel::PATH_AND_FILENAME );
-
- QAction* dateAct = sort_mode_menu->addAction ( tr ( "By Date" ) );
- connect ( dateAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( dateAct, PlayListModel::DATE );
-
- connect ( signalMapper, SIGNAL ( mapped ( int ) ),
- m_playListModel, SLOT ( sort ( int ) ) );
-
- m_sortMenu->addMenu ( sort_mode_menu );
-
- sort_mode_menu = new QMenu ( tr ( "Sort Selection" ),m_sortMenu );
- signalMapper = new QSignalMapper ( this );
- titleAct = sort_mode_menu->addAction ( tr ( "By Title" ) );
- connect ( titleAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( titleAct, PlayListModel::TITLE );
-
- nameAct = sort_mode_menu->addAction ( tr ( "By Filename" ) );
- connect ( nameAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( nameAct, PlayListModel::FILENAME );
-
- pathnameAct = sort_mode_menu->addAction ( tr ( "By Path + Filename" ) );
- connect ( pathnameAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( pathnameAct, PlayListModel::PATH_AND_FILENAME );
-
- dateAct = sort_mode_menu->addAction ( tr ( "By Date" ) );
- connect ( dateAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) );
- signalMapper->setMapping ( dateAct, PlayListModel::DATE );
-
- connect ( signalMapper, SIGNAL ( mapped ( int ) ),
- m_playListModel, SLOT ( sortSelection ( int ) ) );
-
- m_sortMenu->addMenu ( sort_mode_menu );
-
- m_sortMenu->addSeparator();
- m_sortMenu->addAction ( tr ( "Randomize List" ),m_playListModel,SLOT ( randomizeList() ) );
- m_sortMenu->addAction ( tr ( "Reverse List" ),m_playListModel,SLOT ( reverseList() ) );
-
- m_listWidget->menu()->addSeparator();
- m_listWidget->menu()->addActions ( m_subMenu->actions() );
- m_actions << detailsAct;
-
- //select menu
- QAction *invSelAct = new QAction ( tr ( "Invert Selection" ),this );
- m_selectMenu->addAction ( invSelAct );
- connect ( invSelAct, SIGNAL ( triggered() ),
- m_playListModel, SLOT ( invertSelection () ) );
-
- m_selectMenu->addSeparator();
-
- QAction *selNoneAct = new QAction ( tr ( "&Select None" ),this );
- //selNoneAct->setShortcut(tr("Ctrl+Shift+A"));
- m_selectMenu->addAction ( selNoneAct );
- connect ( selNoneAct, SIGNAL ( triggered() ),
- m_playListModel, SLOT ( clearSelection () ) );
- this->addAction ( selNoneAct );
-
- QAction *selAllAct = new QAction ( tr ( "&Select All" ),this );
- selAllAct->setShortcut ( tr ( "Ctrl+A" ) );
- m_selectMenu->addAction ( selAllAct );
- connect ( selAllAct, SIGNAL ( triggered() ),
- m_playListModel, SLOT ( selectAll () ) );
- this->addAction ( selAllAct );
-
-// Playlist Menu
- QAction *newListAct = new QAction ( tr ( "&New List" ),this );
- newListAct->setShortcut ( tr ( "Shift+N" ) );
- m_actions << newListAct;
- m_playlistMenu->addAction ( newListAct );
- connect ( newListAct, SIGNAL ( triggered() ), this, SIGNAL ( newPlaylist() ) );
- m_playlistMenu->addSeparator();
-
- QAction *loadListAct = new QAction ( tr ( "&Load List" ),this );
- loadListAct->setShortcut ( tr ( "O" ) );
- m_playlistMenu->addAction ( loadListAct );
- connect ( loadListAct, SIGNAL ( triggered() ), this, SIGNAL ( loadPlaylist() ) );
-
- QAction *saveListAct = new QAction ( tr ( "&Save List" ),this );
- saveListAct->setShortcut ( tr ( "Shift+S" ) );
- m_playlistMenu->addAction ( saveListAct );
- connect ( saveListAct, SIGNAL ( triggered() ), this, SIGNAL ( savePlaylist() ) );
- this->addActions ( m_playlistMenu->actions() );
-
- Dock::getPointer()->addActions ( m_actions );
-}
-
-void PlayList::closeEvent ( QCloseEvent* )
-{
- writeSettings();
-}
-
-void PlayList::paintEvent ( QPaintEvent * )
-{
- int m_sx = ( width()-275 ) /25;
- int m_sy = ( height()-116 ) /29;
- drawPixmap ( m_sx, m_sy );
-}
-
-void PlayList::drawPixmap ( int sx, int sy )
-{
- QPainter paint;
- paint.begin ( this );
- paint.drawPixmap ( 0,20,m_skin->getPlPart ( Skin::PL_LFILL ) );
- for ( int i = 1; i<sy+2; i++ )
- {
- paint.drawPixmap ( 0,20+29*i,m_skin->getPlPart ( Skin::PL_LFILL ) );
- }
- paint.drawPixmap ( 0,78+29*sy,m_skin->getPlPart ( Skin::PL_LSBAR ) );
- for ( int i = 0; i<sx; i++ )
- {
- paint.drawPixmap ( 125+i*25,78+sy*29,m_skin->getPlPart ( Skin::PL_SFILL1 ) );
- }
-
- paint.drawPixmap ( 125+sx*25,78+sy*29,m_skin->getPlPart ( Skin::PL_RSBAR ) );
- paint.end();
-
-}
-
-void PlayList::resizeEvent ( QResizeEvent *e )
-{
- int sx = ( e->size().width()-275 ) /25;
- int sy = ( e->size().height()-116 ) /29;
- if (sx < 0 || sy < 0)
- return;
-
- m_titleBar->resize ( 275+25*sx,20 );
- m_plslider->resize ( 20,58+sy*29 );
-
- m_listWidget->resize ( 243+25*sx,58+29*sy );
-
- m_buttonAdd->move ( 11,86+29*sy );
- m_buttonSub->move ( 40,86+29*sy );
- m_selectButton->move ( 70,86+29*sy );
- m_sortButton->move ( 99,86+29*sy );
-
- m_pl_control->move ( 128+sx*25,100+29*sy );
- m_playlistButton->move ( 228+sx*25,86+29*sy );
-
- m_length_totalLength -> move ( 131+sx*25,88+29*sy );
- m_current_time->move ( 190+sx*25,101+29*sy );
-
- m_plslider->move ( 255+sx*25,20 );
-}
-void PlayList::mousePressEvent ( QMouseEvent *e )
-{
- m_pos = e->pos ();
- if ( ( m_pos.x() > width()-25 ) && ( m_pos.y() > height()-25 ) )
- {
- m_resize = TRUE;
- setCursor ( Qt::SizeFDiagCursor );
- }
- else
- m_resize = FALSE;
-}
-void PlayList::mouseMoveEvent ( QMouseEvent *e )
-{
- if ( m_resize )
- {
- resize ( e->x() +25, e->y() +25 );
- //usleep(32000);
- }
-}
-void PlayList::mouseReleaseEvent ( QMouseEvent * )
-{
- setCursor ( Qt::ArrowCursor );
- /*if (m_resize)
- m_listWidget->updateList();*/
- m_resize = FALSE;
- Dock::getPointer()->updateDock();
-}
-void PlayList::setModel ( PlayListModel *model )
-{
- m_playListModel = model;
- m_listWidget->setModel (model);
- m_keyboardManager->setModel (model);
- m_titleBar->setModel (model);
- createActions();
-}
-
-void PlayList::changeEvent ( QEvent * event )
-{
- if ( event->type() == QEvent::ActivationChange )
- {
- m_titleBar->setActive ( isActiveWindow() );
- }
-}
-
-void PlayList::readSettings()
-{
- if ( m_update )
- {
- m_listWidget->readSettings();
- m_titleBar->readSettings();
- }
- else
- {
- QSettings settings (QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat);
- settings.beginGroup ( "PlayList" );
- //position
- move ( settings.value ("pos", QPoint ( 100, 332 ) ).toPoint());
- settings.endGroup();
- m_update = TRUE;
- }
-
-}
-
-void PlayList::writeSettings()
-{
- QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat );
- settings.beginGroup ( "PlayList" );
- //position
- settings.setValue ( "pos", this->pos() );
- settings.endGroup();
-}
-
-void PlayList::showAddMenu()
-{
- m_addMenu->exec ( m_buttonAdd->mapToGlobal ( QPoint ( 0,0 ) ) );
-}
-
-void PlayList::showSubMenu()
-{
- m_subMenu->exec ( m_buttonSub->mapToGlobal ( QPoint ( 0,0 ) ) );
-}
-
-void PlayList::showSelectMenu()
-{
- m_selectMenu->exec ( m_selectButton->mapToGlobal ( QPoint ( 0,0 ) ) );
-}
-
-void PlayList::showSortMenu()
-{
- m_sortMenu->exec ( m_sortButton->mapToGlobal ( QPoint ( 0,0 ) ) );
-}
-
-
-
-QString PlayList::formatTime ( int sec )
-{
- int minutes = sec / 60;
- int seconds = sec % 60;
-
- QString str_minutes = QString::number ( minutes );
- QString str_seconds = QString::number ( seconds );
-
- if ( minutes < 10 ) str_minutes.prepend ( "0" );
- if ( seconds < 10 ) str_seconds.prepend ( "0" );
-
- return str_minutes + ":" + str_seconds;
-}
-
-void PlayList::setInfo (const OutputState &st,int length_current, int length_total)
-{
- if ( st.type() == OutputState::Info )
- {
- m_current_time->display ( formatTime ( st.elapsedSeconds() ) );
- m_current_time->update();
-
- QString str_length = formatTime ( length_current ) + "/" + formatTime ( length_total );
- m_length_totalLength->display ( str_length );
- m_length_totalLength->update();
- }
-}
-
-MediaFile *PlayList::currentItem()
-{
- if ( m_playListModel )
- return m_playListModel->currentItem();
- else
- return 0;
-}
-
-void PlayList::showPlaylistMenu()
-{
- m_playlistMenu->exec ( m_playlistButton->mapToGlobal ( QPoint ( 0,0 ) ) );
-}
-
-void PlayList::keyPressEvent ( QKeyEvent *ke )
-{
- if ( m_keyboardManager->handleKeyPress ( ke ) )
- update();
-}