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

📄 buserinfocontrol.cs

📁 飞信的收发使用csharp进行开发
💻 CS
📖 第 1 页 / 共 2 页
字号:
namespace Imps.Client.Pc
{
    using Imps.Client;
    using Imps.Client.Core;
    using Imps.Client.Pc.BizControls;
    using Imps.Client.Resource;
    using Imps.Client.Utils;
    using System;
    using System.ComponentModel;
    using System.Drawing;
    using System.Windows.Forms;

    public class BUserInfoControl : UserControl
    {
        private UserAccountManager _manager;
        private menu_widget cmMoodPhrases;
        private menu_widget cmStatus;
        private IContainer components;
        private BDisplayPersonalMessage ctlMoodPhrase;
        private BDisplayNameAndOnlineStatus ctlNickname;
        private DisplayPortrait ctlPortrait;
        private BPanel pnlTop;
        private ToolStripButton toolColorRing;
        private ToolStripButton toolIM;
        private ToolStripButton toolIVR;
        private ToolStripButton toolMatch;
        private ToolStripButton toolShareContent;
        private ToolStripButton toolSms;
        private IMToolstrip tsMain;

        public BUserInfoControl(UserAccountManager manager)
        {
            this._manager = manager;
            this._manager.CurrentUser.StatusChanged += new EventHandler<UserSatusChangedEventArgs>(this.CurrentUser_StatusChanged);
            this._manager.CurrentUser.PersonalInfo.PropertiesChanged += new EventHandler<PropertiesChangedEventArgs>(this.ActiveUser_PersonalInfoChanged);
            this._manager.CurrentUser.Presence.PropertiesChanged += new EventHandler<PropertiesChangedEventArgs>(this.ActiveUser_PresenceChanged);
            this.InitializeComponent();
            this.DoLocalize();
        }

        private void ActiveUser_PersonalInfoChanged(object sender, PropertiesChangedEventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                if (e.ContainsProperty("nickname"))
                {
                    this.ctlNickname.DisplayName = this._manager.CurrentUser.Nickname;
                }
                if (e.ContainsProperty("impresa"))
                {
                    this.SetMoodPhrase(this._manager.CurrentUser.Presence.MoodPhrase.Value);
                }
                if (e.ContainsProperty("Portrait"))
                {
                    ControlHelper.FadeinImage(this.ctlPortrait, this._manager.CurrentUser.PersonalInfo.PortraitMedium);
                }
            });
        }

        private void ActiveUser_PresenceChanged(object sender, PropertiesChangedEventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                if (e.ContainsAnyOfProperties(new string[] { "value", "desc" }))
                {
                    this.ctlNickname.OnlineStatusText = "(" + this._manager.CurrentUser.Presence.Text + ")";
                }
            });
        }

        private void ChangeMoodPhrase_ImpsError(object sender, ImpsErrorEventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                this.SetMoodPhrase((string) this._manager.CurrentUser.Presence.MoodPhrase);
            });
        }

        private void cmMoodPhrases_Opening(object sender, CancelEventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                this.cmMoodPhrases.Items.Clear();
                MoodPhraseCollection moodPhrases = this._manager.CurrentUser.Configuration.UserSetting.MoodPhrases;
                for (int j = 0; i < moodPhrases.Count; i++)
                {
                    string text = moodPhrases[i];
                    if (text.Length > 0x10)
                    {
                        text = text.Substring(0, 14) + "...";
                    }
                    menu_radioitem _radioitem = new menu_radioitem(text);
                    this.cmMoodPhrases.Items.Add(_radioitem);
                    _radioitem.ToolTipText = moodPhrases[i];
                    if (string.Equals(moodPhrases[i], this.ctlMoodPhrase.Text))
                    {
                        _radioitem.Radioed = true;
                    }
                    else
                    {
                        _radioitem.Click += new EventHandler(this.tiMoodPhrase_Click);
                    }
                }
                if (moodPhrases.Count > 0)
                {
                    ToolStripSeparator separator = new ToolStripSeparator {
                        Enabled = false
                    };
                    this.cmMoodPhrases.Items.Add(separator);
                }
                ToolStripItem item = this.cmMoodPhrases.Items.Add(StringTable.User.UI_EraseMoodPhrase);
                item.ToolTipText = string.Empty;
                item.Enabled = this.ctlMoodPhrase.Text.Length > 0;
                item.Click += new EventHandler(this.tiMoodPhrase_Click);
            });
        }

        private void cmStatus_Opening(object sender, CancelEventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                this._manager.DoPresenceMenuItemsOpening(this.cmStatus.Items);
            });
        }

        private void CurrentUser_StatusChanged(object sender, UserSatusChangedEventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                if (this._manager.CurrentUser.Status == UserAccountStatus.Logon)
                {
                    this.ctlNickname.DisplayName = this._manager.CurrentUser.Nickname;
                    this.SetMoodPhrase((string) this._manager.CurrentUser.Presence.MoodPhrase);
                    this.ctlPortrait.Image = this._manager.CurrentUser.PersonalInfo.PortraitMedium;
                    this.toolMatch.Visible = this._manager.CurrentUser.Configuration.SystemSetting.ServerUriSetting.MatchingEnabled;
                }
            });
        }

        private void displayPersonalMessage_TextBoxAccepted(object sender, EventArgs e)
        {
            this.TryChangeMoodPhrase(this.ctlMoodPhrase.Text);
        }

        private void DoLocalize()
        {
            this.ctlPortrait.Image = ImpsPortrait.GetDefaultPortrait(0x40, 0x40);
            this.ctlMoodPhrase.MaxLength = 0x100;
            this.toolColorRing.ToolTipText = StringTable.Framework.TipColorRbt;
            this.toolMatch.ToolTipText = AppDictionary.MatchServiceLocalName;
            this.toolIM.ToolTipText = StringTable.User.TipToolIm;
            this.toolIVR.ToolTipText = StringTable.User.TipToolIvr;
            this.toolShareContent.ToolTipText = StringTable.User.TipToolFile;
            this.toolSms.ToolTipText = StringTable.User.TipToolSms;
            this.ctlNickname.ToolTipText = StringTable.User.TipNickname;
            this.ctlMoodPhrase.ToolTipText = StringTable.User.TipMoodPhrase;
            this.ctlMoodPhrase.EmptyPersonalMessageText = StringTable.User.UI_MoodPhraseHint;
            this.BackColor = Color.Transparent;
            base.Padding = new Padding(2, 0, 1, 0);
            base.Height = 0x52;
            new ToolTip(this.components).SetToolTip(this.ctlPortrait, StringTable.User.TipPortrait);
            this.cmStatus.Items.AddRange(this._manager.GetPresenceMenuItems(true));
        }

        private void dpContact_Click(object sender, EventArgs e)
        {
            UiErrorHelper.HandEventSafely(this._manager.FrameworkWnd, delegate {
                this._manager.FrameworkWnd.ShowOptions("PsGeneral");
            });
        }

        private void InitializeComponent()
        {
            this.components = new Container();
            ComponentResourceManager manager = new ComponentResourceManager(typeof(BUserInfoControl));
            this.pnlTop = new BPanel();
            this.ctlMoodPhrase = new BDisplayPersonalMessage();
            this.cmMoodPhrases = new menu_widget(this.components);
            this.ctlNickname = new BDisplayNameAndOnlineStatus();
            this.cmStatus = new menu_widget(this.components);
            this.tsMain = new IMToolstrip();
            this.toolIM = new ToolStripButton();
            this.toolSms = new ToolStripButton();
            this.toolIVR = new ToolStripButton();
            this.toolShareContent = new ToolStripButton();
            this.toolColorRing = new ToolStripButton();
            this.toolMatch = new ToolStripButton();
            this.ctlPortrait = new DisplayPortrait();
            this.pnlTop.SuspendLayout();
            this.tsMain.SuspendLayout();
            base.SuspendLayout();
            this.pnlTop.BackgroundImage = (Image) manager.GetObject("pnlTop.BackgroundImage");
            this.pnlTop.BorderColor = Color.FromArgb(0xa4, 170, 220);
            this.pnlTop.BorderInsideColor = Color.White;
            this.pnlTop.BorderInsideWidth = 1;
            this.pnlTop.BorderWidth = 1;
            this.pnlTop.Controls.Add(this.ctlMoodPhrase);
            this.pnlTop.Controls.Add(this.ctlNickname);
            this.pnlTop.Controls.Add(this.tsMain);
            this.pnlTop.Controls.Add(this.ctlPortrait);
            this.pnlTop.Dock = DockStyle.Fill;
            this.pnlTop.Location = new Point(0, 0);
            this.pnlTop.Name = "pnlTop";
            this.pnlTop.Padding = new Padding(2);
            this.pnlTop.Size = new Size(0x162, 0x52);
            this.pnlTop.TabIndex = 2;
            this.ctlMoodPhrase.Anchor = AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Top;
            this.ctlMoodPhrase.BackColor = Color.White;
            this.ctlMoodPhrase.DropDownButtonImage = (Image) manager.GetObject("ctlMoodPhrase.DropDownButtonImage");
            this.ctlMoodPhrase.DropdownButtonTootipText = "选择此选项显示您的历史心情短语";
            this.ctlMoodPhrase.DropDownMenu = this.cmMoodPhrases;

⌨️ 快捷键说明

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