-rw-r--r-- | core/multimedia/opieplayer/libmad/libmadplugin.cpp | 13 | ||||
-rw-r--r-- | core/multimedia/opieplayer/libmad/libmadplugin.h | 2 | ||||
-rw-r--r-- | core/multimedia/opieplayer/libmpeg3/mpeg3io.c | 132 | ||||
-rw-r--r-- | core/multimedia/opieplayer/playlistselection.cpp | 20 | ||||
-rw-r--r-- | core/multimedia/opieplayer/playlistselection.h | 6 | ||||
-rw-r--r-- | core/multimedia/opieplayer/playlistwidget.cpp | 250 |
6 files changed, 236 insertions, 187 deletions
diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.cpp b/core/multimedia/opieplayer/libmad/libmadplugin.cpp index 9f8ba65..8ede537 100644 --- a/core/multimedia/opieplayer/libmad/libmadplugin.cpp +++ b/core/multimedia/opieplayer/libmad/libmadplugin.cpp @@ -33,4 +33,5 @@ #include <assert.h> #include <qapplication.h> +#include <qpe/config.h> //#define HAVE_MMAP @@ -48,4 +49,5 @@ extern "C" { #define MPEG_BUFFER_SIZE 65536 +//#define MPEG_BUFFER_SIZE 32768 //16384 // 8192 //#define debugMsg(a) qDebug(a) #define debugMsg(a) @@ -166,5 +168,8 @@ bool LibMadPlugin::isFileSupported( const QString& path ) { bool LibMadPlugin::open( const QString& path ) { debugMsg( "LibMadPlugin::open" ); - + Config cfg("MediaPlayer"); + cfg.setGroup("Options"); + bufferSize = cfg.readNumEntry("MPeg_BufferSize",MPEG_BUFFER_SIZE); + qDebug("buffer size is %d", bufferSize); d->bad_last_frame = 0; d->flush = TRUE; @@ -198,5 +203,5 @@ bool LibMadPlugin::open( const QString& path ) { if (d->input.data == 0) { - d->input.data = (unsigned char *)malloc(MPEG_BUFFER_SIZE); + d->input.data = (unsigned char *)malloc( bufferSize /*MPEG_BUFFER_SIZE*/); if (d->input.data == 0) { qDebug("error allocating input buffer"); @@ -370,5 +375,5 @@ bool LibMadPlugin::read() { do { - len = ::read(d->input.fd, d->input.data + d->input.length, MPEG_BUFFER_SIZE - d->input.length); + len = ::read(d->input.fd, d->input.data + d->input.length, bufferSize /* MPEG_BUFFER_SIZE*/ - d->input.length); } while (len == -1 && errno == EINTR); @@ -381,5 +386,5 @@ bool LibMadPlugin::read() { d->input.eof = 1; - assert(MPEG_BUFFER_SIZE - d->input.length >= MAD_BUFFER_GUARD); + assert(bufferSize /*MPEG_BUFFER_SIZE*/ - d->input.length >= MAD_BUFFER_GUARD); while (len < MAD_BUFFER_GUARD) diff --git a/core/multimedia/opieplayer/libmad/libmadplugin.h b/core/multimedia/opieplayer/libmad/libmadplugin.h index b240b77..46cd4a1 100644 --- a/core/multimedia/opieplayer/libmad/libmadplugin.h +++ b/core/multimedia/opieplayer/libmad/libmadplugin.h @@ -104,5 +104,5 @@ private: LibMadPluginData *d; QString info; - +int bufferSize; }; diff --git a/core/multimedia/opieplayer/libmpeg3/mpeg3io.c b/core/multimedia/opieplayer/libmpeg3/mpeg3io.c index c5807a7..c5cae00 100644 --- a/core/multimedia/opieplayer/libmpeg3/mpeg3io.c +++ b/core/multimedia/opieplayer/libmpeg3/mpeg3io.c @@ -13,36 +13,36 @@ mpeg3_fs_t* mpeg3_new_fs(char *path) { - mpeg3_fs_t *fs = (mpeg3_fs_t*)calloc(1, sizeof(mpeg3_fs_t)); - fs->css = mpeg3_new_css(); - strcpy(fs->path, path); - return fs; + mpeg3_fs_t *fs = (mpeg3_fs_t*)calloc(1, sizeof(mpeg3_fs_t)); + fs->css = mpeg3_new_css(); + strcpy(fs->path, path); + return fs; } int mpeg3_delete_fs(mpeg3_fs_t *fs) { - mpeg3_delete_css(fs->css); - free(fs); - return 0; + mpeg3_delete_css(fs->css); + free(fs); + return 0; } int mpeg3_copy_fs(mpeg3_fs_t *dst, mpeg3_fs_t *src) { - strcpy(dst->path, src->path); - dst->current_byte = 0; - return 0; + strcpy(dst->path, src->path); + dst->current_byte = 0; + return 0; } long mpeg3io_get_total_bytes(mpeg3_fs_t *fs) { -/* - * struct stat st; - * if(stat(fs->path, &st) < 0) return 0; - * return (long)st.st_size; - */ - - fseek(fs->fd, 0, SEEK_END); - fs->total_bytes = ftell(fs->fd); - fseek(fs->fd, 0, SEEK_SET); - return fs->total_bytes; + + struct stat st; + if(stat(fs->path, &st) < 0) return 0; + return (long)st.st_size; + + +/* fseek(fs->fd, 0, SEEK_END); */ +/* fs->total_bytes = ftell(fs->fd); */ +/* fseek(fs->fd, 0, SEEK_SET); */ +/* return fs->total_bytes; */ } @@ -50,78 +50,78 @@ int mpeg3io_open_file(mpeg3_fs_t *fs) { /* Need to perform authentication before reading a single byte. */ - mpeg3_get_keys(fs->css, fs->path); - - if(!(fs->fd = fopen(fs->path, "rb"))) - { - perror("mpeg3io_open_file"); - return 1; - } - - fs->total_bytes = mpeg3io_get_total_bytes(fs); - - if(!fs->total_bytes) - { - fclose(fs->fd); - return 1; - } - fs->current_byte = 0; - return 0; + mpeg3_get_keys(fs->css, fs->path); + + if(!(fs->fd = fopen(fs->path, "rb"))) + { + perror("mpeg3io_open_file"); + return 1; + } + + fs->total_bytes = mpeg3io_get_total_bytes(fs); + + if(!fs->total_bytes) + { + fclose(fs->fd); + return 1; + } + fs->current_byte = 0; + return 0; } int mpeg3io_close_file(mpeg3_fs_t *fs) { - if(fs->fd) fclose(fs->fd); - fs->fd = 0; - return 0; + if(fs->fd) fclose(fs->fd); + fs->fd = 0; + return 0; } int mpeg3io_read_data(unsigned char *buffer, long bytes, mpeg3_fs_t *fs) { - int result = 0; + int result = 0; //printf("read %d bytes\n",bytes); - result = !fread(buffer, 1, bytes, fs->fd); - fs->current_byte += bytes; - return (result && bytes); + result = !fread(buffer, 1, bytes, fs->fd); + fs->current_byte += bytes; + return (result && bytes); } int mpeg3io_device(char *path, char *device) { - struct stat file_st, device_st; + struct stat file_st, device_st; struct mntent *mnt; - FILE *fp; + FILE *fp; - if(stat(path, &file_st) < 0) - { - perror("mpeg3io_device"); - return 1; - } + if(stat(path, &file_st) < 0) + { + perror("mpeg3io_device"); + return 1; + } #ifndef _WIN32 - fp = setmntent(MOUNTED, "r"); + fp = setmntent(MOUNTED, "r"); while(fp && (mnt = getmntent(fp))) - { - if(stat(mnt->mnt_fsname, &device_st) < 0) continue; - if(device_st.st_rdev == file_st.st_dev) - { - strncpy(device, mnt->mnt_fsname, MPEG3_STRLEN); - break; - } - } - endmntent(fp); + { + if(stat(mnt->mnt_fsname, &device_st) < 0) continue; + if(device_st.st_rdev == file_st.st_dev) + { + strncpy(device, mnt->mnt_fsname, MPEG3_STRLEN); + break; + } + } + endmntent(fp); #endif - return 0; + return 0; } int mpeg3io_seek(mpeg3_fs_t *fs, long byte) { - fs->current_byte = byte; - return fseek(fs->fd, byte, SEEK_SET); + fs->current_byte = byte; + return fseek(fs->fd, byte, SEEK_SET); } int mpeg3io_seek_relative(mpeg3_fs_t *fs, long bytes) { - fs->current_byte += bytes; - return fseek(fs->fd, fs->current_byte, SEEK_SET); + fs->current_byte += bytes; + return fseek(fs->fd, fs->current_byte, SEEK_SET); } diff --git a/core/multimedia/opieplayer/playlistselection.cpp b/core/multimedia/opieplayer/playlistselection.cpp index 6259b3f..8f3711a 100644 --- a/core/multimedia/opieplayer/playlistselection.cpp +++ b/core/multimedia/opieplayer/playlistselection.cpp @@ -20,4 +20,6 @@ #include <qpe/applnk.h> #include <qpe/resource.h> +#include <qpe/config.h> + #include <qpainter.h> #include <qimage.h> @@ -51,5 +53,5 @@ PlayListSelection::PlayListSelection( QWidget *parent, const char *name ) : QListView( parent, name ) { - qDebug("starting playlistselector"); +// qDebug("starting playlistselector"); // #ifdef USE_PLAYLIST_BACKGROUND // setStaticBackground( TRUE ); @@ -185,3 +187,17 @@ void PlayListSelection::unSelect() QListViewItem *item = selectedItem(); setSelected( currentItem(), FALSE); -}
\ No newline at end of file +} + +void PlayListSelection::writeCurrent( Config& cfg ) { + cfg.setGroup("PlayList"); + QListViewItem *item = selectedItem(); + if ( item ) + cfg.writeEntry("current", item->text(0) ); + qDebug(item->text(0)); + +} + +void PlayListSelection::setSelectedItem(const QString &strk ) { +// setSelected( item, TRUE ); +// ensureItemVisible( selectedItem() ); +} diff --git a/core/multimedia/opieplayer/playlistselection.h b/core/multimedia/opieplayer/playlistselection.h index ba37271..d10bc82 100644 --- a/core/multimedia/opieplayer/playlistselection.h +++ b/core/multimedia/opieplayer/playlistselection.h @@ -24,5 +24,5 @@ #include <qlistview.h> #include <qpe/applnk.h> - +#include <qpe/config.h> class PlayListSelection : public QListView { @@ -38,5 +38,7 @@ public slots: void moveSelectedUp(); // Move the media file up the playlist so it is played earlier void moveSelectedDown(); // Move the media file down the playlist so it is played later - void unSelect(); + void unSelect(); + void writeCurrent( Config &); + void setSelectedItem( const QString & ); bool prev(); bool next(); diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp index 3b8f6d7..63df715 100644 --- a/core/multimedia/opieplayer/playlistwidget.cpp +++ b/core/multimedia/opieplayer/playlistwidget.cpp @@ -26,4 +26,5 @@ #include <qpe/qpeapplication.h> #include <qpe/lnkproperties.h> +#include <qpe/storage.h> #include <qpe/applnk.h> @@ -217,4 +218,7 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) audioView->setColumnAlignment(2, Qt::AlignRight); audioView->setAllColumnsShowFocus(TRUE); +// audioView->setMultiSelection( TRUE ); +// audioView->setSelectionMode( QListView::Extended); + tabWidget->insertTab(aTab,tr("Audio")); @@ -239,4 +243,7 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) videoView->setColumnAlignment(2, Qt::AlignRight); videoView->setAllColumnsShowFocus(TRUE); +// videoView->setMultiSelection( TRUE ); +// videoView->setSelectionMode( QListView::Extended); + QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold); connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), @@ -319,7 +326,6 @@ void PlayListWidget::initializeStates() { void PlayListWidget::readConfig( Config& cfg ) { cfg.setGroup("PlayList"); - + QString currentString = cfg.readEntry("current", "" ); int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); - for ( int i = 0; i < noOfFiles; i++ ) { QString entryName; @@ -327,44 +333,45 @@ void PlayListWidget::readConfig( Config& cfg ) { QString linkFile = cfg.readEntry( entryName ); DocLnk lnk( linkFile ); - if ( lnk.isValid() ) + if ( lnk.isValid() ) { d->selectedFiles->addToSelection( lnk ); + } } +// d->selectedFiles->setSelectedItem( (const QString &)currentString); } void PlayListWidget::writeConfig( Config& cfg ) const { - cfg.setGroup("PlayList"); + d->selectedFiles->writeCurrent( cfg); + cfg.setGroup("PlayList"); int noOfFiles = 0; - d->selectedFiles->first(); do { - const DocLnk *lnk = d->selectedFiles->current(); - if ( lnk ) { - QString entryName; - entryName.sprintf( "File%i", noOfFiles + 1 ); - cfg.writeEntry( entryName, lnk->linkFile() ); - // if this link does exist, add it so we have the file - // next time... - if ( !QFile::exists( lnk->linkFile() ) ) { - // the way writing lnks doesn't really check for out - // of disk space, but check it anyway. - if ( !lnk->writeLink() ) { - QMessageBox::critical( 0, tr("Out of space"), - tr( "There was a problem saving " - "the playlist.\n" - "Your playlist " - "may be missing some entries\n" - "the next time you start it." ) - ); + const DocLnk *lnk = d->selectedFiles->current(); + if ( lnk ) { + QString entryName; + entryName.sprintf( "File%i", noOfFiles + 1 ); + qDebug(entryName); + cfg.writeEntry( entryName, lnk->linkFile() ); + // if this link does exist, add it so we have the file + // next time... + if ( !QFile::exists( lnk->linkFile() ) ) { + // the way writing lnks doesn't really check for out + // of disk space, but check it anyway. + if ( !lnk->writeLink() ) { + QMessageBox::critical( 0, tr("Out of space"), + tr( "There was a problem saving " + "the playlist.\n" + "Your playlist " + "may be missing some entries\n" + "the next time you start it." ) + ); + } + } + noOfFiles++; + } } - } - noOfFiles++; - } - } while ( d->selectedFiles->next() ); - + while ( d->selectedFiles->next() ); cfg.writeEntry("NumberOfFiles", noOfFiles ); - - } @@ -387,15 +394,15 @@ void PlayListWidget::clearList() { void PlayListWidget::addAllToList() { - DocLnkSet files; - Global::findDocuments(&files, "video/*;audio/*"); - QListIterator<DocLnk> dit( files.children() ); - for ( ; dit.current(); ++dit ) - d->selectedFiles->addToSelection( **dit ); + DocLnkSet filesAll; + Global::findDocuments(&filesAll, "video/*;audio/*"); + QListIterator<DocLnk> Adit( filesAll.children() ); + for ( ; Adit.current(); ++Adit ) + d->selectedFiles->addToSelection( **Adit ); } void PlayListWidget::addAllMusicToList() { - DocLnkSet files; - Global::findDocuments(&files, "audio/*"); +// DocLnkSet files; +// Global::findDocuments(&files, "audio/*"); QListIterator<DocLnk> dit( files.children() ); for ( ; dit.current(); ++dit ) @@ -405,7 +412,5 @@ void PlayListWidget::addAllMusicToList() { void PlayListWidget::addAllVideoToList() { - DocLnkSet files; - Global::findDocuments(&files, "video/*"); - QListIterator<DocLnk> dit( files.children() ); + QListIterator<DocLnk> dit( vFiles.children() ); for ( ; dit.current(); ++dit ) d->selectedFiles->addToSelection( **dit ); @@ -469,13 +474,13 @@ const DocLnk *PlayListWidget::current() { // this is fugly // case 0: //playlist // { - qDebug("playlist"); - if ( mediaPlayerState->playlist() ) { - return d->selectedFiles->current(); - } - else if ( d->setDocumentUsed && d->current ) { - return d->current; - } else { - return d->files->selected(); - } + qDebug("playlist"); + if ( mediaPlayerState->playlist() ) { + return d->selectedFiles->current(); + } + else if ( d->setDocumentUsed && d->current ) { + return d->current; + } else { + return d->files->selected(); + } // } // break; @@ -513,27 +518,27 @@ const DocLnk *PlayListWidget::current() { // this is fugly bool PlayListWidget::prev() { if ( mediaPlayerState->playlist() ) { - if ( mediaPlayerState->shuffled() ) { - const DocLnk *cur = current(); - int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0)); - for ( int i = 0; i < j; i++ ) { - if ( !d->selectedFiles->next() ) - d->selectedFiles->first(); - } - if ( cur == current() ) - if ( !d->selectedFiles->next() ) - d->selectedFiles->first(); - return TRUE; - } else { - if ( !d->selectedFiles->prev() ) { - if ( mediaPlayerState->looping() ) { - return d->selectedFiles->last(); - } else { - return FALSE; - } - } - return TRUE; - } + if ( mediaPlayerState->shuffled() ) { + const DocLnk *cur = current(); + int j = 1 + (int)(97.0 * rand() / (RAND_MAX + 1.0)); + for ( int i = 0; i < j; i++ ) { + if ( !d->selectedFiles->next() ) + d->selectedFiles->first(); + } + if ( cur == current() ) + if ( !d->selectedFiles->next() ) + d->selectedFiles->first(); + return TRUE; + } else { + if ( !d->selectedFiles->prev() ) { + if ( mediaPlayerState->looping() ) { + return d->selectedFiles->last(); + } else { + return FALSE; + } + } + return TRUE; + } } else { - return mediaPlayerState->looping(); + return mediaPlayerState->looping(); } } @@ -542,18 +547,18 @@ bool PlayListWidget::prev() { bool PlayListWidget::next() { if ( mediaPlayerState->playlist() ) { - if ( mediaPlayerState->shuffled() ) { - return prev(); - } else { - if ( !d->selectedFiles->next() ) { - if ( mediaPlayerState->looping() ) { - return d->selectedFiles->first(); - } else { - return FALSE; - } - } - return TRUE; - } + if ( mediaPlayerState->shuffled() ) { + return prev(); + } else { + if ( !d->selectedFiles->next() ) { + if ( mediaPlayerState->looping() ) { + return d->selectedFiles->first(); + } else { + return FALSE; + } + } + return TRUE; + } } else { - return mediaPlayerState->looping(); + return mediaPlayerState->looping(); } } @@ -562,7 +567,7 @@ bool PlayListWidget::next() { bool PlayListWidget::first() { if ( mediaPlayerState->playlist() ) - return d->selectedFiles->first(); + return d->selectedFiles->first(); else - return mediaPlayerState->looping(); + return mediaPlayerState->looping(); } @@ -570,7 +575,7 @@ bool PlayListWidget::first() { bool PlayListWidget::last() { if ( mediaPlayerState->playlist() ) - return d->selectedFiles->last(); + return d->selectedFiles->last(); else - return mediaPlayerState->looping(); + return mediaPlayerState->looping(); } @@ -583,17 +588,20 @@ void PlayListWidget::saveList() { fileDlg->exec(); if( fileDlg->result() == 1 ) { - if ( d->current ) - delete d->current; + if ( d->current ) + delete d->current; filename = fileDlg->LineEdit1->text();//+".playlist"; -// qDebug("saving playlist "+filename+".playlist"); +// qDebug("saving playlist "+filename+".playlist"); Config cfg( filename +".playlist"); writeConfig( cfg ); - if( playLists->selected()->name() == filename) { -// qDebug("same name so delete lnk"); - QFile().remove(playLists->selected()->file()); - QFile().remove(playLists->selected()->linkFile()); - playLists->reread(); - } - + +// qDebug("same name so delete lnk??"); +// if( playLists->selected()->name() == filename) { + +// qDebug("same name so delete lnk"); +// QFile().remove(playLists->selected()->file()); +// QFile().remove(playLists->selected()->linkFile()); +// playLists->reread(); +// } +// qDebug("new doclnk"); DocLnk lnk; // lnk.setComment( ""); @@ -602,4 +610,5 @@ void PlayListWidget::saveList() { lnk.setIcon("mpegplayer/playlist2"); lnk.setName( filename); //sets file name + qDebug(filename); if(!lnk.writeLink()) qDebug("Writing doclink did not work"); @@ -609,6 +618,6 @@ void PlayListWidget::saveList() { setCaption(tr("OpiePlayer: ")+filename); d->selectedFiles->first(); - if(fileDlg) - delete fileDlg; + if(fileDlg) + delete fileDlg; } @@ -622,9 +631,12 @@ void PlayListWidget::loadList( const DocLnk & lnk) { Config cfg( name+".playlist"); readConfig(cfg); + tabWidget->setCurrentPage(0); + Config config( "MediaPlayer" ); config.writeEntry("CurrentPlaylist", name); - d->selectedFiles->first(); +// d->selectedFiles->first(); } + } @@ -784,5 +796,6 @@ void PlayListWidget::btnPlay(bool b) { d->selectedFiles->removeSelected( ); tabWidget->setCurrentPage(1); - d->selectedFiles->unSelect(); + audioView->clearSelection(); +// d->selectedFiles->unSelect(); // mediaPlayerState->setPlaying(FALSE); } @@ -795,5 +808,6 @@ void PlayListWidget::btnPlay(bool b) { d->selectedFiles->removeSelected( ); tabWidget->setCurrentPage(2); - d->selectedFiles->unSelect(); + videoView->clearSelection(); +// d->selectedFiles->unSelect(); // mediaPlayerState->setPlaying(FALSE); } @@ -906,14 +920,20 @@ void PlayListWidget::populateAudioView() { // if(files) // files.~DocLnkSet(); + StorageInfo storageInfo; + const QList<FileSystem> &fs = storageInfo.fileSystems(); + Global::findDocuments(&files, "audio/*"); QListIterator<DocLnk> dit( files.children() ); + QListIterator<FileSystem> it ( fs ); audioView->clear(); QString storage; for ( ; dit.current(); ++dit ) { + for( ; it.current(); ++it ){ + const QString name = (*it)->name(); + const QString path = (*it)->path(); + if(dit.current()->file().find(path) != -1 ) storage=name; + } + QListViewItem * newItem; - if(dit.current()->file().find("/mnt/cf") != -1 ) storage=tr("CF"); - else if(dit.current()->file().find("/mnt/hda") != -1 ) storage=tr("CF"); - else if(dit.current()->file().find("/mnt/card") != -1 ) storage=tr("SD"); - else storage=tr("RAM"); if ( QFile( dit.current()->file()).exists() ) { newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), QString::number( QFile( dit.current()->file()).size() ), storage); @@ -924,13 +944,19 @@ void PlayListWidget::populateAudioView() { void PlayListWidget::populateVideoView() { + StorageInfo storageInfo; + const QList<FileSystem> &fs = storageInfo.fileSystems(); + Global::findDocuments(&vFiles, "video/*"); QListIterator<DocLnk> Vdit( vFiles.children() ); + QListIterator<FileSystem> it ( fs ); videoView->clear(); - QString storage; + QString storage; for ( ; Vdit.current(); ++Vdit ) { - if( Vdit.current()->file().find("/mnt/cf") != -1 ) storage=tr("CF"); - else if( Vdit.current()->file().find("/mnt/hda") != -1 ) storage=tr("CF"); - else if( Vdit.current()->file().find("/mnt/card") != -1 ) storage=tr("SD"); - else storage=tr("RAM"); + for( ; it.current(); ++it ){ + const QString name = (*it)->name(); + const QString path = (*it)->path(); + if( Vdit.current()->file().find(path) != -1 ) storage=name; + } + QListViewItem * newItem; if ( QFile( Vdit.current()->file()).exists() ) { |