Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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
                });
            });
        }