diff --git a/project/backend/manager.c b/project/backend/manager.c index 4f42d8d..bed67b6 100644 --- a/project/backend/manager.c +++ b/project/backend/manager.c @@ -49,7 +49,35 @@ Manager* manager_create() { } // Functions +void manager_switchpage(Manager* manager, int dir) { + // Switching page + manager->page += dir; + + // Avoiding empty pages + if (manager->page < 0) {manager->page = 0;} + + // Loading names + manager_loadnames(manager, manager->page); +} void manager_loadnames(Manager* manager, int page){ + // DEBUG + FURI_LOG_D(TAG, "Freeing previous names"); + + // Freeing all prior names + for (int i = 0; i < 4; i++) { + // Checking if this name exists: + if (manager->names[i] != NULL) { + // DEBUG + FURI_LOG_D(TAG, "Freed %s", manager->names[i]); + + // Freeing name + free(manager->names[i]); + } else { + // DEBUG + FURI_LOG_E(TAG, "Name %i does not exist!", i); + } + } + // Loading the next four passwords char* data = store_load("Data"); @@ -57,6 +85,9 @@ void manager_loadnames(Manager* manager, int page){ int count = 0; char** split = split_string(data, '|', &count); + // Freeing data + free(data); + // Temporary variables int i_pass = 0; int i_name = 0; @@ -68,6 +99,9 @@ void manager_loadnames(Manager* manager, int page){ // It's another password! i_pass++; + // DEBUG + FURI_LOG_I(TAG, "(%i) Scanning password %s...", i_pass, split[i]); + // Is it on our page? if (i_pass > page * 4 && i_pass <= (page * 4) + 4) { @@ -78,14 +112,16 @@ void manager_loadnames(Manager* manager, int page){ i_name++; // DEBUG - FURI_LOG_I(TAG, "Added %s to names", split[i]); + FURI_LOG_D(TAG, "Added %s to names", split[i]); + + // Too big? + if (i_name > 3) {break;} } } } // Cleanup free(split); - free(data); } void manager_delete(Manager* manager) { free(manager->names); diff --git a/project/backend/manager.h b/project/backend/manager.h index 15792ba..a4f5cc8 100644 --- a/project/backend/manager.h +++ b/project/backend/manager.h @@ -19,6 +19,7 @@ typedef struct { Manager* manager_create(); // Functions +void manager_switchpage(Manager* manager, int dir); void manager_loadnames(Manager* manager, int page); void manager_delete(Manager* manager);