📄 userpresence.cs
字号:
{
lock (this._syncObjPresence)
{
this._pendingPresence = MainPresence.Unknown;
this._pendingPresenceDesc = string.Empty;
}
}
private static int SensorComparison(IPresenceSensor s1, IPresenceSensor s2)
{
return (s1.Priority - s2.Priority);
}
private void SensorTimer_Tick(object sender, EventArgs e)
{
EventHandler<ImpsErrorEventArgs> handler = null;
if (this.Owner.Status == UserAccountStatus.Logon)
{
lock (this._syncObjPresence)
{
if (!string.IsNullOrEmpty(base.PresenceDesc) || ((this.MainPresence != MainPresence.Online) && (this._previousPresencePriority <= 0)))
{
return;
}
}
try
{
AsyncBizOperation op;
MainPresence basicPresence = MainPresence.Online;
string presenceDescription = string.Empty;
int priority = 0;
List<IPresenceSensor>.Enumerator enumerator = this._sensors.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
IPresenceSensor sensor = enumerator.get_Current();
if (sensor.Poll())
{
basicPresence = sensor.PresenseValue;
presenceDescription = sensor.PresenceDescription;
priority = sensor.Priority;
if (basicPresence != MainPresence.Online)
{
goto Label_00BA;
}
}
}
}
finally
{
enumerator.Dispose();
}
Label_00BA:
op = new AsyncBizOperation();
if (handler == null)
{
handler = new EventHandler<ImpsErrorEventArgs>(this, (IntPtr) this.<SensorTimer_Tick>b__0);
}
op.ImpsError += handler;
this.InnerAsyncChangeMainPresence(basicPresence, presenceDescription, op, priority);
}
catch
{
}
}
}
private void SetDefaultCrbtToBuddy(object arg)
{
AsyncBizOperation op = (AsyncBizOperation) arg;
CrbtToBuddy item = (CrbtToBuddy) op.ContextForBiz;
if (this.SetDefaultCrbtToBuddy(item.ToneCode, op))
{
if (this._crbtCol.FindCrbt(item.ToneCode) == null)
{
this._crbtCol.Add(item);
}
lock (this._owner.ContactList.Contacts.SyncRoot)
{
using (IEnumerator<Imps.Client.Core.Contact> enumerator = this._owner.ContactList.Contacts.GetEnumerator())
{
while (enumerator.MoveNext())
{
CrbtToBuddySetting setting;
Imps.Client.Core.Contact contact = enumerator.get_Current();
if (!this.m_crbt_setting_map.TryGetValue(contact.PersonalInfo.MobileNo.ToString(), ref setting))
{
using (IEnumerator<CrbtToBuddySetting> enumerator2 = this._crbtToBuddySettings.GetEnumerator())
{
while (enumerator2.MoveNext())
{
CrbtToBuddySetting setting2 = enumerator2.get_Current();
if (1 == setting2.TargetType)
{
setting2.ToneCode = item.ToneCode;
contact.Presence.CrbtToBuddy = item;
contact.Presence.ShowCrbtToBuddyText = true;
}
}
continue;
}
}
}
}
}
}
}
private bool SetDefaultCrbtToBuddy(string strToneCode, AsyncBizOperation op)
{
bool flag = false;
StringWriter tw = new StringWriter();
XmlHelper.CreateXmlWriterForSipRequest(tw, null, delegate (XmlWriter writer, object context) {
string text = string.Format("{0}.", this.Owner.PersonalInfo.Province);
writer.WriteElementString("region", text);
writer.WriteElementString("setup-type", "1");
writer.WriteElementString("tone-code", strToneCode);
writer.WriteElementString("time-type", "0");
writer.WriteElementString("start-time", "2003-01-01 00:00:00");
writer.WriteElementString("end-time", "2008-01-01 23:59:59");
writer.WriteElementString("destination", "");
});
string text = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + tw;
HttpWebRequest request = null;
try
{
request = ConnectionFactory.CreateHttpWebRequest(this.Owner.Configuration.SystemSetting.ServerUriSetting.UriSetToneInfo, this.Owner, true, true);
request.ContentType = "text/xml; charset=utf-8";
using (Stream stream = request.GetRequestStream())
{
using (StreamWriter writer2 = new StreamWriter(stream))
{
writer2.Write(text);
}
}
using (HttpWebResponse response = ((HttpWebResponse) request.GetResponse()))
{
string text2 = "-1";
using (Stream stream2 = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream2, Encoding.UTF8))
{
text2 = reader.ReadToEnd();
}
}
if ("0" == text2)
{
flag = true;
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃成功", "", 500), op);
return flag;
}
if ("1" == text2)
{
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃失败: 彩铃编号不存在", "", 0x1f6), op);
return flag;
}
if ("2" == text2)
{
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃失败: 设置的彩铃数超过了最大彩铃设置数", "", 0x1f6), op);
return flag;
}
if ("3" == text2)
{
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃失败: 群ID不存在", "", 0x1f9), op);
return flag;
}
if ("4" == text2)
{
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃失败: 彩铃没有下载,不能设置", "", 0x1fa), op);
return flag;
}
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃失败", "", 0x1f5), op);
return flag;
}
}
catch
{
if (request != null)
{
request.Abort();
}
this.Owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs("设置彩铃失败", "", 0x1f5), op);
}
return flag;
}
public void update_buddy_crbttobuddy(Imps.Client.Core.Contact buddy)
{
CrbtToBuddySetting setting;
if (this.m_crbt_setting_map.TryGetValue(buddy.PersonalInfo.MobileNo.ToString(), ref setting))
{
CrbtToBuddy buddy3 = this._crbtCol.FindCrbt(setting.ToneCode);
if (buddy3 != null)
{
buddy.Presence.CrbtToBuddy = buddy3;
buddy.Presence.ShowCrbtToBuddyText = true;
}
}
else
{
using (IEnumerator<CrbtToBuddySetting> enumerator = this._crbtToBuddySettings.GetEnumerator())
{
while (enumerator.MoveNext())
{
CrbtToBuddySetting setting2 = enumerator.get_Current();
if (1 == setting2.TargetType)
{
CrbtToBuddy buddy2 = this._crbtCol.FindCrbt(setting2.ToneCode);
if (buddy2 != null)
{
buddy.Presence.CrbtToBuddy = buddy2;
buddy.Presence.ShowCrbtToBuddyText = true;
return;
}
}
}
}
}
}
internal override void UpdateValue()
{
if (this.RealValue == -100)
{
this.Value = this.RealValue;
}
else
{
int validPresence = Imps.Client.Core.Presence.GetValidPresence(this.RealValue);
switch (validPresence)
{
case 0:
case 1:
this.Value = 0x383;
return;
}
this.Value = validPresence;
}
}
public Imps.Client.Core.CrbtCollection CrbtCollection
{
get
{
return this._crbtCol;
}
}
public Imps.Client.Core.CrbtToBuddySettings CrbtToBuddySettings
{
get
{
return this._crbtToBuddySettings;
}
set
{
this._crbtToBuddySettings = value;
}
}
public ProposedData<string> MoodPhrase
{
get
{
return this.Owner.PersonalInfo.MoodPhrase;
}
}
public Imps.Client.Core.User Owner
{
get
{
return this._owner;
}
}
internal int PreviousPresencePriority
{
get
{
return this._previousPresencePriority;
}
set
{
this._previousPresencePriority = value;
}
}
public bool TransmitBySmsAfterSingout
{
get
{
if (base.SmsStatus != null)
{
return (base.SmsStatus.OriginalValue <= TimeSpan.Zero);
}
return true;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -