diff --git a/src/board.rs b/src/board.rs index 04dfb87..95f22db 100755 --- a/src/board.rs +++ b/src/board.rs @@ -17,7 +17,7 @@ impl TaskBoard { let mut cards: Vec = Vec::new(); // Creating a new default card - cards.push(card::TaskCard::init_empty()); + cards.push(card::TaskCard::init(String::new(), String::new())); // Return the board! return TaskBoard {name: name, cards: cards}; diff --git a/src/card.rs b/src/card.rs index 74a1c86..4da7b0a 100755 --- a/src/card.rs +++ b/src/card.rs @@ -8,10 +8,7 @@ pub struct TaskCard { // Implementations impl TaskCard { - pub fn init_val(name: String, desc: String) -> TaskCard { + pub fn init(name: String, desc: String) -> TaskCard { return TaskCard{name: name, desc: desc}; } - pub fn init_empty() -> TaskCard { - return TaskCard::init_val(String::from("New Card"), String::new()); - } } \ No newline at end of file diff --git a/src/interface.rs b/src/interface.rs index f362b86..c21bb76 100644 --- a/src/interface.rs +++ b/src/interface.rs @@ -88,7 +88,7 @@ impl<'a> Interface<'a> { if user_input == "1" { self.page = 3; } else if user_input == "2"{ - + self.page = 4; } else if user_input == "3"{ self.mode = 0; self.page = 5; @@ -128,7 +128,7 @@ impl<'a> Interface<'a> { println!(""); // Creating a card - let _new_card: card::TaskCard = card::TaskCard::init_val(_name, _desc); + let _new_card: card::TaskCard = card::TaskCard::init(_name, _desc); // Throw this into our manager self.manager.boards[self.on as usize].cards.push(_new_card); @@ -136,6 +136,79 @@ impl<'a> Interface<'a> { // Finished! self.page = 2; } + fn p_4(&mut self){ + // Title + println!(" - Edit Card - \n"); + + // Getting active board + let _active: &mut board::TaskBoard = &mut self.manager.boards[self.on as usize]; + + // Showing all cards + for i in 0.._active.cards.len() { + println!("{}) {}", i+1, _active.cards[i].name); + } + + // Asking for an option + println!("\nSelect card[1-{}]: ", _active.cards.len()); + + // Reading 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()); + println!(""); + + // Selecting the card + let _card_index: usize = user_input.parse::().unwrap() - 1; + let _card: &mut card::TaskCard = &mut _active.cards[_card_index]; + + // Printing options + println!(" - {} - ", _card.name); + println!("1) Change Name"); + println!("2) Change Description"); + println!("3) Exit"); + println!("\nSelect option [1-3]: "); + + // Reset input + user_input = String::new(); + + // Reading input + io::stdin().read_line(&mut user_input).expect("Failed to read line"); + user_input = String::from(user_input.to_lowercase().trim()); + + // Decide what to do + if user_input == "1" { + // Printing prompt + println!("\nWhat should the new name be?"); + println!("Select name:"); + + // Reset input + user_input = String::new(); + + // Reading input + io::stdin().read_line(&mut user_input).expect("Failed to read line"); + user_input = String::from(user_input.trim()); + + // Setting the cards name + _card.name = user_input; + } else if user_input == "2" { + // Printing prompt + println!("\nWhat should the new description be?"); + println!("Select description:"); + + // Reset input + user_input = String::new(); + + // Reading input + io::stdin().read_line(&mut user_input).expect("Failed to read line"); + user_input = String::from(user_input.trim()); + + // Setting the cards name + _card.desc = user_input; + } + + // Changing page + self.page = 2; + } fn p_5(&mut self){ // Which title do we use let title: String = String::from(match self.mode { @@ -222,8 +295,11 @@ impl<'a> Interface<'a> { 1 => self.p_1(), 2 => self.p_2(), 3 => self.p_3(), + 4 => self.p_4(), 5 => self.p_5(), _ => Interface::error("Invalid Page") } + + // Save } } \ No newline at end of file diff --git a/src/manager.rs b/src/manager.rs index 0b4d676..abe1774 100644 --- a/src/manager.rs +++ b/src/manager.rs @@ -31,7 +31,7 @@ impl Manager{ let _name: String = String::from(task["name"].as_str().unwrap()); let _desc: String = String::from(task["desc"].as_str().unwrap()); - cards.push(card::TaskCard::init_val(_name, _desc)); + cards.push(card::TaskCard::init(_name, _desc)); } // Creating the boards inside the manager