void Controller::CreateRandomSongList() { vecRandomSongList.clear(); for(int i = 0; i < pArchiveFile->GetChildFileCount(); i++) { // 曲の長さがある場合のみランダム再生用のリストに追加する File* pFile = pArchiveFile->GetChildFile(i); if(pFile && pFile->GetPlayLength() != 0) { vecRandomSongList.push_back(i); } } }
void Controller::UpdateFileInfo( const string& s) { strFilePath = s ; // pArchiveFile の更新 if( pArchiveFile) { pMainWnd->ClearList() ; delete pArchiveFile ; } pArchiveFile = new ArchiveFile(strFilePath) ; pArchiveFile->ReadHeader() ; // zip ファイルなら switch( pArchiveFile->GetStatus()) { case ArchiveFile::Status::OPEN_ERROR : pMainWnd->AddList( "ファイルを開けませんでした") ; break ; case ArchiveFile::Status::NO_HEADER: pMainWnd->AddList( "ヘッダ情報を読み取れませんでした") ; pMainWnd->SetCurSong( 0, 0) ; break ; case ArchiveFile::Status::INVALID_HEADER : pMainWnd->AddList( "ヘッダ情報の読みとりに失敗しました。") ; pMainWnd->SetCurSong( 0, 0) ; break ; case ArchiveFile::Status::UNCOMPRESSED : case ArchiveFile::Status::COMPRESSED : { // ランダム再生用のリスト計算 CreateRandomSongList(); // コンピレーションアルバムかどうかの判断 BOOL blnCompi = FALSE ; if( Profile::blnListCompilation) { string strArtist = "" ; for( int i = 0; i < pArchiveFile->GetChildFileCount(); i++) { File* pFile = pArchiveFile->GetChildFile( i) ; if( !pFile->HasID3Tag()) { continue ; } string s = pFile->GetID3Tag().strArtistName ; if( strArtist == "") { strArtist = s ; } else if( strArtist != s) { blnCompi = TRUE ; break ; } } } // リストに追加していく for( int i = 0; i < pArchiveFile->GetChildFileCount(); i++) { File* pFile = pArchiveFile->GetChildFile( i) ; if( blnCompi && pFile->HasID3Tag()) { pMainWnd->AddList( pFile->GetDisplayStr( Profile::strListCompilation), pFile->GetPlayLength()) ; } else if( Profile::blnListID3 && pFile->HasID3Tag()) { pMainWnd->AddList( pFile->GetDisplayStr( Profile::strListID3), pFile->GetPlayLength()) ; } else { pMainWnd->AddList( pFile->GetFileName(), pFile->GetPlayLength()) ; } } pMainWnd->SetCurSong( 0, i > 0 ? pArchiveFile->GetChildFile( 0)->GetPlayLength() : 0) ; break ; } } // ファイル情報ウインドウを更新 if(pInfoWnd) pInfoWnd->SetArchiveFile(pArchiveFile); }