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

View file

@ -8,8 +8,12 @@ uiManager* ui_create() {
// Defining basic variables
result->running = true;
result->selection = 0;
result->page = 0;
result->press_avail = true;
result->press_used = false;
// Creating a GUI
result->gui = furi_record_open(RECORD_GUI);
@ -28,61 +32,117 @@ void ui_input(InputEvent* event, void* ctx) {
uiManager* manager = (uiManager*)ctx;
// Getting input
switch(event->key) {
case InputKeyUp:
manager->input = Up;
break;
case InputKeyDown:
manager->input = Down;
break;
case InputKeyLeft:
manager->input = Left;
break;
case InputKeyRight:
manager->input = Right;
break;
case InputKeyOk:
manager->input = Ok;
break;
case InputKeyBack:
manager->input = Back;
break;
default:
break;
if (event->type == InputTypePress
&& manager->press_avail) {
manager->press_avail = false;
manager->press_used = true;
switch(event->key) {
case InputKeyUp:
manager->input = Up;
break;
case InputKeyDown:
manager->input = Down;
break;
case InputKeyLeft:
manager->input = Left;
break;
case InputKeyRight:
manager->input = Right;
break;
case InputKeyOk:
manager->input = Ok;
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) {
// Showing the Main Menu
ui_p_mainmenu(canvas);
// Context into Result
uiManager* manager = (uiManager*)ctx;
// Switching page
switch(manager->page){
case 0:
ui_p_mainmenu(canvas);
case 0: // Main Menu
ui_p_mainmenu(canvas, manager);
break;
case 1: // About Me
ui_p_about(canvas);
break;
}
}
void ui_p_mainmenu(Canvas* canvas) {
void ui_p_mainmenu(Canvas* canvas, uiManager* manager) {
// Menu Options
canvas_set_font(canvas, FontPrimary);
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_draw_str(canvas, 22, 23, "View Passwords");
canvas_draw_str(canvas, 22, 35, "View Archive");
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_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_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) {

View file

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