summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/playlistwidget.cpp50
1 files changed, 33 insertions, 17 deletions
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp
index 78c2822..930560e 100644
--- a/core/multimedia/opieplayer/playlistwidget.cpp
+++ b/core/multimedia/opieplayer/playlistwidget.cpp
@@ -268,393 +268,391 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
268 268
269 videoView->addColumn(tr("Title"),140); 269 videoView->addColumn(tr("Title"),140);
270 videoView->addColumn(tr("Size"),-1); 270 videoView->addColumn(tr("Size"),-1);
271 videoView->addColumn(tr("Media"),-1); 271 videoView->addColumn(tr("Media"),-1);
272 videoView->setColumnAlignment(1, Qt::AlignRight); 272 videoView->setColumnAlignment(1, Qt::AlignRight);
273 videoView->setColumnAlignment(2, Qt::AlignRight); 273 videoView->setColumnAlignment(2, Qt::AlignRight);
274 videoView->setAllColumnsShowFocus(TRUE); 274 videoView->setAllColumnsShowFocus(TRUE);
275 videoView->setMultiSelection( TRUE ); 275 videoView->setMultiSelection( TRUE );
276 videoView->setSelectionMode( QListView::Extended); 276 videoView->setSelectionMode( QListView::Extended);
277 277
278 QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold); 278 QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold);
279 279
280 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 280 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
281 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); 281 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) );
282 connect( videoView, SIGNAL( returnPressed( QListViewItem *)), 282 connect( videoView, SIGNAL( returnPressed( QListViewItem *)),
283 this,SLOT( playIt( QListViewItem *)) ); 283 this,SLOT( playIt( QListViewItem *)) );
284 284
285 tabWidget->insertTab( vTab,tr("Video")); 285 tabWidget->insertTab( vTab,tr("Video"));
286// populateVideoView(); 286// populateVideoView();
287 287
288//playlists list 288//playlists list
289 QWidget *LTab; 289 QWidget *LTab;
290 LTab = new QWidget( tabWidget, "LTab" ); 290 LTab = new QWidget( tabWidget, "LTab" );
291 playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy 291 playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy
292 playLists->setMinimumSize(233,260); 292 playLists->setMinimumSize(233,260);
293 tabWidget->insertTab(LTab,tr("Lists")); 293 tabWidget->insertTab(LTab,tr("Lists"));
294 294
295 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); 295 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) );
296// connect( playLists, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); 296// connect( playLists, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) );
297 297
298// add the library area 298// add the library area
299 299
300// connect( audioView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)), 300// connect( audioView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)),
301// this, SLOT( fauxPlay( QListViewItem *) ) ); 301// this, SLOT( fauxPlay( QListViewItem *) ) );
302// connect( videoView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)), 302// connect( videoView, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int)),
303// this, SLOT( fauxPlay( QListViewItem *)) ); 303// this, SLOT( fauxPlay( QListViewItem *)) );
304 304
305// connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) ); 305// connect( audioView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) );
306// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) ); 306// connect( videoView, SIGNAL( clicked( QListViewItem *) ), this, SLOT( fauxPlay( QListViewItem *) ) );
307 307
308 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 308 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
309 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 309 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
310 310
311 connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); 311 connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*)));
312 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); 312 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) );
313 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); 313 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) );
314 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); 314 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) );
315 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); 315 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) );
316 316
317 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); 317 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) );
318// connect( d->selectedFiles, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) ); 318// connect( d->selectedFiles, SIGNAL( fileSelected( const DocLnk & ) ), this, SLOT( addToSelection( const DocLnk & ) ) );
319 319
320 setCentralWidget( vbox5 ); 320 setCentralWidget( vbox5 );
321 321
322 Config cfg( "OpiePlayer" ); 322 Config cfg( "OpiePlayer" );
323 readConfig( cfg ); 323 readConfig( cfg );
324 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 324 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
325// qDebug("currentList is "+currentPlaylist); 325// qDebug("currentList is "+currentPlaylist);
326 loadList(DocLnk( currentPlaylist)); 326 loadList(DocLnk( currentPlaylist));
327 setCaption(tr("OpiePlayer: ")+ currentPlaylist ); 327 setCaption(tr("OpiePlayer: ")+ currentPlaylist );
328 328
329 initializeStates(); 329 initializeStates();
330} 330}
331 331
332 332
333PlayListWidget::~PlayListWidget() { 333PlayListWidget::~PlayListWidget() {
334 Config cfg( "OpiePlayer" ); 334 Config cfg( "OpiePlayer" );
335 writeConfig( cfg ); 335 writeConfig( cfg );
336 336
337 337
338 if ( d->current ) 338 if ( d->current )
339 delete d->current; 339 delete d->current;
340 delete d; 340 delete d;
341} 341}
342 342
343 343
344void PlayListWidget::initializeStates() { 344void PlayListWidget::initializeStates() {
345 345
346 d->tbPlay->setOn( mediaPlayerState->playing() ); 346 d->tbPlay->setOn( mediaPlayerState->playing() );
347 d->tbLoop->setOn( mediaPlayerState->looping() ); 347 d->tbLoop->setOn( mediaPlayerState->looping() );
348 d->tbShuffle->setOn( mediaPlayerState->shuffled() ); 348 d->tbShuffle->setOn( mediaPlayerState->shuffled() );
349// d->tbFull->setOn( mediaPlayerState->fullscreen() ); 349// d->tbFull->setOn( mediaPlayerState->fullscreen() );
350// d->tbScale->setOn( mediaPlayerState->scaled() ); 350// d->tbScale->setOn( mediaPlayerState->scaled() );
351// d->tbScale->setEnabled( mediaPlayerState->fullscreen() ); 351// d->tbScale->setEnabled( mediaPlayerState->fullscreen() );
352// setPlaylist( mediaPlayerState->playlist() ); 352// setPlaylist( mediaPlayerState->playlist() );
353 setPlaylist( true); 353 setPlaylist( true);
354// d->selectedFiles->first(); 354// d->selectedFiles->first();
355 355
356} 356}
357 357
358 358
359void PlayListWidget::readConfig( Config& cfg ) { 359void PlayListWidget::readConfig( Config& cfg ) {
360 cfg.setGroup("PlayList"); 360 cfg.setGroup("PlayList");
361 QString currentString = cfg.readEntry("current", "" ); 361 QString currentString = cfg.readEntry("current", "" );
362 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 362 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
363 for ( int i = 0; i < noOfFiles; i++ ) { 363 for ( int i = 0; i < noOfFiles; i++ ) {
364 QString entryName; 364 QString entryName;
365 entryName.sprintf( "File%i", i + 1 ); 365 entryName.sprintf( "File%i", i + 1 );
366 QString linkFile = cfg.readEntry( entryName ); 366 QString linkFile = cfg.readEntry( entryName );
367 DocLnk lnk( linkFile ); 367 DocLnk lnk( linkFile );
368 if ( lnk.isValid() ) { 368 if ( lnk.isValid() ) {
369 d->selectedFiles->addToSelection( lnk ); 369 d->selectedFiles->addToSelection( lnk );
370 } 370 }
371 } 371 }
372 d->selectedFiles->setSelectedItem( currentString); 372 d->selectedFiles->setSelectedItem( currentString);
373// d->selectedFiles->setSelectedItem( (const QString &)currentString); 373// d->selectedFiles->setSelectedItem( (const QString &)currentString);
374} 374}
375 375
376 376
377void PlayListWidget::writeConfig( Config& cfg ) const { 377void PlayListWidget::writeConfig( Config& cfg ) const {
378 378
379 d->selectedFiles->writeCurrent( cfg); 379 d->selectedFiles->writeCurrent( cfg);
380 cfg.setGroup("PlayList"); 380 cfg.setGroup("PlayList");
381 int noOfFiles = 0; 381 int noOfFiles = 0;
382 d->selectedFiles->first(); 382 d->selectedFiles->first();
383 do { 383 do {
384 const DocLnk *lnk = d->selectedFiles->current(); 384 const DocLnk *lnk = d->selectedFiles->current();
385 if ( lnk ) { 385 if ( lnk ) {
386 QString entryName; 386 QString entryName;
387 entryName.sprintf( "File%i", noOfFiles + 1 ); 387 entryName.sprintf( "File%i", noOfFiles + 1 );
388// qDebug(entryName); 388// qDebug(entryName);
389 cfg.writeEntry( entryName, lnk->linkFile() ); 389 cfg.writeEntry( entryName, lnk->linkFile() );
390 // if this link does exist, add it so we have the file 390 // if this link does exist, add it so we have the file
391 // next time... 391 // next time...
392 if ( !QFile::exists( lnk->linkFile() ) ) { 392 if ( !QFile::exists( lnk->linkFile() ) ) {
393 // the way writing lnks doesn't really check for out 393 // the way writing lnks doesn't really check for out
394 // of disk space, but check it anyway. 394 // of disk space, but check it anyway.
395 if ( !lnk->writeLink() ) { 395 if ( !lnk->writeLink() ) {
396 QMessageBox::critical( 0, tr("Out of space"), 396 QMessageBox::critical( 0, tr("Out of space"),
397 tr( "There was a problem saving " 397 tr( "There was a problem saving "
398 "the playlist.\n" 398 "the playlist.\n"
399 "Your playlist " 399 "Your playlist "
400 "may be missing some entries\n" 400 "may be missing some entries\n"
401 "the next time you start it." ) 401 "the next time you start it." )
402 ); 402 );
403 } 403 }
404 } 404 }
405 noOfFiles++; 405 noOfFiles++;
406 } 406 }
407 } 407 }
408 while ( d->selectedFiles->next() ); 408 while ( d->selectedFiles->next() );
409 cfg.writeEntry("NumberOfFiles", noOfFiles ); 409 cfg.writeEntry("NumberOfFiles", noOfFiles );
410} 410}
411 411
412 412
413void PlayListWidget::addToSelection( const DocLnk& lnk ) { 413void PlayListWidget::addToSelection( const DocLnk& lnk ) {
414// qDebug("add"); 414// qDebug("add");
415 d->setDocumentUsed = FALSE; 415 d->setDocumentUsed = FALSE;
416 if ( mediaPlayerState->playlist() ) 416 if ( mediaPlayerState->playlist() )
417 d->selectedFiles->addToSelection( lnk ); 417 d->selectedFiles->addToSelection( lnk );
418 else 418 else
419 mediaPlayerState->setPlaying( TRUE ); 419 mediaPlayerState->setPlaying( TRUE );
420} 420}
421 421
422 422
423void PlayListWidget::clearList() { 423void PlayListWidget::clearList() {
424 while ( first() ) 424 while ( first() )
425 d->selectedFiles->removeSelected(); 425 d->selectedFiles->removeSelected();
426} 426}
427 427
428 428
429void PlayListWidget::addAllToList() { 429void PlayListWidget::addAllToList() {
430 DocLnkSet filesAll; 430 DocLnkSet filesAll;
431 Global::findDocuments(&filesAll, "video/*;audio/*"); 431 Global::findDocuments(&filesAll, "video/*;audio/*");
432 QListIterator<DocLnk> Adit( filesAll.children() ); 432 QListIterator<DocLnk> Adit( filesAll.children() );
433 for ( ; Adit.current(); ++Adit ) 433 for ( ; Adit.current(); ++Adit )
434 d->selectedFiles->addToSelection( **Adit ); 434 d->selectedFiles->addToSelection( **Adit );
435} 435}
436 436
437 437
438void PlayListWidget::addAllMusicToList() { 438void PlayListWidget::addAllMusicToList() {
439 QListIterator<DocLnk> dit( files.children() ); 439 QListIterator<DocLnk> dit( files.children() );
440 for ( ; dit.current(); ++dit ) 440 for ( ; dit.current(); ++dit )
441 d->selectedFiles->addToSelection( **dit ); 441 d->selectedFiles->addToSelection( **dit );
442} 442}
443 443
444 444
445void PlayListWidget::addAllVideoToList() { 445void PlayListWidget::addAllVideoToList() {
446 QListIterator<DocLnk> dit( vFiles.children() ); 446 QListIterator<DocLnk> dit( vFiles.children() );
447 for ( ; dit.current(); ++dit ) 447 for ( ; dit.current(); ++dit )
448 d->selectedFiles->addToSelection( **dit ); 448 d->selectedFiles->addToSelection( **dit );
449} 449}
450 450
451 451
452void PlayListWidget::setDocument(const QString& fileref) { 452void PlayListWidget::setDocument(const QString& fileref) {
453 qDebug(fileref); 453 qDebug(fileref);
454 fromSetDocument = TRUE; 454 fromSetDocument = TRUE;
455 if ( fileref.isNull() ) { 455 if ( fileref.isNull() ) {
456 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) ); 456 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) );
457 return; 457 return;
458 } 458 }
459// qDebug("setDocument "+fileref); 459// qDebug("setDocument "+fileref);
460// if(fileref.find("m3u",0,TRUE) != -1) { //is m3u 460 if(fileref.find("m3u",0,TRUE) != -1) { //is m3u
461// clearList(); 461 readm3u( fileref);
462// addToSelection( DocLnk( fileref ) ); 462 }
463// d->setDocumentUsed = TRUE; 463 else if(fileref.find("pls",0,TRUE) != -1) { //is pls
464// d->selectedFiles->first(); 464 readPls( fileref);
465// qApp->processEvents(); 465 }
466// } 466 else if(fileref.find("playlist",0,TRUE) != -1) {//is playlist
467// else
468 if(fileref.find("playlist",0,TRUE) != -1) {//is playlist
469 clearList(); 467 clearList();
470 loadList(DocLnk(fileref)); 468 loadList(DocLnk(fileref));
471 d->selectedFiles->first(); 469 d->selectedFiles->first();
472 } else { 470 } else {
473 clearList(); 471 clearList();
474 addToSelection( DocLnk( fileref ) ); 472 addToSelection( DocLnk( fileref ) );
475 d->setDocumentUsed = TRUE; 473 d->setDocumentUsed = TRUE;
476 mediaPlayerState->setPlaying( FALSE ); 474 mediaPlayerState->setPlaying( FALSE );
477 qApp->processEvents(); 475 qApp->processEvents();
478 mediaPlayerState->setPlaying( TRUE ); 476 mediaPlayerState->setPlaying( TRUE );
479 qApp->processEvents(); 477 qApp->processEvents();
480 setCaption(tr("OpiePlayer")); 478 setCaption(tr("OpiePlayer"));
481 } 479 }
482} 480}
483 481
484 482
485void PlayListWidget::setActiveWindow() { 483void PlayListWidget::setActiveWindow() {
486 // When we get raised we need to ensure that it switches views 484 // When we get raised we need to ensure that it switches views
487 char origView = mediaPlayerState->view(); 485 char origView = mediaPlayerState->view();
488 mediaPlayerState->setView( 'l' ); // invalidate 486 mediaPlayerState->setView( 'l' ); // invalidate
489 mediaPlayerState->setView( origView ); // now switch back 487 mediaPlayerState->setView( origView ); // now switch back
490} 488}
491 489
492 490
493void PlayListWidget::useSelectedDocument() { 491void PlayListWidget::useSelectedDocument() {
494 d->setDocumentUsed = FALSE; 492 d->setDocumentUsed = FALSE;
495} 493}
496 494
497 495
498const DocLnk *PlayListWidget::current() { // this is fugly 496const DocLnk *PlayListWidget::current() { // this is fugly
499 497
500// if( fromSetDocument) { 498// if( fromSetDocument) {
501// qDebug("from setDoc"); 499// qDebug("from setDoc");
502// DocLnkSet files; 500// DocLnkSet files;
503// Global::findDocuments(&files, "video/*;audio/*"); 501// Global::findDocuments(&files, "video/*;audio/*");
504// QListIterator<DocLnk> dit( files.children() ); 502// QListIterator<DocLnk> dit( files.children() );
505// for ( ; dit.current(); ++dit ) { 503// for ( ; dit.current(); ++dit ) {
506// if(dit.current()->linkFile() == setDocFileRef) { 504// if(dit.current()->linkFile() == setDocFileRef) {
507// qDebug(setDocFileRef); 505// qDebug(setDocFileRef);
508// return dit; 506// return dit;
509// } 507// }
510// } 508// }
511// } else 509// } else
512 510
513 511
514 switch (tabWidget->currentPageIndex()) { 512 switch (tabWidget->currentPageIndex()) {
515 case 0: //playlist 513 case 0: //playlist
516 { 514 {
517 qDebug("playlist"); 515 qDebug("playlist");
518 if ( mediaPlayerState->playlist() ) { 516 if ( mediaPlayerState->playlist() ) {
519 return d->selectedFiles->current(); 517 return d->selectedFiles->current();
520 } 518 }
521 else if ( d->setDocumentUsed && d->current ) { 519 else if ( d->setDocumentUsed && d->current ) {
522 return d->current; 520 return d->current;
523 } else { 521 } else {
524 return d->files->selected(); 522 return d->files->selected();
525 } 523 }
526 } 524 }
527 break; 525 break;
528 case 1://audio 526 case 1://audio
529 { 527 {
530 qDebug("audioView"); 528 qDebug("audioView");
531 QListIterator<DocLnk> dit( files.children() ); 529 QListIterator<DocLnk> dit( files.children() );
532 for ( ; dit.current(); ++dit ) { 530 for ( ; dit.current(); ++dit ) {
533 if( dit.current()->name() == audioView->currentItem()->text(0) && !insanityBool) { 531 if( dit.current()->name() == audioView->currentItem()->text(0) && !insanityBool) {
534 qDebug("here"); 532 qDebug("here");
535 insanityBool=TRUE; 533 insanityBool=TRUE;
536 return dit; 534 return dit;
537 } 535 }
538 } 536 }
539 } 537 }
540 break; 538 break;
541 case 2: // video 539 case 2: // video
542 { 540 {
543 qDebug("videoView"); 541 qDebug("videoView");
544 QListIterator<DocLnk> Vdit( vFiles.children() ); 542 QListIterator<DocLnk> Vdit( vFiles.children() );
545 for ( ; Vdit.current(); ++Vdit ) { 543 for ( ; Vdit.current(); ++Vdit ) {
546 if( Vdit.current()->name() == videoView->currentItem()->text(0) && !insanityBool) { 544 if( Vdit.current()->name() == videoView->currentItem()->text(0) && !insanityBool) {
547 insanityBool=TRUE; 545 insanityBool=TRUE;
548 return Vdit; 546 return Vdit;
549 } 547 }
550 } 548 }
551 } 549 }
552 break; 550 break;
553 }; 551 };
554 return 0; 552 return 0;
555} 553}
556 554
557bool PlayListWidget::prev() { 555bool PlayListWidget::prev() {
558 if ( mediaPlayerState->playlist() ) { 556 if ( mediaPlayerState->playlist() ) {
559 if ( mediaPlayerState->shuffled() ) { 557 if ( mediaPlayerState->shuffled() ) {
560 const DocLnk *cur = current(); 558 const DocLnk *cur = current();
561 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0)); 559 int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0));
562 for ( int i = 0; i < j; i++ ) { 560 for ( int i = 0; i < j; i++ ) {
563 if ( !d->selectedFiles->next() ) 561 if ( !d->selectedFiles->next() )
564 d->selectedFiles->first(); 562 d->selectedFiles->first();
565 } 563 }
566 if ( cur == current() ) 564 if ( cur == current() )
567 if ( !d->selectedFiles->next() ) 565 if ( !d->selectedFiles->next() )
568 d->selectedFiles->first(); 566 d->selectedFiles->first();
569 return TRUE; 567 return TRUE;
570 } else { 568 } else {
571 if ( !d->selectedFiles->prev() ) { 569 if ( !d->selectedFiles->prev() ) {
572 if ( mediaPlayerState->looping() ) { 570 if ( mediaPlayerState->looping() ) {
573 return d->selectedFiles->last(); 571 return d->selectedFiles->last();
574 } else { 572 } else {
575 return FALSE; 573 return FALSE;
576 } 574 }
577 } 575 }
578 return TRUE; 576 return TRUE;
579 } 577 }
580 } else { 578 } else {
581 return mediaPlayerState->looping(); 579 return mediaPlayerState->looping();
582 } 580 }
583} 581}
584 582
585 583
586bool PlayListWidget::next() { 584bool PlayListWidget::next() {
587 if ( mediaPlayerState->playlist() ) { 585 if ( mediaPlayerState->playlist() ) {
588 if ( mediaPlayerState->shuffled() ) { 586 if ( mediaPlayerState->shuffled() ) {
589 return prev(); 587 return prev();
590 } else { 588 } else {
591 if ( !d->selectedFiles->next() ) { 589 if ( !d->selectedFiles->next() ) {
592 if ( mediaPlayerState->looping() ) { 590 if ( mediaPlayerState->looping() ) {
593 return d->selectedFiles->first(); 591 return d->selectedFiles->first();
594 } else { 592 } else {
595 return FALSE; 593 return FALSE;
596 } 594 }
597 } 595 }
598 return TRUE; 596 return TRUE;
599 } 597 }
600 } else { 598 } else {
601 return mediaPlayerState->looping(); 599 return mediaPlayerState->looping();
602 } 600 }
603} 601}
604 602
605 603
606bool PlayListWidget::first() { 604bool PlayListWidget::first() {
607 if ( mediaPlayerState->playlist() ) 605 if ( mediaPlayerState->playlist() )
608 return d->selectedFiles->first(); 606 return d->selectedFiles->first();
609 else 607 else
610 return mediaPlayerState->looping(); 608 return mediaPlayerState->looping();
611} 609}
612 610
613 611
614bool PlayListWidget::last() { 612bool PlayListWidget::last() {
615 if ( mediaPlayerState->playlist() ) 613 if ( mediaPlayerState->playlist() )
616 return d->selectedFiles->last(); 614 return d->selectedFiles->last();
617 else 615 else
618 return mediaPlayerState->looping(); 616 return mediaPlayerState->looping();
619} 617}
620 618
621 619
622void PlayListWidget::saveList() { 620void PlayListWidget::saveList() {
623 621
624 QString filename; 622 QString filename;
625 InputDialog *fileDlg; 623 InputDialog *fileDlg;
626 fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0); 624 fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0);
627 fileDlg->exec(); 625 fileDlg->exec();
628 if( fileDlg->result() == 1 ) { 626 if( fileDlg->result() == 1 ) {
629 if ( d->current ) 627 if ( d->current )
630 delete d->current; 628 delete d->current;
631 filename = fileDlg->LineEdit1->text();//+".playlist"; 629 filename = fileDlg->LineEdit1->text();//+".playlist";
632// qDebug("saving playlist "+filename+".playlist"); 630// qDebug("saving playlist "+filename+".playlist");
633 Config cfg( filename +".playlist"); 631 Config cfg( filename +".playlist");
634 writeConfig( cfg ); 632 writeConfig( cfg );
635 633
636 DocLnk lnk; 634 DocLnk lnk;
637// lnk.setComment( ""); 635// lnk.setComment( "");
638 lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf"); //sets File property 636 lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf"); //sets File property
639 lnk.setType("playlist/plain");// hey is this a REGISTERED mime type?!?!? ;D 637 lnk.setType("playlist/plain");// hey is this a REGISTERED mime type?!?!? ;D
640 lnk.setIcon("opieplayer/playlist2"); 638 lnk.setIcon("opieplayer/playlist2");
641 lnk.setName( filename); //sets file name 639 lnk.setName( filename); //sets file name
642// qDebug(filename); 640// qDebug(filename);
643 if(!lnk.writeLink()) 641 if(!lnk.writeLink())
644 qDebug("Writing doclink did not work"); 642 qDebug("Writing doclink did not work");
645 } 643 }
646 Config config( "OpiePlayer" ); 644 Config config( "OpiePlayer" );
647 config.writeEntry("CurrentPlaylist",filename); 645 config.writeEntry("CurrentPlaylist",filename);
648 setCaption(tr("OpiePlayer: ")+filename); 646 setCaption(tr("OpiePlayer: ")+filename);
649 d->selectedFiles->first(); 647 d->selectedFiles->first();
650 if(fileDlg) 648 if(fileDlg)
651 delete fileDlg; 649 delete fileDlg;
652} 650}
653 651
654void PlayListWidget::loadList( const DocLnk & lnk) { 652void PlayListWidget::loadList( const DocLnk & lnk) {
655 QString name= lnk.name(); 653 QString name= lnk.name();
656// qDebug("currentList is "+name); 654// qDebug("currentList is "+name);
657 if( name.length()>1) { 655 if( name.length()>1) {
658 setCaption("OpiePlayer: "+name); 656 setCaption("OpiePlayer: "+name);
659// qDebug("load list "+ name+".playlist"); 657// qDebug("load list "+ name+".playlist");
660 clearList(); 658 clearList();
@@ -997,267 +995,285 @@ void PlayListWidget::scanForVideo() {
997} 995}
998 996
999void PlayListWidget::populateAudioView() { 997void PlayListWidget::populateAudioView() {
1000 998
1001 audioView->clear(); 999 audioView->clear();
1002 StorageInfo storageInfo; 1000 StorageInfo storageInfo;
1003 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1001 const QList<FileSystem> &fs = storageInfo.fileSystems();
1004 if(!audioScan) scanForAudio(); 1002 if(!audioScan) scanForAudio();
1005 1003
1006 QListIterator<DocLnk> dit( files.children() ); 1004 QListIterator<DocLnk> dit( files.children() );
1007 QListIterator<FileSystem> it ( fs ); 1005 QListIterator<FileSystem> it ( fs );
1008 1006
1009 QString storage; 1007 QString storage;
1010 for ( ; dit.current(); ++dit ) { 1008 for ( ; dit.current(); ++dit ) {
1011 for( ; it.current(); ++it ){ 1009 for( ; it.current(); ++it ){
1012 const QString name = (*it)->name(); 1010 const QString name = (*it)->name();
1013 const QString path = (*it)->path(); 1011 const QString path = (*it)->path();
1014 if(dit.current()->file().find(path) != -1 ) storage=name; 1012 if(dit.current()->file().find(path) != -1 ) storage=name;
1015 } 1013 }
1016 1014
1017 QListViewItem * newItem; 1015 QListViewItem * newItem;
1018 if ( QFile( dit.current()->file()).exists() ) { 1016 if ( QFile( dit.current()->file()).exists() ) {
1019// qDebug(dit.current()->name()); 1017// qDebug(dit.current()->name());
1020 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), 1018 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(),
1021 QString::number( QFile( dit.current()->file()).size() ), storage); 1019 QString::number( QFile( dit.current()->file()).size() ), storage);
1022 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" )); 1020 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" ));
1023 } 1021 }
1024 } 1022 }
1025 1023
1026} 1024}
1027 1025
1028void PlayListWidget::populateVideoView() { 1026void PlayListWidget::populateVideoView() {
1029 videoView->clear(); 1027 videoView->clear();
1030 StorageInfo storageInfo; 1028 StorageInfo storageInfo;
1031 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1029 const QList<FileSystem> &fs = storageInfo.fileSystems();
1032 1030
1033 if(!videoScan ) scanForVideo(); 1031 if(!videoScan ) scanForVideo();
1034 1032
1035 QListIterator<DocLnk> Vdit( vFiles.children() ); 1033 QListIterator<DocLnk> Vdit( vFiles.children() );
1036 QListIterator<FileSystem> it ( fs ); 1034 QListIterator<FileSystem> it ( fs );
1037 videoView->clear(); 1035 videoView->clear();
1038 QString storage; 1036 QString storage;
1039 for ( ; Vdit.current(); ++Vdit ) { 1037 for ( ; Vdit.current(); ++Vdit ) {
1040 for( ; it.current(); ++it ){ 1038 for( ; it.current(); ++it ){
1041 const QString name = (*it)->name(); 1039 const QString name = (*it)->name();
1042 const QString path = (*it)->path(); 1040 const QString path = (*it)->path();
1043 if( Vdit.current()->file().find(path) != -1 ) storage=name; 1041 if( Vdit.current()->file().find(path) != -1 ) storage=name;
1044 } 1042 }
1045 1043
1046 QListViewItem * newItem; 1044 QListViewItem * newItem;
1047 if ( QFile( Vdit.current()->file()).exists() ) { 1045 if ( QFile( Vdit.current()->file()).exists() ) {
1048 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), 1046 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(),
1049 QString::number( QFile( Vdit.current()->file()).size() ), storage); 1047 QString::number( QFile( Vdit.current()->file()).size() ), storage);
1050 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" )); 1048 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" ));
1051 } 1049 }
1052 } 1050 }
1053} 1051}
1054 1052
1055void PlayListWidget::openFile() { 1053void PlayListWidget::openFile() {
1056 QString filename, name; 1054 QString filename, name;
1057 InputDialog *fileDlg; 1055 InputDialog *fileDlg;
1058 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); 1056 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0);
1059 fileDlg->exec(); 1057 fileDlg->exec();
1060 if( fileDlg->result() == 1 ) { 1058 if( fileDlg->result() == 1 ) {
1061 filename = fileDlg->LineEdit1->text(); 1059 filename = fileDlg->LineEdit1->text();
1062// http://205.188.234.129:8030 1060// http://205.188.234.129:8030
1063// http://66.28.68.70:8000 1061// http://66.28.68.70:8000
1064 qDebug("Selected filename is "+filename); 1062 qDebug("Selected filename is "+filename);
1065 if(filename.right(3) == "m3u") 1063 if(filename.right(3) == "m3u")
1066 readm3u( filename); 1064 readm3u( filename);
1067 else if(filename.right(3) == "pls") 1065 else if(filename.right(3) == "pls")
1068 readPls( filename); 1066 readPls( filename);
1069 else { 1067 else {
1070 DocLnk lnk; 1068 DocLnk lnk;
1071 1069
1072 lnk.setName(filename); //sets file name 1070 lnk.setName(filename); //sets file name
1073 if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3") 1071 if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3")
1074 filename += "/"; 1072 filename += "/";
1075 lnk.setFile(filename); //sets File property 1073 lnk.setFile(filename); //sets File property
1076 1074
1077 lnk.setType("audio/x-mpegurl"); 1075 lnk.setType("audio/x-mpegurl");
1078 lnk.setExec("opieplayer"); 1076 lnk.setExec("opieplayer");
1079 lnk.setIcon("opieplayer/MPEGPlayer"); 1077 lnk.setIcon("opieplayer/MPEGPlayer");
1080 1078
1081 if(!lnk.writeLink()) 1079 if(!lnk.writeLink())
1082 qDebug("Writing doclink did not work"); 1080 qDebug("Writing doclink did not work");
1083 d->selectedFiles->addToSelection( lnk); 1081 d->selectedFiles->addToSelection( lnk);
1084// if(fileDlg2) 1082// if(fileDlg2)
1085// delete fileDlg2; 1083// delete fileDlg2;
1086 } 1084 }
1087 } 1085 }
1088 if(fileDlg) 1086 if(fileDlg)
1089 delete fileDlg; 1087 delete fileDlg;
1090} 1088}
1091 1089
1092void PlayListWidget::keyReleaseEvent( QKeyEvent *e) 1090void PlayListWidget::keyReleaseEvent( QKeyEvent *e)
1093{ 1091{
1094 switch ( e->key() ) { 1092 switch ( e->key() ) {
1095////////////////////////////// Zaurus keys 1093////////////////////////////// Zaurus keys
1096 case Key_F9: //activity 1094 case Key_F9: //activity
1097// if(audioUI->isHidden()) 1095// if(audioUI->isHidden())
1098// audioUI->showMaximized(); 1096// audioUI->showMaximized();
1099 break; 1097 break;
1100 case Key_F10: //contacts 1098 case Key_F10: //contacts
1101// if( videoUI->isHidden()) 1099// if( videoUI->isHidden())
1102// videoUI->showMaximized(); 1100// videoUI->showMaximized();
1103 break; 1101 break;
1104 case Key_F11: //menu 1102 case Key_F11: //menu
1105 break; 1103 break;
1106 case Key_F12: //home 1104 case Key_F12: //home
1107// doBlank(); 1105// doBlank();
1108 break; 1106 break;
1109 case Key_F13: //mail 1107 case Key_F13: //mail
1110// doUnblank(); 1108// doUnblank();
1111 break; 1109 break;
1112 case Key_Q: //add to playlist 1110 case Key_Q: //add to playlist
1113 qDebug("Add"); 1111 qDebug("Add");
1114 addSelected(); 1112 addSelected();
1115 break; 1113 break;
1116 case Key_R: //remove from playlist 1114 case Key_R: //remove from playlist
1117 removeSelected(); 1115 removeSelected();
1118 break; 1116 break;
1119// case Key_P: //play 1117// case Key_P: //play
1120// qDebug("Play"); 1118// qDebug("Play");
1121// playSelected(); 1119// playSelected();
1122// break; 1120// break;
1123 case Key_Space: 1121 case Key_Space:
1124 qDebug("Play"); 1122 qDebug("Play");
1125// playSelected(); puh 1123// playSelected(); puh
1126 break; 1124 break;
1127 case Key_1: 1125 case Key_1:
1128 tabWidget->setCurrentPage(0); 1126 tabWidget->setCurrentPage(0);
1129 break; 1127 break;
1130 case Key_2: 1128 case Key_2:
1131 tabWidget->setCurrentPage(1); 1129 tabWidget->setCurrentPage(1);
1132 break; 1130 break;
1133 case Key_3: 1131 case Key_3:
1134 tabWidget->setCurrentPage(2); 1132 tabWidget->setCurrentPage(2);
1135 break; 1133 break;
1136 case Key_4: 1134 case Key_4:
1137 tabWidget->setCurrentPage(3); 1135 tabWidget->setCurrentPage(3);
1138 break; 1136 break;
1139 } 1137 }
1140} 1138}
1141 1139
1142void PlayListWidget::keyPressEvent( QKeyEvent *e) 1140void PlayListWidget::keyPressEvent( QKeyEvent *e)
1143{ 1141{
1144// qDebug("Key press"); 1142// qDebug("Key press");
1145// switch ( e->key() ) { 1143// switch ( e->key() ) {
1146// ////////////////////////////// Zaurus keys 1144// ////////////////////////////// Zaurus keys
1147// case Key_A: //add to playlist 1145// case Key_A: //add to playlist
1148// qDebug("Add"); 1146// qDebug("Add");
1149// addSelected(); 1147// addSelected();
1150// break; 1148// break;
1151// case Key_R: //remove from playlist 1149// case Key_R: //remove from playlist
1152// removeSelected(); 1150// removeSelected();
1153// break; 1151// break;
1154// case Key_P: //play 1152// case Key_P: //play
1155// qDebug("Play"); 1153// qDebug("Play");
1156// playSelected(); 1154// playSelected();
1157// break; 1155// break;
1158// case Key_Space: 1156// case Key_Space:
1159// qDebug("Play"); 1157// qDebug("Play");
1160// playSelected(); 1158// playSelected();
1161// break; 1159// break;
1162// } 1160// }
1163} 1161}
1164 1162
1165void PlayListWidget::doBlank() { 1163void PlayListWidget::doBlank() {
1166 qDebug("do blanking"); 1164 qDebug("do blanking");
1167 fd=open("/dev/fb0",O_RDWR); 1165 fd=open("/dev/fb0",O_RDWR);
1168 if (fd != -1) { 1166 if (fd != -1) {
1169 ioctl(fd,FBIOBLANK,1); 1167 ioctl(fd,FBIOBLANK,1);
1170// close(fd); 1168// close(fd);
1171 } 1169 }
1172} 1170}
1173 1171
1174void PlayListWidget::doUnblank() { 1172void PlayListWidget::doUnblank() {
1175 // this crashes opieplayer with a segfault 1173 // this crashes opieplayer with a segfault
1176// int fd; 1174// int fd;
1177// fd=open("/dev/fb0",O_RDWR); 1175// fd=open("/dev/fb0",O_RDWR);
1178 qDebug("do unblanking"); 1176 qDebug("do unblanking");
1179 if (fd != -1) { 1177 if (fd != -1) {
1180 ioctl(fd,FBIOBLANK,0); 1178 ioctl(fd,FBIOBLANK,0);
1181 close(fd); 1179 close(fd);
1182 } 1180 }
1183 QCopEnvelope h("QPE/System", "setBacklight(int)"); 1181 QCopEnvelope h("QPE/System", "setBacklight(int)");
1184 h <<-3;// v[1]; // -3 Force on 1182 h <<-3;// v[1]; // -3 Force on
1185} 1183}
1186 1184
1187void PlayListWidget::readm3u(const QString &filename) { 1185void PlayListWidget::readm3u(const QString &filename) {
1188 1186
1189 qDebug("playlist filename is "+filename); 1187 qDebug("m3u filename is "+filename);
1190 QFile f(filename); 1188 QFile f(filename);
1191 1189
1192 if(f.open(IO_ReadOnly)) { 1190 if(f.open(IO_ReadOnly)) {
1193 QTextStream t(&f); 1191 QTextStream t(&f);
1194 QString s;//, first, second; 1192 QString s;//, first, second;
1195 int i=0; 1193 int i=0;
1196 while ( !t.atEnd()) { 1194 while ( !t.atEnd()) {
1197// Lview->insertLine(t.readLine(),-1); 1195// Lview->insertLine(t.readLine(),-1);
1198 s=t.readLine(); 1196 s=t.readLine();
1199 if(s.find("#",0,TRUE) == -1) { 1197 if(s.find("#",0,TRUE) == -1) {
1200 if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat 1198 if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat
1201 if(s.left(2) == "E:" || s.left(2) == "P:") { 1199 if(s.left(2) == "E:" || s.left(2) == "P:") {
1202 s=s.right(s.length()-2); 1200 s=s.right(s.length()-2);
1203 DocLnk lnk( s ); 1201 DocLnk lnk( s );
1204 QFileInfo f(s); 1202 QFileInfo f(s);
1205 QString name = f.baseName(); 1203 QString name = f.baseName();
1206 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1204 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1207 lnk.setName( name); 1205 lnk.setName( name);
1208 s=s.replace( QRegExp("\\"),"/"); 1206 s=s.replace( QRegExp("\\"),"/");
1209 lnk.setFile( s); 1207 lnk.setFile( s);
1210// lnk.setIcon(opieplayer/MPEGPlayer); 1208// lnk.setIcon(opieplayer/MPEGPlayer);
1211 qDebug("add "+name); 1209 qDebug("add "+name);
1212 d->selectedFiles->addToSelection( lnk); 1210 d->selectedFiles->addToSelection( lnk);
1213 } else { // is url 1211 } else { // is url
1214 DocLnk lnk( s); 1212 DocLnk lnk( s);
1215 QString name = s.right( s.length() - 7); 1213 QString name = s.right( s.length() - 7);
1216// name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); 1214// name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1217 lnk.setName(name); 1215 lnk.setName(name);
1218 lnk.setFile( s+"/"); 1216 lnk.setFile( s+"/");
1219// lnk.setFile( filename); 1217// lnk.setFile( filename);
1220// lnk.setComment( s+"/"); 1218// lnk.setComment( s+"/");
1221 lnk.setType("audio/x-mpegurl"); 1219 lnk.setType("audio/x-mpegurl");
1222// lnk.setIcon( "opieplayer/MPEGPlayer"); 1220// lnk.setIcon( "opieplayer/MPEGPlayer");
1223// qDebug("add "+s); 1221// qDebug("add "+s);
1224 d->selectedFiles->addToSelection( lnk); 1222 d->selectedFiles->addToSelection( lnk);
1225 } 1223 }
1226 i++; 1224 i++;
1227 } 1225 }
1228 } 1226 }
1229 } 1227 }
1230 } 1228 }
1231} 1229}
1232 1230
1233void PlayListWidget::writem3u(const QString &filename) { 1231void PlayListWidget::writem3u(const QString &filename) {
1234 1232
1235} 1233}
1236 1234
1237void PlayListWidget::readPls(const QString &filename) { 1235void PlayListWidget::readPls(const QString &filename) {
1238 1236
1239 qDebug("playlist filename is "+filename); 1237 qDebug("pls filename is "+filename);
1240 QFile f(filename); 1238 QFile f(filename);
1241 1239
1242 if(f.open(IO_ReadOnly)) { 1240 if(f.open(IO_ReadOnly)) {
1243 QTextStream t(&f); 1241 QTextStream t(&f);
1244 QString s;//, first, second; 1242 QString s;//, first, second;
1245 int i=0; 1243 int i=0;
1246 while ( !t.atEnd()) { 1244 while ( !t.atEnd()) {
1245 s=t.readLine();
1246 if(s.left(4) == "File") {
1247 s=s.right(s.length() - 6);
1248 qDebug("adding "+s+" to playlist");
1249// numberofentries=2
1250// File1=http
1251 // Title
1252// Length
1253// Version
1254// File2=http
1255
1256 s=s.replace( QRegExp("\\"),"/");
1247// Lview->insertLine(t.readLine(),-1); 1257// Lview->insertLine(t.readLine(),-1);
1248// s=t.readLine(); 1258// s=t.readLine();
1249// s=s.right(s.length()-2); 1259// s=s.right(s.length()-2);
1250// DocLnk lnk( s ); 1260 DocLnk lnk( s );
1261 QFileInfo f(s);
1262 QString name = f.baseName();
1263 name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1);
1251// QFileInfo f(s); 1264// QFileInfo f(s);
1252// QString name = f.baseName(); 1265// QString name = f.baseName();
1253// // name = name.left(name.length()-4); 1266// // name = name.left(name.length()-4);
1254// name = name.right(name.findRev("/",0,TRUE)); 1267// name = name.right(name.findRev("/",0,TRUE));
1255// lnk.setName( name); 1268 lnk.setName( name);
1256// lnk.setFile( s); 1269 lnk.setFile( s+"/");
1257// qDebug("add "+name); 1270 lnk.setType("audio/x-mpegurl");
1258// d->selectedFiles->addToSelection( lnk); 1271
1272 qDebug("DocLnk add "+name);
1273 d->selectedFiles->addToSelection( lnk);
1274 }
1259 } 1275 }
1260 i++; 1276 i++;
1261 } 1277 }
1262} 1278}
1263 1279