📄 message.cs
字号:
namespace Imps.Client.Core
{
using Imps.Client.Core.History;
using Imps.Client.Utils;
using Imps.Utils.TagParser;
using System;
using System.Collections.Generic;
public abstract class Message
{
private string _content;
private Dialog _dialog;
private string _from;
private string _fromSid;
private string _fromUri;
private bool _isReceive;
private string _messageId;
private Imps.Client.Core.MessageType _messageType = Imps.Client.Core.MessageType.IM;
private bool _newLine = true;
private DateTime _time;
public Message(Dialog dialog, string content, bool isReceive)
{
this._dialog = dialog;
this._content = content;
this._isReceive = isReceive;
this._time = DateTime.Now;
}
private List<Player> GetReceviers(Player sender)
{
List<Player> list = new List<Player>();
if (this._dialog.IsMulitiConversation)
{
using (IEnumerator<ConversationParticipant> enumerator = this._dialog.Participants.GetEnumerator())
{
while (enumerator.MoveNext())
{
ConversationParticipant participant = enumerator.get_Current();
if (!this.IsAccept || (participant.Contact.Uri.Raw != this.FromUri))
{
Player player = new Player(participant.Contact.Uri.Raw, participant.Contact.DisplayName, (participant.Contact.Uri.Raw == this.OwnerDialog.Owner.Uri.Raw) ? PlayerType.User : PlayerType.Contact);
list.Add(player);
}
}
return list;
}
}
if (this._dialog is PersonalGroupDialog)
{
PersonalGroup group = (this._dialog as PersonalGroupDialog).Group;
list.Add(new Player(group.Uri.Raw, group.GroupInfo.Name.Value, PlayerType.Group, MessageStatus.Successed));
return list;
}
list.Add(this.IsAccept ? new Player(this.OwnerDialog.Owner.Uri.Raw, this.OwnerDialog.Owner.Nickname, PlayerType.User) : new Player(this._dialog.Participants[0].Contact.Uri.Raw, this._dialog.Participants[0].Contact.DisplayName, PlayerType.Contact));
return list;
}
public virtual void SaveMessage()
{
try
{
if (this.OwnerDialog.SaveMessage && this.OwnerDialog.EnableSaveHistory)
{
IHistoryManager historyManager = this.OwnerDialog.Owner.HistoryManager;
Player sender = new Player(this.FromUri, this.From, this.IsAccept ? PlayerType.Contact : PlayerType.User);
List<Player> receviers = this.GetReceviers(sender);
IMessage msg = null;
msg = new InstantMessage(this.MessageId, sender, Imps.Utils.TagParser.TagParser.Create(this.Content, true).Text, receviers.ToArray());
msg.Type = this.MessageType;
msg.Time = this.Time;
historyManager.SaveMessage(msg);
}
}
catch (Exception exception)
{
ClientLogger.WriteGeneral("保存消息历史失败", exception.ToString());
}
}
public override string ToString()
{
return this.Content;
}
public string Content
{
get
{
return this._content;
}
internal set
{
this._content = value;
}
}
public string From
{
get
{
return this._from;
}
internal set
{
this._from = value;
}
}
public string FromSid
{
get
{
return this._fromSid;
}
set
{
this._fromSid = value;
}
}
public string FromUri
{
get
{
return this._fromUri;
}
internal set
{
this._fromUri = value;
}
}
public bool IsAccept
{
get
{
return (this.OwnerDialog.Owner.Uri.ToString() != this.FromUri);
}
}
public bool IsReceive
{
get
{
return this._isReceive;
}
internal set
{
this._isReceive = value;
}
}
public string MessageId
{
get
{
return this._messageId;
}
internal set
{
this._messageId = value;
}
}
public Imps.Client.Core.MessageType MessageType
{
get
{
return this._messageType;
}
set
{
this._messageType = value;
}
}
public string MsgTime
{
get
{
if (this._dialog.Owner.Configuration.UserSetting.ConversationSetting.ShowTimestampEveryMsg == null)
{
return "";
}
if (this.Time.Day == DateTime.Now.Day)
{
return string.Format("({0}):", this.Time.ToString("HH:mm"));
}
return string.Format("({0}):", this.Time.ToString("MM-dd HH:mm"));
}
}
public bool NewLine
{
get
{
return this._newLine;
}
set
{
this._newLine = value;
}
}
public Dialog OwnerDialog
{
get
{
return this._dialog;
}
}
public DateTime Time
{
get
{
return this._time;
}
internal set
{
this._time = value;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -