[FL-1542], [FL-1603] Generate random name (#602)
* Lib: add random name library * Text_input: add default text clearing * All: rework all applications with new text_input API * Nfc: fix removing dev file on save_name scene enter * Lib: move all free radicals to toolbox and update API usage. Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
#include <callback-connector.h>
|
||||
#include <m-string.h>
|
||||
#include <file-worker-cpp.h>
|
||||
#include <path.h>
|
||||
#include <lib/toolbox/path.h>
|
||||
|
||||
const char* iButtonApp::app_folder = "/any/ibutton";
|
||||
const char* iButtonApp::app_extension = ".ibtn";
|
||||
@@ -40,9 +40,6 @@ iButtonApp::iButtonApp()
|
||||
: notification{"notification"} {
|
||||
api_hal_power_insomnia_enter();
|
||||
key_worker = new KeyWorker(&ibutton_gpio);
|
||||
|
||||
// we need random
|
||||
srand(DWT->CYCCNT);
|
||||
}
|
||||
|
||||
iButtonApp::~iButtonApp() {
|
||||
@@ -186,38 +183,6 @@ uint8_t iButtonApp::get_text_store_size() {
|
||||
return text_store_size;
|
||||
}
|
||||
|
||||
void iButtonApp::generate_random_name(char* name, uint8_t max_name_size) {
|
||||
const uint8_t prefix_size = 9;
|
||||
const char* prefix[prefix_size] = {
|
||||
"ancient",
|
||||
"hollow",
|
||||
"strange",
|
||||
"disappeared",
|
||||
"unknown",
|
||||
"unthinkable",
|
||||
"unnamable",
|
||||
"nameless",
|
||||
"my",
|
||||
};
|
||||
|
||||
const uint8_t suffix_size = 8;
|
||||
const char* suffix[suffix_size] = {
|
||||
"door",
|
||||
"entrance",
|
||||
"doorway",
|
||||
"entry",
|
||||
"portal",
|
||||
"entree",
|
||||
"opening",
|
||||
"crack",
|
||||
};
|
||||
|
||||
sniprintf(
|
||||
name, max_name_size, "%s_%s", prefix[rand() % prefix_size], suffix[rand() % suffix_size]);
|
||||
// to upper
|
||||
name[0] = name[0] - 0x20;
|
||||
}
|
||||
|
||||
// file managment
|
||||
bool iButtonApp::save_key(const char* key_name) {
|
||||
// Create ibutton directory if necessary
|
||||
|
@@ -90,8 +90,6 @@ public:
|
||||
char* get_file_name();
|
||||
uint8_t get_file_name_size();
|
||||
|
||||
void generate_random_name(char* name, uint8_t max_name_size);
|
||||
|
||||
bool save_key(const char* key_name);
|
||||
bool load_key();
|
||||
bool load_key(const char* key_name);
|
||||
|
@@ -2,7 +2,7 @@
|
||||
#include <api-hal.h>
|
||||
#include <stdarg.h>
|
||||
#include <cli/cli.h>
|
||||
#include <args.h>
|
||||
#include <lib/toolbox/args.h>
|
||||
|
||||
#include "helpers/key-info.h"
|
||||
#include "helpers/key-worker.h"
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "../ibutton-event.h"
|
||||
#include "../ibutton-key.h"
|
||||
#include <callback-connector.h>
|
||||
#include <lib/toolbox/random_name.h>
|
||||
|
||||
void iButtonSceneSaveName::on_enter(iButtonApp* app) {
|
||||
iButtonAppViewManager* view_manager = app->get_view_manager();
|
||||
@@ -12,16 +13,17 @@ void iButtonSceneSaveName::on_enter(iButtonApp* app) {
|
||||
|
||||
iButtonKey* key = app->get_key();
|
||||
const char* key_name = key->get_name();
|
||||
bool key_name_empty = !strcmp(key_name, "");
|
||||
|
||||
if(strcmp(key_name, "") == 0) {
|
||||
app->generate_random_name(app->get_text_store(), app->get_text_store_size());
|
||||
if(key_name_empty) {
|
||||
set_random_name(app->get_text_store(), app->get_text_store_size());
|
||||
} else {
|
||||
app->set_text_store("%s", key_name);
|
||||
}
|
||||
|
||||
text_input_set_header_text(text_input, "Name the key");
|
||||
text_input_set_result_callback(
|
||||
text_input, callback, app, app->get_text_store(), IBUTTON_KEY_NAME_SIZE);
|
||||
text_input, callback, app, app->get_text_store(), IBUTTON_KEY_NAME_SIZE, key_name_empty);
|
||||
|
||||
view_manager->switch_to(iButtonAppViewManager::Type::iButtonAppViewTextInput);
|
||||
}
|
||||
@@ -47,7 +49,7 @@ bool iButtonSceneSaveName::on_event(iButtonApp* app, iButtonEvent* event) {
|
||||
void iButtonSceneSaveName::on_exit(iButtonApp* app) {
|
||||
TextInput* text_input = app->get_view_manager()->get_text_input();
|
||||
text_input_set_header_text(text_input, "");
|
||||
text_input_set_result_callback(text_input, NULL, NULL, NULL, 0);
|
||||
text_input_set_result_callback(text_input, NULL, NULL, NULL, 0, false);
|
||||
}
|
||||
|
||||
void iButtonSceneSaveName::text_input_callback(void* context) {
|
||||
|
Reference in New Issue
Block a user