diff --git a/src/app.rs b/src/app.rs index 8bf8512..798a311 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1213,8 +1213,8 @@ impl App { fn start_reassign_project(&mut self) { if let Some(item) = self.get_current_item() { self.current_screen = Screen::ReassignProject; - // Pre-fill with current project if it exists - self.reassign_project_buffer = item.tags.first().cloned().unwrap_or_default(); + // Pre-fill with current project (the name field) + self.reassign_project_buffer = item.name.clone(); self.reassign_project_cursor = self.reassign_project_buffer.len(); } } @@ -1280,24 +1280,21 @@ impl App { let index = self.state.selected_indices[self.state.current_pane]; let needs_restart = if let Some(item) = items.get_mut(index) { - // Update the tags - if self.reassign_project_buffer.is_empty() { - item.tags.clear(); - } else { - item.tags = vec![self.reassign_project_buffer.clone()]; - } + // Update the project name (item.name field) + let old_name = item.name.clone(); + item.name = self.reassign_project_buffer.clone(); // Check if this is the active timer self.state .active_timer .as_ref() - .map(|(active, _)| active.name == item.name) + .map(|(active, _)| active.name == old_name) .unwrap_or(false) } else { false }; - // If this was the active timer, restart it with new tags + // If this was the active timer, restart it with new project name if needs_restart { let item = items[index].clone(); self.state.stop_timer()?; diff --git a/src/ui.rs b/src/ui.rs index 946db90..04d162c 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -240,7 +240,7 @@ fn render_help(frame: &mut Frame, app: &App) { "Main Commands:", "Enter - Start/stop timer", "d - Delete task from list", - "p - Reassign project/tag", + "p - Reassign project name", "v - View Watson log", "Ctrl+e - Edit tasks config file", "c - Edit app config file", @@ -378,12 +378,13 @@ fn render_section( Style::default() }; - let mut line = item.name.clone(); - if !item.tags.is_empty() { - line.push_str(" ["); - line.push_str(&item.tags.join(", ")); - line.push(']'); - } + let line = if !item.tags.is_empty() { + // Display as: tag [project] + format!("{} [{}]", item.tags.join(", "), item.name) + } else { + // No tags, just show project + item.name.clone() + }; ListItem::new(Line::from(vec![Span::styled(line, style)])) }) @@ -422,14 +423,20 @@ fn render_reassign_project(frame: &mut Frame, app: &App) { _ => &app.state.permanent_items, }; - let current_item_name = items + let current_item_display = items .get(app.state.selected_indices[app.state.current_pane]) - .map(|item| item.name.as_str()) - .unwrap_or(""); + .map(|item| { + if !item.tags.is_empty() { + format!("{} [{}]", item.tags.join(", "), item.name) + } else { + item.name.clone() + } + }) + .unwrap_or_default(); // Project input let project_block = Block::default() - .title(format!("Reassign Tag for: {}", current_item_name)) + .title(format!("Reassign Project for: {}", current_item_display)) .borders(Borders::ALL) .style(Style::default().fg(ACTIVE_COLOR)); @@ -448,7 +455,7 @@ fn render_reassign_project(frame: &mut Frame, app: &App) { frame.render_widget(project_paragraph, chunks[0]); // Help text - let help_text = Paragraph::new("Enter new tag (leave empty to remove), press Enter to save, Esc to cancel") + let help_text = Paragraph::new("Enter new project name, press Enter to save, Esc to cancel") .style(Style::default().fg(Color::DarkGray)) .alignment(Alignment::Center);