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

📄 message.cs

📁 破解的飞信源代码
💻 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 + -