summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2019-04-06 00:43:50 +0300
committerManos Pitsidianakis <el13635@mail.ntua.gr>2019-06-10 19:40:43 +0300
commit4bf1f6b9c920182c5ba0bae85a5192be14a7a9dc (patch)
tree02e504638995190306bdb74cba4bc8eeb976f7b6
parentcfb7dcec645cd02b437f9f46e70ce7f7750a7fd3 (diff)
ui: make Composer account specific
-rw-r--r--melib/src/mailbox/email/compose.rs2
-rw-r--r--ui/src/components/mail/compose.rs6
-rw-r--r--ui/src/components/mail/listing/compact.rs2
-rw-r--r--ui/src/components/mail/listing/plain.rs2
-rw-r--r--ui/src/components/mail/listing/thread.rs2
-rw-r--r--ui/src/components/utilities.rs4
-rw-r--r--ui/src/execute/actions.rs2
7 files changed, 13 insertions, 7 deletions
diff --git a/melib/src/mailbox/email/compose.rs b/melib/src/mailbox/email/compose.rs
index 2c691647..f24f27d3 100644
--- a/melib/src/mailbox/email/compose.rs
+++ b/melib/src/mailbox/email/compose.rs
@@ -12,7 +12,7 @@ mod random;
use super::parser;
use fnv::FnvHashMap;
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Clone)]
pub struct Draft {
// FIXME: Preserve header order
// FIXME: Validate headers, allow custom ones
diff --git a/ui/src/components/mail/compose.rs b/ui/src/components/mail/compose.rs
index 268bd444..50bb2ed3 100644
--- a/ui/src/components/mail/compose.rs
+++ b/ui/src/components/mail/compose.rs
@@ -112,6 +112,12 @@ impl fmt::Display for Composer {
}
impl Composer {
+ pub fn new(account_cursor: usize) -> Self {
+ Composer {
+ account_cursor,
+ ..Default::default()
+ }
+ }
/*
* coordinates: (account index, mailbox index, root set thread_node index)
* msg: index of message we reply to in thread_nodes
diff --git a/ui/src/components/mail/listing/compact.rs b/ui/src/components/mail/listing/compact.rs
index a748c372..deaf70bb 100644
--- a/ui/src/components/mail/listing/compact.rs
+++ b/ui/src/components/mail/listing/compact.rs
@@ -530,7 +530,7 @@ impl Component for CompactListing {
UIEventType::Input(Key::Char('m')) if !self.unfocused => {
context.replies.push_back(UIEvent {
id: 0,
- event_type: UIEventType::Action(Tab(NewDraft)),
+ event_type: UIEventType::Action(Tab(NewDraft(self.cursor_pos.0))),
});
return true;
}
diff --git a/ui/src/components/mail/listing/plain.rs b/ui/src/components/mail/listing/plain.rs
index 27801887..01e1f620 100644
--- a/ui/src/components/mail/listing/plain.rs
+++ b/ui/src/components/mail/listing/plain.rs
@@ -437,7 +437,7 @@ impl Component for PlainListing {
UIEventType::Input(Key::Char('m')) if !self.unfocused => {
context.replies.push_back(UIEvent {
id: 0,
- event_type: UIEventType::Action(Tab(NewDraft)),
+ event_type: UIEventType::Action(Tab(NewDraft(self.cursor_pos.0))),
});
return true;
}
diff --git a/ui/src/components/mail/listing/thread.rs b/ui/src/components/mail/listing/thread.rs
index d1f55aba..a6ccfccc 100644
--- a/ui/src/components/mail/listing/thread.rs
+++ b/ui/src/components/mail/listing/thread.rs
@@ -599,7 +599,7 @@ impl Component for ThreadListing {
UIEventType::Input(Key::Char('m')) if !self.unfocused => {
context.replies.push_back(UIEvent {
id: 0,
- event_type: UIEventType::Action(Tab(NewDraft)),
+ event_type: UIEventType::Action(Tab(NewDraft(self.cursor_pos.0))),
});
return true;
}
diff --git a/ui/src/components/utilities.rs b/ui/src/components/utilities.rs
index 53e6679c..8f713396 100644
--- a/ui/src/components/utilities.rs
+++ b/ui/src/components/utilities.rs
@@ -999,8 +999,8 @@ impl Component for Tabbed {
self.set_dirty();
return true;
}
- UIEventType::Action(Tab(NewDraft)) => {
- self.add_component(Box::new(Composer::default()));
+ UIEventType::Action(Tab(NewDraft(account_idx))) => {
+ self.add_component(Box::new(Composer::new(account_idx)));
self.cursor_pos = self.children.len() - 1;
self.children[self.cursor_pos].set_dirty();
return true;
diff --git a/ui/src/execute/actions.rs b/ui/src/execute/actions.rs
index a0113c62..a84232b8 100644
--- a/ui/src/execute/actions.rs
+++ b/ui/src/execute/actions.rs
@@ -39,7 +39,7 @@ pub enum ListingAction {
#[derive(Debug)]
pub enum TabAction {
TabOpen(Option<Box<Component>>),
- NewDraft,
+ NewDraft(usize),
Reply((usize, usize, usize), usize), // thread coordinates (account, mailbox, root_set idx) and message idx
Close,
Edit((usize, usize, usize), usize), // thread coordinates (account, mailbox, root_set idx) and message idx