예제 #1
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
                });
            });
        }