📄 messagehistorymanager.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 + -