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