microSD カードのビットマップ・ファイルのビュアー.画像の最大値 縦:272ピクセル,横:480ピクセル. Bitmap file viewer for microSD card. Maximum size Vertical: 272 pixels, Horizontal: 480.
Dependencies: SDFileSystem_Warning_Fixed F746_GUI
Diff: MyFiles/FileSelectorBmp.hpp
- Revision:
- 1:bb146d5fe9aa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyFiles/FileSelectorBmp.hpp Tue Oct 23 11:51:47 2018 +0000 @@ -0,0 +1,72 @@ +//-------------------------------------------------------------- +// FileSelector class ---- Header ---- +// SD カード内の *.bmp ファイル名の一覧を表示し,ファイルを選択する +// だだし,日本語のファイル名は除く +// +// 2018/10/23, Copyright (c) 2018 MIKAMI, Naoki +//-------------------------------------------------------------- + +#ifndef FILE_SELECTOR_HPP +#define FILE_SELECTOR_HPP + +#include "F746_GUI.hpp" +#include "BitmapReader.hpp" +#include <algorithm> // sort() で使用 +#include <string> + +namespace Mikami +{ + class FileSelector + { + public: + FileSelector(uint8_t x0, uint8_t y0, int maxFiles, + int maxNameLength, SD_BitmapReader &reader); + + virtual ~FileSelector(); + + // ファイルの一覧表を作る.BMP ファイルが存在しない場合は false を返す + bool CreateTable(); + + // ファイルを選択する + bool Select(string &fileName); + + // ファイルの一覧の表示 + void DisplayFileList(bool sortEnable = true); + + // ファイルの一覧の消去 + void Erase(uint16_t x, uint16_t y, uint16_t width, uint16_t height, + uint32_t color = GuiBase::ENUM_BACK); + + private: + static const int MAX_LIST_PAGE_ = 6; // 1ページに表示するファイル数の最大値 + static const uint8_t W_H_ = 24; + static const uint8_t V_L_ = 36; + static const uint32_t BASE_COLOR_ = 0xFF80FFA0; + static const uint32_t TOUCHED_COLOR_ = 0xFF80FFFF; + const uint8_t X_, Y_; + const int MAX_FILES_; + const int MAX_NAME_LENGTH_; + + Array<string> fileNames_; + Array<Label *> fileNameLabels_; + ButtonGroup *rect_; + ButtonGroup next_; + Label pageLabel_; + LCD_DISCO_F746NG &lcd_; + SD_BitmapReader &sdReader_; + int page_; // 現在のページ,最初のページは 1 + int nOld_; // ページ内で以前選択したファイルのインデックス + int kOld_; // 以前選択したファイルのインデックス + int maxPage_; + int fileCount_; + + // 拡張子を削除したファイル名を取得 + string GetFileNameNoExt(int n); + + // コピー・コンストラクタとオブジェクトの代入演算子は使用禁止 + FileSelector(const FileSelector&); + FileSelector& operator=(const FileSelector&); + }; +} +#endif // FILE_SELECTOR_HPP +