Basic navigation system
This commit is contained in:
parent
b2c1d5eaa4
commit
a077fb1206
2 changed files with 116 additions and 10 deletions
112
src/interface.rs
Normal file
112
src/interface.rs
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
// Libraries
|
||||||
|
use crate::{board, manager};
|
||||||
|
use std::{io, process::exit};
|
||||||
|
|
||||||
|
// Structures
|
||||||
|
pub struct Interface {
|
||||||
|
manager: manager::Manager,
|
||||||
|
|
||||||
|
running: bool,
|
||||||
|
page: u32,
|
||||||
|
on: u32
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implementations
|
||||||
|
impl Interface {
|
||||||
|
pub fn init(manager: manager::Manager) -> Interface{
|
||||||
|
// Return result
|
||||||
|
return Interface {manager: manager, running: true, page: 0, on: 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn p_0(&mut self) {
|
||||||
|
// Showing options
|
||||||
|
println!(" - Tasky - ");
|
||||||
|
println!("1) Open Boards");
|
||||||
|
println!("2) Exit");
|
||||||
|
println!("Select option [1-2]: ");
|
||||||
|
|
||||||
|
// Listening for option
|
||||||
|
let mut user_input: String = String::new();
|
||||||
|
io::stdin().read_line(&mut user_input).expect("Failed to read line");
|
||||||
|
user_input = String::from(user_input.to_lowercase().trim());
|
||||||
|
println!("");
|
||||||
|
|
||||||
|
// Deciding what to do
|
||||||
|
if user_input == "1" {
|
||||||
|
self.page = 1;
|
||||||
|
} else if user_input == "2" {
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn p_1(&mut self) {
|
||||||
|
// Showing options
|
||||||
|
println!(" - Open Board - ");
|
||||||
|
println!("Select one of the following:");
|
||||||
|
for i in 0..self.manager.boards.len() {
|
||||||
|
println!("{}) {}", i+1, self.manager.boards[i].name);
|
||||||
|
}
|
||||||
|
println!("Select board [1-{}]: ", self.manager.boards.len());
|
||||||
|
|
||||||
|
|
||||||
|
// Selecting option
|
||||||
|
let mut user_input: String = String::new();
|
||||||
|
io::stdin().read_line(&mut user_input).expect("Failed to read line");
|
||||||
|
user_input = String::from(user_input.to_lowercase().trim());
|
||||||
|
println!("");
|
||||||
|
|
||||||
|
// Parsing option
|
||||||
|
self.on = user_input.parse::<u32>().unwrap() - 1;
|
||||||
|
self.page = 2;
|
||||||
|
}
|
||||||
|
fn p_2(&mut self) {
|
||||||
|
// Active board
|
||||||
|
let board: &board::TaskBoard = &self.manager.boards[self.on as usize];
|
||||||
|
|
||||||
|
// Title
|
||||||
|
println!(" - {} - ", board.name);
|
||||||
|
|
||||||
|
// Going through cards
|
||||||
|
for card in &board.cards {
|
||||||
|
println!("{} ({})", card.name, card.desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Presenting options
|
||||||
|
println!("\n1) Edit Card");
|
||||||
|
println!("2) Delete Card");
|
||||||
|
println!("3) Delete Board");
|
||||||
|
println!("4) Exit");
|
||||||
|
|
||||||
|
// Selection option
|
||||||
|
let mut user_input: String = String::new();
|
||||||
|
io::stdin().read_line(&mut user_input).expect("Failed to read lines");
|
||||||
|
user_input = String::from(user_input.to_lowercase().trim());
|
||||||
|
|
||||||
|
// What to do
|
||||||
|
if user_input == "1"{
|
||||||
|
|
||||||
|
} else if user_input == "2"{
|
||||||
|
|
||||||
|
} else if user_input == "3"{
|
||||||
|
|
||||||
|
} else if user_input == "4"{
|
||||||
|
self.page = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn error(msg: &str){
|
||||||
|
println!("INTERFACE ERROR: {}", msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run(&mut self) {
|
||||||
|
while self.running {
|
||||||
|
|
||||||
|
match self.page {
|
||||||
|
0 => self.p_0(),
|
||||||
|
1 => self.p_1(),
|
||||||
|
2 => self.p_2(),
|
||||||
|
_ => Interface::error("Invalid Page")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
src/main.rs
14
src/main.rs
|
@ -1,4 +1,5 @@
|
||||||
// Libraries
|
// Libraries
|
||||||
|
mod interface;
|
||||||
mod manager;
|
mod manager;
|
||||||
mod data;
|
mod data;
|
||||||
mod card;
|
mod card;
|
||||||
|
@ -12,14 +13,7 @@ fn main() {
|
||||||
let mut managed: manager::Manager = manager::Manager::init();
|
let mut managed: manager::Manager = manager::Manager::init();
|
||||||
managed.parse(String::from("data/user.json"));
|
managed.parse(String::from("data/user.json"));
|
||||||
|
|
||||||
// Printing out the boards
|
// Passing this through to the interface
|
||||||
println!("-- PROJECT --");
|
let mut int: interface::Interface = interface::Interface::init(managed);
|
||||||
println!("You have {} boards.", managed.boards.len());
|
int.run();
|
||||||
|
|
||||||
for board in managed.boards {
|
|
||||||
println!("\n-- {} --", board.name);
|
|
||||||
for card in board.cards {
|
|
||||||
println!("\t- {} ({})", card.name, card.desc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in a new issue