📄 usersetting.cs
字号:
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 + -