@@ -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