示例#1
0
        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;
        }
示例#2
0
        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);
        }
示例#3
0
 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];
             }
         }
     }
 }