-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidget.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp index c0d3108..d53c423 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp | |||
@@ -44,32 +44,34 @@ | |||
44 | #include <qtextstream.h> | 44 | #include <qtextstream.h> |
45 | 45 | ||
46 | #include "playlistselection.h" | 46 | #include "playlistselection.h" |
47 | #include "playlistwidget.h" | 47 | #include "playlistwidget.h" |
48 | #include "mediaplayerstate.h" | 48 | #include "mediaplayerstate.h" |
49 | #include "inputDialog.h" | 49 | #include "inputDialog.h" |
50 | #include "om3u.h" | 50 | #include "om3u.h" |
51 | 51 | ||
52 | //only needed for the random play | 52 | //only needed for the random play |
53 | #include <stdlib.h> | 53 | #include <stdlib.h> |
54 | 54 | ||
55 | #include "audiowidget.h" | 55 | #include "audiowidget.h" |
56 | #include "videowidget.h" | 56 | #include "videowidget.h" |
57 | 57 | ||
58 | extern MediaPlayerState *mediaPlayerState; | 58 | extern MediaPlayerState *mediaPlayerState; |
59 | 59 | ||
60 | QString audioMimes ="audio/mpeg;audio/x-wav;audio/x-ogg"; | ||
61 | // no m3u's here please | ||
60 | 62 | ||
61 | PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) | 63 | PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) |
62 | : PlayListWidgetGui( parent, name, fl ) { | 64 | : PlayListWidgetGui( parent, name, fl ) { |
63 | 65 | ||
64 | d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), | 66 | d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), |
65 | "opieplayer2/add_to_playlist", | 67 | "opieplayer2/add_to_playlist", |
66 | this , SLOT(addSelected() ) ); | 68 | this , SLOT(addSelected() ) ); |
67 | d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), | 69 | d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), |
68 | "opieplayer2/remove_from_playlist", | 70 | "opieplayer2/remove_from_playlist", |
69 | this , SLOT(removeSelected() ) ); | 71 | this , SLOT(removeSelected() ) ); |
70 | d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", | 72 | d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", |
71 | this , SLOT( btnPlay( bool) ), TRUE ); | 73 | this , SLOT( btnPlay( bool) ), TRUE ); |
72 | d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", | 74 | d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", |
73 | mediaPlayerState, SLOT( setShuffled( bool ) ), TRUE ); | 75 | mediaPlayerState, SLOT( setShuffled( bool ) ), TRUE ); |
74 | d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", | 76 | d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", |
75 | mediaPlayerState, SLOT( setLooping( bool ) ), TRUE ); | 77 | mediaPlayerState, SLOT( setLooping( bool ) ), TRUE ); |
@@ -192,33 +194,33 @@ void PlayListWidget::writeDefaultPlaylist() { | |||
192 | m3uList->add( d->selectedFiles->current()->file() ); | 194 | m3uList->add( d->selectedFiles->current()->file() ); |
193 | } | 195 | } |
194 | while ( d->selectedFiles->next() ); | 196 | while ( d->selectedFiles->next() ); |
195 | 197 | ||
196 | m3uList->write(); | 198 | m3uList->write(); |
197 | m3uList->close(); | 199 | m3uList->close(); |
198 | if(m3uList) delete m3uList; | 200 | if(m3uList) delete m3uList; |
199 | } | 201 | } |
200 | } | 202 | } |
201 | 203 | ||
202 | void PlayListWidget::addToSelection( const DocLnk& lnk ) { | 204 | void PlayListWidget::addToSelection( const DocLnk& lnk ) { |
203 | d->setDocumentUsed = FALSE; | 205 | d->setDocumentUsed = FALSE; |
204 | if ( mediaPlayerState->playlist() ) { | 206 | if ( mediaPlayerState->playlist() ) { |
205 | if( QFileInfo( lnk.file() ).exists() || | 207 | if( QFileInfo( lnk.file() ).exists() || |
206 | lnk.file().left(4) == "http" ) | 208 | lnk.file().left(4) == "http" ) |
207 | d->selectedFiles->addToSelection( lnk ); | 209 | d->selectedFiles->addToSelection( lnk ); |
208 | writeCurrentM3u(); | 210 | // writeCurrentM3u(); |
209 | } | 211 | } |
210 | else | 212 | else |
211 | mediaPlayerState->setPlaying( TRUE ); | 213 | mediaPlayerState->setPlaying( TRUE ); |
212 | } | 214 | } |
213 | 215 | ||
214 | 216 | ||
215 | void PlayListWidget::clearList() { | 217 | void PlayListWidget::clearList() { |
216 | while ( first() ) { | 218 | while ( first() ) { |
217 | d->selectedFiles->removeSelected(); | 219 | d->selectedFiles->removeSelected(); |
218 | } | 220 | } |
219 | } | 221 | } |
220 | 222 | ||
221 | void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { | 223 | void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { |
222 | switch (mouse) { | 224 | switch (mouse) { |
223 | case 1: | 225 | case 1: |
224 | break; | 226 | break; |
@@ -239,86 +241,92 @@ void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoi | |||
239 | case 1: | 241 | case 1: |
240 | break; | 242 | break; |
241 | case 2: | 243 | case 2: |
242 | { | 244 | { |
243 | QPopupMenu m; | 245 | QPopupMenu m; |
244 | m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); | 246 | m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); |
245 | m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); | 247 | m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); |
246 | m.exec( QCursor::pos() ); | 248 | m.exec( QCursor::pos() ); |
247 | } | 249 | } |
248 | break; | 250 | break; |
249 | } | 251 | } |
250 | } | 252 | } |
251 | 253 | ||
252 | 254 | ||
253 | void PlayListWidget::addAllToList() { | 255 | void PlayListWidget::addAllToList() { |
254 | DocLnkSet filesAll; | 256 | DocLnkSet filesAll; |
255 | Global::findDocuments(&filesAll, "video/*;audio/*"); | 257 | Global::findDocuments(&filesAll, "video/*;"+audioMimes); |
256 | QListIterator<DocLnk> Adit( filesAll.children() ); | 258 | QListIterator<DocLnk> Adit( filesAll.children() ); |
257 | for ( ; Adit.current(); ++Adit ) { | 259 | for ( ; Adit.current(); ++Adit ) { |
258 | if( QFileInfo( Adit.current()->file() ).exists() ) { | 260 | if( QFileInfo( Adit.current()->file() ).exists() ) { |
259 | d->selectedFiles->addToSelection( **Adit ); | 261 | d->selectedFiles->addToSelection( **Adit ); |
260 | } | 262 | } |
261 | } | 263 | } |
262 | writeCurrentM3u(); | 264 | writeCurrentM3u(); |
263 | } | 265 | } |
264 | 266 | ||
265 | 267 | ||
266 | void PlayListWidget::addAllMusicToList() { | 268 | void PlayListWidget::addAllMusicToList() { |
269 | if(!audioScan) | ||
270 | scanForAudio(); | ||
267 | QListIterator<DocLnk> dit( files.children() ); | 271 | QListIterator<DocLnk> dit( files.children() ); |
268 | for ( ; dit.current(); ++dit ) { | 272 | for ( ; dit.current(); ++dit ) { |
269 | if( QFileInfo(dit.current()->file() ).exists() ) { | 273 | if( QFileInfo(dit.current()->file() ).exists() ) { |
270 | d->selectedFiles->addToSelection( **dit ); | 274 | d->selectedFiles->addToSelection( **dit ); |
271 | } | 275 | } |
272 | } | 276 | } |
273 | writeCurrentM3u(); | 277 | writeCurrentM3u(); |
274 | } | 278 | } |
275 | 279 | ||
276 | 280 | ||
277 | void PlayListWidget::addAllVideoToList() { | 281 | void PlayListWidget::addAllVideoToList() { |
282 | if(!videoScan) | ||
283 | scanForVideo(); | ||
278 | QListIterator<DocLnk> dit( vFiles.children() ); | 284 | QListIterator<DocLnk> dit( vFiles.children() ); |
279 | for ( ; dit.current(); ++dit ) { | 285 | for ( ; dit.current(); ++dit ) { |
280 | if( QFileInfo( dit.current()->file() ).exists() ) { | 286 | if( QFileInfo( dit.current()->file() ).exists() ) { |
281 | d->selectedFiles->addToSelection( **dit ); | 287 | d->selectedFiles->addToSelection( **dit ); |
282 | } | 288 | } |
283 | } | 289 | } |
284 | writeCurrentM3u(); | 290 | writeCurrentM3u(); |
285 | } | 291 | } |
286 | 292 | ||
287 | 293 | ||
288 | void PlayListWidget::setDocument( const QString& fileref ) { | 294 | void PlayListWidget::setDocument( const QString& fileref ) { |
289 | qDebug( "<<<<<<<<set document>>>>>>>>>> "+fileref ); | 295 | qDebug( "<<<<<<<<set document>>>>>>>>>> "+fileref ); |
290 | fromSetDocument = TRUE; | 296 | fromSetDocument = TRUE; |
291 | if ( fileref.isNull() ) { | 297 | if ( fileref.isNull() ) { |
292 | QMessageBox::critical( 0, tr( "Invalid File" ), | 298 | QMessageBox::critical( 0, tr( "Invalid File" ), |
293 | tr( "There was a problem in getting the file." ) ); | 299 | tr( "There was a problem in getting the file." ) ); |
294 | return; | 300 | return; |
295 | } | 301 | } |
296 | 302 | ||
297 | clearList(); | 303 | clearList(); |
298 | if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u | 304 | if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u |
299 | readm3u( fileref ); | 305 | readm3u( fileref ); |
300 | } else if( DocLnk( fileref).file().find( "m3u", 0, TRUE) != -1 ) { | 306 | } else if( DocLnk( fileref).file().find( "m3u", 0, TRUE) != -1 ) { |
301 | readm3u( DocLnk( fileref).file() ); | 307 | readm3u( DocLnk( fileref).file() ); |
302 | } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls | 308 | } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls |
303 | readPls( fileref ); | 309 | readPls( fileref ); |
304 | } else if( DocLnk( fileref).file().find( "pls", 0, TRUE) != -1 ) { | 310 | } else if( DocLnk( fileref).file().find( "pls", 0, TRUE) != -1 ) { |
305 | readPls( DocLnk( fileref).file() ); | 311 | readPls( DocLnk( fileref).file() ); |
306 | } else { | 312 | } else { |
307 | clearList(); | 313 | clearList(); |
308 | addToSelection( DocLnk( fileref ) ); | 314 | addToSelection( DocLnk( fileref ) ); |
315 | writeCurrentM3u(); | ||
316 | |||
309 | d->setDocumentUsed = TRUE; | 317 | d->setDocumentUsed = TRUE; |
310 | mediaPlayerState->setPlaying( FALSE ); | 318 | mediaPlayerState->setPlaying( FALSE ); |
311 | mediaPlayerState->setPlaying( TRUE ); | 319 | mediaPlayerState->setPlaying( TRUE ); |
312 | } | 320 | } |
313 | } | 321 | } |
314 | 322 | ||
315 | 323 | ||
316 | void PlayListWidget::useSelectedDocument() { | 324 | void PlayListWidget::useSelectedDocument() { |
317 | d->setDocumentUsed = FALSE; | 325 | d->setDocumentUsed = FALSE; |
318 | } | 326 | } |
319 | 327 | ||
320 | 328 | ||
321 | const DocLnk *PlayListWidget::current() { // this is fugly | 329 | const DocLnk *PlayListWidget::current() { // this is fugly |
322 | switch ( whichList() ) { | 330 | switch ( whichList() ) { |
323 | case 0: //playlist | 331 | case 0: //playlist |
324 | { | 332 | { |
@@ -599,33 +607,33 @@ void PlayListWidget::deletePlaylist() { | |||
599 | } | 607 | } |
600 | 608 | ||
601 | 609 | ||
602 | void PlayListWidget::playSelected() { | 610 | void PlayListWidget::playSelected() { |
603 | btnPlay( TRUE); | 611 | btnPlay( TRUE); |
604 | } | 612 | } |
605 | 613 | ||
606 | 614 | ||
607 | void PlayListWidget::scanForAudio() { | 615 | void PlayListWidget::scanForAudio() { |
608 | // qDebug("scan for audio"); | 616 | // qDebug("scan for audio"); |
609 | files.detachChildren(); | 617 | files.detachChildren(); |
610 | QListIterator<DocLnk> sdit( files.children() ); | 618 | QListIterator<DocLnk> sdit( files.children() ); |
611 | for ( ; sdit.current(); ++sdit ) { | 619 | for ( ; sdit.current(); ++sdit ) { |
612 | delete sdit.current(); | 620 | delete sdit.current(); |
613 | } | 621 | } |
614 | // Global::findDocuments( &files, "audio/*"); | 622 | // Global::findDocuments( &files, "audio/*"); |
615 | Global::findDocuments( &files, "audio/mpeg;audio/x-wav;audio/x-ogg"); | 623 | Global::findDocuments( &files, audioMimes); |
616 | audioScan = TRUE; | 624 | audioScan = TRUE; |
617 | } | 625 | } |
618 | 626 | ||
619 | void PlayListWidget::scanForVideo() { | 627 | void PlayListWidget::scanForVideo() { |
620 | // qDebug("scan for video"); | 628 | // qDebug("scan for video"); |
621 | vFiles.detachChildren(); | 629 | vFiles.detachChildren(); |
622 | QListIterator<DocLnk> sdit( vFiles.children() ); | 630 | QListIterator<DocLnk> sdit( vFiles.children() ); |
623 | for ( ; sdit.current(); ++sdit ) { | 631 | for ( ; sdit.current(); ++sdit ) { |
624 | delete sdit.current(); | 632 | delete sdit.current(); |
625 | } | 633 | } |
626 | Global::findDocuments(&vFiles, "video/*"); | 634 | Global::findDocuments(&vFiles, "video/*"); |
627 | videoScan = TRUE; | 635 | videoScan = TRUE; |
628 | } | 636 | } |
629 | 637 | ||
630 | void PlayListWidget::populateAudioView() { | 638 | void PlayListWidget::populateAudioView() { |
631 | audioView->clear(); | 639 | audioView->clear(); |
@@ -831,42 +839,43 @@ void PlayListWidget::readPls( const QString &filename ) { | |||
831 | 839 | ||
832 | lnk.writeLink(); | 840 | lnk.writeLink(); |
833 | d->selectedFiles->addToSelection( lnk ); | 841 | d->selectedFiles->addToSelection( lnk ); |
834 | } | 842 | } |
835 | 843 | ||
836 | m3uList->close(); | 844 | m3uList->close(); |
837 | if(m3uList) delete m3uList; | 845 | if(m3uList) delete m3uList; |
838 | } | 846 | } |
839 | 847 | ||
840 | /* | 848 | /* |
841 | writes current playlist to current m3u file */ | 849 | writes current playlist to current m3u file */ |
842 | void PlayListWidget::writeCurrentM3u() { | 850 | void PlayListWidget::writeCurrentM3u() { |
843 | qDebug("writing to current m3u"); | 851 | qDebug("writing to current m3u"); |
844 | Config cfg( "OpiePlayer" ); | 852 | Config cfg( "OpiePlayer" ); |
845 | cfg.setGroup("PlayList"); | 853 | cfg.setGroup("PlayList"); |
846 | QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); | 854 | QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); |
847 | // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); | 855 | |
848 | Om3u *m3uList; | 856 | Om3u *m3uList; |
849 | m3uList = new Om3u( currentPlaylist, IO_ReadWrite |IO_Truncate ); | 857 | m3uList = new Om3u( currentPlaylist, IO_ReadWrite | IO_Truncate ); |
850 | d->selectedFiles->first(); | 858 | d->selectedFiles->first(); |
851 | 859 | qDebug( d->selectedFiles->current()->file()); | |
852 | do { | 860 | do { |
853 | m3uList->add( d->selectedFiles->current()->file()); | 861 | qDebug( d->selectedFiles->current()->file()); |
862 | m3uList->add( d->selectedFiles->current()->file() ); | ||
854 | } | 863 | } |
855 | while ( d->selectedFiles->next() ); | 864 | while ( d->selectedFiles->next() ); |
856 | // qDebug( list ); | 865 | qDebug( "<<<<<<<<<<<<>>>>>>>>>>>>>>>>>" ); |
857 | m3uList->write(); | 866 | m3uList->write(); |
858 | m3uList->close(); | 867 | m3uList->close(); |
859 | 868 | ||
860 | if(m3uList) delete m3uList; | 869 | if(m3uList) delete m3uList; |
861 | } | 870 | } |
862 | 871 | ||
863 | /* | 872 | /* |
864 | writes current playlist to m3u file */ | 873 | writes current playlist to m3u file */ |
865 | void PlayListWidget::writem3u() { | 874 | void PlayListWidget::writem3u() { |
866 | InputDialog *fileDlg; | 875 | InputDialog *fileDlg; |
867 | fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0); | 876 | fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0); |
868 | fileDlg->exec(); | 877 | fileDlg->exec(); |
869 | QString name, filename, list; | 878 | QString name, filename, list; |
870 | Om3u *m3uList; | 879 | Om3u *m3uList; |
871 | 880 | ||
872 | if( fileDlg->result() == 1 ) { | 881 | if( fileDlg->result() == 1 ) { |