public void LoadData(object data) { NewMessageDataHelper helper = (NewMessageDataHelper)data; // New message, select the default channel MessageEditControl.SelectedChannelId = ChannelsManager.GetDefaultChannel().Configuration.ChannelId; if (helper != null) { if (helper.SourceMessageId.HasValue) { using (VirtualMailBox.Current.Messages.ReaderLock) MessageEditControl.SourceMessage = VirtualMailBox.Current.Messages .First(m => m.MessageId == helper.SourceMessageId); } if (helper.To != null) { MessageEditControl.AddToRecipients(helper.To); } if (helper.Cc != null) { MessageEditControl.AddCCRecipients(helper.Cc); } if (helper.Bcc != null) { MessageEditControl.AddBCCRecipients(helper.Bcc); } if (helper.AttachedFiles != null) { foreach (var attachedFile in helper.AttachedFiles) { var info = new FileInfo(attachedFile.Streamname); if (!info.Exists) { ClientState.Current.ShowMessage( new AppMessage(String.Format(Strings.FileNotFound, info.Name)), MessageType.Error); continue; } MessageEditControl.AttachedFiles.Add(attachedFile); } } MessageEditControl.SetContext(helper.Context); MessageEditControl.MessageText = helper.Body; if (helper.SelectedChannelId > 0) { MessageEditControl.SelectedChannelId = helper.SelectedChannelId; } } }
public ConversationsPlugin() { state = new ConversationsState(); EventBroker.Subscribe <Message>(AppEvents.New, delegate { State.New(); }); EventBroker.Subscribe(AppEvents.New, delegate(SourceAddress address) { ClientState.Current.ViewController.MoveTo( PluginsManager.Current.GetPlugin <ConversationsPlugin>().NewItemView, new NewMessageDataHelper { To = address.ToList() }); }); EventBroker.Subscribe(AppEvents.New, delegate(string url) { ClientState.Current.ViewController.MoveTo( PluginsManager.Current.GetPlugin <ConversationsPlugin>().NewItemView, NewMessageDataHelper.Parse(url)); }); EventBroker.Subscribe(AppEvents.View, delegate(Message message) { if (message.MessageFolder == Folders.Drafts) { var access = new ClientMessageAccess(message); ClientState.Current.ViewController.MoveTo( PluginsManager.Current.GetPlugin <ConversationsPlugin>().NewItemView, new NewMessageDataHelper { SourceMessageId = message.MessageId, Context = message.Context, To = message.To, Cc = message.CC, Bcc = message.BCC, Body = access.BodyHtml, SelectedChannelId = message.SourceChannelId, AttachedFiles = message.Attachments.Select(a => new AttachmentDataHelper(a)).ToList(), SuppressSignature = true } ); } else { state.SelectedMessages.Replace(new[] { message }); state.View(); } }); EventBroker.Subscribe(AppEvents.RequestFirstImportant, delegate(Message message) { state.SelectedMessages.Replace(new[] { message }); ClientState.Current.ViewController.MoveTo( PluginsManager.Current.GetPlugin <ConversationsPlugin>().DetailsView, new OverviewDataHelper { MessageId = message.MessageId.Value, MakeNavigatorCurrent = true }); }); }