summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/playlistwidget.cpp
Unidiff
Diffstat (limited to 'noncore/multimedia/opieplayer2/playlistwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp235
1 files changed, 84 insertions, 151 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index 897c458..cc4be23 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -155,143 +155,69 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
155 initializeStates(); 155 initializeStates();
156 156
157 cfg.setGroup("PlayList"); 157 cfg.setGroup("PlayList");
158 QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" ); 158 QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" );
159 loadList(DocLnk( currentPlaylist ) ); 159 loadList(DocLnk( currentPlaylist ) );
160 setCaption( tr( "OpiePlayer: " ) + currentPlaylist ); 160 setCaption( tr( "OpiePlayer: " ) + currentPlaylist );
161} 161}
162 162
163 163
164PlayListWidget::~PlayListWidget() { 164PlayListWidget::~PlayListWidget() {
165 if ( d->current ) { 165 if ( d->current ) {
166 delete d->current; 166 delete d->current;
167 } 167 }
168 delete d; 168 delete d;
169} 169}
170 170
171 171
172void PlayListWidget::initializeStates() { 172void PlayListWidget::initializeStates() {
173 d->tbPlay->setOn( mediaPlayerState->playing() ); 173 d->tbPlay->setOn( mediaPlayerState->playing() );
174 d->tbLoop->setOn( mediaPlayerState->looping() ); 174 d->tbLoop->setOn( mediaPlayerState->looping() );
175 d->tbShuffle->setOn( mediaPlayerState->shuffled() ); 175 d->tbShuffle->setOn( mediaPlayerState->shuffled() );
176 setPlaylist( true ); 176 setPlaylist( true );
177} 177}
178 178
179void PlayListWidget::writeDefaultPlaylist() {
179 180
180void PlayListWidget::readConfig( Config& cfg ) { 181 Config config( "OpiePlayer" );
181 182 config.setGroup( "PlayList" );
182 cfg.setGroup( "PlayList" ); 183 QString filename=QPEApplication::documentDir() + "/default.m3u";
183 QString currentString = cfg.readEntry( "current", "" ); 184 QString currentString = config.readEntry( "CurrentPlaylist", filename);
184 int noOfFiles = cfg.readNumEntry( "NumberOfFiles", 0 ); 185 if( currentString == filename) {
185
186 for ( int i = 0; i < noOfFiles; i++ ) {
187 QString entryName;
188 entryName.sprintf( "File%i", i + 1 );
189
190 QString linkFile = cfg.readEntry( entryName );
191
192 qDebug("reading "+linkFile);
193
194 if( QFileInfo( linkFile ).exists() ) {
195
196 DocLnk lnk( linkFile );
197
198 if ( QFileInfo( lnk.file() ).exists() ||
199
200 linkFile.find( "http" , 0, TRUE) != -1) {
201
202 d->selectedFiles->addToSelection( lnk );
203 }
204 }
205 }
206 d->selectedFiles->setSelectedItem( currentString );
207}
208
209
210void PlayListWidget::writeConfig( Config& cfg ) const {
211
212 Config config( "OpiePlayer" );
213 config.setGroup( "PlayList" );
214
215// if(config.readBoolEntry("newPlaylist")) {
216// new for testing
217 QString name, filename, list;
218 Om3u *m3uList; 186 Om3u *m3uList;
219 name = "default"; 187// qDebug("<<<<<<<<<<<<<default>>>>>>>>>>>>>>>>>>>");
220 188 m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate);
221 filename=QPEApplication::documentDir() + "/" + name+".m3u";
222 m3uList = new Om3u(filename, IO_ReadWrite);
223 d->selectedFiles->first(); 189 d->selectedFiles->first();
224 do { 190 do {
225 qDebug(d->selectedFiles->current()->file()); 191// qDebug(d->selectedFiles->current()->file());
226 m3uList->add( d->selectedFiles->current()->file() ); 192 m3uList->add( d->selectedFiles->current()->file() );
227 } 193 }
228 while ( d->selectedFiles->next() ); 194 while ( d->selectedFiles->next() );
229 // qDebug( list );
230 195
231 // m3uList->write(); 196 m3uList->write();
232 m3uList->close(); 197 m3uList->close();
233 if(m3uList) delete m3uList; 198 if(m3uList) delete m3uList;
234 199 }
235 DocLnk lnk;
236 lnk.setFile( filename);
237 lnk.setIcon("opieplayer2/playlist2");
238 lnk.setName( name); //sets file name
239
240 qDebug("writing default playlist "+filename);
241
242 config.writeEntry("CurrentPlaylist", filename);
243// currentPlayList=filename;
244 if(!lnk.writeLink()) {
245 qDebug("Writing doclink did not work");
246 }
247// } else {
248
249// d->selectedFiles->writeCurrent( cfg );
250// int noOfFiles = 0;
251// d->selectedFiles->first();
252
253// do {
254// const DocLnk *lnk = d->selectedFiles->current();
255
256// if ( lnk ) {
257
258// QString entryName;
259// entryName.sprintf( "File%i", noOfFiles + 1 );
260
261// cfg.writeEntry( entryName, lnk->linkFile() );
262// // if this link does exist, add it so we have the file
263// // next time...
264
265// if ( !QFile::exists( lnk->linkFile() ) ) {
266// lnk->writeLink();
267// }
268// }
269// noOfFiles++;
270// }
271// while ( d->selectedFiles->next() );
272// cfg.writeEntry("NumberOfFiles", noOfFiles );
273// }
274} 200}
275 201
276void PlayListWidget::addToSelection( const DocLnk& lnk ) { 202void PlayListWidget::addToSelection( const DocLnk& lnk ) {
277 d->setDocumentUsed = FALSE; 203 d->setDocumentUsed = FALSE;
278 if ( mediaPlayerState->playlist() ) { 204 if ( mediaPlayerState->playlist() ) {
279 if( QFileInfo( lnk.file() ).exists() || 205 if( QFileInfo( lnk.file() ).exists() ||
280 lnk.file().left(4) == "http" ) 206 lnk.file().left(4) == "http" )
281 d->selectedFiles->addToSelection( lnk ); 207 d->selectedFiles->addToSelection( lnk );
282 writeCurrentM3u(); 208 writeCurrentM3u();
283 } 209 }
284 else 210 else
285 mediaPlayerState->setPlaying( TRUE ); 211 mediaPlayerState->setPlaying( TRUE );
286} 212}
287 213
288 214
289void PlayListWidget::clearList() { 215void PlayListWidget::clearList() {
290 while ( first() ) { 216 while ( first() ) {
291 d->selectedFiles->removeSelected(); 217 d->selectedFiles->removeSelected();
292 } 218 }
293} 219}
294 220
295void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { 221void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) {
296 switch (mouse) { 222 switch (mouse) {
297 case 1: 223 case 1:
@@ -339,66 +265,66 @@ void PlayListWidget::addAllToList() {
339 265
340void PlayListWidget::addAllMusicToList() { 266void PlayListWidget::addAllMusicToList() {
341 QListIterator<DocLnk> dit( files.children() ); 267 QListIterator<DocLnk> dit( files.children() );
342 for ( ; dit.current(); ++dit ) { 268 for ( ; dit.current(); ++dit ) {
343 if( QFileInfo(dit.current()->file() ).exists() ) { 269 if( QFileInfo(dit.current()->file() ).exists() ) {
344 d->selectedFiles->addToSelection( **dit ); 270 d->selectedFiles->addToSelection( **dit );
345 } 271 }
346 } 272 }
347 writeCurrentM3u(); 273 writeCurrentM3u();
348} 274}
349 275
350 276
351void PlayListWidget::addAllVideoToList() { 277void PlayListWidget::addAllVideoToList() {
352 QListIterator<DocLnk> dit( vFiles.children() ); 278 QListIterator<DocLnk> dit( vFiles.children() );
353 for ( ; dit.current(); ++dit ) { 279 for ( ; dit.current(); ++dit ) {
354 if( QFileInfo( dit.current()->file() ).exists() ) { 280 if( QFileInfo( dit.current()->file() ).exists() ) {
355 d->selectedFiles->addToSelection( **dit ); 281 d->selectedFiles->addToSelection( **dit );
356 } 282 }
357 } 283 }
358 writeCurrentM3u(); 284 writeCurrentM3u();
359} 285}
360 286
361 287
362void PlayListWidget::setDocument( const QString& fileref ) { 288void PlayListWidget::setDocument( const QString& fileref ) {
363 //qDebug( fileref ); 289 qDebug( "<<<<<<<<set document>>>>>>>>>> "+fileref );
364 fromSetDocument = TRUE; 290 fromSetDocument = TRUE;
365 if ( fileref.isNull() ) { 291 if ( fileref.isNull() ) {
366 QMessageBox::critical( 0, tr( "Invalid File" ), 292 QMessageBox::critical( 0, tr( "Invalid File" ),
367 tr( "There was a problem in getting the file." ) ); 293 tr( "There was a problem in getting the file." ) );
368 return; 294 return;
369 } 295 }
370 296
371 if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u 297 clearList();
298 if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u
372 readm3u( fileref ); 299 readm3u( fileref );
300 } else if( DocLnk( fileref).file().find( "m3u", 0, TRUE) != -1 ) {
301 readm3u( DocLnk( fileref).file() );
373 } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls 302 } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls
374 readPls( fileref ); 303 readPls( fileref );
375 }// else if( fileref.find( "playlist", 0, TRUE) != -1 ) {//is playlist 304 } else if( DocLnk( fileref).file().find( "pls", 0, TRUE) != -1 ) {
376// clearList(); 305 readPls( DocLnk( fileref).file() );
377// loadList( DocLnk( fileref ) ); 306 } else {
378// d->selectedFiles->first();
379// }
380 else {
381 clearList(); 307 clearList();
382 addToSelection( DocLnk( fileref ) ); 308 addToSelection( DocLnk( fileref ) );
383 d->setDocumentUsed = TRUE; 309 d->setDocumentUsed = TRUE;
384 mediaPlayerState->setPlaying( FALSE ); 310 mediaPlayerState->setPlaying( FALSE );
385 mediaPlayerState->setPlaying( TRUE ); 311 mediaPlayerState->setPlaying( TRUE );
386 } 312 }
387} 313}
388 314
389 315
390void PlayListWidget::useSelectedDocument() { 316void PlayListWidget::useSelectedDocument() {
391 d->setDocumentUsed = FALSE; 317 d->setDocumentUsed = FALSE;
392} 318}
393 319
394 320
395const DocLnk *PlayListWidget::current() { // this is fugly 321const DocLnk *PlayListWidget::current() { // this is fugly
396 switch ( whichList() ) { 322 switch ( whichList() ) {
397 case 0: //playlist 323 case 0: //playlist
398 { 324 {
399// qDebug("playlist"); 325// qDebug("playlist");
400 if ( mediaPlayerState->playlist() ) { 326 if ( mediaPlayerState->playlist() ) {
401 return d->selectedFiles->current(); 327 return d->selectedFiles->current();
402 } else if ( d->setDocumentUsed && d->current ) { 328 } else if ( d->setDocumentUsed && d->current ) {
403 return d->current; 329 return d->current;
404 } else { 330 } else {
@@ -486,49 +412,49 @@ bool PlayListWidget::last() {
486void PlayListWidget::loadList( const DocLnk & lnk) { 412void PlayListWidget::loadList( const DocLnk & lnk) {
487 QString name = lnk.name(); 413 QString name = lnk.name();
488 qDebug("<<<<<<<<<<<<<<<<<<<<<<<<currentList is "+name); 414 qDebug("<<<<<<<<<<<<<<<<<<<<<<<<currentList is "+name);
489 415
490 if( name.length()>0) { 416 if( name.length()>0) {
491 setCaption("OpiePlayer: "+name); 417 setCaption("OpiePlayer: "+name);
492 qDebug("<<<<<<<<<<<<load list "+ lnk.file()); 418 qDebug("<<<<<<<<<<<<load list "+ lnk.file());
493 clearList(); 419 clearList();
494 readm3u(lnk.file()); 420 readm3u(lnk.file());
495 tabWidget->setCurrentPage(0); 421 tabWidget->setCurrentPage(0);
496 } 422 }
497} 423}
498 424
499 425
500void PlayListWidget::setPlaylist( bool shown ) { 426void PlayListWidget::setPlaylist( bool shown ) {
501 if ( shown ) { 427 if ( shown ) {
502 d->playListFrame->show(); 428 d->playListFrame->show();
503 } else { 429 } else {
504 d->playListFrame->hide(); 430 d->playListFrame->hide();
505 } 431 }
506} 432}
507 433
508 434
509void PlayListWidget::addSelected() { 435void PlayListWidget::addSelected() {
510 436 qDebug("addSelected");
511 switch (whichList()) { 437 switch (whichList()) {
512 case 0: //playlist 438 case 0: //playlist
513 break; 439 break;
514 case 1: { //audio 440 case 1: { //audio
515 QListViewItemIterator it( audioView ); 441 QListViewItemIterator it( audioView );
516 // iterate through all items of the listview 442 // iterate through all items of the listview
517 for ( ; it.current(); ++it ) { 443 for ( ; it.current(); ++it ) {
518 if ( it.current()->isSelected() ) { 444 if ( it.current()->isSelected() ) {
519 QListIterator<DocLnk> dit( files.children() ); 445 QListIterator<DocLnk> dit( files.children() );
520 for ( ; dit.current(); ++dit ) { 446 for ( ; dit.current(); ++dit ) {
521 if( dit.current()->name() == it.current()->text(0) ) { 447 if( dit.current()->name() == it.current()->text(0) ) {
522 if( QFileInfo( dit.current()->file()).exists()) { 448 if( QFileInfo( dit.current()->file()).exists()) {
523 d->selectedFiles->addToSelection( **dit ); 449 d->selectedFiles->addToSelection( **dit );
524 audioView->setSelected( it.current(),FALSE); 450 audioView->setSelected( it.current(),FALSE);
525 } 451 }
526 } 452 }
527 } 453 }
528 } 454 }
529 } 455 }
530 tabWidget->setCurrentPage(0); 456 tabWidget->setCurrentPage(0);
531 writeCurrentM3u(); 457 writeCurrentM3u();
532 } 458 }
533 break; 459 break;
534 case 2: { // video 460 case 2: { // video
@@ -536,91 +462,90 @@ void PlayListWidget::addSelected() {
536 // iterate through all items of the listview 462 // iterate through all items of the listview
537 for ( ; it.current(); ++it ) { 463 for ( ; it.current(); ++it ) {
538 if ( it.current()->isSelected() ) { 464 if ( it.current()->isSelected() ) {
539 QListIterator<DocLnk> dit( vFiles.children() ); 465 QListIterator<DocLnk> dit( vFiles.children() );
540 for ( ; dit.current(); ++dit ) { 466 for ( ; dit.current(); ++dit ) {
541 if( dit.current()->name() == it.current()->text(0) ) { 467 if( dit.current()->name() == it.current()->text(0) ) {
542 if(QFileInfo( dit.current()->file()).exists()) { 468 if(QFileInfo( dit.current()->file()).exists()) {
543 d->selectedFiles->addToSelection( **dit ); 469 d->selectedFiles->addToSelection( **dit );
544 videoView->setSelected( it.current(),FALSE); 470 videoView->setSelected( it.current(),FALSE);
545 } 471 }
546 } 472 }
547 } 473 }
548 } 474 }
549 } 475 }
550 tabWidget->setCurrentPage(0); 476 tabWidget->setCurrentPage(0);
551 writeCurrentM3u(); 477 writeCurrentM3u();
552 } 478 }
553 break; 479 break;
554 }; 480 };
555} 481}
556 482
557 483
558void PlayListWidget::removeSelected() { 484void PlayListWidget::removeSelected() {
559 d->selectedFiles->removeSelected( ); 485 d->selectedFiles->removeSelected( );
486 writeCurrentM3u();
560} 487}
561 488
562 489
563void PlayListWidget::playIt( QListViewItem *it) { 490void PlayListWidget::playIt( QListViewItem *it) {
564 if(!it) return; 491 if(!it) return;
565 mediaPlayerState->setPlaying(FALSE); 492 mediaPlayerState->setPlaying(FALSE);
566 mediaPlayerState->setPlaying(TRUE); 493 mediaPlayerState->setPlaying(TRUE);
567 d->selectedFiles->unSelect(); 494 d->selectedFiles->unSelect();
568} 495}
569 496
570 497
571void PlayListWidget::addToSelection( QListViewItem *it) { 498void PlayListWidget::addToSelection( QListViewItem *it) {
572 d->setDocumentUsed = FALSE; 499 d->setDocumentUsed = FALSE;
573 500 qDebug("addToSelection2");
574 if(it) { 501 if(it) {
575 switch ( whichList()) { 502 switch ( whichList()) {
576 case 1: { 503 case 1: {
577 QListIterator<DocLnk> dit( files.children() ); 504 QListIterator<DocLnk> dit( files.children() );
578 for ( ; dit.current(); ++dit ) { 505 for ( ; dit.current(); ++dit ) {
579 if( dit.current()->name() == it->text(0)) { 506 if( dit.current()->name() == it->text(0)) {
580 if(QFileInfo( dit.current()->file()).exists()) 507 if(QFileInfo( dit.current()->file()).exists())
581 d->selectedFiles->addToSelection( **dit ); 508 d->selectedFiles->addToSelection( **dit );
582 } 509 }
583 } 510 }
584 writeCurrentM3u(); 511 writeCurrentM3u();
585 512 }
586 } 513 break;
587 514 case 2: {
588 break; 515 QListIterator<DocLnk> dit( vFiles.children() );
589 case 2: { 516 for ( ; dit.current(); ++dit ) {
590 QListIterator<DocLnk> dit( vFiles.children() ); 517 if( dit.current()->name() == it->text(0)) {
591 for ( ; dit.current(); ++dit ) { 518 if( QFileInfo( dit.current()->file()).exists() )
592 if( dit.current()->name() == it->text(0)) { 519 d->selectedFiles->addToSelection( **dit );
593 if( QFileInfo( dit.current()->file()).exists() ) 520 }
594 d->selectedFiles->addToSelection( **dit ); 521 }
595 } 522 writeCurrentM3u();
596 }
597 writeCurrentM3u();
598 523
599 } 524 }
600 break; 525 break;
601 case 0: 526 case 0:
602 break; 527 break;
603 }; 528 };
604 tabWidget->setCurrentPage(0); 529 tabWidget->setCurrentPage(0);
605 } 530 }
606} 531}
607 532
608 533
609void PlayListWidget::tabChanged(QWidget *) { 534void PlayListWidget::tabChanged(QWidget *) {
610 535
611 switch ( whichList()) { 536 switch ( whichList()) {
612 case 0: 537 case 0:
613 { 538 {
614 if( !tbDeletePlaylist->isHidden() ) { 539 if( !tbDeletePlaylist->isHidden() ) {
615 tbDeletePlaylist->hide(); 540 tbDeletePlaylist->hide();
616 } 541 }
617 d->tbRemoveFromList->setEnabled(TRUE); 542 d->tbRemoveFromList->setEnabled(TRUE);
618 d->tbAddToList->setEnabled(FALSE); 543 d->tbAddToList->setEnabled(FALSE);
619 } 544 }
620 break; 545 break;
621 case 1: 546 case 1:
622 { 547 {
623 audioView->clear(); 548 audioView->clear();
624 populateAudioView(); 549 populateAudioView();
625 550
626 if( !tbDeletePlaylist->isHidden() ) { 551 if( !tbDeletePlaylist->isHidden() ) {
@@ -759,138 +684,142 @@ void PlayListWidget::populateVideoView() {
759 if( Vdit.current()->file().find(path) != -1 ) { 684 if( Vdit.current()->file().find(path) != -1 ) {
760 storage=name; 685 storage=name;
761 pathName=path; 686 pathName=path;
762 } 687 }
763 } 688 }
764 689
765 QListViewItem * newItem; 690 QListViewItem * newItem;
766 if ( QFile( Vdit.current()->file() ).exists() ) { 691 if ( QFile( Vdit.current()->file() ).exists() ) {
767 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), 692 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(),
768 QString::number( QFile( Vdit.current()->file() ).size() ), 693 QString::number( QFile( Vdit.current()->file() ).size() ),
769 storage, Vdit.current()->file()); 694 storage, Vdit.current()->file());
770 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer2/videofile" ) ); 695 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer2/videofile" ) );
771 } 696 }
772 } 697 }
773} 698}
774 699
775 700
776void PlayListWidget::openFile() { 701void PlayListWidget::openFile() {
777 QString filename, name; 702 QString filename, name;
778 InputDialog *fileDlg; 703 InputDialog *fileDlg;
779 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); 704 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0);
780 fileDlg->exec(); 705 fileDlg->exec();
781 if( fileDlg->result() == 1 ) { 706 if( fileDlg->result() == 1 ) {
782 filename = fileDlg->text(); 707 filename = fileDlg->text();
783
784 qDebug( "Selected filename is " + filename ); 708 qDebug( "Selected filename is " + filename );
785
786 if(filename.left(4) == "http") { //if http, lets write a new m3u
787 Om3u *m3uList; 709 Om3u *m3uList;
788 DocLnk lnk; 710 DocLnk lnk;
789 QString m3uFile, m3uFilePath; 711 Config cfg( "OpiePlayer" );
712 cfg.setGroup("PlayList");
790 713
714 if(filename.left(4) == "http") {
715 QString m3uFile, m3uFilePath;
791 if(filename.find(":",8,TRUE) != -1) { //found a port 716 if(filename.find(":",8,TRUE) != -1) { //found a port
792 m3uFile = filename.left( filename.find( ":",8,TRUE)); 717 m3uFile = filename.left( filename.find( ":",8,TRUE));
793 m3uFile = m3uFile.right( 7); 718 m3uFile = m3uFile.right( 7);
794 } else if(filename.left(4) == "http"){ 719 } else if(filename.left(4) == "http"){
795 m3uFile=filename; 720 m3uFile=filename;
796 m3uFile = m3uFile.right( m3uFile.length() - 7); 721 m3uFile = m3uFile.right( m3uFile.length() - 7);
797 } else{ 722 } else{
798 m3uFile=filename; 723 m3uFile=filename;
799 } 724 }
800// qDebug( m3uFile);
801 725
802//this is where this new m3u is going to live at 726 qDebug("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"+ m3uFile);
803 m3uFilePath = QDir::homeDirPath() + "/" + m3uFile + ".m3u"; 727 m3uList = new Om3u( cfg.readEntry("CurrentPlaylist",""), IO_Append | IO_ReadWrite );
804// m3uFile += ".m3u";
805 m3uList = new Om3u( m3uFile+".m3u", IO_ReadWrite );
806 m3uList->add( filename); 728 m3uList->add( filename);
807 m3uList->write(); 729 m3uList->write();
730 m3uList->close();
808 if(m3uList) delete m3uList; 731 if(m3uList) delete m3uList;
809// qDebug( m3uFile); 732 lnk.setName( filename ); //sets name
810 lnk.setName( filename ); //sets file name 733 lnk.setFile( filename ); //sets file name
811 lnk.setFile( m3uFilePath ); //sets File property 734 lnk.setIcon("opieplayer2/musicfile");
812 lnk.setType( MimeType( QFile::encodeName(m3uFilePath) ).id() );
813
814 lnk.setExec( "opieplayer2" );
815 lnk.setIcon("opieplayer2/playlist2");
816
817 if( !lnk.writeLink() ) {
818 qDebug( "Writing doclink did not work" );
819 }
820 d->selectedFiles->addToSelection( lnk ); 735 d->selectedFiles->addToSelection( lnk );
821
822 } 736 }
823 else if( filename.right( 3 ) == "m3u" ) { 737 else if( filename.right( 3) == "m3u" ) {
824 readm3u( filename ); 738 readm3u( filename );
825 739
826 } else if( filename.right(3) == "pls" ) { 740 } else if( filename.right(3) == "pls" ) {
827 readPls( filename ); 741 readPls( filename );
828 } 742 }
743 else {
744 m3uList = new Om3u( cfg.readEntry("CurrentPlaylist",""), IO_Append | IO_ReadWrite );
745 m3uList->add( filename);
746 m3uList->write();
747 m3uList->close();
748 if(m3uList) delete m3uList;
749 d->selectedFiles->addToSelection( DocLnk(filename) );
750 }
829 } 751 }
752
830 if( fileDlg ) { 753 if( fileDlg ) {
831 delete fileDlg; 754 delete fileDlg;
832 } 755 }
833} 756}
834 757
835/* 758/*
836reads m3u and adds files/urls to playlist */ 759reads m3u and shows files/urls to playlist widget */
837void PlayListWidget::readm3u( const QString &filename ) { 760void PlayListWidget::readm3u( const QString &filename ) {
838 qDebug( "read m3u filename " + filename ); 761 qDebug( "read m3u filename " + filename );
839 762
840 Om3u *m3uList; 763 Om3u *m3uList;
841 QString s, name; 764 QString s, name;
842 m3uList = new Om3u( filename, IO_ReadOnly ); 765 m3uList = new Om3u( filename, IO_ReadOnly );
843 m3uList->readM3u(); 766 m3uList->readM3u();
844 DocLnk lnk; 767 DocLnk lnk;
845 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) { 768 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) {
846 s = *it; 769 s = *it;
847 s.replace( QRegExp( "%20" )," " ); 770// s.replace( QRegExp( "%20" )," " );
848// qDebug("reading "+ s); 771// qDebug("reading "+ s);
849 772 if(s.left(4)=="http") {
850 if( QFileInfo( s ).exists() ) { 773 lnk.setName( s ); //sets file name
774 lnk.setFile( s ); //sets file name
775 lnk.setIcon("opieplayer2/musicfile");
776 }
777 else {
778 if( QFileInfo( s ).exists() ) {
851 lnk.setName( QFileInfo(s).baseName()); 779 lnk.setName( QFileInfo(s).baseName());
852// qDebug("set link "+s); 780// qDebug("set link "+s);
853 if(s.at(s.length()-4) == '.') //if regular file 781 if(s.at(s.length()-4) == '.') //if regular file
854 lnk.setFile( s); 782 lnk.setFile( s);
855 else 783 else
856 lnk.setFile( s+"/"); //if url with no extension 784 lnk.setFile( s+"/"); //if url with no extension
857 785 }
858 d->selectedFiles->addToSelection( lnk );
859 } 786 }
787 d->selectedFiles->addToSelection( lnk );
860 } 788 }
861 Config config( "OpiePlayer" ); 789 Config config( "OpiePlayer" );
862 config.setGroup( "PlayList" ); 790 config.setGroup( "PlayList" );
863 791
864 config.writeEntry("CurrentPlaylist",filename); 792 config.writeEntry("CurrentPlaylist",filename);
865 config.write(); 793 config.write();
866 currentPlayList=filename; 794 currentPlayList=filename;
867 795
796// m3uList->write();
868 m3uList->close(); 797 m3uList->close();
869 if(m3uList) delete m3uList; 798 if(m3uList) delete m3uList;
870 799
871 d->selectedFiles->setSelectedItem( s); 800 d->selectedFiles->setSelectedItem( s);
872 setCaption(tr("OpiePlayer: ")+ filename); 801 setCaption(tr("OpiePlayer: ")+ QFileInfo(filename).baseName());
873 802
874} 803}
875 804
876/* 805/*
877reads pls and adds files/urls to playlist */ 806reads pls and adds files/urls to playlist */
878void PlayListWidget::readPls( const QString &filename ) { 807void PlayListWidget::readPls( const QString &filename ) {
879 808
880 qDebug( "pls filename is " + filename ); 809 qDebug( "pls filename is " + filename );
881 Om3u *m3uList; 810 Om3u *m3uList;
882 QString s, name; 811 QString s, name;
883 m3uList = new Om3u( filename, IO_ReadOnly ); 812 m3uList = new Om3u( filename, IO_ReadOnly );
884 m3uList->readPls(); 813 m3uList->readPls();
885 814
886 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) { 815 for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) {
887 s = *it; 816 s = *it;
888 // s.replace( QRegExp( "%20" )," " ); 817 // s.replace( QRegExp( "%20" )," " );
889 DocLnk lnk( s ); 818 DocLnk lnk( s );
890 QFileInfo f( s ); 819 QFileInfo f( s );
891 QString name = f.baseName(); 820 QString name = f.baseName();
892 821
893 if( name.left( 4 ) == "http" ) { 822 if( name.left( 4 ) == "http" ) {
894 name = s.right( s.length() - 7); 823 name = s.right( s.length() - 7);
895 } else { 824 } else {
896 name = s; 825 name = s;
@@ -905,91 +834,95 @@ void PlayListWidget::readPls( const QString &filename ) {
905 if( name.right( 1 ).find( '/' ) == -1) { 834 if( name.right( 1 ).find( '/' ) == -1) {
906 s += "/"; 835 s += "/";
907 } 836 }
908 lnk.setFile( s ); 837 lnk.setFile( s );
909 } 838 }
910 lnk.setType( "audio/x-mpegurl" ); 839 lnk.setType( "audio/x-mpegurl" );
911 840
912 lnk.writeLink(); 841 lnk.writeLink();
913 d->selectedFiles->addToSelection( lnk ); 842 d->selectedFiles->addToSelection( lnk );
914 } 843 }
915 844
916 m3uList->close(); 845 m3uList->close();
917 if(m3uList) delete m3uList; 846 if(m3uList) delete m3uList;
918} 847}
919 848
920/* 849/*
921 writes current playlist to current m3u file */ 850 writes current playlist to current m3u file */
922void PlayListWidget::writeCurrentM3u() { 851void PlayListWidget::writeCurrentM3u() {
923 qDebug("writting to current m3u"); 852 qDebug("writting to current m3u");
924 Config cfg( "OpiePlayer" ); 853 Config cfg( "OpiePlayer" );
925 cfg.setGroup("PlayList"); 854 cfg.setGroup("PlayList");
926 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 855 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
927 // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 856 // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
928 Om3u *m3uList; 857 Om3u *m3uList;
929 m3uList = new Om3u( currentPlaylist, IO_ReadWrite ); 858 m3uList = new Om3u( currentPlaylist, IO_ReadWrite |IO_Truncate );
930 d->selectedFiles->first(); 859 d->selectedFiles->first();
931 860
932 do { 861 do {
933 m3uList->add( d->selectedFiles->current()->file()); 862 m3uList->add( d->selectedFiles->current()->file());
934 } 863 }
935 while ( d->selectedFiles->next() ); 864 while ( d->selectedFiles->next() );
936 // qDebug( list ); 865 // qDebug( list );
937 m3uList->write(); 866 m3uList->write();
867 m3uList->close();
868
938 if(m3uList) delete m3uList; 869 if(m3uList) delete m3uList;
939} 870}
940 871
941 /* 872 /*
942 writes current playlist to m3u file */ 873 writes current playlist to m3u file */
943void PlayListWidget::writem3u() { 874void PlayListWidget::writem3u() {
944 InputDialog *fileDlg; 875 InputDialog *fileDlg;
945 fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0); 876 fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0);
946 fileDlg->exec(); 877 fileDlg->exec();
947 QString name, filename, list; 878 QString name, filename, list;
948 Om3u *m3uList; 879 Om3u *m3uList;
949 880
950 if( fileDlg->result() == 1 ) { 881 if( fileDlg->result() == 1 ) {
951 name = fileDlg->text(); 882 name = fileDlg->text();
952 qDebug( filename ); 883 qDebug( filename );
953 884
954 if( name.left( 1) != "/" ) { 885 if( name.left( 1) != "/" ) {
955 filename = QPEApplication::documentDir() + "/" + name; 886 filename = QPEApplication::documentDir() + "/" + name;
956 } 887 }
957 888
958 if( name.right( 3 ) != "m3u" ) { 889 if( name.right( 3 ) != "m3u" ) {
959 filename = QPEApplication::documentDir() + "/" +name+".m3u"; 890 filename = QPEApplication::documentDir() + "/" +name+".m3u";
960 } 891 }
961 892
962 m3uList = new Om3u(filename, IO_ReadWrite); 893 m3uList = new Om3u(filename, IO_ReadWrite);
963 894
964 d->selectedFiles->first(); 895 d->selectedFiles->first();
965 896
966 do { 897 do {
967 m3uList->add( d->selectedFiles->current()->file()); 898 m3uList->add( d->selectedFiles->current()->file());
968 } 899 }
969 while ( d->selectedFiles->next() ); 900 while ( d->selectedFiles->next() );
970// qDebug( list ); 901// qDebug( list );
971 m3uList->write(); 902 m3uList->write();
903 m3uList->close();
904
972 } 905 }
973 if(m3uList) delete m3uList; 906 if(m3uList) delete m3uList;
974 if(fileDlg) delete fileDlg; 907 if(fileDlg) delete fileDlg;
975 908
976 DocLnk lnk; 909 DocLnk lnk;
977 lnk.setFile( filename); 910 lnk.setFile( filename);
978 lnk.setIcon("opieplayer2/playlist2"); 911 lnk.setIcon("opieplayer2/playlist2");
979 lnk.setName( name); //sets file name 912 lnk.setName( name); //sets file name
980 913
981// qDebug(filename); 914// qDebug(filename);
982 Config config( "OpiePlayer" ); 915 Config config( "OpiePlayer" );
983 config.setGroup( "PlayList" ); 916 config.setGroup( "PlayList" );
984 917
985 config.writeEntry("CurrentPlaylist",filename); 918 config.writeEntry("CurrentPlaylist",filename);
986 currentPlayList=filename; 919 currentPlayList=filename;
987 920
988 if(!lnk.writeLink()) { 921 if(!lnk.writeLink()) {
989 qDebug("Writing doclink did not work"); 922 qDebug("Writing doclink did not work");
990 } 923 }
991 924
992 setCaption(tr("OpiePlayer: ") + name); 925 setCaption(tr("OpiePlayer: ") + name);
993} 926}
994 927
995void PlayListWidget::keyReleaseEvent( QKeyEvent *e ) { 928void PlayListWidget::keyReleaseEvent( QKeyEvent *e ) {