id_list.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //TODO: made node_id into a hashset across project
  2. //use std::collections::HashSet
  3. use tui::widgets::ListState;
  4. #[derive(Clone)]
  5. pub struct IdList {
  6. pub state: ListState,
  7. pub node_id: Vec<String>,
  8. }
  9. impl IdList {
  10. pub fn new(node_id: Vec<String>) -> IdList {
  11. IdList { state: ListState::default(), node_id }
  12. }
  13. pub fn next(&mut self) {
  14. let i = match self.state.selected() {
  15. Some(i) => {
  16. if i >= self.node_id.len() - 1 {
  17. 0
  18. } else {
  19. i + 1
  20. }
  21. }
  22. None => 0,
  23. };
  24. self.state.select(Some(i));
  25. }
  26. pub fn previous(&mut self) {
  27. let i = match self.state.selected() {
  28. Some(i) => {
  29. if i == 0 {
  30. self.node_id.len() - 1
  31. } else {
  32. i - 1
  33. }
  34. }
  35. None => 0,
  36. };
  37. self.state.select(Some(i));
  38. }
  39. pub fn unselect(&mut self) {
  40. self.state.select(None);
  41. }
  42. }
  43. //pub async fn add_seen(&self, id: u32) {
  44. // self.privmsg_ids.lock().await.insert(id);
  45. //}