private void ButtonNextOrPrevClickedWhenStop(UpdateOrdinal updateOrdinal) { var idx = mDataGridPlayList.SelectedIndex; idx = updateOrdinal(idx); if (idx < 0) { idx = 0; } else if (mDataGridPlayList.Items.Count <= idx) { idx = 0; } mDataGridPlayList.SelectedIndex = idx; mDataGridPlayList.ScrollIntoView(mDataGridPlayList.SelectedItem); }
private void ButtonNextOrPrevClickedWhenPlaying(UpdateOrdinal updateOrdinal) { int albumAudioFileCount = mContentList.GetSelectedAlbum().AudioFileCount; int idx = mPlaybackController.GetPcmDataId(WasapiCS.PcmDataUsageType.NowPlaying); if (idx < 0) { // fixme: // 曲を再生中ではなく、再生準備中の場合など。 // wavDataId = wasapi.GetPcmDataId(WasapiCS.PcmDataUsageType.PauseResumeToPlay); //nextTask = NextTaskType.PlayPauseSpecifiedGroup; return; } else { // 再生リストに登録されている曲数が1曲で、しかも // その曲を再生中に、次の曲または前の曲ボタンが押された場合、曲を頭出しする。 if (1 == albumAudioFileCount) { mPlaybackController.SetPosFrame(0); return; } } int nextIdx = updateOrdinal(idx); if (nextIdx < 0) { nextIdx = 0; } if (albumAudioFileCount <= nextIdx) { nextIdx = 0; } if (nextIdx == idx) { // 1曲目再生中に前の曲を押した場合頭出しする。 mPlaybackController.SetPosFrame(0); return; } PlayAudioFile(nextIdx); }
private void ButtonNextOrPrevClicked(UpdateOrdinal updateOrdinal) { switch (mPlaybackController.GetState()) { case PlaybackController.State.Paused: case PlaybackController.State.Playing: ButtonNextOrPrevClickedWhenPlaying(updateOrdinal); break; case PlaybackController.State.Stopped: ButtonNextOrPrevClickedWhenStop(updateOrdinal); break; case PlaybackController.State.Stopping: // fixme: break; } }