Created Navigation Systems

This commit is contained in:
Maddox Werts 2024-08-27 01:11:56 -04:00
parent 9836198e38
commit 1a536861c3
3 changed files with 109 additions and 35 deletions

View file

@ -1,5 +1,6 @@
// Libraries // Libraries
#include <furi.h> #include <furi.h>
#include "ui.h" #include "ui.h"
// Entry Point // Entry Point
@ -13,8 +14,14 @@ int32_t flippypass_app(void* p) {
// Drawwing the UI // Drawwing the UI
while(ui->running) { while(ui->running) {
// Do we want to quit? // Do we want to quit?
if (ui->input == Back) { if (ui->press_used
ui->running = false; && ui->input == Back) {
if(ui->page == 0) {
ui->running = false;
} else {
ui->press_used = false;
ui->page = 0;
}
} }
// Updating canvas // Updating canvas

View file

@ -8,8 +8,12 @@ uiManager* ui_create() {
// Defining basic variables // Defining basic variables
result->running = true; result->running = true;
result->selection = 0;
result->page = 0; result->page = 0;
result->press_avail = true;
result->press_used = false;
// Creating a GUI // Creating a GUI
result->gui = furi_record_open(RECORD_GUI); result->gui = furi_record_open(RECORD_GUI);
@ -28,61 +32,117 @@ void ui_input(InputEvent* event, void* ctx) {
uiManager* manager = (uiManager*)ctx; uiManager* manager = (uiManager*)ctx;
// Getting input // Getting input
switch(event->key) { if (event->type == InputTypePress
case InputKeyUp: && manager->press_avail) {
manager->input = Up; manager->press_avail = false;
break; manager->press_used = true;
case InputKeyDown:
manager->input = Down; switch(event->key) {
break; case InputKeyUp:
case InputKeyLeft: manager->input = Up;
manager->input = Left; break;
break; case InputKeyDown:
case InputKeyRight: manager->input = Down;
manager->input = Right; break;
break; case InputKeyLeft:
case InputKeyOk: manager->input = Left;
manager->input = Ok; break;
break; case InputKeyRight:
case InputKeyBack: manager->input = Right;
manager->input = Back; break;
break; case InputKeyOk:
default: manager->input = Ok;
break; break;
case InputKeyBack:
manager->input = Back;
break;
default:
break;
}
} else if (event->type == InputTypeRelease) {
manager->press_avail = true;
} }
} }
void ui_draw(Canvas* canvas, void* ctx) { void ui_draw(Canvas* canvas, void* ctx) {
// Showing the Main Menu
ui_p_mainmenu(canvas);
// Context into Result // Context into Result
uiManager* manager = (uiManager*)ctx; uiManager* manager = (uiManager*)ctx;
// Switching page // Switching page
switch(manager->page){ switch(manager->page){
case 0: case 0: // Main Menu
ui_p_mainmenu(canvas); ui_p_mainmenu(canvas, manager);
break;
case 1: // About Me
ui_p_about(canvas);
break; break;
} }
} }
void ui_p_mainmenu(Canvas* canvas) { void ui_p_mainmenu(Canvas* canvas, uiManager* manager) {
// Menu Options
canvas_set_font(canvas, FontPrimary); canvas_set_font(canvas, FontPrimary);
canvas_draw_str(canvas, 2, 11, "FlippyPass"); canvas_draw_str(canvas, 2, 11, "FlippyPass");
//canvas_draw_icon(canvas, 15, 16, &I_ButtonRight_4x7); canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 22, 25, "View Passwords");
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 22, 23, "View Passwords"); canvas_draw_str(canvas, 22, 35, "View Archive");
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 22, 41, "Create Password"); canvas_draw_str(canvas, 22, 45, "Create Password");
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 22, 51, "About"); canvas_draw_str(canvas, 22, 55, "About");
// Cursor
if(manager->press_used) {
// We used a press
manager->press_used = false;
// Reacting
switch (manager->input){
case Up:
manager->selection--;
break;
case Down:
manager->selection++;
break;
case Ok:
switch(manager->selection) {
case 3: // About Me
manager->page = 1;
break;
default:
break;
}
break;
default:
break;
}
// Min & Max
if (manager->selection > 3) {
manager->selection = 0;
} else if (manager->selection < 0) {
manager->selection = 3;
}
}
// Placing the spot at the cursor
canvas_draw_box(canvas, 15, 20 + (manager->selection * 10), 2, 2);
}
void ui_p_about(Canvas* canvas) {
canvas_set_font(canvas, FontPrimary);
canvas_draw_str(canvas, 2, 11, "FlippyPass");
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 22, 32, "View Archive"); canvas_draw_str(canvas, 3, 23, "A really easy to use Password");
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 3, 32, "Manager for the Flipper-Zero.");
} }
void ui_delete(uiManager* manager) { void ui_delete(uiManager* manager) {

View file

@ -5,6 +5,8 @@
// Libraries // Libraries
#include <furi.h> #include <furi.h>
#include <gui/gui.h> #include <gui/gui.h>
#include <gui/icon.h>
#include "app.h" #include "app.h"
// Structures // Structures
@ -21,8 +23,12 @@ typedef struct {
Back Back
} input; } input;
int selection;
int page; int page;
bool running; bool running;
bool press_used;
bool press_avail;
} uiManager; } uiManager;
// Constructors // Constructors
@ -32,7 +38,8 @@ uiManager* ui_create();
void ui_input(InputEvent* event, void* ctx); void ui_input(InputEvent* event, void* ctx);
void ui_draw(Canvas* canvas, void* ctx); void ui_draw(Canvas* canvas, void* ctx);
void ui_p_mainmenu(Canvas* canvas); void ui_p_mainmenu(Canvas* canvas, uiManager* manager);
void ui_p_about(Canvas* canvas);
void ui_delete(uiManager* manager); void ui_delete(uiManager* manager);