author | llornkcor <llornkcor> | 2002-09-04 23:38:09 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-09-04 23:38:09 (UTC) |
commit | 3f2a74813b552c6f7a4450ec6294bbbcc5b811c5 (patch) (side-by-side diff) | |
tree | a29f6d3436365b13b71615052cf08817225d0d78 | |
parent | 95d24f601f7845e49092068ad358030024fa6097 (diff) | |
download | opie-3f2a74813b552c6f7a4450ec6294bbbcc5b811c5.zip opie-3f2a74813b552c6f7a4450ec6294bbbcc5b811c5.tar.gz opie-3f2a74813b552c6f7a4450ec6294bbbcc5b811c5.tar.bz2 |
change playing in file lists. no loop mode
-rw-r--r-- | noncore/multimedia/opieplayer2/audiowidget.cpp | 1 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/inputDialog.cpp | 1 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/mediaplayer.cpp | 48 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/mediaplayer.h | 3 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidget.cpp | 84 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidget.h | 3 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidgetgui.cpp | 2 |
7 files changed, 97 insertions, 45 deletions
diff --git a/noncore/multimedia/opieplayer2/audiowidget.cpp b/noncore/multimedia/opieplayer2/audiowidget.cpp index 040e965..446fa45 100644 --- a/noncore/multimedia/opieplayer2/audiowidget.cpp +++ b/noncore/multimedia/opieplayer2/audiowidget.cpp @@ -444,24 +444,25 @@ void AudioWidget::mouseMoveEvent( QMouseEvent *event ) { return; } } else if ( !isOnButton && audioButtons[i].isHeld ) { audioButtons[i].isHeld = FALSE; toggleButton(i); } } else { if ( audioButtons[i].isHeld ) { audioButtons[i].isHeld = FALSE; if ( !audioButtons[i].isToggle ) { setToggleButton( i, FALSE ); } + qDebug("mouseEvent %d", i); switch (i) { case AudioPlay: if( mediaPlayerState->isPaused ) { // setToggleButton( i, FALSE ); mediaPlayerState->setPaused( FALSE ); return; } else if( !mediaPlayerState->isPaused ) { // setToggleButton( i, TRUE ); mediaPlayerState->setPaused( TRUE ); return; } else { // setToggleButton( i, TRUE ); diff --git a/noncore/multimedia/opieplayer2/inputDialog.cpp b/noncore/multimedia/opieplayer2/inputDialog.cpp index 9edb1d3..62240b2 100644 --- a/noncore/multimedia/opieplayer2/inputDialog.cpp +++ b/noncore/multimedia/opieplayer2/inputDialog.cpp @@ -16,24 +16,25 @@ InputDialog::InputDialog( QWidget* parent, const char* name, bool modal, WFlags setName( "InputDialog" ); } resize( 234, 115); setMaximumSize( QSize( 240, 40)); setCaption( tr( name ) ); QPushButton *browserButton; browserButton = new QPushButton( Resource::loadIconSet("fileopen"),"",this,"BrowseButton"); browserButton->setGeometry( QRect( 205, 10, 22, 22)); connect( browserButton, SIGNAL(released()),this,SLOT(browse())); LineEdit1 = new QLineEdit( this, "LineEdit1" ); LineEdit1->setGeometry( QRect( 4, 10, 190, 22 ) ); + LineEdit1->setFocus(); } /* * return the current text(input) */ QString InputDialog::text() const { return LineEdit1->text(); } /* * Destroys the object and frees any allocated resources */ InputDialog::~InputDialog() { } diff --git a/noncore/multimedia/opieplayer2/mediaplayer.cpp b/noncore/multimedia/opieplayer2/mediaplayer.cpp index bf2acc8..553e3c1 100644 --- a/noncore/multimedia/opieplayer2/mediaplayer.cpp +++ b/noncore/multimedia/opieplayer2/mediaplayer.cpp @@ -1,17 +1,18 @@ #include <qpe/qpeapplication.h> #include <qpe/qlibrary.h> #include <qpe/resource.h> #include <qpe/config.h> #include <qpe/qcopenvelope_qws.h> +#include <qfileinfo.h> #include <qmainwindow.h> #include <qmessagebox.h> #include <qwidgetstack.h> #include <qfile.h> #include "mediaplayer.h" #include "playlistwidget.h" #include "audiowidget.h" #include "videowidget.h" #include "volumecontrol.h" @@ -80,69 +81,98 @@ void MediaPlayer::play() { } void MediaPlayer::setPlaying( bool play ) { if ( !play ) { return; } if ( mediaPlayerState->paused() ) { mediaPlayerState->setPaused( FALSE ); return; } + QString tickerText, time, fileName; + if( playList->whichList() == 0 ) { //check for filelist const DocLnk *playListCurrent = playList->current(); if ( playListCurrent != NULL ) { currentFile = playListCurrent; } - xineControl->play( currentFile->file() ); + fileName = currentFile->name(); + long seconds = mediaPlayerState->length();// + time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); + qDebug(time); + } else { //if playing in file list.. play in a different way + // random and looping settings enabled causes problems here, + // since there is no selected file in the playlist, but a selected file in the file list, + // so we remember and shutoff + l = mediaPlayerState->looping(); + if(l) + mediaPlayerState->setLooping( false ); + r = mediaPlayerState->shuffled(); + mediaPlayerState->setShuffled(false); + + fileName = playList->currentFileListPathName(); + xineControl->play( fileName); long seconds = mediaPlayerState->length();// - QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); + time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); qDebug(time); + if( fileName.left(4) != "http" ) + fileName = QFileInfo( fileName).baseName(); - QString tickerText; - if( currentFile->file().left(4) == "http" ) - tickerText= tr( " File: " ) + currentFile->name(); + } + if( fileName.left(4) == "http" ) + tickerText= tr( " File: " ) + fileName; else - tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time; - - audioUI->setTickerText( currentFile->file( ) ); - + tickerText = tr( " File: " ) + fileName + tr(", Length: ") + time; + audioUI->setTickerText( tickerText ); } void MediaPlayer::prev() { + if(playList->whichList() == 0) { //if using the playlist if ( playList->prev() ) { play(); } else if ( mediaPlayerState->looping() ) { if ( playList->last() ) { play(); } } else { mediaPlayerState->setList(); } } +} void MediaPlayer::next() { + + if(playList->whichList() == 0) { //if using the playlist if ( playList->next() ) { play(); } else if ( mediaPlayerState->looping() ) { if ( playList->first() ) { play(); } } else { mediaPlayerState->setList(); } + } else { //if playing from file list, let's just stop + qDebug("<<<<<<<<<<<<<<<<<stop for filelists"); + mediaPlayerState->setPlaying(false); + mediaPlayerState->setView('l'); + if(l) mediaPlayerState->setLooping(l); + if(r) mediaPlayerState->setShuffled(r); + } + qApp->processEvents(); } void MediaPlayer::startDecreasingVolume() { volumeDirection = -1; startTimer( 100 ); volControl->decVol(2); } void MediaPlayer::startIncreasingVolume() { volumeDirection = +1; diff --git a/noncore/multimedia/opieplayer2/mediaplayer.h b/noncore/multimedia/opieplayer2/mediaplayer.h index 81fab88..05be128 100644 --- a/noncore/multimedia/opieplayer2/mediaplayer.h +++ b/noncore/multimedia/opieplayer2/mediaplayer.h @@ -8,40 +8,39 @@ #include <qpe/mediaplayerplugininterface.h> #include "xinecontrol.h" class DocLnk; class VolumeControl; class MediaPlayer : public QObject { Q_OBJECT public: MediaPlayer( QObject *parent, const char *name ); ~MediaPlayer(); - private slots: void setPlaying( bool ); void pauseCheck( bool ); void play(); void next(); void prev(); void startIncreasingVolume(); void startDecreasingVolume(); void stopChangingVolume(); void cleanUp(); void blank( bool ); protected: void timerEvent( QTimerEvent *e ); void keyReleaseEvent( QKeyEvent *e); private: - bool isBlanked; + bool isBlanked, l, r; int fd; int volumeDirection; const DocLnk *currentFile; XineControl *xineControl; VolumeControl *volControl; }; #endif // MEDIA_PLAYER_H diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp index 3bd04bc..15c70c3 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp @@ -312,25 +312,25 @@ void PlayListWidget::setDocument( const QString& fileref ) { qApp->processEvents(); setCaption( tr("OpiePlayer") ); } } void PlayListWidget::useSelectedDocument() { d->setDocumentUsed = FALSE; } const DocLnk *PlayListWidget::current() { // this is fugly - switch ( tabWidget->currentPageIndex() ) { + switch ( whichList() ) { case 0: //playlist { // qDebug("playlist"); if ( mediaPlayerState->playlist() ) { return d->selectedFiles->current(); } else if ( d->setDocumentUsed && d->current ) { return d->current; } else { return d->files->selected(); } } break; @@ -385,24 +385,25 @@ bool PlayListWidget::prev() { return FALSE; } } return TRUE; } } else { return mediaPlayerState->looping(); } } bool PlayListWidget::next() { +qDebug("<<<<<<<<<<<<next()"); if ( mediaPlayerState->playlist() ) { if ( mediaPlayerState->shuffled() ) { return prev(); } else { if ( !d->selectedFiles->next() ) { if ( mediaPlayerState->looping() ) { return d->selectedFiles->first(); } else { return FALSE; } } return TRUE; @@ -488,25 +489,25 @@ void PlayListWidget::setPlaylist( bool shown ) { d->playListFrame->hide(); } } void PlayListWidget::addSelected() { Config cfg( "OpiePlayer" ); cfg.setGroup("PlayList"); QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); - switch (tabWidget->currentPageIndex()) { + switch (whichList()) { case 0: //playlist break; case 1: { //audio QListViewItemIterator it( audioView ); // iterate through all items of the listview for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { QListIterator<DocLnk> dit( files.children() ); for ( ; dit.current(); ++dit ) { if( dit.current()->name() == it.current()->text(0) ) { if(QFileInfo( dit.current()->file()).exists()) d->selectedFiles->addToSelection( **dit ); @@ -548,25 +549,25 @@ void PlayListWidget::removeSelected() { void PlayListWidget::playIt( QListViewItem *it) { if(!it) return; mediaPlayerState->setPlaying(FALSE); mediaPlayerState->setPlaying(TRUE); d->selectedFiles->unSelect(); } void PlayListWidget::addToSelection( QListViewItem *it) { d->setDocumentUsed = FALSE; if(it) { - switch (tabWidget->currentPageIndex()) { + switch ( whichList()) { case 1: { QListIterator<DocLnk> dit( files.children() ); for ( ; dit.current(); ++dit ) { if( dit.current()->name() == it->text(0)) { if(QFileInfo( dit.current()->file()).exists()) d->selectedFiles->addToSelection( **dit ); } } } break; case 2: { QListIterator<DocLnk> dit( vFiles.children() ); @@ -579,25 +580,25 @@ void PlayListWidget::addToSelection( QListViewItem *it) { } break; case 0: break; }; tabWidget->setCurrentPage(0); } } void PlayListWidget::tabChanged(QWidget *) { - switch ( tabWidget->currentPageIndex()) { + switch ( whichList()) { case 0: { if( !tbDeletePlaylist->isHidden() ) { tbDeletePlaylist->hide(); } d->tbRemoveFromList->setEnabled(TRUE); d->tbAddToList->setEnabled(FALSE); } break; case 1: { audioView->clear(); @@ -625,53 +626,52 @@ void PlayListWidget::tabChanged(QWidget *) { { if( tbDeletePlaylist->isHidden() ) { tbDeletePlaylist->show(); } playLists->reread(); } break; }; } void PlayListWidget::btnPlay(bool b) { - // mediaPlayerState->setPlaying(b); - switch ( tabWidget->currentPageIndex()) { - case 0: - { - mediaPlayerState->setPlaying(b); - } - break; - case 1: - { - addToSelection( audioView->currentItem() ); - mediaPlayerState->setPlaying(b); - d->selectedFiles->removeSelected( ); - tabWidget->setCurrentPage(1); - d->selectedFiles->unSelect(); - insanityBool=FALSE; - }// audioView->clearSelection(); - break; - case 2: - { - addToSelection( videoView->currentItem() ); mediaPlayerState->setPlaying(b); qApp->processEvents(); - d->selectedFiles->removeSelected( ); - tabWidget->setCurrentPage(2); - d->selectedFiles->unSelect(); insanityBool=FALSE; - }// videoView->clearSelection(); - break; - }; +// switch ( whichList()) { +// case 0: +// { +// mediaPlayerState->setPlaying(b); +// } +// break; +// case 1: +// { +// mediaPlayerState->setPlaying(b); +// qApp->processEvents(); +// insanityBool=FALSE; +// }// audioView->clearSelection(); +// break; +// case 2: +// { +// // addToSelection( videoView->currentItem() ); +// mediaPlayerState->setPlaying(b); +// qApp->processEvents(); +// // d->selectedFiles->removeSelected( ); +// // tabWidget->setCurrentPage(2); +// // d->selectedFiles->unSelect(); +// insanityBool=FALSE; +// }// videoView->clearSelection(); +// break; +// }; } void PlayListWidget::deletePlaylist() { switch( QMessageBox::information( this, (tr("Remove Playlist?")), (tr("You really want to delete\nthis playlist?")), (tr("Yes")), (tr("No")), 0 )){ case 0: // Yes clicked, QFile().remove(playLists->selected()->file()); QFile().remove(playLists->selected()->linkFile()); playLists->reread(); break; @@ -727,57 +727,59 @@ void PlayListWidget::populateAudioView() { if(dit.current()->file().find(path) != -1 ) { storage = name; } } QListViewItem * newItem; if ( QFile( dit.current()->file()).exists() || dit.current()->file().left(4) == "http" ) { long size; if( dit.current()->file().left(4) == "http" ) size=0; else size = QFile( dit.current()->file() ).size(); - newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), QString::number(size ), storage); + newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), + QString::number(size ), storage, dit.current()->file()); newItem->setPixmap( 0, Resource::loadPixmap( "opieplayer2/musicfile" ) ); } } } void PlayListWidget::populateVideoView() { videoView->clear(); StorageInfo storageInfo; const QList<FileSystem> &fs = storageInfo.fileSystems(); if(!videoScan ) { scanForVideo(); } QListIterator<DocLnk> Vdit( vFiles.children() ); QListIterator<FileSystem> it ( fs ); videoView->clear(); - QString storage; + QString storage, pathName; for ( ; Vdit.current(); ++Vdit ) { for( ; it.current(); ++it ) { const QString name = (*it)->name(); const QString path = (*it)->path(); if( Vdit.current()->file().find(path) != -1 ) { storage=name; + pathName=path; } } QListViewItem * newItem; if ( QFile( Vdit.current()->file() ).exists() ) { newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), - QString::number( QFile( Vdit.current()->file() ).size() ), storage ); + QString::number( QFile( Vdit.current()->file() ).size() ), storage, Vdit.current()->file()); newItem->setPixmap(0, Resource::loadPixmap( "opieplayer2/videofile" ) ); } } } void PlayListWidget::openFile() { QString filename, name; InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); fileDlg->exec(); if( fileDlg->result() == 1 ) { @@ -1053,12 +1055,28 @@ void PlayListWidget::populateSkinsMenu() { } void PlayListWidget::skinsMenuActivated( int item ) { for( uint i = defaultSkinIndex; i > defaultSkinIndex - skinsMenu->count(); i-- ) { skinsMenu->setItemChecked( i, FALSE ); } skinsMenu->setItemChecked( item, TRUE ); Config cfg( "OpiePlayer" ); cfg.setGroup("Options"); cfg.writeEntry("Skin", skinsMenu->text( item ) ); } + +int PlayListWidget::whichList() { + return tabWidget->currentPageIndex(); +} + +QString PlayListWidget::currentFileListPathName() { + switch (whichList()) { + case 1: + return audioView->currentItem()->text(3); + break; + case 2: + return videoView->currentItem()->text(3); + break; + }; + return ""; +} diff --git a/noncore/multimedia/opieplayer2/playlistwidget.h b/noncore/multimedia/opieplayer2/playlistwidget.h index dcfdd48..2873dca 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.h +++ b/noncore/multimedia/opieplayer2/playlistwidget.h @@ -57,32 +57,33 @@ class PlayListWidget : public PlayListWidgetGui { public: PlayListWidget( QWidget* parent=0, const char* name=0, WFlags fl=0 ); ~PlayListWidget(); DocLnkSet files; DocLnkSet vFiles; bool fromSetDocument; bool insanityBool; QString setDocFileRef; // retrieve the current playlist entry (media file link) const DocLnk *current(); void useSelectedDocument(); int selected; + int whichList(); public slots: bool first(); bool last(); bool next(); bool prev(); void writeConfig( Config& cfg ) const; - + QString currentFileListPathName(); protected: void keyReleaseEvent( QKeyEvent *e); private: int defaultSkinIndex; bool audioScan, videoScan; void readm3u(const QString &); void readPls(const QString &); void initializeStates(); void readConfig( Config& cfg ); void populateAudioView(); void populateVideoView(); diff --git a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp index 250833c..f073102 100644 --- a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp @@ -146,45 +146,47 @@ PlayListWidgetGui::PlayListWidgetGui( QWidget* parent, const char* name, WFlags Playout->addMultiCellWidget( vbox3, 0, 0, 0, 1 ); QWidget *aTab; aTab = new QWidget( tabWidget, "aTab" ); QGridLayout *Alayout = new QGridLayout( aTab ); Alayout->setSpacing( 2 ); Alayout->setMargin( 2 ); audioView = new QListView( aTab, "Audioview" ); audioView->addColumn( tr( "Title" ), 140 ); audioView->addColumn( tr( "Size" ), -1 ); audioView->addColumn( tr( "Media" ), -1 ); + audioView->addColumn( tr( "Path" ), 0 ); audioView->setColumnAlignment( 1, Qt::AlignRight ); audioView->setColumnAlignment( 2, Qt::AlignRight ); audioView->setAllColumnsShowFocus( TRUE ); audioView->setSorting( 0, TRUE ); audioView->setMultiSelection( TRUE ); audioView->setSelectionMode( QListView::Extended ); Alayout->addMultiCellWidget( audioView, 0, 0, 0, 1 ); tabWidget->insertTab( aTab, tr( "Audio" ) ); QPEApplication::setStylusOperation( audioView->viewport(), QPEApplication::RightOnHold ); QWidget *vTab; vTab = new QWidget( tabWidget, "vTab" ); QGridLayout *Vlayout = new QGridLayout( vTab ); Vlayout->setSpacing( 2 ); Vlayout->setMargin( 2 ); videoView = new QListView( vTab, "Videoview" ); videoView->addColumn( tr( "Title" ), 140); videoView->addColumn( tr( "Size" ), -1 ); videoView->addColumn(tr( "Media" ), -1 ); + videoView->addColumn(tr( "Path" ), 0 ); videoView->setColumnAlignment( 1, Qt::AlignRight ); videoView->setColumnAlignment( 2, Qt::AlignRight ); videoView->setAllColumnsShowFocus( TRUE ); videoView->setSorting( 0, TRUE ); videoView->setMultiSelection( TRUE ); videoView->setSelectionMode( QListView::Extended ); Vlayout->addMultiCellWidget( videoView, 0, 0, 0, 1 ); QPEApplication::setStylusOperation( videoView->viewport(), QPEApplication::RightOnHold ); tabWidget->insertTab( vTab, tr( "Video" ) ); |