Blynk example
Dependents: Blynk_Example_WIZwiki-W7500
Fork of Blynk by
WidgetTable.h@14:76d8fd871a4d, 2017-06-20 (annotated)
- Committer:
- Volodymyr Shymanskyy
- Date:
- Tue Jun 20 00:20:01 2017 +0300
- Revision:
- 14:76d8fd871a4d
- Parent:
- 9:7369ec77a3ea
Update version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Volodymyr Shymanskyy |
7:8879692d4e6c | 1 | /** |
Volodymyr Shymanskyy |
7:8879692d4e6c | 2 | * @file WidgetTable.h |
Volodymyr Shymanskyy |
7:8879692d4e6c | 3 | * @author Volodymyr Shymanskyy |
Volodymyr Shymanskyy |
7:8879692d4e6c | 4 | * @license This project is released under the MIT License (MIT) |
Volodymyr Shymanskyy |
7:8879692d4e6c | 5 | * @copyright Copyright (c) 2015 Volodymyr Shymanskyy |
Volodymyr Shymanskyy |
7:8879692d4e6c | 6 | * @date Sep 2016 |
Volodymyr Shymanskyy |
7:8879692d4e6c | 7 | * @brief |
Volodymyr Shymanskyy |
7:8879692d4e6c | 8 | * |
Volodymyr Shymanskyy |
7:8879692d4e6c | 9 | */ |
Volodymyr Shymanskyy |
7:8879692d4e6c | 10 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 11 | #ifndef WidgetTable_h |
Volodymyr Shymanskyy |
7:8879692d4e6c | 12 | #define WidgetTable_h |
Volodymyr Shymanskyy |
7:8879692d4e6c | 13 | |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 14 | #include <Blynk/BlynkWidgetBase.h> |
Volodymyr Shymanskyy |
7:8879692d4e6c | 15 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 16 | class WidgetTable |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 17 | : public BlynkWidgetBase |
Volodymyr Shymanskyy |
7:8879692d4e6c | 18 | { |
Volodymyr Shymanskyy |
7:8879692d4e6c | 19 | public: |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 20 | typedef void (*ItemSelectChange)(int index, bool selected); |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 21 | typedef void (*ItemOrderChange)(int indexFrom, int indexTo); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 22 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 23 | public: |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 24 | WidgetTable(uint8_t vPin = -1) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 25 | : BlynkWidgetBase(vPin) |
Volodymyr Shymanskyy |
7:8879692d4e6c | 26 | , mOnOrderChange(NULL) |
Volodymyr Shymanskyy |
7:8879692d4e6c | 27 | , mOnSelectChange(NULL) |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 28 | {} |
Volodymyr Shymanskyy |
7:8879692d4e6c | 29 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 30 | void onWrite(BlynkReq BLYNK_UNUSED &request, const BlynkParam& param) { |
Volodymyr Shymanskyy |
7:8879692d4e6c | 31 | if (mOnOrderChange && 0 == strcmp(param[0].asStr(), "order")) { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 32 | mOnOrderChange(param[1].asInt(), param[2].asInt()); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 33 | } else if (mOnSelectChange && 0 == strcmp(param[0].asStr(), "select")) { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 34 | mOnSelectChange(param[1].asInt(), true); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 35 | } else if (mOnSelectChange && 0 == strcmp(param[0].asStr(), "deselect")) { |
Volodymyr Shymanskyy |
9:7369ec77a3ea | 36 | mOnSelectChange(param[1].asInt(), false); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 37 | } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 38 | } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 39 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 40 | void onOrderChange(ItemOrderChange cbk) { mOnOrderChange = cbk; } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 41 | void onSelectChange(ItemSelectChange cbk) { mOnSelectChange = cbk; } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 42 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 43 | void clear() { |
Volodymyr Shymanskyy |
7:8879692d4e6c | 44 | Blynk.virtualWrite(mPin, "clr"); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 45 | } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 46 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 47 | template <typename T1, typename T2> |
Volodymyr Shymanskyy |
7:8879692d4e6c | 48 | void addRow(int index, const T1& name, const T2& value) { |
Volodymyr Shymanskyy |
7:8879692d4e6c | 49 | Blynk.virtualWrite(mPin, "add", index, name, value); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 50 | } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 51 | |
Volodymyr Shymanskyy |
14:76d8fd871a4d | 52 | template <typename T1, typename T2> |
Volodymyr Shymanskyy |
14:76d8fd871a4d | 53 | void updateRow(int index, const T1& name, const T2& value) { |
Volodymyr Shymanskyy |
14:76d8fd871a4d | 54 | Blynk.virtualWrite(mPin, "update", index, name, value); |
Volodymyr Shymanskyy |
14:76d8fd871a4d | 55 | } |
Volodymyr Shymanskyy |
14:76d8fd871a4d | 56 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 57 | void pickRow(int index) { |
Volodymyr Shymanskyy |
7:8879692d4e6c | 58 | Blynk.virtualWrite(mPin, "pick", index); |
Volodymyr Shymanskyy |
7:8879692d4e6c | 59 | } |
Volodymyr Shymanskyy |
7:8879692d4e6c | 60 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 61 | private: |
Volodymyr Shymanskyy |
7:8879692d4e6c | 62 | ItemOrderChange mOnOrderChange; |
Volodymyr Shymanskyy |
7:8879692d4e6c | 63 | ItemSelectChange mOnSelectChange; |
Volodymyr Shymanskyy |
7:8879692d4e6c | 64 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 65 | }; |
Volodymyr Shymanskyy |
7:8879692d4e6c | 66 | |
Volodymyr Shymanskyy |
7:8879692d4e6c | 67 | #endif |