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
|
||||
mod interface;
|
||||
mod manager;
|
||||
mod data;
|
||||
mod card;
|
||||
|
@ -12,14 +13,7 @@ fn main() {
|
|||
let mut managed: manager::Manager = manager::Manager::init();
|
||||
managed.parse(String::from("data/user.json"));
|
||||
|
||||
// Printing out the boards
|
||||
println!("-- PROJECT --");
|
||||
println!("You have {} boards.", managed.boards.len());
|
||||
|
||||
for board in managed.boards {
|
||||
println!("\n-- {} --", board.name);
|
||||
for card in board.cards {
|
||||
println!("\t- {} ({})", card.name, card.desc);
|
||||
}
|
||||
}
|
||||
// Passing this through to the interface
|
||||
let mut int: interface::Interface = interface::Interface::init(managed);
|
||||
int.run();
|
||||
}
|
Loading…
Reference in a new issue