Diffstat (limited to 'core/multimedia/opieplayer/playlistwidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/playlistwidget.cpp | 347 |
1 files changed, 296 insertions, 51 deletions
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp index 969fc4b..4e1543e 100644 --- a/core/multimedia/opieplayer/playlistwidget.cpp +++ b/core/multimedia/opieplayer/playlistwidget.cpp @@ -17,12 +17,14 @@ ** not clear to you. ** **********************************************************************/ #include <qpe/qpemenubar.h> #include <qpe/qpetoolbar.h> #include <qpe/fileselector.h> +#include <qpe/qpeapplication.h> + #include <qpe/applnk.h> #include <qpe/config.h> #include <qpe/global.h> #include <qpe/resource.h> #include <qaction.h> #include <qimage.h> @@ -31,31 +33,35 @@ #include <qlabel.h> #include <qlist.h> #include <qlistbox.h> #include <qmainwindow.h> #include <qmessagebox.h> #include <qtoolbutton.h> +#include <qtabwidget.h> +#include <qlistview.h> +#include <qpoint.h> +#include <qtimer.h> #include "playlistselection.h" #include "playlistwidget.h" #include "mediaplayerstate.h" #include <stdlib.h> +#define BUTTONS_ON_TOOLBAR +#define SIDE_BUTTONS +#define CAN_SAVE_LOAD_PLAYLISTS extern MediaPlayerState *mediaPlayerState; +// class myFileSelector { +// }; class PlayListWidgetPrivate { public: - QToolButton *tbPlay; - QToolButton *tbFull; - QToolButton *tbLoop; - QToolButton *tbScale; - QToolButton *tbShuffle; - + QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove; QFrame *playListFrame; FileSelector *files; PlayListSelection *selectedFiles; bool setDocumentUsed; DocLnk *current; }; @@ -89,16 +95,18 @@ public: PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) : QMainWindow( parent, name, fl ) { d = new PlayListWidgetPrivate; d->setDocumentUsed = FALSE; d->current = NULL; + menuTimer = new QTimer( this ,"menu timer"), + connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) ); setBackgroundMode( PaletteButton ); - setCaption( tr("MediaPlayer") ); + setCaption( tr("OpiePlayer") ); setIcon( Resource::loadPixmap( "MPEGPlayer" ) ); setToolBarsMovable( FALSE ); // Create Toolbar QPEToolBar *toolbar = new QPEToolBar( this ); @@ -107,83 +115,167 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) // Create Menubar QPEMenuBar *menu = new QPEMenuBar( toolbar ); menu->setMargin( 0 ); QPEToolBar *bar = new QPEToolBar( this ); bar->setLabel( tr( "Play Operations" ) ); -#ifdef BUTTONS_ON_TOOLBAR - d->tbPlay = new ToolButton( bar, tr( "Play" ), "mpegplayer/play", mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); - d->tbShuffle = new ToolButton( bar, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); -#endif - d->tbLoop = new ToolButton( bar, tr( "Loop" ), "mpegplayer/loop", mediaPlayerState, SLOT(setLooping(bool)), TRUE ); - d->tbFull = new ToolButton( bar, tr( "Fullscreen" ), "fullscreen", mediaPlayerState, SLOT(setFullscreen(bool)), TRUE ); - d->tbScale = new ToolButton( bar, tr( "Scale" ), "mpegplayer/scale", mediaPlayerState, SLOT(setScaled(bool)), TRUE ); + d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "mpegplayer/add_to_playlist", + this , SLOT(addSelected()) ); + d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "mpegplayer/remove_from_playlist", + this , SLOT(removeSelected()) ); + d->tbPlay = new ToolButton( bar, tr( "Play" ), "mpegplayer/play", + mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); + + d->tbShuffle = new ToolButton( bar, tr( "Randomize" ), "mpegplayer/shuffle", + mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); + d->tbLoop = new ToolButton( bar, tr( "Loop" ), "mpegplayer/loop", + mediaPlayerState, SLOT(setLooping(bool)), TRUE ); + +// d->tbFull = new ToolButton( bar, tr( "Fullscreen" ), "fullscreen", mediaPlayerState, SLOT(setFullscreen(bool)), TRUE ); +// d->tbScale = new ToolButton( bar, tr( "Scale" ), "mpegplayer/scale", mediaPlayerState, SLOT(setScaled(bool)), TRUE ); QPopupMenu *pmPlayList = new QPopupMenu( this ); - menu->insertItem( tr( "PlayList" ), pmPlayList ); - new MenuItem( pmPlayList, tr( "Toggle PlayList" ), mediaPlayerState, SLOT( togglePlaylist() ) ); + menu->insertItem( tr( "File" ), pmPlayList ); new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); - new MenuItem( pmPlayList, tr( "Add all music files" ), this, SLOT( addAllMusicToList() ) ); + new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); -#ifdef CAN_SAVE_LOAD_PLAYLISTS new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); new MenuItem( pmPlayList, tr( "Load PlayList" ), this, SLOT( loadList() ) ); -#endif + + QPopupMenu *pmView = new QPopupMenu( this ); + menu->insertItem( tr( "View" ), pmView ); + + fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); + connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); + fullScreenButton->addTo(pmView); + scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("mpegplayer/scale"), QString::null, 0, this, 0); + connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); + scaleButton->addTo(pmView); QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); + QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); +// vbox4->setMargin(4); +// libString = new QLabel( tr(" Media Library"), vbox4 ); +// libString->setBackgroundMode( QButton::PaletteButton ); +// libString->setFont( QFont( "Helvetica", 8, QFont::Bold ) ); + + QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); + + tabWidget = new QTabWidget( hbox6, "tabWidget" ); + tabWidget->setTabShape(QTabWidget::Triangular); + + + QWidget *pTab; + pTab = new QWidget( tabWidget, "pTab" ); + playlistView = new QListView( pTab, "Videoview" ); + playlistView->setMinimumSize(236,260); + tabWidget->insertTab( pTab,"Playlist"); // Add the playlist area - QVBox *vbox3 = new QVBox( vbox5 ); vbox3->setBackgroundMode( PaletteButton ); - d->playListFrame = vbox3; - QLabel *plString = new QLabel( tr(" PlayList"), vbox3 ); - plString->setBackgroundMode( QButton::PaletteButton ); - plString->setFont( QFont( "Helvetica", 8, QFont::Bold ) ); + QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); + d->playListFrame = vbox3; + d->playListFrame ->setMinimumSize(235,260); QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); d->selectedFiles = new PlayListSelection( hbox2 ); QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); -#ifndef BUTTONS_ON_TOOLBAR - d->tbPlay = new ToolButton( vbox1, tr( "Play" ), "mpegplayer/play", mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch -#endif new ToolButton( vbox1, tr( "Move Up" ), "mpegplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); new ToolButton( vbox1, tr( "Remove" ), "mpegplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); new ToolButton( vbox1, tr( "Move Down" ), "mpegplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch -#ifndef BUTTONS_ON_TOOLBAR - d->tbShuffle = new ToolButton( vbox1, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); -#endif + + QWidget *aTab; + aTab = new QWidget( tabWidget, "aTab" ); + audioView = new QListView( aTab, "Audioview" ); + audioView->setMinimumSize(233,260); + audioView->addColumn( "Title",150); + audioView->addColumn("Size", 45); + audioView->addColumn("Media",35); + audioView->setColumnAlignment(1, Qt::AlignRight); + audioView->setColumnAlignment(2, Qt::AlignRight); + tabWidget->insertTab(aTab,"Audio"); +// audioView + Global::findDocuments(&files, "audio/*"); + QListIterator<DocLnk> dit( files.children() ); + QString storage; + for ( ; dit.current(); ++dit ) { + QListViewItem * newItem; + if(dit.current()->file().find("/mnt/cf") != -1 ) storage="CF"; + else if(dit.current()->file().find("/mnt/card") != -1 ) storage="SD"; + else storage="RAM"; + + newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), QString::number( QFile( dit.current()->file()).size() ), storage); + newItem->setPixmap(0, Resource::loadPixmap( "mpegplayer/musicfile" )); + } +// videowidget + + QWidget *vTab; + vTab = new QWidget( tabWidget, "vTab" ); + videoView = new QListView( vTab, "Videoview" ); + videoView->setMinimumSize(233,260); + + videoView->addColumn("Title",150); + videoView->addColumn("Size",45); + videoView->addColumn("Media",35); + videoView->setColumnAlignment(1, Qt::AlignRight); + videoView->setColumnAlignment(2, Qt::AlignRight); + + tabWidget->insertTab( vTab,"Video"); + + Global::findDocuments(&vFiles, "video/*"); + QListIterator<DocLnk> Vdit( vFiles.children() ); + for ( ; Vdit.current(); ++Vdit ) { + if( Vdit.current()->file().find("/mnt/cf") != -1 ) storage="CF"; + else if( Vdit.current()->file().find("/mnt/card") != -1 ) storage="SD"; + else storage="RAM"; + QListViewItem * newItem; + newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), QString::number( QFile( Vdit.current()->file()).size() ), storage); + newItem->setPixmap(0, Resource::loadPixmap( "mpegplayer/videofile" )); + } + + +// d->tbPlay = new ToolButton( vbox1, tr( "Play" ), "mpegplayer/play", mediaPlayerState, SLOT(setPlaying(bool)), TRUE ); +// d->tbShuffle = new ToolButton( vbox1, tr( "Randomize" ), "mpegplayer/shuffle", mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); // add the library area - QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); - QLabel *libString = new QLabel( tr(" Media Library"), vbox4 ); - libString->setBackgroundMode( QButton::PaletteButton ); - libString->setFont( QFont( "Helvetica", 8, QFont::Bold ) ); +// d->files->setBackgroundMode( PaletteButton ); +// QVBox *vbox7 = new QVBox( hbox6 ); vbox7->setBackgroundMode( PaletteButton ); - QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); - d->files = new FileSelector( "video/*;audio/*", hbox6, "Find Media Files", FALSE, FALSE ); - d->files->setBackgroundMode( PaletteButton ); - QVBox *vbox7 = new QVBox( hbox6 ); vbox7->setBackgroundMode( PaletteButton ); +// #ifdef SIDE_BUTTONS +// QVBox *stretch3 = new QVBox( vbox1 ); stretch3->setBackgroundMode( PaletteButton ); // add stretch +// #endif + QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); + +// connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); +// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); -#ifdef SIDE_BUTTONS - new ToolButton( vbox7, tr( "Add to Playlist" ), "mpegplayer/add_to_playlist", d->selectedFiles, SLOT(addSelected()) ); - new ToolButton( vbox7, tr( "Remove from Playlist" ), "mpegplayer/remove_from_playlist", d->selectedFiles, SLOT(removeSelected()) ); - QVBox *stretch3 = new QVBox( vbox1 ); stretch3->setBackgroundMode( PaletteButton ); // add stretch -#endif + connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); + connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); - connect( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); + connect( audioView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint&, int ) ), + this, SLOT( addToSelection( QListViewItem *, const QPoint&, int )) ); + connect( videoView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint&, int ) ), + this, SLOT( addToSelection( QListViewItem *, const QPoint&, int )) ); + + connect( playlistView, SIGNAL( pressed( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); + connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); + // connect( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); + // connect( d->files, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); - connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), d->tbFull, SLOT( setOn( bool ) ) ); - connect( mediaPlayerState, SIGNAL( scaledToggled( bool ) ), d->tbScale, SLOT( setOn( bool ) ) ); - connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), d->tbScale, SLOT( setEnabled( bool ) ) ); + +// connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), fullScreenButton, SLOT( setOn( bool ) ) ); +// connect( mediaPlayerState, SIGNAL( scaledToggled( bool ) ), scaleButton, SLOT( setEnabled( bool ) ) ); +// connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), fullScreenButton, SLOT( setEnabled( bool ) ) ); + connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); setCentralWidget( vbox5 ); Config cfg( "MediaPlayer" ); readConfig( cfg ); @@ -200,19 +292,20 @@ PlayListWidget::~PlayListWidget() { delete d->current; delete d; } void PlayListWidget::initializeStates() { + d->tbPlay->setOn( mediaPlayerState->playing() ); d->tbLoop->setOn( mediaPlayerState->looping() ); d->tbShuffle->setOn( mediaPlayerState->shuffled() ); - d->tbFull->setOn( mediaPlayerState->fullscreen() ); - d->tbScale->setOn( mediaPlayerState->scaled() ); - d->tbScale->setEnabled( mediaPlayerState->fullscreen() ); - setPlaylist( mediaPlayerState->playlist() ); +// d->tbFull->setOn( mediaPlayerState->fullscreen() ); +// d->tbScale->setOn( mediaPlayerState->scaled() ); +// d->tbScale->setEnabled( mediaPlayerState->fullscreen() ); +// setPlaylist( mediaPlayerState->playlist() ); } void PlayListWidget::readConfig( Config& cfg ) { cfg.setGroup("PlayList"); @@ -271,12 +364,22 @@ void PlayListWidget::addToSelection( const DocLnk& lnk ) { d->selectedFiles->addToSelection( lnk ); else mediaPlayerState->setPlaying( TRUE ); } +void PlayListWidget::addToSelection( QListViewItem *it ,const QPoint & p, int index) { + qDebug("add"); +// d->selectedFiles->addToSelection( lnk ); + // } +// else +// mediaPlayerState->setPlaying( TRUE ); +// +} + + void PlayListWidget::clearList() { while ( first() ) d->selectedFiles->removeSelected(); } @@ -443,6 +546,148 @@ void PlayListWidget::setView( char view ) { if ( view == 'l' ) showMaximized(); else hide(); } +void PlayListWidget::addSelected() { +// QMessageBox::message("Note","Bozo the clown thinks\nthere's something actually here"); + int tabPage=tabWidget->currentPageIndex(); + switch (tabPage) { + case 0: //playlist + break; + case 1: { //audio + addToSelection( audioView->selectedItem() ); + } + break; + case 2: { // video + addToSelection( videoView->selectedItem() ); + } + break; + }; +} + +void PlayListWidget::removeSelected() { + d->selectedFiles->removeSelected( ); +} + + +void PlayListWidget::playIt( QListViewItem *it) { + d->setDocumentUsed = FALSE; + + if(it) { + qDebug("playit"); + int tabPage=tabWidget->currentPageIndex(); + switch (tabPage) { + case 1: { + DocLnkSet files; + QListIterator<DocLnk> dit( files.children() ); + for ( ; dit.current(); ++dit ) { + if( dit.current()->name() == it->text(0)) { + setDocument( dit.current()->name()); + } + } + } + break; + case 2: { + DocLnkSet vFiles; + QListIterator<DocLnk> dit( vFiles.children() ); + for ( ; dit.current(); ++dit ) { + qDebug(dit.current()->name()); + if( dit.current()->name() == it->text(0)) { + qDebug(it->text(0)); + setDocument( dit.current()->name()); + } + } + } + break; + }; + } +} + +void PlayListWidget::addToSelection( QListViewItem *it) { + d->setDocumentUsed = FALSE; + + if(it) { + qDebug("add to selection"); + int tabPage=tabWidget->currentPageIndex(); + switch (tabPage) { + case 1: { + QListIterator<DocLnk> dit( files.children() ); + for ( ; dit.current(); ++dit ) { + if( dit.current()->name() == it->text(0)) { + d->selectedFiles->addToSelection( **dit ); + } + } + } + break; + case 2: { + QListIterator<DocLnk> dit( vFiles.children() ); + for ( ; dit.current(); ++dit ) { + qDebug(dit.current()->name()); + if( dit.current()->name() == it->text(0)) { + d->selectedFiles->addToSelection( **dit ); + } + } + } + break; + case 0: + break; + }; + tabWidget->setCurrentPage(0); +// mediaPlayerState->setPlaying( TRUE ); + } +} + +void PlayListWidget::tabChanged(QWidget *widg) { + + int tabPage=tabWidget->currentPageIndex(); + switch (tabPage) { + case 0: + { + d->tbRemoveFromList->setEnabled(TRUE); + d->tbAddToList->setEnabled(FALSE); + } + break; + case 1: + { + d->tbRemoveFromList->setEnabled(FALSE); + d->tbAddToList->setEnabled(TRUE); + } + break; + case 2: + { + d->tbRemoveFromList->setEnabled(FALSE); + d->tbAddToList->setEnabled(TRUE); + } + break; + }; +} + +void PlayListWidget::cancelMenuTimer() { + if( menuTimer->isActive() ) + menuTimer->stop(); +} + +void PlayListWidget::showFileMenu() { + +} + +void PlayListWidget::contentsMousePressEvent( QMouseEvent * e ) +{ +// QListView::contentsMousePressEvent( e ); + menuTimer->start( 750, TRUE ); +} + + +void PlayListWidget::contentsMouseReleaseEvent( QMouseEvent * e ) +{ +// QListView::contentsMouseReleaseEvent( e ); + menuTimer->stop(); +} +// void PlayListWidget::setFullScreen() { +// mediaPlayerState->toggleFullscreen( ); +// } + +// void PlayListWidget::setScaled() { +// mediaPlayerState->toggleScaled(); +// } |