summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp160
1 files changed, 120 insertions, 40 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index 19724cb..6acdd1d 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -60,9 +60,11 @@ extern MediaPlayerState *mediaPlayerState;
60PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) 60PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
61 : PlayListWidgetGui( parent, name, fl ) { 61 : PlayListWidgetGui( parent, name, fl ) {
62 62
63 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer2/add_to_playlist", 63 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ),
64 "opieplayer2/add_to_playlist",
64 this , SLOT(addSelected() ) ); 65 this , SLOT(addSelected() ) );
65 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer2/remove_from_playlist", 66 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ),
67 "opieplayer2/remove_from_playlist",
66 this , SLOT(removeSelected() ) ); 68 this , SLOT(removeSelected() ) );
67 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", 69 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play",
68 this , SLOT( btnPlay( bool) ), TRUE ); 70 this , SLOT( btnPlay( bool) ), TRUE );
@@ -72,53 +74,78 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
72 mediaPlayerState, SLOT( setLooping( bool ) ), TRUE ); 74 mediaPlayerState, SLOT( setLooping( bool ) ), TRUE );
73 75
74 (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); 76 (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
75 (void)new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); 77 (void)new MenuItem( pmPlayList, tr( "Add all audio files" ),
76 (void)new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); 78 this, SLOT( addAllMusicToList() ) );
77 (void)new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); 79 (void)new MenuItem( pmPlayList, tr( "Add all video files" ),
80 this, SLOT( addAllVideoToList() ) );
81 (void)new MenuItem( pmPlayList, tr( "Add all files" ),
82 this, SLOT( addAllToList() ) );
78 pmPlayList->insertSeparator(-1); 83 pmPlayList->insertSeparator(-1);
79 (void)new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); 84 (void)new MenuItem( pmPlayList, tr( "Save PlayList" ),
80 (void)new MenuItem( pmPlayList, tr( "Export playlist to m3u" ), this, SLOT(writem3u() ) ); 85 this, SLOT( saveList() ) );
86 (void)new MenuItem( pmPlayList, tr( "Export playlist to m3u" ),
87 this, SLOT(writem3u() ) );
81 pmPlayList->insertSeparator(-1); 88 pmPlayList->insertSeparator(-1);
82 (void)new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) ); 89 (void)new MenuItem( pmPlayList, tr( "Open File or URL" ),
90 this,SLOT( openFile() ) );
83 pmPlayList->insertSeparator(-1); 91 pmPlayList->insertSeparator(-1);
84 (void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) ); 92 (void)new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ),
85 (void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) ); 93 this,SLOT( scanForAudio() ) );
94 (void)new MenuItem( pmPlayList, tr( "Rescan for Video Files" ),
95 this,SLOT( scanForVideo() ) );
86 96
87 pmView->insertItem( Resource::loadPixmap("fullscreen") , tr( "Full Screen"), mediaPlayerState, SLOT( toggleFullscreen() ) ); 97 pmView->insertItem( Resource::loadPixmap("fullscreen") , tr( "Full Screen"),
98 mediaPlayerState, SLOT( toggleFullscreen() ) );
88 99
89 Config cfg( "OpiePlayer" ); 100 Config cfg( "OpiePlayer" );
90 bool b= cfg.readBoolEntry("FullScreen", 0); 101 bool b= cfg.readBoolEntry("FullScreen", 0);
91 mediaPlayerState->setFullscreen( b ); 102 mediaPlayerState->setFullscreen( b );
92 pmView->setItemChecked( -16, b ); 103 pmView->setItemChecked( -16, b );
93 104
94 (void)new ToolButton( vbox1, tr( "Move Up" ), "opieplayer2/up", d->selectedFiles, SLOT(moveSelectedUp() ) ); 105 (void)new ToolButton( vbox1, tr( "Move Up" ), "opieplayer2/up",
95 (void)new ToolButton( vbox1, tr( "Remove" ), "opieplayer2/cut", d->selectedFiles, SLOT(removeSelected() ) ); 106 d->selectedFiles, SLOT(moveSelectedUp() ) );
96 (void)new ToolButton( vbox1, tr( "Move Down" ), "opieplayer2/down", d->selectedFiles, SLOT(moveSelectedDown() ) ); 107 (void)new ToolButton( vbox1, tr( "Remove" ), "opieplayer2/cut",
108 d->selectedFiles, SLOT(removeSelected() ) );
109 (void)new ToolButton( vbox1, tr( "Move Down" ), "opieplayer2/down",
110 d->selectedFiles, SLOT(moveSelectedDown() ) );
97 QVBox *stretch2 = new QVBox( vbox1 ); 111 QVBox *stretch2 = new QVBox( vbox1 );
98 112
99 connect( tbDeletePlaylist, ( SIGNAL( released() ) ), SLOT( deletePlaylist() ) ); 113 connect( tbDeletePlaylist, ( SIGNAL( released() ) ),
100 connect( pmView, SIGNAL( activated( int ) ), this, SLOT( pmViewActivated( int ) ) ); 114 SLOT( deletePlaylist() ) );
101 connect( skinsMenu, SIGNAL( activated( int ) ) , this, SLOT( skinsMenuActivated( int ) ) ); 115 connect( pmView, SIGNAL( activated( int ) ),
116 this, SLOT( pmViewActivated( int ) ) );
117 connect( skinsMenu, SIGNAL( activated( int ) ) ,
118 this, SLOT( skinsMenuActivated( int ) ) );
102 connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int) ), 119 connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int) ),
103 this,SLOT( playlistViewPressed( int, QListViewItem *, const QPoint&, int ) ) ); 120 this,SLOT( playlistViewPressed( int, QListViewItem *, const QPoint&, int ) ) );
104 connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int ) ), 121 connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int ) ),
105 this,SLOT( viewPressed( int, QListViewItem *, const QPoint&, int ) ) ); 122 this,SLOT( viewPressed( int, QListViewItem *, const QPoint&, int ) ) );
106 connect( audioView, SIGNAL( returnPressed( QListViewItem *) ), 123 connect( audioView, SIGNAL( returnPressed( QListViewItem *) ),
107 this,SLOT( playIt( QListViewItem *) ) ); 124 this,SLOT( playIt( QListViewItem *) ) );
108 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 125 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ),
126 this, SLOT( addToSelection( QListViewItem *) ) );
109 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int) ), 127 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int) ),
110 this,SLOT( viewPressed( int, QListViewItem *, const QPoint&, int) ) ); 128 this,SLOT( viewPressed( int, QListViewItem *, const QPoint&, int) ) );
111 connect( videoView, SIGNAL( returnPressed( QListViewItem *) ), 129 connect( videoView, SIGNAL( returnPressed( QListViewItem *) ),
112 this,SLOT( playIt( QListViewItem *) ) ); 130 this,SLOT( playIt( QListViewItem *) ) );
113 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 131 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ),
114 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); 132 this, SLOT( addToSelection( QListViewItem *) ) );
115 connect( tabWidget, SIGNAL ( currentChanged(QWidget*) ), this, SLOT( tabChanged( QWidget* ) ) ); 133 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ),
116 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); 134 this, SLOT( loadList( const DocLnk & ) ) );
117 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); 135 connect( tabWidget, SIGNAL ( currentChanged(QWidget*) ),
118 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); 136 this, SLOT( tabChanged( QWidget* ) ) );
119 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); 137 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ),
120 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); 138 d->tbPlay, SLOT( setOn( bool ) ) );
121 connect ( gammaSlider, SIGNAL( valueChanged( int ) ), mediaPlayerState, SLOT( setVideoGamma( int ) ) ); 139 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ),
140 d->tbLoop, SLOT( setOn( bool ) ) );
141 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ),
142 d->tbShuffle, SLOT( setOn( bool ) ) );
143 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ),
144 this, SLOT( setPlaylist( bool ) ) );
145 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ),
146 this, SLOT( playIt( QListViewItem *) ) );
147 connect ( gammaSlider, SIGNAL( valueChanged( int ) ),
148 mediaPlayerState, SLOT( setVideoGamma( int ) ) );
122 149
123 readConfig( cfg ); 150 readConfig( cfg );
124 QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" ); 151 QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" );
@@ -161,7 +188,8 @@ void PlayListWidget::readConfig( Config& cfg ) {
161 QString linkFile = cfg.readEntry( entryName ); 188 QString linkFile = cfg.readEntry( entryName );
162 if( QFileInfo( linkFile ).exists() ) { 189 if( QFileInfo( linkFile ).exists() ) {
163 DocLnk lnk( linkFile ); 190 DocLnk lnk( linkFile );
164 if ( QFileInfo( lnk.file() ).exists() || linkFile.find( "http" , 0, TRUE) != -1) { 191 if ( QFileInfo( lnk.file() ).exists() ||
192 linkFile.find( "http" , 0, TRUE) != -1) {
165 d->selectedFiles->addToSelection( lnk ); 193 d->selectedFiles->addToSelection( lnk );
166 } 194 }
167 } 195 }
@@ -207,7 +235,8 @@ void PlayListWidget::writeConfig( Config& cfg ) const {
207void PlayListWidget::addToSelection( const DocLnk& lnk ) { 235void PlayListWidget::addToSelection( const DocLnk& lnk ) {
208 d->setDocumentUsed = FALSE; 236 d->setDocumentUsed = FALSE;
209 if ( mediaPlayerState->playlist() ) { 237 if ( mediaPlayerState->playlist() ) {
210 if( QFileInfo( lnk.file() ).exists() || lnk.file().left(4) == "http" ) 238 if( QFileInfo( lnk.file() ).exists() ||
239 lnk.file().left(4) == "http" )
211 d->selectedFiles->addToSelection( lnk ); 240 d->selectedFiles->addToSelection( lnk );
212 } 241 }
213 else 242 else
@@ -290,7 +319,8 @@ void PlayListWidget::setDocument( const QString& fileref ) {
290 //qDebug( fileref ); 319 //qDebug( fileref );
291 fromSetDocument = TRUE; 320 fromSetDocument = TRUE;
292 if ( fileref.isNull() ) { 321 if ( fileref.isNull() ) {
293 QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) ); 322 QMessageBox::critical( 0, tr( "Invalid File" ),
323 tr( "There was a problem in getting the file." ) );
294 return; 324 return;
295 } 325 }
296 326
@@ -421,7 +451,8 @@ void PlayListWidget::saveList() {
421 writeConfig( cfg ); 451 writeConfig( cfg );
422 452
423 DocLnk lnk; 453 DocLnk lnk;
424 lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf"); //sets File property 454 lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf");
455//sets File property
425 lnk.setType("playlist/plain");// hey is this a REGISTERED mime type?!?!? ;D 456 lnk.setType("playlist/plain");// hey is this a REGISTERED mime type?!?!? ;D
426 lnk.setIcon("opieplayer2/playlist2"); 457 lnk.setIcon("opieplayer2/playlist2");
427 lnk.setName( filename); //sets file name 458 lnk.setName( filename); //sets file name
@@ -707,7 +738,8 @@ void PlayListWidget::populateAudioView() {
707 } 738 }
708 739
709 QListViewItem * newItem; 740 QListViewItem * newItem;
710 if ( QFile( dit.current()->file()).exists() || dit.current()->file().left(4) == "http" ) { 741 if ( QFile( dit.current()->file()).exists() ||
742 dit.current()->file().left(4) == "http" ) {
711 long size; 743 long size;
712 if( dit.current()->file().left(4) == "http" ) 744 if( dit.current()->file().left(4) == "http" )
713 size=0; 745 size=0;
@@ -747,7 +779,8 @@ void PlayListWidget::populateVideoView() {
747 QListViewItem * newItem; 779 QListViewItem * newItem;
748 if ( QFile( Vdit.current()->file() ).exists() ) { 780 if ( QFile( Vdit.current()->file() ).exists() ) {
749 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), 781 newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(),
750 QString::number( QFile( Vdit.current()->file() ).size() ), storage, Vdit.current()->file()); 782 QString::number( QFile( Vdit.current()->file() ).size() ),
783 storage, Vdit.current()->file());
751 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer2/videofile" ) ); 784 newItem->setPixmap(0, Resource::loadPixmap( "opieplayer2/videofile" ) );
752 } 785 }
753 } 786 }
@@ -763,17 +796,57 @@ void PlayListWidget::openFile() {
763 filename = fileDlg->text(); 796 filename = fileDlg->text();
764 797
765 qDebug( "Selected filename is " + filename ); 798 qDebug( "Selected filename is " + filename );
766 if( filename.right( 3 ) == "m3u" ) { 799
767 readm3u( filename ); 800 if(filename.left(4) == "http") {
768 } else if( filename.right(3) == "pls" ) {
769 readPls( filename );
770 } else {
771 // this doesnt need fixing
772 DocLnk lnk; 801 DocLnk lnk;
802 QString m3uFile, m3uFilePath;
803 if(filename.find(":",8,TRUE) != -1) {
804//found a port
805 m3uFile=filename.left(filename.find(":",8,TRUE));
806
807 m3uFile=m3uFile.right(m3uFile.length()-7);
808 qDebug(m3uFile);
809 m3uFilePath= QDir::homeDirPath()+"/"+m3uFile+".m3u";
810
811 QFile f(m3uFilePath );
812 f.open( IO_WriteOnly );
813 f.writeBlock( filename, filename.length() );
814 f.close();
815
816 lnk.setName( m3uFile ); //sets file name
817 lnk.setFile( m3uFilePath ); //sets File property
818 //qWarning( "Mimetype: " + MimeType( QFile::encodeName(filename) ).id() );
819 lnk.setType( MimeType( QFile::encodeName(m3uFilePath) ).id() );
820
821 } else if(filename.left(4) == "http"){
822
823 m3uFile=m3uFile.right(m3uFile.length()-7);
824 qDebug(m3uFile);
825
826 m3uFilePath= QDir::homeDirPath()+"/"+m3uFile+".m3u";
827
828 QFile f(m3uFilePath );
829 f.open( IO_WriteOnly );
830 f.writeBlock( filename, filename.length() );
831 f.close();
832
833 lnk.setName( m3uFile ); //sets file name
834 lnk.setFile( m3uFilePath ); //sets File property
835 //qWarning( "Mimetype: " + MimeType( QFile::encodeName(filename) ).id() );
836 lnk.setType( MimeType( QFile::encodeName(m3uFilePath) ).id() );
837
838 } else{
839
840 QFile f( filename );
841 f.open( IO_WriteOnly );
842 f.writeBlock( filename, filename.length() );
843 f.close();
844
773 lnk.setName( filename ); //sets file name 845 lnk.setName( filename ); //sets file name
774 lnk.setFile( filename ); //sets File property 846 lnk.setFile( filename ); //sets File property
775 //qWarning( "Mimetype: " + MimeType( QFile::encodeName(filename) ).id() ); 847 //qWarning( "Mimetype: " + MimeType( QFile::encodeName(filename) ).id() );
776 lnk.setType( MimeType( QFile::encodeName(filename) ).id() ); 848 lnk.setType( MimeType( QFile::encodeName(filename) ).id() );
849 }
777 lnk.setExec( "opieplayer" ); 850 lnk.setExec( "opieplayer" );
778 lnk.setIcon( "opieplayer2/MPEGPlayer" ); 851 lnk.setIcon( "opieplayer2/MPEGPlayer" );
779 852
@@ -781,6 +854,12 @@ void PlayListWidget::openFile() {
781 qDebug( "Writing doclink did not work" ); 854 qDebug( "Writing doclink did not work" );
782 } 855 }
783 d->selectedFiles->addToSelection( lnk ); 856 d->selectedFiles->addToSelection( lnk );
857
858 }
859 else if( filename.right( 3 ) == "m3u" ) {
860 readm3u( filename );
861 } else if( filename.right(3) == "pls" ) {
862 readPls( filename );
784 } 863 }
785 } 864 }
786 if( fileDlg ) { 865 if( fileDlg ) {
@@ -858,7 +937,8 @@ void PlayListWidget::readm3u( const QString &filename ) {
858 s=t.readLine(); 937 s=t.readLine();
859 938
860 if( s.find( "#", 0, TRUE) == -1 ) { 939 if( s.find( "#", 0, TRUE) == -1 ) {
861 if( s.find( " ", 0, TRUE) == -1 ) { // not sure if this is neede since cf uses vfat 940 if( s.find( " ", 0, TRUE) == -1 ) {
941// not sure if this is neede since cf uses vfat
862 if( s.left(2) == "E:" || s.left(2) == "P:" ) { 942 if( s.left(2) == "E:" || s.left(2) == "P:" ) {
863 s = s.right( s.length() -2 ); 943 s = s.right( s.length() -2 );
864 DocLnk lnk( s ); 944 DocLnk lnk( s );