📄 playlistwidget.cpp
字号:
break; }}void PlayListWidget::initializeStates(){ d->tbPlay->setOn( mediaPlayerState->playing() ); d->tbLoop->setOn( mediaPlayerState->looping() ); d->tbShuffle->setOn( mediaPlayerState->shuffled() ); d->tbFull->setOn( mediaPlayerState->fullscreen() ); d->tbScale->setOn( mediaPlayerState->scaled() );}void PlayListWidget::readWinAmpPlayListFile( QString filename ){ Config cfg( filename ); // WinAmp .pls file format fields cfg.setGroup("playlist"); QString playlistName = cfg.readEntry( "PlaylistName", 0 ); QString version = cfg.readEntry( "Version", 0 ); int noOfFiles = cfg.readNumEntry( "NumberOfEntries", 0 ); for ( int i = 0; i < noOfFiles; i++ ) { QString entryName; entryName.sprintf( "File%i", i + 1 ); QString File = cfg.readEntry( entryName ); entryName.sprintf( "Title%i", i + 1 ); QString Title = cfg.readEntry( entryName ); DocLnk lnk; lnk.setFile( File ); lnk.setName( Title ); if ( lnk.isValid() ) addToSelection( lnk ); }}void PlayListWidget::writeWinAmpPlayListFile( QString filename ) const{ Config cfg( filename ); 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->file() ); entryName.sprintf( "Title%i", noOfFiles + 1 ); cfg.writeEntry( entryName, lnk->name() ); noOfFiles++; } } while ( d->selectedFiles->advanceSelection() ); cfg.writeEntry("NumberOfEntries", noOfFiles );}void PlayListWidget::readPlayList( QString filename ){ Config cfg( filename ); cfg.setGroup("PlayList"); int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); for ( int i = 0; i < noOfFiles; i++ ) { QString entryName; entryName.sprintf( "File%i", i + 1 ); QString linkFile = cfg.readEntry( entryName ); DocLnk lnk( linkFile ); if ( lnk.isValid() ) addToSelection( lnk ); }}void PlayListWidget::writePlayList( QString filename ) const{ Config cfg( filename ); cfg.setGroup("PlayList"); cfg.clearGroup(); 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.\nYour playlist " "may be missing some entries\n" "the next time you start it." ) ); } } noOfFiles++; } } while ( d->selectedFiles->advanceSelection() ); cfg.writeEntry("NumberOfFiles", noOfFiles );}void PlayListWidget::addToSelection( const DocLnk& lnk ){ d->selectedFiles->addToSelection( lnk );}void PlayListWidget::setDocument(const QString& fileref){ d->ts->pauseLoading(); if ( fileref.isNull() ) { QMessageBox::critical( 0, tr( "Invalid File" ), tr( "There was a problem in getting the file." ) ); return; } d->setDocumentActive = TRUE; d->setDoc = DocLnk( fileref ); // Start playing mediaPlayerState->setPlaying( FALSE ); QTimer::singleShot( 1, mediaPlayerState, SLOT( setPlaying() ) );}void PlayListWidget::setActiveWindow(){ mediaPlayerState->setView( mediaPlayerState->view() );}const DocLnk *PlayListWidget::current(){ if ( d->setDocumentActive ) return &d->setDoc; switch ( d->ts->tab() ) { case TabbedSelector::AudioTab: return d->audioFiles->current(); case TabbedSelector::VideoTab: return d->videoFiles->current(); case TabbedSelector::PlaylistTab: return d->selectedFiles->current(); } return 0;}bool PlayListWidget::prev(){ if ( d->setDocumentActive ) { d->setDocumentActive = FALSE; d->ts->resumeLoading(); } switch ( d->ts->tab() ) { case TabbedSelector::AudioTab: return d->audioFiles->prev(); case TabbedSelector::VideoTab: return d->videoFiles->prev(); case TabbedSelector::PlaylistTab: return d->selectedFiles->prev(); } return FALSE;}bool PlayListWidget::next(){ if ( d->setDocumentActive ) { d->setDocumentActive = FALSE; d->ts->resumeLoading(); } switch ( d->ts->tab() ) { case TabbedSelector::AudioTab: return d->audioFiles->next(); case TabbedSelector::VideoTab: return d->videoFiles->next(); case TabbedSelector::PlaylistTab: return d->selectedFiles->next(); } return FALSE;}bool PlayListWidget::first(){ if ( d->setDocumentActive ) { d->setDocumentActive = FALSE; d->ts->resumeLoading(); } switch ( d->ts->tab() ) { case TabbedSelector::AudioTab: return d->audioFiles->first(); case TabbedSelector::VideoTab: return d->videoFiles->first(); case TabbedSelector::PlaylistTab: return d->selectedFiles->first(); } return FALSE;}bool PlayListWidget::last(){ if ( d->setDocumentActive ) { d->setDocumentActive = FALSE; d->ts->resumeLoading(); } switch ( d->ts->tab() ) { case TabbedSelector::AudioTab: return d->audioFiles->last(); case TabbedSelector::VideoTab: return d->videoFiles->last(); case TabbedSelector::PlaylistTab: return d->selectedFiles->last(); } return FALSE;}void PlayListWidget::saveList(){ QString filename;// pseudo code// filename = QLineEdit->getText(); writePlayList( filename + ".playlist" );}void PlayListWidget::loadList(){ QString filename;// pseudo code// filename = FileSelector->openFile( "*.playlist" ); readPlayList( filename + ".playlist" );}void PlayListWidget::viewClosed(){ if ( d->setDocumentActive ) qApp->exit(); else mediaPlayerState->setList();}void PlayListWidget::setView( View view ){ if ( view == ListView ) { d->setDocumentActive = FALSE; d->ts->resumeLoading(); mainDocumentWindow->raiseWidget( this ); }}void PlayListWidget::showInfo(){ const DocLnk *cur = current(); if ( cur ) { MediaFileInfoWidget *infoWidget = new MediaFileInfoWidget( *cur, 0 ); QPEApplication::execDialog( infoWidget ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -