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

📄 useraccountmanager.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 4 页
字号:
                        if (service.Subscribed)
                        {
                            item.get_DropDownItems().Add(new TagedToolStripMenuItem(tag, string.Format("注销{0}...", service.Name), null, new EventHandler(this.SubscribeOrUnSubscribeServiceEventHandler)));
                        }
                        else
                        {
                            item.get_DropDownItems().Add(new TagedToolStripMenuItem(tag, string.Format("开通{0}...", service.Name), null, new EventHandler(this.SubscribeOrUnSubscribeServiceEventHandler)));
                        }
                    }
                }
                finally
                {
                    enumerator.Dispose();
                }
                list.Add(item);
                this._menuItemsUser = list.ToArray();
            }
            this._miUser.get_DropDownItems().AddRange(this._menuItemsUser);
        }

        private void ChangePresence(MainPresence presence, string desc)
        {
            BeforeMainPresenceChangeEventArgs e = new BeforeMainPresenceChangeEventArgs(presence);
            FuncDispatcher.OnEventHandler<BeforeMainPresenceChangeEventArgs>(this, this.BeforeUserMainPresenceChange, e);
            if (this.InnerContinueAfterImpsCancel(e, false))
            {
                this.CurrentUser.Presence.AsyncChangeMainPresence(presence, desc);
            }
        }

        private menu_radioitem CreatePresenceMenuItem(CustomPresence cp, string desc, bool handleClickSelf)
        {
            menu_radioitem _radioitem = new menu_radioitem(desc);
            _radioitem.set_Tag(cp);
            _radioitem.set_Image(ImpsPresenceIcons.UserPresenceIcons.get_Item(cp.BasicPresence));
            if (handleClickSelf)
            {
                _radioitem.add_Click(new EventHandler(this.miPresence_Click));
            }
            return _radioitem;
        }

        public void DoLogin()
        {
            this.Login();
        }

        internal void DoPresenceMenuItemsOpening(ToolStripItemCollection presenceItems)
        {
            ToolStripItem item;
            this._miLogout.set_Text((this.CurrentUser.Status == UserAccountStatus.OfflineLogon) ? StringTable.Framework.MI_TranUser : StringTable.Framework.MI_SignOut);
            UserPresence presence = this.CurrentUser.Presence;
            bool transmitBySmsAfterSingout = this.CurrentUser.Presence.TransmitBySmsAfterSingout;
            int num = 0;
            while ((item = presenceItems.get_Item(num++)) is menu_radioitem)
            {
                CustomPresence presence2 = item.get_Tag() as CustomPresence;
                if (presence2 != null)
                {
                    if (presence2.BasicPresence == MainPresence.OfflineLogin)
                    {
                        item.set_Visible(this._loginOnPC);
                    }
                    ((menu_radioitem) item).Radioed = (presence.MainPresence == presence2.BasicPresence) && !presence.IsCustomizedPresence;
                }
            }
            while (num < presenceItems.get_Count())
            {
                if (presenceItems.get_Item(num) is ToolStripSeparator)
                {
                    break;
                }
                presenceItems.RemoveAt(num);
            }
            List<CustomPresence> list = new List<CustomPresence>();
            list.AddRange(this.CurrentUser.Configuration.UserSetting.CustomPresences);
            list.Add(new CustomPresence(StringTable.Presence.MI_BeRightBack, MainPresence.Away));
            list.Add(new CustomPresence(StringTable.Presence.MI_Meeting, MainPresence.Busy));
            list.Add(new CustomPresence(StringTable.Presence.MI_OnThePhone, MainPresence.Busy));
            list.Add(new CustomPresence(StringTable.Presence.MI_OutToLunch, MainPresence.Away));
            int num2 = list.get_Count();
            if (num2 > 5)
            {
                num2 = 5;
            }
            for (int i = 0; i < num2; i++)
            {
                CustomPresence cp = list.get_Item(i);
                if (!string.IsNullOrEmpty(cp.Desccription))
                {
                    item = this.CreatePresenceMenuItem(cp, StringHelper.GetPaddingStringEndEllipsis(cp.Desccription, 30).Replace("&", "&&"), true);
                    item.set_Enabled(this.CurrentUser.Status == UserAccountStatus.Logon);
                    presenceItems.Insert(num++, item);
                    if (presence.IsCustomizedPresence && (presence.Text == cp.Desccription))
                    {
                        ((menu_radioitem) item).Radioed = true;
                    }
                }
            }
            ToolStripItem item2 = new ToolStripMenuItem(StringTable.Presence.MI_SetCustomizePresence);
            item2.add_Click(new EventHandler(this.miPresenceCustomize_Click));
            presenceItems.Insert(num++, item2);
            item2.set_Enabled(this.CurrentUser.Status == UserAccountStatus.Logon);
            if (num < presenceItems.get_Count())
            {
                num++;
                item = presenceItems.get_Item(num++);
                if (this.CurrentUser.Status == UserAccountStatus.Logon)
                {
                    item.set_Enabled(true);
                    ((menu_radioitem) item).Radioed = transmitBySmsAfterSingout;
                }
                else
                {
                    item.set_Enabled(false);
                }
                item = presenceItems.get_Item(num);
                if (this.CurrentUser.Status == UserAccountStatus.Logon)
                {
                    item.set_Enabled(true);
                    ((menu_radioitem) item).Radioed = !transmitBySmsAfterSingout;
                }
                else
                {
                    item.set_Enabled(false);
                    return;
                }
                TimeSpan originalValue = this.CurrentUser.Presence.SmsStatus.OriginalValue;
                if ((!transmitBySmsAfterSingout && (originalValue > TimeSpan.Zero)) && (originalValue.Days < 30))
                {
                    StringBuilder builder = new StringBuilder();
                    if (originalValue.Days > 0)
                    {
                        builder.Append(originalValue.Days);
                        builder.Append("天");
                    }
                    if (originalValue.Hours > 0)
                    {
                        builder.Append(originalValue.Hours);
                        builder.Append("小时");
                    }
                    if ((builder.Length == 0) && (originalValue.Minutes > 0))
                    {
                        builder.Append(originalValue.Minutes);
                        builder.Append("分钟");
                    }
                    if (builder.Length > 0)
                    {
                        builder.Append("后将自动恢复为“通过短信接收”");
                        item.set_ToolTipText(builder.ToString());
                    }
                    else
                    {
                        item.set_ToolTipText(string.Empty);
                    }
                }
                else
                {
                    item.set_ToolTipText(string.Empty);
                }
            }
        }

        public void FillUserIdAndPassword(string id, string pass, bool autoLogin)
        {
            this._entryControl.FillUserIdAndPassword(id, pass);
            if (autoLogin)
            {
                this._entryControl.Invoke(new SimpleEventHandler(this.DoLogin));
            }
        }

        internal ToolStripItem[] GetBasicPresenceMenuItems()
        {
            MainPresence[] presenceArray = new MainPresence[] { MainPresence.Online, MainPresence.Busy, MainPresence.Away, MainPresence.Invisible };
            string[] textArray = new string[] { StringTable.Presence.MI_Online, StringTable.Presence.MI_Busy, StringTable.Presence.MI_Away, StringTable.Presence.MI_Invisible };
            ToolStripItem[] itemArray = new ToolStripItem[presenceArray.Length + 1];
            for (int i = 0; i < presenceArray.Length; i++)
            {
                itemArray[i] = this.CreatePresenceMenuItem(new CustomPresence(string.Empty, presenceArray[i]), textArray[i], false);
            }
            this._miOfflineLogin = this.CreatePresenceMenuItem(new CustomPresence(string.Empty, MainPresence.OfflineLogin), StringTable.Presence.MI_OfflineLogin, false);
            itemArray[presenceArray.Length] = this._miOfflineLogin;
            return itemArray;
        }

        internal ToolStripItem[] GetPresenceMenuItems(bool noSms, bool noExit)
        {
            ToolStripMenuItem item;
            MainPresence[] presenceArray = new MainPresence[] { MainPresence.Online, MainPresence.Busy, MainPresence.Away, MainPresence.Invisible, MainPresence.OfflineLogin };
            string[] textArray = new string[] { StringTable.Presence.MI_Online, StringTable.Presence.MI_Busy, StringTable.Presence.MI_Away, StringTable.Presence.MI_Invisible, StringTable.Presence.MI_OfflineLogin };
            List<ToolStripItem> list = new List<ToolStripItem>();
            UserPresence presence = this.CurrentUser.Presence;
            int index = 0;
            for (index = 0; index < presenceArray.Length; index++)
            {
                item = this.CreatePresenceMenuItem(new CustomPresence(string.Empty, presenceArray[index]), textArray[index], true);
                if ((presence.MainPresence == presenceArray[index]) && (presence.Text == textArray[index]))
                {
                    ((menu_radioitem) item).Radioed = true;
                }
                list.Add(item);
            }
            ToolStripSeparator separator = new ToolStripSeparator();
            separator.set_Enabled(false);
            list.Add(separator);
            if (!noSms)
            {
                separator = new ToolStripSeparator();
                separator.set_Enabled(false);
                list.Add(separator);
                item = new menu_radioitem(StringTable.Presence.MI_MessageBySms);
                item.add_Click(new EventHandler(this.miBySms_Click));
                list.Add(item);
                item = new menu_radioitem(StringTable.Presence.MI_MessageNotBySms);
                item.add_Click(new EventHandler(this.miNotBySms_Click));
                list.Add(item);
            }
            if (!noExit)
            {
                ToolStripSeparator separator2 = new ToolStripSeparator();
                separator2.set_Enabled(false);
                list.Add(separator2);
                item = new ToolStripMenuItem(StringTable.Framework.MI_SignOut);
                this._miLogout = item;
                item.add_Click(new EventHandler(this.miSignOut_Click));
                list.Add(item);
                item = new ToolStripMenuItem(string.Format(StringTable.Framework.MI_Exit, AppDictionary.CurrentClientName));
                item.add_Click(new EventHandler(this.miExit_Click));
                list.Add(item);
            }
            return list.ToArray();
        }

        internal ToolStripItem[] GetRecentBuddiesMenuItems()
        {
            ToolStripItem[] itemArray = new ToolStripItem[this.CurrentUser.ContactList.RecentBuddies.get_Count()];
            for (int i = itemArray.Length - 1; i >= 0; i--)
            {
                Imps.Client.Core.Contact contact = this.CurrentUser.ContactList.RecentBuddies.get_Item(i);
                ToolStripMenuItem item = new menu_radioitem(StringHelper.GetPaddingStringEndEllipsis(contact.DisplayName, 30).Replace("&", "&&"));
                item.set_Tag(contact.Uri);
                item.set_Image(contact.PresenceIcon.Image);
                item.add_Click(new EventHandler(this.miRecentBuddies_Click));
                itemArray[(itemArray.Length - i) - 1] = item;
            }
            return itemArray;
        }

        void IUserAccountManager.OnOperationMenuItemsOpening(ToolStripMenuItem operationMenuItem)
        {
            this._menuItemsOperation[0].set_Enabled((this.CurrentUser.Status == UserAccountStatus.Logon) || (this.CurrentUser.Status == UserAccountStatus.OfflineLogon));
        }

        public void Initialize(IFrameworkWindow framework, XmlNode section)
        {
        }

        private void InnerChangeSmsStatus(TimeSpan ts)
        {
            this.CurrentUser.Presence.SmsStatus.ProposedValue = ts;
            AsyncBizOperation op = new AsyncBizOperation();
            op.IsImpsErrorHandled = true;
            this.CurrentUser.Presence.CommitChanges(op);
        }

        private bool InnerContinueAfterImpsCancel(ImpsCancelEventArgs e, bool force)
        {
            if (e.Cancel)
            {
                try
                {
                    StringBuilder builder;
                    if (force)
                    {
                        using (IEnumerator<ImpsCancelOperationDelegate> enumerator = e.CancelOperations.GetEnumerator())
                        {
                            while (enumerator.MoveNext())
                            {
                                enumerator.get_Current()(false);
                            }
                        }
                        return true;
                    }
                    this._frameworkWnd.ActiveMainWindow();
                    if (this._msgBoxPending)
                    {

⌨️ 快捷键说明

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