summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAkshay <nerdy@peppe.rs>2020-07-18 21:05:27 +0530
committerAkshay <nerdy@peppe.rs>2020-07-18 21:05:27 +0530
commit29d49dddaae57d59a2c99c376a632a0d9560dcfc (patch)
treeac88e9ef229c7e398de9e28ddeab40d887851250
parent7740a2ad558eb289e9d8c0b33fe43453942398e0 (diff)
add message type
-rw-r--r--src/app/message.rs50
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,
+ }
+ }
+}