Просмотр исходного кода

[FL-1371] Lfrfid app: add manufacturers to "Add manually" scene (#577)

* Lfrfid app: add manufacturers to "Add manually" scene
* Lfrfid app: fix submenu name size
SG 4 лет назад
Родитель
Сommit
e31999b116

+ 16 - 0
applications/lfrfid/helpers/key-info.cpp

@@ -17,6 +17,22 @@ const char* lfrfid_key_get_type_string(LfrfidKeyType type) {
     return "Unknown";
 }
 
+const char* lfrfid_key_get_manufacturer_string(LfrfidKeyType type) {
+    switch(type) {
+    case LfrfidKeyType::KeyEM4100:
+        return "Em-Marine";
+        break;
+    case LfrfidKeyType::KeyH10301:
+        return "HID";
+        break;
+    case LfrfidKeyType::KeyI40134:
+        return "Indala";
+        break;
+    }
+
+    return "Unknown";
+}
+
 bool lfrfid_key_get_string_type(const char* string, LfrfidKeyType* type) {
     bool result = true;
 

+ 1 - 0
applications/lfrfid/helpers/key-info.h

@@ -11,5 +11,6 @@ enum class LfrfidKeyType : uint8_t {
 };
 
 const char* lfrfid_key_get_type_string(LfrfidKeyType type);
+const char* lfrfid_key_get_manufacturer_string(LfrfidKeyType type);
 bool lfrfid_key_get_string_type(const char* string, LfrfidKeyType* type);
 uint8_t lfrfid_key_get_type_data_count(LfrfidKeyType type);

+ 10 - 3
applications/lfrfid/scene/lfrfid-app-scene-save-type.cpp

@@ -3,9 +3,13 @@
 void LfRfidAppSceneSaveType::on_enter(LfRfidApp* app, bool need_restore) {
     auto submenu = app->view_controller.get<SubmenuVM>();
 
-    for(uint8_t i = 0; i <= static_cast<uint8_t>(LfrfidKeyType::KeyI40134); i++) {
-        submenu->add_item(
-            lfrfid_key_get_type_string(static_cast<LfrfidKeyType>(i)), i, submenu_callback, app);
+    for(uint8_t i = 0; i <= keys_count; i++) {
+        string_init_printf(
+            submenu_name[i],
+            "%s %s",
+            lfrfid_key_get_manufacturer_string(static_cast<LfrfidKeyType>(i)),
+            lfrfid_key_get_type_string(static_cast<LfrfidKeyType>(i)));
+        submenu->add_item(string_get_cstr(submenu_name[i]), i, submenu_callback, app);
     }
 
     if(need_restore) {
@@ -33,6 +37,9 @@ bool LfRfidAppSceneSaveType::on_event(LfRfidApp* app, LfRfidApp::Event* event) {
 
 void LfRfidAppSceneSaveType::on_exit(LfRfidApp* app) {
     app->view_controller.get<SubmenuVM>()->clean();
+    for(uint8_t i = 0; i <= keys_count; i++) {
+        string_clear(submenu_name[i]);
+    }
 }
 
 void LfRfidAppSceneSaveType::submenu_callback(void* context, uint32_t index) {

+ 2 - 0
applications/lfrfid/scene/lfrfid-app-scene-save-type.h

@@ -10,4 +10,6 @@ public:
 private:
     static void submenu_callback(void* context, uint32_t index);
     uint32_t submenu_item_selected = 0;
+    static const uint8_t keys_count = static_cast<uint8_t>(LfrfidKeyType::KeyI40134);
+    string_t submenu_name[keys_count + 1];
 };