summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp168
1 files changed, 124 insertions, 44 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
@@ -15,327 +15,357 @@
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; General Public License for more 22..}^=.=       =       ; General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = General Public License along with 26  -_. . .   )=.  = General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include <qpe/qpetoolbar.h> 34#include <qpe/qpetoolbar.h>
35#include <qpe/qpeapplication.h> 35#include <qpe/qpeapplication.h>
36#include <qpe/storage.h> 36#include <qpe/storage.h>
37#include <qpe/mimetype.h> 37#include <qpe/mimetype.h>
38#include <qpe/global.h> 38#include <qpe/global.h>
39#include <qpe/resource.h> 39#include <qpe/resource.h>
40 40
41#include <qdir.h> 41#include <qdir.h>
42#include <qmessagebox.h> 42#include <qmessagebox.h>
43#include <qregexp.h> 43#include <qregexp.h>
44#include <qtextstream.h> 44#include <qtextstream.h>
45 45
46#include "playlistselection.h" 46#include "playlistselection.h"
47#include "playlistwidget.h" 47#include "playlistwidget.h"
48#include "mediaplayerstate.h" 48#include "mediaplayerstate.h"
49#include "inputDialog.h" 49#include "inputDialog.h"
50 50
51//only needed for the random play 51//only needed for the random play
52#include <stdlib.h> 52#include <stdlib.h>
53 53
54#include "audiowidget.h" 54#include "audiowidget.h"
55#include "videowidget.h" 55#include "videowidget.h"
56 56
57extern MediaPlayerState *mediaPlayerState; 57extern MediaPlayerState *mediaPlayerState;
58 58
59 59
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 );
69 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", 71 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle",
70 mediaPlayerState, SLOT( setShuffled( bool ) ), TRUE ); 72 mediaPlayerState, SLOT( setShuffled( bool ) ), TRUE );
71 d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", 73 d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop",
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", "" );
125 loadList(DocLnk( currentPlaylist ) ); 152 loadList(DocLnk( currentPlaylist ) );
126 setCaption( tr( "OpiePlayer: " ) + currentPlaylist ); 153 setCaption( tr( "OpiePlayer: " ) + currentPlaylist );
127 154
128 // see which skins are installed 155 // see which skins are installed
129 videoScan=FALSE; 156 videoScan=FALSE;
130 audioScan=FALSE; 157 audioScan=FALSE;
131 populateSkinsMenu(); 158 populateSkinsMenu();
132 initializeStates(); 159 initializeStates();
133} 160}
134 161
135 162
136PlayListWidget::~PlayListWidget() { 163PlayListWidget::~PlayListWidget() {
137 // WTF?!@?! 164 // WTF?!@?!
138 165
139 if ( d->current ) { 166 if ( d->current ) {
140 delete d->current; 167 delete d->current;
141 } 168 }
142 delete d; 169 delete d;
143} 170}
144 171
145 172
146void PlayListWidget::initializeStates() { 173void PlayListWidget::initializeStates() {
147 d->tbPlay->setOn( mediaPlayerState->playing() ); 174 d->tbPlay->setOn( mediaPlayerState->playing() );
148 d->tbLoop->setOn( mediaPlayerState->looping() ); 175 d->tbLoop->setOn( mediaPlayerState->looping() );
149 d->tbShuffle->setOn( mediaPlayerState->shuffled() ); 176 d->tbShuffle->setOn( mediaPlayerState->shuffled() );
150 setPlaylist( true ); 177 setPlaylist( true );
151} 178}
152 179
153 180
154void PlayListWidget::readConfig( Config& cfg ) { 181void PlayListWidget::readConfig( Config& cfg ) {
155 cfg.setGroup( "PlayList" ); 182 cfg.setGroup( "PlayList" );
156 QString currentString = cfg.readEntry( "current", "" ); 183 QString currentString = cfg.readEntry( "current", "" );
157 int noOfFiles = cfg.readNumEntry( "NumberOfFiles", 0 ); 184 int noOfFiles = cfg.readNumEntry( "NumberOfFiles", 0 );
158 for ( int i = 0; i < noOfFiles; i++ ) { 185 for ( int i = 0; i < noOfFiles; i++ ) {
159 QString entryName; 186 QString entryName;
160 entryName.sprintf( "File%i", i + 1 ); 187 entryName.sprintf( "File%i", i + 1 );
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 }
168 } 196 }
169 d->selectedFiles->setSelectedItem( currentString ); 197 d->selectedFiles->setSelectedItem( currentString );
170} 198}
171 199
172 200
173void PlayListWidget::writeConfig( Config& cfg ) const { 201void PlayListWidget::writeConfig( Config& cfg ) const {
174 d->selectedFiles->writeCurrent( cfg ); 202 d->selectedFiles->writeCurrent( cfg );
175 cfg.setGroup( "PlayList" ); 203 cfg.setGroup( "PlayList" );
176 int noOfFiles = 0; 204 int noOfFiles = 0;
177 d->selectedFiles->first(); 205 d->selectedFiles->first();
178 do { 206 do {
179 const DocLnk *lnk = d->selectedFiles->current(); 207 const DocLnk *lnk = d->selectedFiles->current();
180 if ( lnk ) { 208 if ( lnk ) {
181 QString entryName; 209 QString entryName;
182 entryName.sprintf( "File%i", noOfFiles + 1 ); 210 entryName.sprintf( "File%i", noOfFiles + 1 );
183 cfg.writeEntry( entryName, lnk->linkFile() ); 211 cfg.writeEntry( entryName, lnk->linkFile() );
184 // if this link does exist, add it so we have the file 212 // if this link does exist, add it so we have the file
185 // next time... 213 // next time...
186 if ( !QFile::exists( lnk->linkFile() ) ) { 214 if ( !QFile::exists( lnk->linkFile() ) ) {
187 // the way writing lnks doesn't really check for out 215 // the way writing lnks doesn't really check for out
188 // of disk space, but check it anyway. 216 // of disk space, but check it anyway.
189 if ( !lnk->writeLink() ) { 217 if ( !lnk->writeLink() ) {
190 QMessageBox::critical( 0, tr("Out of space"), 218 QMessageBox::critical( 0, tr("Out of space"),
191 tr( "There was a problem saving " 219 tr( "There was a problem saving "
192 "the playlist.\n" 220 "the playlist.\n"
193 "Your playlist " 221 "Your playlist "
194 "may be missing some entries\n" 222 "may be missing some entries\n"
195 "the next time you start it." ) 223 "the next time you start it." )
196 ); 224 );
197 } 225 }
198 } 226 }
199 noOfFiles++; 227 noOfFiles++;
200 } 228 }
201 } 229 }
202 while ( d->selectedFiles->next() ); 230 while ( d->selectedFiles->next() );
203 cfg.writeEntry("NumberOfFiles", noOfFiles ); 231 cfg.writeEntry("NumberOfFiles", noOfFiles );
204} 232}
205 233
206 234
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
214 mediaPlayerState->setPlaying( TRUE ); 243 mediaPlayerState->setPlaying( TRUE );
215} 244}
216 245
217 246
218void PlayListWidget::clearList() { 247void PlayListWidget::clearList() {
219 while ( first() ) { 248 while ( first() ) {
220 d->selectedFiles->removeSelected(); 249 d->selectedFiles->removeSelected();
221 } 250 }
222} 251}
223 252
224 253
225void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { 254void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) {
226 switch (mouse) { 255 switch (mouse) {
227 case 1: 256 case 1:
228 break; 257 break;
229 case 2: 258 case 2:
230 { 259 {
231 QPopupMenu m; 260 QPopupMenu m;
232 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); 261 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
233 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); 262 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
234 m.exec( QCursor::pos() ); 263 m.exec( QCursor::pos() );
235 } 264 }
236 break; 265 break;
237 } 266 }
238} 267}
239 268
240 269
241void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) { 270void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint& , int ) {
242 switch (mouse) { 271 switch (mouse) {
243 case 1: 272 case 1:
244 break; 273 break;
245 case 2: 274 case 2:
246 { 275 {
247 QPopupMenu m; 276 QPopupMenu m;
248 m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); 277 m.insertItem( tr( "Play" ), this, SLOT( playSelected() ));
249 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); 278 m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() ));
250 m.exec( QCursor::pos() ); 279 m.exec( QCursor::pos() );
251 } 280 }
252 break; 281 break;
253 } 282 }
254} 283}
255 284
256 285
257void PlayListWidget::addAllToList() { 286void PlayListWidget::addAllToList() {
258 DocLnkSet filesAll; 287 DocLnkSet filesAll;
259 Global::findDocuments(&filesAll, "video/*;audio/*"); 288 Global::findDocuments(&filesAll, "video/*;audio/*");
260 QListIterator<DocLnk> Adit( filesAll.children() ); 289 QListIterator<DocLnk> Adit( filesAll.children() );
261 for ( ; Adit.current(); ++Adit ) { 290 for ( ; Adit.current(); ++Adit ) {
262 if( QFileInfo( Adit.current()->file() ).exists() ) { 291 if( QFileInfo( Adit.current()->file() ).exists() ) {
263 d->selectedFiles->addToSelection( **Adit ); 292 d->selectedFiles->addToSelection( **Adit );
264 } 293 }
265 } 294 }
266} 295}
267 296
268 297
269void PlayListWidget::addAllMusicToList() { 298void PlayListWidget::addAllMusicToList() {
270 QListIterator<DocLnk> dit( files.children() ); 299 QListIterator<DocLnk> dit( files.children() );
271 for ( ; dit.current(); ++dit ) { 300 for ( ; dit.current(); ++dit ) {
272 if( QFileInfo(dit.current()->file() ).exists() ) { 301 if( QFileInfo(dit.current()->file() ).exists() ) {
273 d->selectedFiles->addToSelection( **dit ); 302 d->selectedFiles->addToSelection( **dit );
274 } 303 }
275 } 304 }
276} 305}
277 306
278 307
279void PlayListWidget::addAllVideoToList() { 308void PlayListWidget::addAllVideoToList() {
280 QListIterator<DocLnk> dit( vFiles.children() ); 309 QListIterator<DocLnk> dit( vFiles.children() );
281 for ( ; dit.current(); ++dit ) { 310 for ( ; dit.current(); ++dit ) {
282 if( QFileInfo( dit.current()->file() ).exists() ) { 311 if( QFileInfo( dit.current()->file() ).exists() ) {
283 d->selectedFiles->addToSelection( **dit ); 312 d->selectedFiles->addToSelection( **dit );
284 } 313 }
285 } 314 }
286} 315}
287 316
288 317
289void PlayListWidget::setDocument( const QString& fileref ) { 318void 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
297 if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u 327 if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u
298 readm3u( fileref ); 328 readm3u( fileref );
299 } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls 329 } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls
300 readPls( fileref ); 330 readPls( fileref );
301 } else if( fileref.find( "playlist", 0, TRUE) != -1 ) {//is playlist 331 } else if( fileref.find( "playlist", 0, TRUE) != -1 ) {//is playlist
302 clearList(); 332 clearList();
303 loadList( DocLnk( fileref ) ); 333 loadList( DocLnk( fileref ) );
304 d->selectedFiles->first(); 334 d->selectedFiles->first();
305 } else { 335 } else {
306 clearList(); 336 clearList();
307 addToSelection( DocLnk( fileref ) ); 337 addToSelection( DocLnk( fileref ) );
308 d->setDocumentUsed = TRUE; 338 d->setDocumentUsed = TRUE;
309 mediaPlayerState->setPlaying( FALSE ); 339 mediaPlayerState->setPlaying( FALSE );
310// qApp->processEvents(); 340// qApp->processEvents();
311 mediaPlayerState->setPlaying( TRUE ); 341 mediaPlayerState->setPlaying( TRUE );
312// qApp->processEvents(); 342// qApp->processEvents();
313 setCaption( tr("OpiePlayer") ); 343 setCaption( tr("OpiePlayer") );
314 } 344 }
315} 345}
316 346
317 347
318void PlayListWidget::useSelectedDocument() { 348void PlayListWidget::useSelectedDocument() {
319 d->setDocumentUsed = FALSE; 349 d->setDocumentUsed = FALSE;
320} 350}
321 351
322 352
323const DocLnk *PlayListWidget::current() { // this is fugly 353const DocLnk *PlayListWidget::current() { // this is fugly
324 switch ( whichList() ) { 354 switch ( whichList() ) {
325 case 0: //playlist 355 case 0: //playlist
326 { 356 {
327// qDebug("playlist"); 357// qDebug("playlist");
328 if ( mediaPlayerState->playlist() ) { 358 if ( mediaPlayerState->playlist() ) {
329 return d->selectedFiles->current(); 359 return d->selectedFiles->current();
330 } else if ( d->setDocumentUsed && d->current ) { 360 } else if ( d->setDocumentUsed && d->current ) {
331 return d->current; 361 return d->current;
332 } else { 362 } else {
333 return &(d->files->selectedDocument()); 363 return &(d->files->selectedDocument());
334 } 364 }
335 } 365 }
336 break; 366 break;
337 }; 367 };
338 return 0; 368 return 0;
339} 369}
340 370
341 371
@@ -376,97 +406,98 @@ qDebug("<<<<<<<<<<<<next()");
376 return prev(); 406 return prev();
377 } else { 407 } else {
378 if ( !d->selectedFiles->next() ) { 408 if ( !d->selectedFiles->next() ) {
379 if ( mediaPlayerState->looping() ) { 409 if ( mediaPlayerState->looping() ) {
380 return d->selectedFiles->first(); 410 return d->selectedFiles->first();
381 } else { 411 } else {
382 return FALSE; 412 return FALSE;
383 } 413 }
384 } 414 }
385 return TRUE; 415 return TRUE;
386 } 416 }
387 } else { 417 } else {
388 return mediaPlayerState->looping(); 418 return mediaPlayerState->looping();
389 } 419 }
390} 420}
391 421
392 422
393bool PlayListWidget::first() { 423bool PlayListWidget::first() {
394 if ( mediaPlayerState->playlist() ) 424 if ( mediaPlayerState->playlist() )
395 return d->selectedFiles->first(); 425 return d->selectedFiles->first();
396 else 426 else
397 return mediaPlayerState->looping(); 427 return mediaPlayerState->looping();
398} 428}
399 429
400 430
401bool PlayListWidget::last() { 431bool PlayListWidget::last() {
402 if ( mediaPlayerState->playlist() ) 432 if ( mediaPlayerState->playlist() )
403 return d->selectedFiles->last(); 433 return d->selectedFiles->last();
404 else 434 else
405 return mediaPlayerState->looping(); 435 return mediaPlayerState->looping();
406} 436}
407 437
408 438
409void PlayListWidget::saveList() { 439void PlayListWidget::saveList() {
410 440
411 QString filename; 441 QString filename;
412 InputDialog *fileDlg = 0l; 442 InputDialog *fileDlg = 0l;
413 fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0); 443 fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0);
414 fileDlg->exec(); 444 fileDlg->exec();
415 if( fileDlg->result() == 1 ) { 445 if( fileDlg->result() == 1 ) {
416 if ( d->current ) 446 if ( d->current )
417 delete d->current; 447 delete d->current;
418 filename = fileDlg->text();//+".playlist"; 448 filename = fileDlg->text();//+".playlist";
419 // qDebug("saving playlist "+filename+".playlist"); 449 // qDebug("saving playlist "+filename+".playlist");
420 Config cfg( filename +".playlist"); 450 Config cfg( filename +".playlist");
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
428 // qDebug(filename); 459 // qDebug(filename);
429 if(!lnk.writeLink()) { 460 if(!lnk.writeLink()) {
430 qDebug("Writing doclink did not work"); 461 qDebug("Writing doclink did not work");
431 } 462 }
432 } 463 }
433 Config config( "OpiePlayer" ); 464 Config config( "OpiePlayer" );
434 config.writeEntry("CurrentPlaylist",filename); 465 config.writeEntry("CurrentPlaylist",filename);
435 setCaption(tr("OpiePlayer: ")+filename); 466 setCaption(tr("OpiePlayer: ")+filename);
436 d->selectedFiles->first(); 467 d->selectedFiles->first();
437 if(fileDlg) { 468 if(fileDlg) {
438 delete fileDlg; 469 delete fileDlg;
439 } 470 }
440} 471}
441 472
442void PlayListWidget::loadList( const DocLnk & lnk) { 473void PlayListWidget::loadList( const DocLnk & lnk) {
443 QString name= lnk.name(); 474 QString name= lnk.name();
444// qDebug("currentList is "+name); 475// qDebug("currentList is "+name);
445 if( name.length()>0) { 476 if( name.length()>0) {
446 setCaption("OpiePlayer: "+name); 477 setCaption("OpiePlayer: "+name);
447 // qDebug("load list "+ name+".playlist"); 478 // qDebug("load list "+ name+".playlist");
448 clearList(); 479 clearList();
449 Config cfg( name+".playlist"); 480 Config cfg( name+".playlist");
450 readConfig(cfg); 481 readConfig(cfg);
451 482
452 tabWidget->setCurrentPage(0); 483 tabWidget->setCurrentPage(0);
453 484
454 Config config( "OpiePlayer" ); 485 Config config( "OpiePlayer" );
455 config.writeEntry("CurrentPlaylist", name); 486 config.writeEntry("CurrentPlaylist", name);
456 // d->selectedFiles->first(); 487 // d->selectedFiles->first();
457 } 488 }
458} 489}
459 490
460 491
461void PlayListWidget::setPlaylist( bool shown ) { 492void PlayListWidget::setPlaylist( bool shown ) {
462 if ( shown ) { 493 if ( shown ) {
463 d->playListFrame->show(); 494 d->playListFrame->show();
464 } else { 495 } else {
465 d->playListFrame->hide(); 496 d->playListFrame->hide();
466 } 497 }
467} 498}
468 499
469 500
470void PlayListWidget::addSelected() { 501void PlayListWidget::addSelected() {
471 502
472 Config cfg( "OpiePlayer" ); 503 Config cfg( "OpiePlayer" );
@@ -662,248 +693,297 @@ void PlayListWidget::playSelected() {
662 btnPlay( TRUE); 693 btnPlay( TRUE);
663} 694}
664 695
665 696
666void PlayListWidget::scanForAudio() { 697void PlayListWidget::scanForAudio() {
667// qDebug("scan for audio"); 698// qDebug("scan for audio");
668 files.detachChildren(); 699 files.detachChildren();
669 QListIterator<DocLnk> sdit( files.children() ); 700 QListIterator<DocLnk> sdit( files.children() );
670 for ( ; sdit.current(); ++sdit ) { 701 for ( ; sdit.current(); ++sdit ) {
671 delete sdit.current(); 702 delete sdit.current();
672 } 703 }
673 Global::findDocuments(&files, "audio/*"); 704 Global::findDocuments(&files, "audio/*");
674 audioScan = TRUE; 705 audioScan = TRUE;
675} 706}
676 707
677void PlayListWidget::scanForVideo() { 708void PlayListWidget::scanForVideo() {
678// qDebug("scan for video"); 709// qDebug("scan for video");
679 vFiles.detachChildren(); 710 vFiles.detachChildren();
680 QListIterator<DocLnk> sdit( vFiles.children() ); 711 QListIterator<DocLnk> sdit( vFiles.children() );
681 for ( ; sdit.current(); ++sdit ) { 712 for ( ; sdit.current(); ++sdit ) {
682 delete sdit.current(); 713 delete sdit.current();
683 } 714 }
684 Global::findDocuments(&vFiles, "video/*"); 715 Global::findDocuments(&vFiles, "video/*");
685 videoScan = TRUE; 716 videoScan = TRUE;
686} 717}
687 718
688void PlayListWidget::populateAudioView() { 719void PlayListWidget::populateAudioView() {
689 audioView->clear(); 720 audioView->clear();
690 StorageInfo storageInfo; 721 StorageInfo storageInfo;
691 const QList<FileSystem> &fs = storageInfo.fileSystems(); 722 const QList<FileSystem> &fs = storageInfo.fileSystems();
692 if(!audioScan) { 723 if(!audioScan) {
693 scanForAudio(); 724 scanForAudio();
694 } 725 }
695 726
696 QListIterator<DocLnk> dit( files.children() ); 727 QListIterator<DocLnk> dit( files.children() );
697 QListIterator<FileSystem> it ( fs ); 728 QListIterator<FileSystem> it ( fs );
698 729
699 QString storage; 730 QString storage;
700 for ( ; dit.current(); ++dit ) { 731 for ( ; dit.current(); ++dit ) {
701 for( ; it.current(); ++it ){ 732 for( ; it.current(); ++it ){
702 const QString name = (*it)->name(); 733 const QString name = (*it)->name();
703 const QString path = (*it)->path(); 734 const QString path = (*it)->path();
704 if(dit.current()->file().find(path) != -1 ) { 735 if(dit.current()->file().find(path) != -1 ) {
705 storage = name; 736 storage = name;
706 } 737 }
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;
714 else 746 else
715 size = QFile( dit.current()->file() ).size(); 747 size = QFile( dit.current()->file() ).size();
716 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), 748 newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(),
717 QString::number(size ), storage, dit.current()->file()); 749 QString::number(size ), storage, dit.current()->file());
718 newItem->setPixmap( 0, Resource::loadPixmap( "opieplayer2/musicfile" ) ); 750 newItem->setPixmap( 0, Resource::loadPixmap( "opieplayer2/musicfile" ) );
719 } 751 }
720 } 752 }
721} 753}
722 754
723 755
724void PlayListWidget::populateVideoView() { 756void PlayListWidget::populateVideoView() {
725 videoView->clear(); 757 videoView->clear();
726 StorageInfo storageInfo; 758 StorageInfo storageInfo;
727 const QList<FileSystem> &fs = storageInfo.fileSystems(); 759 const QList<FileSystem> &fs = storageInfo.fileSystems();
728 760
729 if(!videoScan ) { 761 if(!videoScan ) {
730 scanForVideo(); 762 scanForVideo();
731 } 763 }
732 764
733 QListIterator<DocLnk> Vdit( vFiles.children() ); 765 QListIterator<DocLnk> Vdit( vFiles.children() );
734 QListIterator<FileSystem> it ( fs ); 766 QListIterator<FileSystem> it ( fs );
735 videoView->clear(); 767 videoView->clear();
736 QString storage, pathName; 768 QString storage, pathName;
737 for ( ; Vdit.current(); ++Vdit ) { 769 for ( ; Vdit.current(); ++Vdit ) {
738 for( ; it.current(); ++it ) { 770 for( ; it.current(); ++it ) {
739 const QString name = (*it)->name(); 771 const QString name = (*it)->name();
740 const QString path = (*it)->path(); 772 const QString path = (*it)->path();
741 if( Vdit.current()->file().find(path) != -1 ) { 773 if( Vdit.current()->file().find(path) != -1 ) {
742 storage=name; 774 storage=name;
743 pathName=path; 775 pathName=path;
744 } 776 }
745 } 777 }
746 778
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 }
754} 787}
755 788
756 789
757void PlayListWidget::openFile() { 790void PlayListWidget::openFile() {
758 QString filename, name; 791 QString filename, name;
759 InputDialog *fileDlg; 792 InputDialog *fileDlg;
760 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); 793 fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0);
761 fileDlg->exec(); 794 fileDlg->exec();
762 if( fileDlg->result() == 1 ) { 795 if( fileDlg->result() == 1 ) {
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;
773 lnk.setName( filename ); //sets file name 802 QString m3uFile, m3uFilePath;
774 lnk.setFile( filename ); //sets File property 803 if(filename.find(":",8,TRUE) != -1) {
775 //qWarning( "Mimetype: " + MimeType( QFile::encodeName(filename) ).id() ); 804//found a port
776 lnk.setType( MimeType( QFile::encodeName(filename) ).id() ); 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
845 lnk.setName( filename ); //sets file name
846 lnk.setFile( filename ); //sets File property
847 //qWarning( "Mimetype: " + 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
780 if( !lnk.writeLink() ) { 853 if( !lnk.writeLink() ) {
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 ) {
787 delete fileDlg; 866 delete fileDlg;
788 } 867 }
789} 868}
790 869
791void PlayListWidget::keyReleaseEvent( QKeyEvent *e ) { 870void PlayListWidget::keyReleaseEvent( QKeyEvent *e ) {
792 switch ( e->key() ) { 871 switch ( e->key() ) {
793 ////////////////////////////// Zaurus keys 872 ////////////////////////////// Zaurus keys
794 case Key_F9: //activity 873 case Key_F9: //activity
795 // if(audioUI->isHidden()) 874 // if(audioUI->isHidden())
796 // audioUI->showMaximized(); 875 // audioUI->showMaximized();
797 break; 876 break;
798 case Key_F10: //contacts 877 case Key_F10: //contacts
799 // if( videoUI->isHidden()) 878 // if( videoUI->isHidden())
800 // videoUI->showMaximized(); 879 // videoUI->showMaximized();
801 break; 880 break;
802 case Key_F11: //menu 881 case Key_F11: //menu
803 break; 882 break;
804 case Key_F12: //home 883 case Key_F12: //home
805 // doBlank(); 884 // doBlank();
806 break; 885 break;
807 case Key_F13: //mail 886 case Key_F13: //mail
808 // doUnblank(); 887 // doUnblank();
809 break; 888 break;
810 case Key_Q: //add to playlist 889 case Key_Q: //add to playlist
811 addSelected(); 890 addSelected();
812 break; 891 break;
813 case Key_R: //remove from playlist 892 case Key_R: //remove from playlist
814 removeSelected(); 893 removeSelected();
815 break; 894 break;
816 // case Key_P: //play 895 // case Key_P: //play
817 // qDebug("Play"); 896 // qDebug("Play");
818 // playSelected(); 897 // playSelected();
819 // break; 898 // break;
820 case Key_Space: 899 case Key_Space:
821 // playSelected(); puh 900 // playSelected(); puh
822 break; 901 break;
823 case Key_1: 902 case Key_1:
824 tabWidget->setCurrentPage( 0 ); 903 tabWidget->setCurrentPage( 0 );
825 break; 904 break;
826 case Key_2: 905 case Key_2:
827 tabWidget->setCurrentPage( 1 ); 906 tabWidget->setCurrentPage( 1 );
828 break; 907 break;
829 case Key_3: 908 case Key_3:
830 tabWidget->setCurrentPage( 2 ); 909 tabWidget->setCurrentPage( 2 );
831 break; 910 break;
832 case Key_4: 911 case Key_4:
833 tabWidget->setCurrentPage( 3 ); 912 tabWidget->setCurrentPage( 3 );
834 break; 913 break;
835 case Key_Down: 914 case Key_Down:
836 if ( !d->selectedFiles->next() ) 915 if ( !d->selectedFiles->next() )
837 d->selectedFiles->first(); 916 d->selectedFiles->first();
838 917
839 break; 918 break;
840 case Key_Up: 919 case Key_Up:
841 if ( !d->selectedFiles->prev() ) 920 if ( !d->selectedFiles->prev() )
842 // d->selectedFiles->last(); 921 // d->selectedFiles->last();
843 922
844 break; 923 break;
845 924
846 } 925 }
847} 926}
848 927
849void PlayListWidget::readm3u( const QString &filename ) { 928void PlayListWidget::readm3u( const QString &filename ) {
850 qDebug( "m3u filename is " + filename ); 929 qDebug( "m3u filename is " + filename );
851 QFile f( filename ); 930 QFile f( filename );
852 931
853 if( f.open( IO_ReadOnly ) ) { 932 if( f.open( IO_ReadOnly ) ) {
854 QTextStream t(&f); 933 QTextStream t(&f);
855 QString s;//, first, second; 934 QString s;//, first, second;
856 int i=0; 935 int i=0;
857 while ( !t.atEnd() ) { 936 while ( !t.atEnd() ) {
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 );
865 QFileInfo f( s ); 945 QFileInfo f( s );
866 QString name = f.baseName(); 946 QString name = f.baseName();
867 name = name.right( name.length() - name.findRev( "\\", -1, TRUE ) -1 ); 947 name = name.right( name.length() - name.findRev( "\\", -1, TRUE ) -1 );
868 lnk.setName( name ); 948 lnk.setName( name );
869 s=s.replace( QRegExp( "\\" ), "/" ); 949 s=s.replace( QRegExp( "\\" ), "/" );
870 lnk.setFile( s ); 950 lnk.setFile( s );
871 lnk.writeLink(); 951 lnk.writeLink();
872 qDebug( "add " + name); 952 qDebug( "add " + name);
873 d->selectedFiles->addToSelection( lnk ); 953 d->selectedFiles->addToSelection( lnk );
874 } else { // is url 954 } else { // is url
875 s.replace( QRegExp( "%20" )," " ); 955 s.replace( QRegExp( "%20" )," " );
876 DocLnk lnk( s ); 956 DocLnk lnk( s );
877 QString name; 957 QString name;
878 if( name.left( 4 ) == "http" ) { 958 if( name.left( 4 ) == "http" ) {
879 name = s.right( s.length() - 7 ); 959 name = s.right( s.length() - 7 );
880 } else { 960 } else {
881 name = s; 961 name = s;
882 } 962 }
883 lnk.setName( name ); 963 lnk.setName( name );
884 if( s.at( s.length() - 4) == '.' ) { 964 if( s.at( s.length() - 4) == '.' ) {
885 lnk.setFile( s ); 965 lnk.setFile( s );
886 } else { 966 } else {
887 lnk.setFile( s + "/" ); 967 lnk.setFile( s + "/" );
888 } 968 }
889 lnk.setType( "audio/x-mpegurl" ); 969 lnk.setType( "audio/x-mpegurl" );
890 lnk.writeLink(); 970 lnk.writeLink();
891 d->selectedFiles->addToSelection( lnk ); 971 d->selectedFiles->addToSelection( lnk );
892 } 972 }
893 i++; 973 i++;
894 } 974 }
895 } 975 }
896 } 976 }
897 } 977 }
898 f.close(); 978 f.close();
899} 979}
900 980
901void PlayListWidget::writem3u() { 981void PlayListWidget::writem3u() {
902 InputDialog *fileDlg; 982 InputDialog *fileDlg;
903 fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0); 983 fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0);
904 fileDlg->exec(); 984 fileDlg->exec();
905 QString filename, list; 985 QString filename, list;
906 if( fileDlg->result() == 1 ) { 986 if( fileDlg->result() == 1 ) {
907 filename = fileDlg->text(); 987 filename = fileDlg->text();
908 qDebug( filename ); 988 qDebug( filename );
909 int noOfFiles = 0; 989 int noOfFiles = 0;