author | llornkcor <llornkcor> | 2002-10-08 02:01:16 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-10-08 02:01:16 (UTC) |
commit | 40e9c78666e74221e06329bb07dfd66648b2727b (patch) (side-by-side diff) | |
tree | afccf992024cc56a64d8495d80ce10478f946478 | |
parent | c43b5d600a7d1dcaadcba2cb047a60313b37f2f2 (diff) | |
download | opie-40e9c78666e74221e06329bb07dfd66648b2727b.zip opie-40e9c78666e74221e06329bb07dfd66648b2727b.tar.gz opie-40e9c78666e74221e06329bb07dfd66648b2727b.tar.bz2 |
fixed m3u handling
-rw-r--r-- | noncore/multimedia/opieplayer2/om3u.cpp | 16 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/om3u.h | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidget.cpp | 180 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistwidget.h | 1 |
4 files changed, 76 insertions, 123 deletions
diff --git a/noncore/multimedia/opieplayer2/om3u.cpp b/noncore/multimedia/opieplayer2/om3u.cpp index d378145..c947033 100644 --- a/noncore/multimedia/opieplayer2/om3u.cpp +++ b/noncore/multimedia/opieplayer2/om3u.cpp @@ -45,34 +45,35 @@ #include <qtextstream.h> #include <qstringlist.h> #include <qcstring.h> //extern PlayListWidget *playList; -Om3u::Om3u( const QString &filePath) +Om3u::Om3u( const QString &filePath, int mode) : QStringList (){ //filePath is path name to m3u //qDebug("<<<<<<<new m3u "+filePath); f.setName(filePath); - if(f.exists()) - f.open( IO_ReadWrite ); - else - f.open( IO_ReadWrite | IO_Truncate); +// if(f.exists()) +// f.open( IO_ReadWrite); +// else +// f.open( IO_ReadWrite | IO_Truncate); + f.open(mode); + } Om3u::~Om3u(){} void Om3u::readM3u() { //it's m3u // qDebug("<<<<<<reading m3u "+f.name()); QTextStream t(&f); QString s; while ( !t.atEnd() ) { s=t.readLine(); - + // qDebug(s); if( s.find( "#", 0, TRUE) == -1 ) { - if( s.find( " ", 0, TRUE) == -1 ) { if( s.left(2) == "E:" || s.left(2) == "P:" ) { s = s.right( s.length() -2 ); QFileInfo f( s ); QString name = f.baseName(); name = name.right( name.length() - name.findRev( "\\", -1, TRUE ) -1 ); s=s.replace( QRegExp( "\\" ), "/" ); @@ -86,13 +87,12 @@ void Om3u::readM3u() { //it's m3u } else { name = s; } append(name); // qDebug(name); } - } } } } void Om3u::readPls() { //it's a pls file QTextStream t( &f ); diff --git a/noncore/multimedia/opieplayer2/om3u.h b/noncore/multimedia/opieplayer2/om3u.h index 392980e..9c7cf9a 100644 --- a/noncore/multimedia/opieplayer2/om3u.h +++ b/noncore/multimedia/opieplayer2/om3u.h @@ -50,13 +50,13 @@ #include <qfile.h> class Om3u : public QStringList { // Q_OBJECT public: - Om3u( const QString &filePath); + Om3u( const QString &filePath, int mode); ~Om3u(); void readM3u(); void readPls(); void write(); void add(const QString &); void remove(const QString &); diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp index 26c2896..b6525e1 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.cpp +++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp @@ -145,32 +145,25 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) this, SLOT( setPlaylist( bool ) ) ); connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); connect ( gammaSlider, SIGNAL( valueChanged( int ) ), mediaPlayerState, SLOT( setVideoGamma( int ) ) ); -// cfg.setGroup( "PlayList" ); -// if( cfg.readBoolEntry("newPlaylist") ){ - QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" ); - loadList(DocLnk( currentPlaylist ) ); - setCaption( tr( "OpiePlayer: " ) + currentPlaylist ); -// } else { -// readConfig( cfg ); - -// } // see which skins are installed videoScan=FALSE; audioScan=FALSE; populateSkinsMenu(); initializeStates(); + + QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "" ); + loadList(DocLnk( currentPlaylist ) ); + setCaption( tr( "OpiePlayer: " ) + currentPlaylist ); } PlayListWidget::~PlayListWidget() { - // WTF?!@?! - if ( d->current ) { delete d->current; } delete d; } @@ -203,18 +196,16 @@ void PlayListWidget::readConfig( Config& cfg ) { if ( QFileInfo( lnk.file() ).exists() || linkFile.find( "http" , 0, TRUE) != -1) { d->selectedFiles->addToSelection( lnk ); - } } } d->selectedFiles->setSelectedItem( currentString ); - } void PlayListWidget::writeConfig( Config& cfg ) const { Config config( "OpiePlayer" ); @@ -224,41 +215,37 @@ void PlayListWidget::writeConfig( Config& cfg ) const { // new for testing QString name, filename, list; Om3u *m3uList; name = "default"; filename=QPEApplication::documentDir() + "/" + name+".m3u"; - - m3uList = new Om3u(filename); - + m3uList = new Om3u(filename, IO_ReadWrite); d->selectedFiles->first(); do { - m3uList->add( d->selectedFiles->current()->file()); + qDebug(d->selectedFiles->current()->file()); + m3uList->add( d->selectedFiles->current()->file() ); } while ( d->selectedFiles->next() ); + // qDebug( list ); - qDebug( list ); - - m3uList->write(); + // m3uList->write(); m3uList->close(); if(m3uList) delete m3uList; DocLnk lnk; lnk.setFile( filename); lnk.setIcon("opieplayer2/playlist2"); lnk.setName( name); //sets file name qDebug("writing default playlist "+filename); - config.writeEntry("CurrentPlaylist", filename); + config.writeEntry("CurrentPlaylist", filename); // currentPlayList=filename; - if(!lnk.writeLink()) { qDebug("Writing doclink did not work"); } - // } else { // d->selectedFiles->writeCurrent( cfg ); // int noOfFiles = 0; // d->selectedFiles->first(); @@ -282,32 +269,31 @@ void PlayListWidget::writeConfig( Config& cfg ) const { // } // while ( d->selectedFiles->next() ); // cfg.writeEntry("NumberOfFiles", noOfFiles ); // } } - void PlayListWidget::addToSelection( const DocLnk& lnk ) { d->setDocumentUsed = FALSE; if ( mediaPlayerState->playlist() ) { if( QFileInfo( lnk.file() ).exists() || lnk.file().left(4) == "http" ) d->selectedFiles->addToSelection( lnk ); + writeCurrentM3u(); } else mediaPlayerState->setPlaying( TRUE ); } void PlayListWidget::clearList() { while ( first() ) { d->selectedFiles->removeSelected(); } } - void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { switch (mouse) { case 1: break; case 2: { @@ -343,32 +329,35 @@ void PlayListWidget::addAllToList() { QListIterator<DocLnk> Adit( filesAll.children() ); for ( ; Adit.current(); ++Adit ) { if( QFileInfo( Adit.current()->file() ).exists() ) { d->selectedFiles->addToSelection( **Adit ); } } + writeCurrentM3u(); } void PlayListWidget::addAllMusicToList() { QListIterator<DocLnk> dit( files.children() ); for ( ; dit.current(); ++dit ) { if( QFileInfo(dit.current()->file() ).exists() ) { d->selectedFiles->addToSelection( **dit ); } } + writeCurrentM3u(); } void PlayListWidget::addAllVideoToList() { QListIterator<DocLnk> dit( vFiles.children() ); for ( ; dit.current(); ++dit ) { if( QFileInfo( dit.current()->file() ).exists() ) { d->selectedFiles->addToSelection( **dit ); } } + writeCurrentM3u(); } void PlayListWidget::setDocument( const QString& fileref ) { //qDebug( fileref ); fromSetDocument = TRUE; @@ -379,25 +368,23 @@ void PlayListWidget::setDocument( const QString& fileref ) { } if( fileref.find( "m3u", 0, TRUE) != -1 ) { //is m3u readm3u( fileref ); } else if( fileref.find( "pls", 0, TRUE) != -1 ) { //is pls readPls( fileref ); - } else if( fileref.find( "playlist", 0, TRUE) != -1 ) {//is playlist - clearList(); - loadList( DocLnk( fileref ) ); - d->selectedFiles->first(); - } else { + }// else if( fileref.find( "playlist", 0, TRUE) != -1 ) {//is playlist +// clearList(); +// loadList( DocLnk( fileref ) ); +// d->selectedFiles->first(); +// } + else { clearList(); addToSelection( DocLnk( fileref ) ); d->setDocumentUsed = TRUE; mediaPlayerState->setPlaying( FALSE ); -// qApp->processEvents(); mediaPlayerState->setPlaying( TRUE ); -// qApp->processEvents(); - setCaption( tr("OpiePlayer") ); } } void PlayListWidget::useSelectedDocument() { d->setDocumentUsed = FALSE; @@ -488,78 +475,26 @@ bool PlayListWidget::last() { else return mediaPlayerState->looping(); } void PlayListWidget::saveList() { -// Config config( "OpiePlayer" ); -// config.setGroup( "PlayList" ); - -// if(config.readBoolEntry("newPlaylist") ){ - writem3u(); - -// } else { - -// QString filename; -// InputDialog *fileDlg = 0l; -// fileDlg = new InputDialog(this,tr("Save Playlist"),TRUE, 0); -// fileDlg->exec(); -// if( fileDlg->result() == 1 ) { -// if ( d->current ) -// delete d->current; -// filename = fileDlg->text();//+".playlist"; -// // qDebug("saving playlist "+filename+".playlist"); - -// Config cfg( filename +".playlist"); -// writeConfig( cfg ); - -// DocLnk lnk; -// lnk.setFile(QDir::homeDirPath()+"/Settings/"+filename+".playlist.conf"); -// //sets File property -// lnk.setType("playlist/plain"); -// lnk.setIcon("opieplayer2/playlist2"); -// lnk.setName( filename); //sets file name -// // qDebug(filename); -// if(!lnk.writeLink()) { -// qDebug("Writing doclink did not work"); -// } -// } - -// config.writeEntry("CurrentPlaylist",filename); -// setCaption(tr("OpiePlayer: ")+filename); -// d->selectedFiles->first(); -// if(fileDlg) { -// delete fileDlg; -// } -// } + writem3u(); } void PlayListWidget::loadList( const DocLnk & lnk) { QString name = lnk.name(); - qDebug("currentList is "+name); + // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<currentList is "+name); if( name.length()>0) { setCaption("OpiePlayer: "+name); - qDebug("<<<<<<<<<<<<load list "+ lnk.file()); + qDebug("<<<<<<<<<<<<load list "+ lnk.file()); clearList(); - -// if(name.right(3) == "m3u") { - readm3u(lnk.file()); -// } else { -// / Config cfg( name+".playlist"); -// readConfig(cfg); - tabWidget->setCurrentPage(0); - - Config config( "OpiePlayer" ); - config.setGroup( "PlayList" ); - config.writeEntry("CurrentPlaylist", lnk.file()); -// // d->selectedFiles->first(); -// } } } void PlayListWidget::setPlaylist( bool shown ) { if ( shown ) { @@ -569,54 +504,53 @@ void PlayListWidget::setPlaylist( bool shown ) { } } void PlayListWidget::addSelected() { - Config cfg( "OpiePlayer" ); - cfg.setGroup("PlayList"); - QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); - // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); - switch (whichList()) { case 0: //playlist break; case 1: { //audio QListViewItemIterator it( audioView ); // iterate through all items of the listview for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { QListIterator<DocLnk> dit( files.children() ); for ( ; dit.current(); ++dit ) { if( dit.current()->name() == it.current()->text(0) ) { - if(QFileInfo( dit.current()->file()).exists()) + if( QFileInfo( dit.current()->file()).exists()) { d->selectedFiles->addToSelection( **dit ); + audioView->setSelected( it.current(),FALSE); + } } } - audioView->setSelected( it.current(),FALSE); } } tabWidget->setCurrentPage(0); + writeCurrentM3u(); } break; case 2: { // video QListViewItemIterator it( videoView ); // iterate through all items of the listview for ( ; it.current(); ++it ) { if ( it.current()->isSelected() ) { QListIterator<DocLnk> dit( vFiles.children() ); for ( ; dit.current(); ++dit ) { if( dit.current()->name() == it.current()->text(0) ) { - if(QFileInfo( dit.current()->file()).exists()) + if(QFileInfo( dit.current()->file()).exists()) { d->selectedFiles->addToSelection( **dit ); + videoView->setSelected( it.current(),FALSE); + } } } - videoView->setSelected( it.current(),FALSE); } } tabWidget->setCurrentPage(0); + writeCurrentM3u(); } break; }; } @@ -643,22 +577,27 @@ void PlayListWidget::addToSelection( QListViewItem *it) { for ( ; dit.current(); ++dit ) { if( dit.current()->name() == it->text(0)) { if(QFileInfo( dit.current()->file()).exists()) d->selectedFiles->addToSelection( **dit ); } } + writeCurrentM3u(); + } + break; case 2: { QListIterator<DocLnk> dit( vFiles.children() ); for ( ; dit.current(); ++dit ) { if( dit.current()->name() == it->text(0)) { if( QFileInfo( dit.current()->file()).exists() ) d->selectedFiles->addToSelection( **dit ); } } + writeCurrentM3u(); + } break; case 0: break; }; tabWidget->setCurrentPage(0); @@ -847,35 +786,28 @@ void PlayListWidget::openFile() { Om3u *m3uList; DocLnk lnk; QString m3uFile, m3uFilePath; if(filename.find(":",8,TRUE) != -1) { //found a port m3uFile = filename.left( filename.find( ":",8,TRUE)); - m3uFile = m3uFile.right( 7); - } else if(filename.left(4) == "http"){ - m3uFile=filename; m3uFile = m3uFile.right( m3uFile.length() - 7); - } else{ m3uFile=filename; } - // qDebug( m3uFile); //this is where this new m3u is going to live at m3uFilePath = QDir::homeDirPath() + "/" + m3uFile + ".m3u"; // m3uFile += ".m3u"; - m3uList = new Om3u( m3uFile+".m3u"); - + m3uList = new Om3u( m3uFile+".m3u", IO_ReadWrite ); m3uList->add( filename); m3uList->write(); if(m3uList) delete m3uList; - // qDebug( m3uFile); lnk.setName( filename ); //sets file name lnk.setFile( m3uFilePath ); //sets File property lnk.setType( MimeType( QFile::encodeName(m3uFilePath) ).id() ); lnk.setExec( "opieplayer2" ); @@ -903,58 +835,59 @@ void PlayListWidget::openFile() { reads m3u and adds files/urls to playlist */ void PlayListWidget::readm3u( const QString &filename ) { qDebug( "read m3u filename " + filename ); Om3u *m3uList; QString s, name; - m3uList = new Om3u( filename); + m3uList = new Om3u( filename, IO_ReadOnly ); m3uList->readM3u(); DocLnk lnk; for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) { s = *it; s.replace( QRegExp( "%20" )," " ); - qDebug("reading "+ s); +// qDebug("reading "+ s); if( QFileInfo( s ).exists() ) { lnk.setName( QFileInfo(s).baseName()); - qDebug("set link "+s); +// qDebug("set link "+s); if(s.at(s.length()-4) == '.') //if regular file lnk.setFile( s); else lnk.setFile( s+"/"); //if url with no extension d->selectedFiles->addToSelection( lnk ); } } Config config( "OpiePlayer" ); config.setGroup( "PlayList" ); config.writeEntry("CurrentPlaylist",filename); + config.write(); currentPlayList=filename; m3uList->close(); if(m3uList) delete m3uList; d->selectedFiles->setSelectedItem( s); - setCaption(tr("OpiePlayer: ")+ QFileInfo(s).baseName()); + setCaption(tr("OpiePlayer: ")+ filename); } /* reads pls and adds files/urls to playlist */ void PlayListWidget::readPls( const QString &filename ) { qDebug( "pls filename is " + filename ); Om3u *m3uList; QString s, name; - m3uList = new Om3u( filename); + m3uList = new Om3u( filename, IO_ReadOnly ); m3uList->readPls(); for ( QStringList::ConstIterator it = m3uList->begin(); it != m3uList->end(); ++it ) { s = *it; - s.replace( QRegExp( "%20" )," " ); + // s.replace( QRegExp( "%20" )," " ); DocLnk lnk( s ); QFileInfo f( s ); QString name = f.baseName(); if( name.left( 4 ) == "http" ) { name = s.right( s.length() - 7); @@ -981,12 +914,33 @@ void PlayListWidget::readPls( const QString &filename ) { m3uList->close(); if(m3uList) delete m3uList; } /* + writes current playlist to current m3u file */ +void PlayListWidget::writeCurrentM3u() { + qDebug("writting to current m3u"); + Config cfg( "OpiePlayer" ); + cfg.setGroup("PlayList"); + QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); + // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); + Om3u *m3uList; + m3uList = new Om3u( currentPlaylist, IO_ReadWrite ); + d->selectedFiles->first(); + + do { + m3uList->add( d->selectedFiles->current()->file()); + } + while ( d->selectedFiles->next() ); + // qDebug( list ); + m3uList->write(); + if(m3uList) delete m3uList; +} + + /* writes current playlist to m3u file */ void PlayListWidget::writem3u() { InputDialog *fileDlg; fileDlg = new InputDialog( this, tr( "Save m3u Playlist " ), TRUE, 0); fileDlg->exec(); QString name, filename, list; @@ -1001,24 +955,22 @@ void PlayListWidget::writem3u() { } if( name.right( 3 ) != "m3u" ) { filename = QPEApplication::documentDir() + "/" +name+".m3u"; } - m3uList = new Om3u(filename); + m3uList = new Om3u(filename, IO_ReadWrite); d->selectedFiles->first(); do { m3uList->add( d->selectedFiles->current()->file()); } while ( d->selectedFiles->next() ); // qDebug( list ); - m3uList->write(); - m3uList->close(); } if(m3uList) delete m3uList; if(fileDlg) delete fileDlg; DocLnk lnk; lnk.setFile( filename); diff --git a/noncore/multimedia/opieplayer2/playlistwidget.h b/noncore/multimedia/opieplayer2/playlistwidget.h index 428821a..8a77619 100644 --- a/noncore/multimedia/opieplayer2/playlistwidget.h +++ b/noncore/multimedia/opieplayer2/playlistwidget.h @@ -90,12 +90,13 @@ private: private slots: void populateSkinsMenu(); void skinsMenuActivated(int); void pmViewActivated(int); void writem3u(); + void writeCurrentM3u(); void scanForAudio(); void scanForVideo(); void openFile(); void setDocument( const QString& fileref ); void addToSelection( const DocLnk& ); // Add a media file to the playlist void addToSelection( QListViewItem* ); // Add a media file to the playlist |