diff options
author | Akshay <nerdy@peppe.rs> | 2020-07-18 21:05:27 +0530 |
---|---|---|
committer | Akshay <nerdy@peppe.rs> | 2020-07-18 21:05:27 +0530 |
commit | 29d49dddaae57d59a2c99c376a632a0d9560dcfc (patch) | |
tree | ac88e9ef229c7e398de9e28ddeab40d887851250 | |
parent | 7740a2ad558eb289e9d8c0b33fe43453942398e0 (diff) |
add message type
-rw-r--r-- | src/app/message.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/app/message.rs b/src/app/message.rs new file mode 100644 index 0000000..34d3293 --- /dev/null +++ b/src/app/message.rs @@ -0,0 +1,50 @@ +use cursive::theme::{BaseColor, Color}; + +#[derive(Debug, Clone, Copy)] +pub enum MessageKind { + Error, + Info, + Hint, +} + +impl From<MessageKind> for Color { + fn from(item: MessageKind) -> Self { + match item { + MessageKind::Error => Color::Dark(BaseColor::Red), + MessageKind::Info => Color::Dark(BaseColor::Yellow), + MessageKind::Hint => Color::Dark(BaseColor::White), + } + } +} + +pub struct Message { + msg: String, + kind: MessageKind, +} + +impl Message { + pub fn contents(&self) -> &str { + &self.msg + } + pub fn kind(&self) -> MessageKind { + self.kind + } + pub fn set_kind(&mut self, k: MessageKind) { + self.kind = k; + } + pub fn set_message<S: AsRef<str>>(&mut self, m: S) { + self.msg = m.as_ref().into(); + } + pub fn clear(&mut self) { + self.msg.clear() + } +} + +impl std::default::Default for Message { + fn default() -> Self { + Message { + msg: String::new(), + kind: MessageKind::Info, + } + } +} |