public override IEnumerable <Item> Perform(IEnumerable <Item> items, IEnumerable <Item> modItems) { string number; Item item = items.First(); if (item is ITextItem) { number = Skype.StripPhoneChars((item as ITextItem).Text); if (!number.StartsWith("+")) { number = string.Format("+{0}", number); } Skype.Call(number); } else if (item is SkypeContactDetailItem) { Skype.Call((item as SkypeContactDetailItem).Handle); } else if (item is ContactItem) { Skype.Call(item as ContactItem); } else if (item is IContactDetailItem) { number = Skype.StripPhoneChars((item as IContactDetailItem).Description); if (!number.StartsWith("+")) { number = string.Format("+{0}", number); } Skype.Call(number); } yield break; }
public override bool SupportsItem(Item item) { if (item is ITextItem) { return(Regex.Match(Skype.StripPhoneChars((item as ITextItem).Text), "^[+]?\\d*$").Success); } if (item is ContactItem) { return(null != (item as ContactItem) ["handle.skype"]); } if (item is SkypeContactDetailItem) { return(true); } if (item is IContactDetailItem) { IContactDetailItem detail = (item as IContactDetailItem); if (detail.Key.Contains("phone")) { return(true); } return(Regex.Match(Skype.StripPhoneChars(detail.Description), "^[+]?\\d*$").Success); } return(false); }
public SkypeContactDetailItem(ContactItem owner, string handle) { this.Handle = handle; this.status = Skype.ContactStatus(this.Handle); //if offline was returned, query to see if the user has a phone number set, maybe the user's status is really "SKYPEOUT" if (this.status == Skype.Statuses [OnlineStatus.Offline]) { foreach (string detail in owner.Details.Where(d => d.Contains("phone"))) { Console.WriteLine("Checking {0} :: {1}", detail, owner [detail]); if (Skype.ContactStatus(Skype.StripPhoneChars(owner [detail])) == Skype.Statuses [OnlineStatus.SkypeOut]) { this.status = Skype.Statuses [OnlineStatus.SkypeOut]; } } } }