From e580dc02dc25501259fbe432156c8b3a2e2a2fb5 Mon Sep 17 00:00:00 2001 From: OBJNULL Date: Sun, 23 Jun 2024 14:21:06 -0400 Subject: [PATCH] Added deleting Boards and Cards --- src/interface.rs | 96 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 88 insertions(+), 8 deletions(-) diff --git a/src/interface.rs b/src/interface.rs index 6cf6948..2b3092c 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -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") } }