|
| 1 | +/* -*- C++ -*- */ |
| 2 | + |
| 3 | +//for using I2C LiquidCrystal Library provided by |
| 4 | +// https://gitlab.com/tandembyte/LCD_I2C |
| 5 | + |
| 6 | +#ifndef RSITE_ARDUINO_MENU_LIQUIDCRYSTALOUT |
| 7 | + #define RSITE_ARDUINO_MENU_LIQUIDCRYSTALOUT |
| 8 | + #include "../menuDefs.h" |
| 9 | + #include <LiquidCrystal_I2C.h> |
| 10 | + |
| 11 | + namespace Menu { |
| 12 | + |
| 13 | + class liquidCrystalOut:public cursorOut { |
| 14 | + public: |
| 15 | + LiquidCrystal_I2C& device; |
| 16 | + inline liquidCrystalOut(LiquidCrystal_I2C& o,idx_t *t,panelsList &p,menuOut::styles s=minimalRedraw) |
| 17 | + :cursorOut(t,p,s),device(o) {} |
| 18 | + size_t write(uint8_t ch) override {return device.write(ch);} |
| 19 | + void clear() override { |
| 20 | + device.clear(); |
| 21 | + panels.reset(); |
| 22 | + } |
| 23 | + void setCursor(idx_t x,idx_t y,idx_t panelNr=0) override { |
| 24 | + const panel p=panels[panelNr]; |
| 25 | + device.setCursor(p.x+x,p.y+y); |
| 26 | + } |
| 27 | + idx_t startCursor(navRoot& root,idx_t x,idx_t y,bool charEdit,idx_t panelNr=0) override {return 0;} |
| 28 | + idx_t endCursor(navRoot& root,idx_t x,idx_t y,bool charEdit,idx_t panelNr=0) override {return 0;} |
| 29 | + idx_t editCursor(navRoot& root,idx_t x,idx_t y,bool editing,bool charEdit,idx_t panelNr=0) override { |
| 30 | + //text editor cursor |
| 31 | + device.noBlink(); |
| 32 | + device.noCursor(); |
| 33 | + if (editing) { |
| 34 | + device.setCursor(x, y); |
| 35 | + if (charEdit) device.cursor(); |
| 36 | + else device.blink(); |
| 37 | + } |
| 38 | + return 0; |
| 39 | + } |
| 40 | + }; |
| 41 | + |
| 42 | + }//namespace Menu |
| 43 | +#endif |
0 commit comments