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

📄 userpresence.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 3 页
字号:
        {
            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 + -