summaryrefslogtreecommitdiff
path: root/noncore/multimedia
authorsimon <simon>2002-12-02 17:42:44 (UTC)
committer simon <simon>2002-12-02 17:42:44 (UTC)
commitc31f9b59dba873739494fcd9916c7cb9120ce1d9 (patch) (unidiff)
tree4b3371edaf5f0f6f6240a7bfe8f16be1dc111e8d /noncore/multimedia
parent2f2f6cfbc31e0144060588b26814301ce99ebd39 (diff)
downloadopie-c31f9b59dba873739494fcd9916c7cb9120ce1d9.zip
opie-c31f9b59dba873739494fcd9916c7cb9120ce1d9.tar.gz
opie-c31f9b59dba873739494fcd9916c7cb9120ce1d9.tar.bz2
- don't enable the play button if switching to the playlist tab and the
playlist is empty - don't crash when starting to play and no item is selected in the playlist. instead select the first item then.
Diffstat (limited to 'noncore/multimedia') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/playlistselection.h2
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp10
2 files changed, 11 insertions, 1 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistselection.h b/noncore/multimedia/opieplayer2/playlistselection.h
index d10bc82..9cc4e30 100644
--- a/noncore/multimedia/opieplayer2/playlistselection.h
+++ b/noncore/multimedia/opieplayer2/playlistselection.h
@@ -24,40 +24,42 @@
24#include <qlistview.h> 24#include <qlistview.h>
25#include <qpe/applnk.h> 25#include <qpe/applnk.h>
26#include <qpe/config.h> 26#include <qpe/config.h>
27 27
28class PlayListSelection : public QListView { 28class PlayListSelection : public QListView {
29 Q_OBJECT 29 Q_OBJECT
30public: 30public:
31 PlayListSelection( QWidget *parent, const char *name=0 ); 31 PlayListSelection( QWidget *parent, const char *name=0 );
32 ~PlayListSelection(); 32 ~PlayListSelection();
33 33
34 const DocLnk *current(); // retrieve the current playlist entry (media file link) 34 const DocLnk *current(); // retrieve the current playlist entry (media file link)
35public slots: 35public slots:
36 void addToSelection( const DocLnk & ); // Add a media file to the playlist 36 void addToSelection( const DocLnk & ); // Add a media file to the playlist
37 void removeSelected(); // Remove a media file from the playlist 37 void removeSelected(); // Remove a media file from the playlist
38 void moveSelectedUp(); // Move the media file up the playlist so it is played earlier 38 void moveSelectedUp(); // Move the media file up the playlist so it is played earlier
39 void moveSelectedDown(); // Move the media file down the playlist so it is played later 39 void moveSelectedDown(); // Move the media file down the playlist so it is played later
40 void unSelect(); 40 void unSelect();
41 void writeCurrent( Config &); 41 void writeCurrent( Config &);
42 void setSelectedItem( const QString & ); 42 void setSelectedItem( const QString & );
43 bool prev(); 43 bool prev();
44 bool next(); 44 bool next();
45 bool first(); 45 bool first();
46 bool last(); 46 bool last();
47 47
48 bool isEmpty() const { return childCount() == 0; }
49
48protected: 50protected:
49 virtual void contentsMouseMoveEvent(QMouseEvent *); 51 virtual void contentsMouseMoveEvent(QMouseEvent *);
50/* #ifdef USE_PLAYLIST_BACKGROUND */ 52/* #ifdef USE_PLAYLIST_BACKGROUND */
51 virtual void drawBackground( QPainter *p, const QRect &r ); 53 virtual void drawBackground( QPainter *p, const QRect &r );
52 virtual void paintEmptyArea( QPainter *p, const QRect &r ) { drawBackground( p, r ); }; 54 virtual void paintEmptyArea( QPainter *p, const QRect &r ) { drawBackground( p, r ); };
53/* #endif */ 55/* #endif */
54 56
55private: 57private:
56 QList<DocLnk> selectedList; 58 QList<DocLnk> selectedList;
57 const DocLnk *lnk; 59 const DocLnk *lnk;
58}; 60};
59 61
60 62
61#endif // PLAY_LIST_SELECTION_H 63#endif // PLAY_LIST_SELECTION_H
62 64
63 65
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index f53def6..b08204e 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -397,49 +397,55 @@ void PlayListWidget::setDocument( const QString& fileref ) {
397 } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls 397 } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls
398 readPls( fileref ); 398 readPls( fileref );
399 } else if( DocLnk( fileref).file().find( "pls", 0, TRUE) != -1 ) { 399 } else if( DocLnk( fileref).file().find( "pls", 0, TRUE) != -1 ) {
400 readPls( DocLnk( fileref).file() ); 400 readPls( DocLnk( fileref).file() );
401 } else { 401 } else {
402 clearList(); 402 clearList();
403 addToSelection( DocLnk( fileref ) ); 403 addToSelection( DocLnk( fileref ) );
404 writeCurrentM3u(); 404 writeCurrentM3u();
405 405
406 d->setDocumentUsed = TRUE; 406 d->setDocumentUsed = TRUE;
407 mediaPlayerState->setPlaying( FALSE ); 407 mediaPlayerState->setPlaying( FALSE );
408 mediaPlayerState->setPlaying( TRUE ); 408 mediaPlayerState->setPlaying( TRUE );
409 } 409 }
410} 410}
411 411
412 412
413void PlayListWidget::useSelectedDocument() { 413void PlayListWidget::useSelectedDocument() {
414 d->setDocumentUsed = FALSE; 414 d->setDocumentUsed = FALSE;
415} 415}
416 416
417 417
418const DocLnk *PlayListWidget::current() const { // this is fugly 418const DocLnk *PlayListWidget::current() const { // this is fugly
419 assert( currentTab() == CurrentPlayList ); 419 assert( currentTab() == CurrentPlayList );
420 420
421 return d->selectedFiles->current(); 421 const DocLnk *lnk = d->selectedFiles->current();
422 if ( !lnk ) {
423 d->selectedFiles->first();
424 lnk = d->selectedFiles->current();
425 }
426 assert( lnk );
427 return lnk;
422} 428}
423 429
424 430
425bool PlayListWidget::prev() { 431bool PlayListWidget::prev() {
426 if ( mediaPlayerState->isShuffled() ) { 432 if ( mediaPlayerState->isShuffled() ) {
427 const DocLnk *cur = current(); 433 const DocLnk *cur = current();
428 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0)); 434 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0));
429 for ( int i = 0; i < j; i++ ) { 435 for ( int i = 0; i < j; i++ ) {
430 if ( !d->selectedFiles->next() ) 436 if ( !d->selectedFiles->next() )
431 d->selectedFiles->first(); 437 d->selectedFiles->first();
432 } 438 }
433 if ( cur == current() ) 439 if ( cur == current() )
434 if ( !d->selectedFiles->next() ) { 440 if ( !d->selectedFiles->next() ) {
435 d->selectedFiles->first(); 441 d->selectedFiles->first();
436 } 442 }
437 return TRUE; 443 return TRUE;
438 } else { 444 } else {
439 if ( !d->selectedFiles->prev() ) { 445 if ( !d->selectedFiles->prev() ) {
440 if ( mediaPlayerState->isLooping() ) { 446 if ( mediaPlayerState->isLooping() ) {
441 return d->selectedFiles->last(); 447 return d->selectedFiles->last();
442 } else { 448 } else {
443 return FALSE; 449 return FALSE;
444 } 450 }
445 } 451 }
@@ -543,48 +549,50 @@ void PlayListWidget::addToSelection( QListViewItem *it) {
543 filename=it->text(3); 549 filename=it->text(3);
544 lnk.setName( QFileInfo(filename).baseName() ); //sets name 550 lnk.setName( QFileInfo(filename).baseName() ); //sets name
545 lnk.setFile( filename ); //sets file name 551 lnk.setFile( filename ); //sets file name
546 d->selectedFiles->addToSelection( lnk); 552 d->selectedFiles->addToSelection( lnk);
547 553
548 writeCurrentM3u(); 554 writeCurrentM3u();
549 tabWidget->setCurrentPage(0); 555 tabWidget->setCurrentPage(0);
550 556
551 } 557 }
552} 558}
553 559
554 560
555void PlayListWidget::tabChanged(QWidget *) { 561void PlayListWidget::tabChanged(QWidget *) {
556 562
557 d->tbPlay->setEnabled( true ); 563 d->tbPlay->setEnabled( true );
558 564
559 switch ( currentTab() ) { 565 switch ( currentTab() ) {
560 case CurrentPlayList: 566 case CurrentPlayList:
561 { 567 {
562 if( !tbDeletePlaylist->isHidden() ) { 568 if( !tbDeletePlaylist->isHidden() ) {
563 tbDeletePlaylist->hide(); 569 tbDeletePlaylist->hide();
564 } 570 }
565 d->tbRemoveFromList->setEnabled(TRUE); 571 d->tbRemoveFromList->setEnabled(TRUE);
566 d->tbAddToList->setEnabled(FALSE); 572 d->tbAddToList->setEnabled(FALSE);
573
574 d->tbPlay->setEnabled( !d->selectedFiles->isEmpty() );
567 } 575 }
568 break; 576 break;
569 case AudioFiles: 577 case AudioFiles:
570 { 578 {
571 // audioView->clear(); 579 // audioView->clear();
572 if(!audioPopulated) populateAudioView(); 580 if(!audioPopulated) populateAudioView();
573 581
574 if( !tbDeletePlaylist->isHidden() ) { 582 if( !tbDeletePlaylist->isHidden() ) {
575 tbDeletePlaylist->hide(); 583 tbDeletePlaylist->hide();
576 } 584 }
577 d->tbRemoveFromList->setEnabled(FALSE); 585 d->tbRemoveFromList->setEnabled(FALSE);
578 d->tbAddToList->setEnabled(TRUE); 586 d->tbAddToList->setEnabled(TRUE);
579 } 587 }
580 break; 588 break;
581 case VideoFiles: 589 case VideoFiles:
582 { 590 {
583 // videoView->clear(); 591 // videoView->clear();
584 if(!videoPopulated) populateVideoView(); 592 if(!videoPopulated) populateVideoView();
585 if( !tbDeletePlaylist->isHidden() ) { 593 if( !tbDeletePlaylist->isHidden() ) {
586 tbDeletePlaylist->hide(); 594 tbDeletePlaylist->hide();
587 } 595 }
588 d->tbRemoveFromList->setEnabled(FALSE); 596 d->tbRemoveFromList->setEnabled(FALSE);
589 d->tbAddToList->setEnabled(TRUE); 597 d->tbAddToList->setEnabled(TRUE);
590 } 598 }