Skip to content

Commit fbbbd62

Browse files
committed
use SD template internal
1 parent e8edfb6 commit fbbbd62

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

examples/SDCard/SDCard/SDCard.ino

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ using namespace Menu;
1818

1919
//function to handle file select
2020
// declared here and implemented bellow because we need
21-
// to give it as event handler for `sdFolder`
22-
// and we also need to refer to `sdFolder` inside the function
21+
// to give it as event handler for `sdFolderMenu`
22+
// and we also need to refer to `sdFolderMenu` inside the function
2323
result sdFolder(eventMask event, navNode& nav, prompt &item);
2424

25-
SDMenu<decltype(SD)> sdFolderMenu(SD,"SD Card","/",sdFolder,enterEvent);
25+
SDMenu sdFolderMenu("SD Card","/",sdFolder,enterEvent);
2626

2727
//implementing the handler here after sdFolder is defined...
2828
result sdFolder(eventMask event, navNode& nav, prompt &item) {
2929
// switch(event) {//for now events are filtered only for enter, so we dont need this checking
3030
// case enterCmd:
31-
if (nav.root->navFocus==&sdFolderMenu) {
31+
if (nav.root->navFocus==(navTarget*)&sdFolderMenu) {
3232
Serial.println();
3333
Serial.print("selected file:");
3434
Serial.println(sdFolderMenu.selectedFile);

src/plugin/SDMenu.h

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ using namespace Menu;
2121
// not the mennu presents it self as the menu and as the options
2222
// ands does all drawing navigation.
2323
template<typename SDC>
24-
class SDMenu:public menuNode {
24+
class SDMenuT:public menuNode {
2525
public:
2626
SDC& SD;
2727
//idx_t selIdx=0;//preserve selection context, because we preserve folder ctx too
@@ -30,8 +30,8 @@ using namespace Menu;
3030
String folderName="/";//set this to other folder when needed
3131
String selectedFile="";
3232
// using menuNode::menuNode;//do not use default constructors as we wont allocate for data
33-
virtual ~SDMenu() {}
34-
SDMenu(SDC& sd,constText* title,const char* at,Menu::action act=doNothing,Menu::eventMask mask=noEvent)
33+
virtual ~SDMenuT() {}
34+
SDMenuT(SDC& sd,constText* title,const char* at,Menu::action act=doNothing,Menu::eventMask mask=noEvent)
3535
:menuNode(title,0,NULL,act,mask,
3636
wrapStyle,(systemStyles)(_menuData|_canNav))
3737
,SD(sd)
@@ -53,18 +53,18 @@ using namespace Menu;
5353
};
5454

5555
template<typename SDC>
56-
result SDMenu<SDC>::sysHandler(SYS_FUNC_PARAMS) {
56+
result SDMenuT<SDC>::sysHandler(SYS_FUNC_PARAMS) {
5757
switch(event) {
5858
case enterEvent:
5959
if (nav.root->navFocus!=nav.target) {//on sd card entry
60-
nav.sel=((SDMenu*)(&item))->entryIdx(((SDMenu*)(&item))->selectedFile);//restore context
60+
nav.sel=((SDMenuT<SDC>*)(&item))->entryIdx(((SDMenuT<SDC>*)(&item))->selectedFile);//restore context
6161
}
6262
}
6363
return proceed;
6464
}
6565

6666
template<typename SDC>
67-
void SDMenu<SDC>::doNav(navNode& nav,navCmd cmd) {
67+
void SDMenuT<SDC>::doNav(navNode& nav,navCmd cmd) {
6868
switch(cmd.cmd) {
6969
case enterCmd: {
7070
String selFile=entry(nav.sel);
@@ -100,7 +100,7 @@ using namespace Menu;
100100
}
101101

102102
template<typename SDC>
103-
idx_t SDMenu<SDC>::count() {
103+
idx_t SDMenuT<SDC>::count() {
104104
File dir=SD.open(folderName.c_str());
105105
int cnt=0;
106106
while(true) {
@@ -118,7 +118,7 @@ using namespace Menu;
118118
}
119119

120120
template<typename SDC>
121-
idx_t SDMenu<SDC>::entryIdx(String name) {
121+
idx_t SDMenuT<SDC>::entryIdx(String name) {
122122
File dir=SD.open(folderName.c_str());
123123
int cnt=0;
124124
while(true) {
@@ -140,7 +140,7 @@ using namespace Menu;
140140
}
141141

142142
template<typename SDC>
143-
String SDMenu<SDC>::entry(idx_t idx) {
143+
String SDMenuT<SDC>::entry(idx_t idx) {
144144
File dir=SD.open(folderName.c_str());
145145
idx_t cnt=0;
146146
while(true) {
@@ -162,7 +162,7 @@ using namespace Menu;
162162
}
163163

164164
template<typename SDC>
165-
Used SDMenu<SDC>::printTo(navRoot &root,bool sel,menuOut& out, idx_t idx,idx_t len,idx_t pn) {
165+
Used SDMenuT<SDC>::printTo(navRoot &root,bool sel,menuOut& out, idx_t idx,idx_t len,idx_t pn) {
166166
((menuNodeShadow*)shadow)->sz=count();
167167
if(root.navFocus!=this) {//show given title or filename if selected
168168
return selectedFile==""?
@@ -176,4 +176,10 @@ using namespace Menu;
176176
return len;
177177
}
178178

179+
class SDMenu:public SDMenuT<decltype(SD)> {
180+
public:
181+
SDMenu(constText* title,const char* at,Menu::action act=doNothing,Menu::eventMask mask=noEvent)
182+
:SDMenuT(SD,title,at,act,mask) {}
183+
};
184+
179185
#endif

0 commit comments

Comments
 (0)