Added deleting Boards and Cards

This commit is contained in:
Maddox Werts 2024-06-23 14:21:06 -04:00
parent 4dde4f1596
commit e580dc02dc

View file

@ -8,6 +8,7 @@ pub struct Interface<'a> {
pub running: bool,
page: u32,
mode: u32,
on: u32
}
@ -15,7 +16,7 @@ pub struct Interface<'a> {
impl<'a> Interface<'a> {
pub fn init(manager: &'a mut manager::Manager) -> Interface<'a>{
// Return result
return Interface {manager: manager, running: true, page: 0, on: 0};
return Interface {manager: manager, running: true, page: 0, mode: 0, on: 0};
}
fn p_0(&mut self) {
@ -23,7 +24,7 @@ impl<'a> Interface<'a> {
println!(" - Tasky - ");
println!("1) Open Boards");
println!("2) Exit");
println!("Select option [1-2]: ");
println!("\nSelect option [1-2]: ");
// Listening for option
let mut user_input: String = String::new();
@ -41,11 +42,10 @@ impl<'a> Interface<'a> {
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());
println!("\nSelect board [1-{}]: ", self.manager.boards.len());
// Selecting option
@ -63,11 +63,11 @@ impl<'a> Interface<'a> {
let board: &board::TaskBoard = &self.manager.boards[self.on as usize];
// Title
println!(" - {} - ", board.name);
println!(" - {} - \n", board.name);
// Going through cards
for card in &board.cards {
println!("{} ({})", card.name, card.desc);
println!("- {} ({})", card.name, card.desc);
}
// Presenting options
@ -75,24 +75,103 @@ impl<'a> Interface<'a> {
println!("2) Delete Card");
println!("3) Delete Board");
println!("4) Exit");
println!("\nSelect Option [1-4]: ");
// 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());
println!("");
// What to do
if user_input == "1"{
} else if user_input == "2"{
self.mode = 0;
self.page = 4;
} else if user_input == "3"{
self.mode = 1;
self.page = 4;
} else if user_input == "4"{
self.page = 0;
}
}
fn p_4(&mut self){
// Which title do we use
let title: String = String::from(match self.mode {
0 => "Card",
1 => "Board",
_ => "INVALID MODE"
});
// Printing out the title
println!(" - Delete {} - ", title);
// Active board
let _active: &board::TaskBoard = &self.manager.boards[self.on as usize];
// Branching
if self.mode == 0 {
// Presenting all cards
for i in 0.._active.cards.len() {
println!("{}) {}", i+1, _active.cards[i].name);
}
// Displaying prompt
println!("\nSelect option [1-{}]: ", _active.cards.len());
// Getting user input
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());
// Parse user input into a usize
let card_index: usize = user_input.parse().unwrap();
// Reset user input
user_input = String::new();
// Confirming
println!("\nAre you sure?\nSelect option [y/n]: ");
io::stdin().read_line(&mut user_input).expect("Failed to read line");
user_input = String::from(user_input.to_lowercase().trim());
println!("");
// If we don't want to do this:
if user_input != "y" {
self.page = 2;
return;
}
// Delete the card
self.manager.boards[self.on as usize].cards.remove(card_index);
// Set page back to normal
self.page = 2;
} else if self.mode == 1 {
// Confirming
let mut user_input: String = String::new();
println!("\nAre you sure?\nSelect option [y/n]: ");
io::stdin().read_line(&mut user_input).expect("Failed to read line");
user_input = String::from(user_input.to_lowercase().trim());
println!("");
// If the user says no
if user_input != "y" {
self.page = 2;
return;
}
// Deleting the board
self.manager.boards.remove(self.on as usize);
// Resetting all of the stuff
self.page = 0;
self.on = 0;
}
}
fn error(msg: &str){
println!("INTERFACE ERROR: {}", msg);
}
@ -103,6 +182,7 @@ impl<'a> Interface<'a> {
0 => self.p_0(),
1 => self.p_1(),
2 => self.p_2(),
4 => self.p_4(),
_ => Interface::error("Invalid Page")
}
}