⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagehistorymanager.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace Imps.Client.Pc.MessageHistory2
{
    using Imps.Client;
    using Imps.Client.Core;
    using Imps.Client.Pc;
    using Imps.Client.Resource;
    using Imps.Client.Utils;
    using Imps.Client.Utils.Win32;
    using System;
    using System.Collections.Generic;
    using System.Runtime.CompilerServices;
    using System.Threading;
    using System.Windows.Forms;

    internal class MessageHistoryManager : IMessageHistoryManager
    {
        private IFrameworkWindow _framework;
        private MessageHistoryFrom _msgForm;
        private static object locker = new object();

        public event EventHandler HistoryDeleted;

        public MessageHistoryManager(IFrameworkWindow framework)
        {
            this._framework = framework;
            this._framework.AccountManager.CurrentUser.StatusChanged += new EventHandler<UserSatusChangedEventArgs>(this, (IntPtr) this.CurrentUser_StatusChanged);
        }

        public void AsyncDeleteMessageHistory(params string[] contactUris)
        {
            this.CurrentUser.HistoryManager.DeleteMessage(MessageType.All, contactUris);
            if (this.HistoryDeleted != null)
            {
                FuncDispatcher.InvokeEventHandlerInUiThread(this._msgForm, this.HistoryDeleted, new EventArgs());
            }
        }

        public bool ClearMessageHistory(IWin32Window owner)
        {
            try
            {
                if ((owner != null) && (this._framework.UnifiedMessageBox.ShowConfirmation(owner, StringTable.Conversation.MsgConfirmDeleteAll) != DialogResult.Yes))
                {
                    return false;
                }
                return this.CurrentUser.HistoryManager.ClearMessage(MessageType.All);
            }
            catch (Exception exception)
            {
                ClientLogger.WriteException(exception);
                return false;
            }
        }

        private void CurrentUser_StatusChanged(object sender, UserSatusChangedEventArgs e)
        {
            if (e.NewStatus != UserAccountStatus.Logon)
            {
                lock (locker)
                {
                    if (this._msgForm != null)
                    {
                        this._msgForm.Close();
                        this._msgForm.Dispose();
                        this._msgForm = null;
                    }
                }
            }
        }

        public void DeleteMessageHistory(params string[] contactUris)
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(this.InnerDeleteMessageHistory), contactUris);
        }

        private void InnerDeleteMessageHistory(object contactUris)
        {
            if (contactUris is string[])
            {
                this.AsyncDeleteMessageHistory((string[]) contactUris);
            }
            else
            {
                this.AsyncDeleteMessageHistory(new string[0]);
            }
        }

        public IList<TMessage> LoadRecentMessages<TMessage>(Imps.Client.Core.Contact contact, int count) where TMessage: IMessage
        {
            return this.CurrentUser.HistoryManager.LoadRecentMessages<TMessage>(contact.Uri.Raw, count);
        }

        public bool SaveMessage(IMessage msg)
        {
            return this.CurrentUser.HistoryManager.SaveMessage(msg);
        }

        public void ShowMessageHistory(IWin32Window owner)
        {
            this.ShowMessageHistory(owner, string.Empty);
        }

        public void ShowMessageHistory(IWin32Window owner, string contactUri)
        {
            UiErrorHelper.HandEventSafely(this._framework, delegate {
                FormClosedEventHandler handler = null;
                lock (locker)
                {
                    if ((this._msgForm == null) || this._msgForm.IsDisposed)
                    {
                        this._msgForm = new MessageHistoryFrom(this._framework);
                        if (handler == null)
                        {
                            handler = new FormClosedEventHandler(this, (IntPtr) this.<ShowMessageHistory>b__1);
                        }
                        this._msgForm.add_FormClosed(handler);
                        this._msgForm.Show();
                    }
                    else
                    {
                        this._msgForm.Activate();
                        Imps.Client.Utils.Win32.NativeMethods.ShowWindow(this._msgForm.Handle, 9);
                    }
                }
                this._msgForm.ShowMessage(contactUri);
            });
        }

        private Imps.Client.Core.User CurrentUser
        {
            get
            {
                return this._framework.AccountManager.CurrentUser;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -