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.cpp108
1 files changed, 62 insertions, 46 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index 37b998f..dc2c496 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -85,6 +85,8 @@ PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl )
85 this,SLOT( openFile() ) ); 85 this,SLOT( openFile() ) );
86 (void)new MenuItem( pmPlayList, tr("Add URL"), 86 (void)new MenuItem( pmPlayList, tr("Add URL"),
87 this,SLOT( openURL() ) ); 87 this,SLOT( openURL() ) );
88 (void)new MenuItem( pmPlayList, tr( "Add Directory"),
89 this, SLOT(openDirectory()));
88 pmPlayList->insertSeparator(-1); 90 pmPlayList->insertSeparator(-1);
89 (void)new MenuItem( pmPlayList, tr( "Save Playlist" ), 91 (void)new MenuItem( pmPlayList, tr( "Save Playlist" ),
90 this, SLOT(writem3u() ) ); 92 this, SLOT(writem3u() ) );
@@ -662,12 +664,7 @@ void PlayListWidget::openURL() {
662} 664}
663 665
664 666
665void PlayListWidget::openFile() { 667static MimeTypes fileSelectorMimeTypes() {
666
667 QString filename, name;
668
669 Config cfg( "OpiePlayer" );
670 cfg.setGroup("Dialog");
671 MimeTypes types; 668 MimeTypes types;
672 QStringList audio, video, all; 669 QStringList audio, video, all;
673 audio << "audio/*"; 670 audio << "audio/*";
@@ -684,34 +681,60 @@ void PlayListWidget::openFile() {
684 types.insert("Audio", audio ); 681 types.insert("Audio", audio );
685 types.insert("Video", video ); 682 types.insert("Video", video );
686 683
687 QString str = OFileDialog::getOpenFileName( 1, 684 return types;
688 cfg.readEntry("LastDirectory",QPEApplication::documentDir()),"", 685}
689 types, 0 ); 686
687void PlayListWidget::openFile() {
688
689 QString filename, name;
690
691 Config cfg( "OpiePlayer" );
692 cfg.setGroup("Dialog");
693 MimeTypes types = fileSelectorMimeTypes();
694
695
696 QString str = OFileDialog::getOpenFileName( 1, QString::null,
697 QString::null, types, 0,
698 tr("Add File to Playlist") );
699
700 if( str.isEmpty() )
701 return;
702
703 if(str.left(2) == "//") str=str.right(str.length()-1);
704
690 705
691 if(str.left(2) == "//") { 706 if( str.right( 3) == "m3u" || str.right(3) == "pls" ) {
692 str=str.right(str.length()-1); 707 readListFromFile( str );
708 } else {
709 QFileInfo info( str );
710 DocLnk lnk = addFileToPlaylist( str, info.baseName() );
711 d->selectedFiles->setSelectedItem( lnk.name() );
693 } 712 }
694 cfg.writeEntry( "LastDirectory" ,QFileInfo( str ).dirPath() ); 713}
695 714
696 if( !str.isEmpty() ) { 715void PlayListWidget::openDirectory() {
716 QString str = OFileDialog::getDirectory( OFileSelector::DirectorySelector,
717 QString::null, 0,
718 tr( "Add Files from Directory"));
697 719
698 odebug << "Selected filename is " + str << oendl; 720 if(str.isEmpty() )
699 filename = str; 721 return;
700 DocLnk lnk; 722
723 if(str.left(2) == "//") str=str.right(str.length()-1);
724 QDir dir( str );
725 QStringList lst = dir.entryList(QDir::Files|QDir::Readable);
701 726
702 if( filename.right( 3) == "m3u" || filename.right(3) == "pls" ) { 727 for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) {
728 QString filename = str + "/" + *it;
729
730 if( filename.right( 3) == "m3u" || filename.right(3) == "pls" )
703 readListFromFile( filename ); 731 readListFromFile( filename );
704 } else { 732 else {
705 lnk.setName( QFileInfo(filename).baseName() ); //sets name 733 addFileToPlaylist( filename, QFileInfo(*it).baseName() );
706 lnk.setFile( filename ); //sets file name
707 d->selectedFiles->addToSelection( lnk );
708 writeCurrentM3u();
709 d->selectedFiles->setSelectedItem( lnk.name() );
710 } 734 }
711 } 735 }
712} 736}
713 737
714
715void PlayListWidget::readListFromFile( const QString &filename ) { 738void PlayListWidget::readListFromFile( const QString &filename ) {
716 odebug << "read list filename " + filename << oendl; 739 odebug << "read list filename " + filename << oendl;
717 QFileInfo fi(filename); 740 QFileInfo fi(filename);
@@ -785,33 +808,16 @@ void PlayListWidget::readListFromFile( const QString &filename ) {
785 /* 808 /*
786 writes current playlist to m3u file */ 809 writes current playlist to m3u file */
787void PlayListWidget::writem3u() { 810void PlayListWidget::writem3u() {
788 //InputDilog *fileDlg;
789 //fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0);
790 //fileDlg->exec();
791 811
792 Config cfg( "OpiePlayer" ); 812 Config cfg( "OpiePlayer" );
793 cfg.setGroup("Dialog"); 813 cfg.setGroup("Dialog");
794 MimeTypes types; 814 MimeTypes types = fileSelectorMimeTypes();
795 QStringList audio, video, all;
796 audio << "audio/*";
797 audio << "playlist/plain";
798 audio << "audio/x-mpegurl";
799 815
800 video << "video/*"; 816 QString str = OFileDialog::getOpenFileName( 1, QString::null,
801 video << "playlist/plain"; 817 QString::null, types, 0,
818 tr( "Save Playlist" ));
802 819
803 all += audio;
804 all += video;
805 types.insert("All Media Files", all );
806 types.insert("Audio", audio );
807 types.insert("Video", video );
808
809 QString str = OFileDialog::getOpenFileName( 1,
810 cfg.readEntry("LastDirectory",QPEApplication::documentDir()),"",
811 types, 0 );
812 if(str.left(2) == "//") str=str.right(str.length()-1); 820 if(str.left(2) == "//") str=str.right(str.length()-1);
813 cfg.writeEntry("LastDirectory" ,QFileInfo(str).dirPath());
814
815 821
816 QString name, filename, list; 822 QString name, filename, list;
817 Om3u *m3uList; 823 Om3u *m3uList;
@@ -1007,7 +1013,6 @@ QString PlayListWidget::currentFileListPathName() const {
1007 1013
1008 1014
1009void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) { 1015void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) {
1010 odebug << "qcop message "+msg << oendl;
1011 QDataStream stream ( data, IO_ReadOnly ); 1016 QDataStream stream ( data, IO_ReadOnly );
1012 if ( msg == "play()" ) { //plays current selection 1017 if ( msg == "play()" ) { //plays current selection
1013 btnPlay( true); 1018 btnPlay( true);
@@ -1048,3 +1053,14 @@ void PlayListWidget::qcopReceive(const QCString &msg, const QByteArray &data) {
1048 } 1053 }
1049 1054
1050} 1055}
1056
1057DocLnk PlayListWidget::addFileToPlaylist( const QString& file,
1058 const QString& name ) {
1059 DocLnk lnk;
1060 lnk.setName( name ); //sets name
1061 lnk.setFile( file ); //sets file name
1062 d->selectedFiles->addToSelection( lnk );
1063 writeCurrentM3u();
1064
1065 return lnk;
1066}