author | llornkcor <llornkcor> | 2002-06-19 12:34:09 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-06-19 12:34:09 (UTC) |
commit | b55f69a46fd27ce26235029f702c0f3942fde68c (patch) (side-by-side diff) | |
tree | 47aa9ca1e9c80367050a93715f384eef2285e7b9 | |
parent | 1d60bfb5925c5009122ae04009f8e99658436b35 (diff) | |
download | opie-b55f69a46fd27ce26235029f702c0f3942fde68c.zip opie-b55f69a46fd27ce26235029f702c0f3942fde68c.tar.gz opie-b55f69a46fd27ce26235029f702c0f3942fde68c.tar.bz2 |
dont crash on malformed urls
-rw-r--r-- | core/multimedia/opieplayer/playlistwidget.cpp | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp index 41fcb30..2323ac2 100644 --- a/core/multimedia/opieplayer/playlistwidget.cpp +++ b/core/multimedia/opieplayer/playlistwidget.cpp @@ -407,32 +407,38 @@ void PlayListWidget::writeConfig( Config& cfg ) const { } } noOfFiles++; } } while ( d->selectedFiles->next() ); cfg.writeEntry("NumberOfFiles", noOfFiles ); } void PlayListWidget::addToSelection( const DocLnk& lnk ) { // qDebug("add"); + if( lnk.file().find(" ",0,TRUE) != -1 || lnk.file().find("%20",0,TRUE) != -1) { + QMessageBox::message("Note","You are trying to play\na malformed url."); + + } else { + d->setDocumentUsed = FALSE; if ( mediaPlayerState->playlist() ) { if(QFileInfo(lnk.file()).exists() || lnk.file().left(4) == "http" ) d->selectedFiles->addToSelection( lnk ); } else mediaPlayerState->setPlaying( TRUE ); } +} void PlayListWidget::clearList() { while ( first() ) d->selectedFiles->removeSelected(); } void PlayListWidget::addAllToList() { DocLnkSet filesAll; Global::findDocuments(&filesAll, "video/*;audio/*"); QListIterator<DocLnk> Adit( filesAll.children() ); @@ -837,52 +843,56 @@ void PlayListWidget::tabChanged(QWidget *widg) { playLists->reread(); } break; }; } void PlayListWidget::btnPlay(bool b) { // mediaPlayerState->setPlaying(b); switch ( tabWidget->currentPageIndex()) { case 0: { + qDebug("here we are"); + if( d->selectedFiles->current()->file().find(" ",0,TRUE) != -1 || d->selectedFiles->current()->file().find("%20",0,TRUE) != -1) { + QMessageBox::message("Note","You are trying to play\na malformed url."); + + } else { mediaPlayerState->setPlaying(b); - } + } } break; case 1: { addToSelection( audioView->currentItem() ); mediaPlayerState->setPlaying(b); d->selectedFiles->removeSelected( ); tabWidget->setCurrentPage(1); d->selectedFiles->unSelect(); insanityBool=FALSE; -// audioView->clearSelection(); - } + }// audioView->clearSelection(); break; case 2: { addToSelection( videoView->currentItem() ); mediaPlayerState->setPlaying(b); qApp->processEvents(); d->selectedFiles->removeSelected( ); tabWidget->setCurrentPage(2); d->selectedFiles->unSelect(); insanityBool=FALSE; -// videoView->clearSelection(); - } + }// videoView->clearSelection(); break; }; + } void PlayListWidget::deletePlaylist() { switch( QMessageBox::information( this, (tr("Remove Playlist?")), (tr("You really want to delete\nthis playlist?")), (tr("Yes")), (tr("No")), 0 )){ case 0: // Yes clicked, QFile().remove(playLists->selected()->file()); QFile().remove(playLists->selected()->linkFile()); playLists->reread(); break; case 1: // Cancel @@ -1059,50 +1069,54 @@ void PlayListWidget::populateVideoView() { } } void PlayListWidget::openFile() { QString filename, name; InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); fileDlg->exec(); if( fileDlg->result() == 1 ) { filename = fileDlg->LineEdit1->text(); // http://205.188.234.129:8030 // http://66.28.68.70:8000 - filename.replace(QRegExp("%20")," "); - +// filename.replace(QRegExp("%20")," "); + if(filename.find(" ",0,TRUE) != -1 || filename.find("%20",0,TRUE) != -1) { + QMessageBox::message("Note","Spaces in urls are not allowed."); + return; + } else { qDebug("Selected filename is "+filename); if(filename.right(3) == "m3u") readm3u( filename); else if(filename.right(3) == "pls") readPls( filename); else { DocLnk lnk; lnk.setName(filename); //sets file name if(filename.right(1) != "/" && filename.right(3) != "mp3" && filename.right(3) != "MP3") filename += "/"; lnk.setFile(filename); //sets File property lnk.setType("audio/x-mpegurl"); lnk.setExec("opieplayer"); lnk.setIcon("opieplayer/MPEGPlayer"); if(!lnk.writeLink()) qDebug("Writing doclink did not work"); d->selectedFiles->addToSelection( lnk); // if(fileDlg2) // delete fileDlg2; } } + } if(fileDlg) delete fileDlg; } void PlayListWidget::keyReleaseEvent( QKeyEvent *e) { switch ( e->key() ) { ////////////////////////////// Zaurus keys case Key_F9: //activity // if(audioUI->isHidden()) // audioUI->showMaximized(); break; @@ -1196,57 +1210,62 @@ void PlayListWidget::doUnblank() { void PlayListWidget::readm3u(const QString &filename) { qDebug("m3u filename is "+filename); QFile f(filename); if(f.open(IO_ReadOnly)) { QTextStream t(&f); QString s;//, first, second; int i=0; while ( !t.atEnd()) { // Lview->insertLine(t.readLine(),-1); s=t.readLine(); - if(s.find("#",0,TRUE) == -1) { + if(s.find(" ",0,TRUE) != -1 || s.find("%20",0,TRUE) != -1) { + QMessageBox::message("Note","Spaces in urls are not allowed."); + } + else if(s.find("#",0,TRUE) == -1) { if(s.find(" ",0,TRUE) == -1) { // not sure if this is neede since cf uses vfat if(s.left(2) == "E:" || s.left(2) == "P:") { s=s.right(s.length()-2); DocLnk lnk( s ); QFileInfo f(s); QString name = f.baseName(); name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); lnk.setName( name); s=s.replace( QRegExp("\\"),"/"); lnk.setFile( s); // lnk.setIcon(opieplayer/MPEGPlayer); qDebug("add "+name); d->selectedFiles->addToSelection( lnk); } else { // is url + s.replace(QRegExp("%20")," "); DocLnk lnk( s); QString name = s.right( s.length() - 7); // name = name.right(name.length()-name.findRev("\\",-1,TRUE)-1); lnk.setName(name); lnk.setFile( s+"/"); // lnk.setFile( filename); // lnk.setComment( s+"/"); lnk.setType("audio/x-mpegurl"); // lnk.setIcon( "opieplayer/MPEGPlayer"); // qDebug("add "+s); d->selectedFiles->addToSelection( lnk); } i++; } } } } + f.close(); } void PlayListWidget::writem3u(const QString &filename) { } void PlayListWidget::readPls(const QString &filename) { qDebug("pls filename is "+filename); QFile f(filename); if(f.open(IO_ReadOnly)) { |