Library for Skeleton of SD card player. SD カードプレーヤのための骨組みとして使うためのライブラリ.このライブラリを登録した際のプログラム:「F746_SD_Player_Demo」
Dependencies: SDFileSystem_Warning_Fixed
Dependents: F746_SD_Player_Demo F746_SD_VarableFilter F746_SD_GraphicEqualizer F746_MySoundMachine ... more
Revision 17:abfd6af9a236, committed 2017-03-23
- Comitter:
- MikamiUitOpen
- Date:
- Thu Mar 23 02:58:48 2017 +0000
- Parent:
- 16:299cc1052baa
- Commit message:
- 18
Changed in this revision
diff -r 299cc1052baa -r abfd6af9a236 FileSelectorWav.cpp --- a/FileSelectorWav.cpp Wed Mar 22 09:20:13 2017 +0000 +++ b/FileSelectorWav.cpp Thu Mar 23 02:58:48 2017 +0000 @@ -2,7 +2,7 @@ // FileSelector class // SD カード内のファイル名の一覧を表示し,ファイルを選択する // -// 2017/03/17, Copyright (c) 2017 MIKAMI, Naoki +// 2017/03/23, Copyright (c) 2017 MIKAMI, Naoki //-------------------------------------------------------------- #include "FileSelectorWav.hpp" @@ -16,7 +16,8 @@ fileNames_(maxFiles), fileNameLabels_(MAX_LIST_PAGE_), next_(50, 238, 64, 36, 2, (string[]){"<", ">"}, 10, 0, 2, -1, Font24), pageLabel_(210, 250, Label::LEFT, Font16), - lcd_(GuiBase::GetLcd()), sdReader_(reader), page_(1) + lcd_(GuiBase::GetLcd()), sdReader_(reader), page_(1), + nOld_(-1), kOld_(-1) { Array<string> nonString(MAX_LIST_PAGE_, ""); rect_ = new ButtonGroup(X_, Y_, W_H_, W_H_, MAX_LIST_PAGE_, @@ -38,6 +39,7 @@ for (int n=0; n<MAX_LIST_PAGE_; n++) delete fileNameLabels_[n]; } + // ファイルの一覧表を作る.WAV ファイルが存在しない場合は false を返す bool FileSelector::CreateTable() { DIR* dp = opendir("/sd"); @@ -63,16 +65,15 @@ } if (fileCount_ >= MAX_FILES_) break; } - closedir(dp); + closedir(dp); } else - return false; - if (fileCount_ == 0) return false; + return false; // SD カードが装着されていない場合 + if (fileCount_ == 0) return false; // 該当する WAV ファイルが存在しない場合 div_t m = div(fileCount_, MAX_LIST_PAGE_); maxPage_ = (m.rem == 0) ? m.quot : m.quot+1; - rect_->EraseAll(); - return true; + return true; // 該当する WAV ファイルが存在する場合 } // ファイルを選択する @@ -84,15 +85,27 @@ if (m==0) page_--; else page_++; DisplayFileList(false); - wait_ms(200); + nOld_ = -1; + wait_ms(300); } int n; if (rect_->GetTouchedNumber(n)) { int k = (page_ - 1)*MAX_LIST_PAGE_ + n; - fileNameLabels_[n]->Draw(GetFileNameNoExt(k), TOUCHED_COLOR_); + fileNameLabels_[n]->Draw(GetFileNameNoExt(k), + TOUCHED_COLOR_); fileName = fileNames_[k]; + // 同じページで以前に選択されているファイル名の色を戻す + if (nOld_ != -1) + fileNameLabels_[nOld_]->Draw(GetFileNameNoExt(kOld_), + BASE_COLOR_); + if (page_ == maxPage_) // 最後のページで余分な四角形を消去 + for (int j=fileCount_ % MAX_LIST_PAGE_ + 1; + j < MAX_LIST_PAGE_; j++) rect_->Erase(j); + nOld_ = n; + kOld_ = k; + wait_ms(300); return true; } else @@ -115,10 +128,9 @@ fileNameLabels_[n]->Draw(GetFileNameNoExt(n+(page_-1)*MAX_LIST_PAGE_)); // 前のページ,次のページの選択ボタンなどを表示する - next_.ActivateAll(); - next_.DrawAll(); - if (page_ == 1) next_.Inactivate(0); - if (page_ == maxPage_) next_.Inactivate(1); + next_.InactivateAll(); + if (page_ > 1) next_.Activate(0); // "<" 有効 + if (page_ < maxPage_) next_.Activate(1); // ">" 有効 char page[6]; sprintf(page, "%d/%d", page_, maxPage_); pageLabel_.Draw(page); @@ -143,3 +155,4 @@ return name; } } +
diff -r 299cc1052baa -r abfd6af9a236 FileSelectorWav.hpp --- a/FileSelectorWav.hpp Wed Mar 22 09:20:13 2017 +0000 +++ b/FileSelectorWav.hpp Thu Mar 23 02:58:48 2017 +0000 @@ -2,7 +2,7 @@ // FileSelector class ---- Header ---- // SD カード内のファイル名の一覧を表示し,ファイルを選択する // -// 2017/03/17, Copyright (c) 2017 MIKAMI, Naoki +// 2017/03/23, Copyright (c) 2017 MIKAMI, Naoki //-------------------------------------------------------------- #ifndef FILE_SELECTOR_HPP @@ -23,6 +23,7 @@ virtual ~FileSelector(); + // ファイルの一覧表を作る.WAV ファイルが存在しない場合は false を返す bool CreateTable(); // ファイルを選択する @@ -53,6 +54,8 @@ LCD_DISCO_F746NG &lcd_; SD_WavReader &sdReader_; int page_; // 現在のページ,最初のページは 1 + int nOld_; // ページ内で以前選択したファイルのインデックス + int kOld_; // 以前選択したファイルのインデックス int maxPage_; int fileCount_; @@ -65,3 +68,4 @@ }; } #endif // FILE_SELECTOR_HPP +
diff -r 299cc1052baa -r abfd6af9a236 SD_PlayerSkeleton.cpp --- a/SD_PlayerSkeleton.cpp Wed Mar 22 09:20:13 2017 +0000 +++ b/SD_PlayerSkeleton.cpp Thu Mar 23 02:58:48 2017 +0000 @@ -1,7 +1,7 @@ //-------------------------------------------------------------- // SD プレーヤー用抽象基底クラス // -// 2017/03/21, Copyright (c) 2017 MIKAMI, Naoki +// 2017/03/22, Copyright (c) 2017 MIKAMI, Naoki //-------------------------------------------------------------- #include "SD_PlayerSkeleton.hpp"
diff -r 299cc1052baa -r abfd6af9a236 SD_PlayerSkeleton.hpp --- a/SD_PlayerSkeleton.hpp Wed Mar 22 09:20:13 2017 +0000 +++ b/SD_PlayerSkeleton.hpp Thu Mar 23 02:58:48 2017 +0000 @@ -1,7 +1,7 @@ //-------------------------------------------------------------- // SD プレーヤー用抽象基底クラス(ヘッダ) // -// 2017/03/21, Copyright (c) 2016 MIKAMI, Naoki +// 2017/03/22, Copyright (c) 2016 MIKAMI, Naoki //-------------------------------------------------------------- #ifndef F746_SD_PLAYER_SKELETON_HPP