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

📄 usersetting.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
namespace Imps.Client.Core
{
    using Imps.Base.Sipc;
    using Imps.Client;
    using Imps.Client.Base;
    using Imps.Utils;
    using System;
    using System.Text;
    using System.Xml;

    public class UserSetting : PropertyDictionary
    {
        private string[] _autoReplies;
        private string _colorSetting;
        private Imps.Client.Core.ConversationSetting _conversationSetting;
        private CustomPresenceCollection _customPresences;
        private bool _hiddenBanner;
        private bool _hiddenMsgType;
        private bool _hiddenTab;
        private Imps.Client.Core.MainWindowSetting _mainWindowSetting;
        private Imps.Client.Core.MmsSetting _mmsSetting;
        private MoodPhraseCollection _moodPhrases;
        private User _owner;
        private bool _saveMyInfo;
        private Imps.Client.Core.SensorSetting _sensorSetting;
        private Imps.Client.Core.SkinSetting _skinSetting;
        private Imps.Client.Core.SoundSetting _soundSetting;
        private Imps.Client.Core.NotifyWinodwSetting _tipWinodwSetting;
        private const string strPrfix = "string";

        public UserSetting(User owner)
        {
            this._owner = owner;
            this._mainWindowSetting = new Imps.Client.Core.MainWindowSetting();
            this._autoReplies = new string[5];
            this._skinSetting = new Imps.Client.Core.SkinSetting();
        }

        public static int Boolean2Int(bool bValue)
        {
            if (bValue)
            {
                return 1;
            }
            return 0;
        }

        internal override void Clear()
        {
            base.Clear();
            this._hiddenBanner = false;
            this._hiddenMsgType = false;
            this._hiddenTab = false;
            this.ColorSetting = string.Empty;
            this.SensorSetting.Clear();
            this.NotifyWinodwSetting.Clear();
            this.MoodPhrases.Clear();
            this.SkinSetting.CurrentSkinName = new ProposedData<string>("default");
            this._autoReplies = new string[5];
            this.CustomPresences.Clear();
        }

        public void ClearImpsUserCfg()
        {
            base.TryRemove("CustomCfgVerion");
            base.TryRemove("CfgVersion");
            this.ConversationSetting.ClearUserCfg();
            this.MainWindowSetting.ClearUserCfg();
            this.MoodPhrases.Clear();
            this._autoReplies = new string[5];
            this.CustomPresences.Clear();
            this.SensorSetting.Clear();
            this.NotifyWinodwSetting.Clear();
        }

        public void ClearWndUserCfg()
        {
            this.ConversationSetting.ClearWndCfg();
            this.MainWindowSetting.ClearWndCfg();
        }

        internal override void CommitProposedProperties(AsyncBizOperation op)
        {
            if (this.HasProposedProperty() && ((this._owner.Status == UserAccountStatus.Logon) || (this._owner.Status == UserAccountStatus.Logouting)))
            {
                string text = this.ToString(false);
                if (text.Length > 0)
                {
                    SipRequest req = this._owner.CreateSipRequest("S");
                    req.Message.AddHeader(new SipcEventHeader("SetPersonalConfig"));
                    req.Message.Body = string.Format("<{0}>{1}</{0}>", "args", text);
                    ErrorHelper.HandleSendRequestErrorAndTimeout(req);
                    req.Context = op;
                    req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.SetPersonalInfo_FinalResponseReceived);
                    this._owner.SendSipMessage(req);
                }
                this.ResetAllProposedValue();
                this.RemoveAllProposedValue();
            }
        }

        private void GetAutoReplies(StringBuilder sb)
        {
            sb.Append("<AutoReplies>");
            for (int i = 0; i < this._autoReplies.Length; i++)
            {
                if ((this._autoReplies[i] != null) && (this._autoReplies[i].Length > 0))
                {
                    sb.Append(string.Format("<string{0}><![CDATA[{1}]]></string{0}>", i.ToString(), this._autoReplies[i]));
                }
            }
            sb.Append("</AutoReplies>");
        }

        private string GetCompressedCfgString()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(this.ConversationSetting.ToString());
            sb.Append(this.MoodPhrases.ToString());
            this.GetAutoReplies(sb);
            sb.Append(string.Format("<{0}>{1}</{0}>", "LongSMSSetting", this.LongSmsSetting.ToString()));
            sb.Append(this.CustomPresences.ToString());
            sb.Append(this.MainWindowSetting.ToString());
            sb.Append(this.SensorSetting.ToString());
            sb.Append(this.SoundSetting.ToString());
            sb.Append(this.NotifyWinodwSetting.ToString());
            return GZipHelper.CompressString(sb.ToString());
        }

        public override bool HasProposedProperty()
        {
            this._owner.Configuration.SaveWndUserCfg();
            if (((!base.HasProposedProperty() && !this.MainWindowSetting.HasProposedProperty()) && (!this.ConversationSetting.HasProposedProperty() && !this.SensorSetting.HasProposedProperty())) && (!this.NotifyWinodwSetting.HasProposedProperty() && !this.CustomPresences.Modified))
            {
                return this.MoodPhrases.HasProposedValue;
            }
            return true;
        }

        public void InitAutoReplies(XmlNode xmlNode)
        {
            foreach (XmlNode node in xmlNode.ChildNodes)
            {
                if (node.Name.Length == ("string".Length + 1))
                {
                    int index = -1;
                    int.TryParse(node.Name.Substring("string".Length), ref index);
                    if ((index > -1) && (index < 5))
                    {
                        this._autoReplies[index] = node.InnerText;
                    }
                }
            }
        }

        public void InitLongSmsSetting(XmlNode xmlNode)
        {
            try
            {
                string innerText = xmlNode.InnerText;
                this.LongSmsSetting = (LongSMSSetting) Enum.Parse(typeof(LongSMSSetting), innerText);
            }
            catch
            {
                this.LongSmsSetting = LongSMSSetting.Disable;
            }
        }

        public static bool Int2Boolean(int iValue)
        {
            switch (iValue)
            {
                case 0:
                    return false;

                case 1:
                    return true;
            }
            return false;
        }

        internal string LocalToString()
        {
            StringBuilder builder = new StringBuilder();
            builder.Append(this.ToString());
            builder.Append(string.Format("<{0}>{1}</{0}>", "HiddenBanner", this.HiddenBanner.ToString()));
            builder.Append(string.Format("<{0}>{1}</{0}>", "HiddenMsgType", this.HiddenMsgType.ToString()));
            builder.Append(string.Format("<{0}>{1}</{0}>", "HiddenTab", this.HiddenTab.ToString()));
            builder.Append(string.Format("<{0}>{1}</{0}>", "ColorSetting", this.ColorSetting));
            builder.Append(this.SkinSetting.ToLocalUserCfg());
            builder.Append(string.Format("<{0}>{1}</{0}>", "local-config", this._conversationSetting.ToLocalUserCfg() + this._mainWindowSetting.ToLocalUserCfg()));
            return builder.ToString();
        }

        private void RemoveAllProposedValue()
        {
            this.MoodPhrases.RemoveProposedValue();
        }

        private void ResetAllProposedValue()
        {
            this.MainWindowSetting.ResetProposedProperties();
            this.ConversationSetting.ResetProposedProperties();
            this.SensorSetting.ResetProposedProperties();
            this.NotifyWinodwSetting.ResetProposedProperties();
            base.InnerResetProposedProperties();
        }

        internal void SetPersonalInfo_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
        {
            if (e.Response.IsOK)
            {
                try
                {
                    XmlDocument document = new XmlDocument();
                    string xml = e.Response.Message.Body;
                    document.LoadXml(xml);
                    XmlNode xmlNode = document.SelectSingleNode("results");
                    xmlNode.SelectSingleNode("config").Attributes["save-message"].Value = Boolean2Int(this.ConversationSetting.SaveMessages).ToString();
                    this._owner.Configuration.LoadUserSetting(xmlNode);
                    this._owner.Configuration.SaveUserCfg();
                }
                catch
                {
                }
            }
            else
            {
                ErrorHelper.HandleReceivedErrorResponse(e.Response);
            }
        }

        public static bool String2Boolean(string sValue)
        {
            try
            {
                return Int2Boolean(int.Parse(sValue));
            }
            catch
            {
                return false;
            }
        }

        public override string ToString()
        {
            return this.ToString(true);
        }

        public string ToString(bool useForLocal)
        {
            StringBuilder builder = new StringBuilder();
            builder.AppendFormat("<config version=\"{0}\" save-message=\"{1}\" experience=\"{2}\" save-mms=\"{3}\" />", new object[] { this.CfgVersion, useForLocal ? Boolean2Int(this.ConversationSetting.SaveMessages) : 0, Boolean2Int(this.JoinExprienceInprovement), Boolean2Int(this.MmsSetting.SaveMMS) });
            builder.Append(string.Format("<custom-config version=\"{0}\" type=\"{1}\">", this.CustomerCfgVersion, "PC"));
            string compressedCfgString = this.GetCompressedCfgString();
            builder.Append(compressedCfgString);
            builder.Append("</custom-config>");
            if (Encoding.ASCII.GetBytes(compressedCfgString).Length > 0x1000)
            {

⌨️ 快捷键说明

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