コード例 #1
0
ファイル: Util.cs プロジェクト: Br3nda/sfdocsamples
        /// <summary>
        /// Callback de la consulta de participantes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="iq"></param>
        /// <param name="data"></param>
        private void OnGetParticipants(object sender, IQ iq, object data)
        {
            Partisipants part = new Partisipants();

            DiscoItems items = iq.Query as DiscoItems;

            if (items == null)
            {
                return;
            }

            DiscoItem[] rooms = items.GetDiscoItems();


            foreach (DiscoItem item in rooms)
            {
                part.Servername = data.ToString();
                part.JidList.Add(item.Jid.Resource, item.Jid);
            }

            if (OnParticipantsLoadedEvent != null)
            {
                OnParticipantsLoadedEvent(part);
            }
        }
コード例 #2
0
        private void GotItems(object sender, IQ iq, object onode)
        {
            DiscoNode dn = onode as DiscoNode;

            Debug.Assert(dn != null);

            if (iq.Type != IQType.result)
            {
                // protocol error
                dn.AddItems(this, null);
                return;
            }

            DiscoItems items = iq.Query as DiscoItems;

            if (items == null)
            {
                // protocol error
                dn.AddItems(this, null);
                return;
            }

            dn.AddItems(this, items.GetItems());

            // automatically info everything we get an item for.
            foreach (DiscoNode n in dn.Children)
            {
                if (n.Features == null)
                {
                    RequestInfo(n);
                }
            }
        }
コード例 #3
0
 private void OnDiscoServerResult(object sender, IQ iq, object data)
 {
     if (iq.Type == IqType.result)
     {
         Element query = iq.Query;
         if (query != null && query.GetType() == typeof(DiscoItems))
         {
             DiscoItems items = query as DiscoItems;
             if (items != null)
             {
                 DiscoItem[] itms = items.GetDiscoItems();
                 foreach (DiscoItem itm in itms)
                 {
                     if (itm.Jid != null)
                     {
                         _discoManager.DiscoverInformation(itm.Jid, OnDiscoInfoResult, itm);
                         if (itm.Jid.Bare == "conference.ck")
                         {
                             this.treeList.BeginUnboundLoad();
                             this.treeList.AppendNode(new object[] { itm.Name, itm.Jid }, -1);
                             this.treeList.EndUnboundLoad();
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #4
0
 /// <summary>
 /// Callback
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="iq"></param>
 /// <param name="data"></param>
 private void OnCommandlistResult(object sender, IQ iq, object data)
 {
     if (iq.Type == IqType.result)
     {
         Element query = iq.Query;
         if (query != null && query.GetType() == typeof(DiscoItems))
         {
             DiscoItems items = query as DiscoItems;
             this.Invoke(new Action <DiscoItems>(displayCommandlistForm), items);
         }
     }
 }
コード例 #5
0
        /// <summary>
        /// Creates a disco#items IQ packet.
        /// </summary>
        /// <param name="doc">XmlDocument used to create the XML Elements.</param>
        /// <returns>XML element representing the disco#items request.</returns>
        public IQ ItemsIQ(System.Xml.XmlDocument doc)
        {
            m_pendingItems = true;

            DiscoItemsIQ iiq = new DiscoItemsIQ(doc);

            iiq.To   = JID;
            iiq.Type = IQType.get;
            if (Node != null)
            {
                DiscoItems items = iiq.Instruction;
                items.Node = Node;
            }
            return(iiq);
        }
コード例 #6
0
		protected override IQ GetDiscoItems(XmppStream stream, IQ iq, XmppHandlerContext context)
		{
			if (((DiscoItems)iq.Query).Node != null) return XmppStanzaError.ToServiceUnavailable(iq);

			var answer = new IQ(IqType.result);
			answer.Id = iq.Id;
			answer.From = Jid;
			answer.To = iq.From;
			var items = new DiscoItems();
			answer.Query = items;
			if (realJid != null)
			{
				items.AddDiscoItem().Jid = realJid;
			}
			return answer;
		}
コード例 #7
0
 private void displayCommandlistForm(DiscoItems items)
 {
     commandNode = null; sessionId = null;
     DiscoItem[] itms = items.GetDiscoItems();
     clearButtons();
     addButton("execute", true);
     clearForm();
     addFormInfoLabel("Select ad hoc command:", FONT_TITLE);
     ListItem[] list = new ListItem[itms.Length];
     for (int i = 0; i < itms.Length; i++)
     {
         list[i] = new ListItem(itms[i].Name, itms[i].Node);
     }
     Array.Sort(list);
     addFormListSingle("command", "Command:", list, null);
     this.Height = formY + 100;
     focusFirstElement();
 }
コード例 #8
0
        // We got back our disco#items query result
        private void GotItemsQuery(object sender, IQ iq, object state)
        {
            // If the user clicked stop, ignore this result
            if (was_stopped)
            {
                return;
            }

            try {
                if (iq.Type == IQType.result)
                {
                    DiscoItems item = (DiscoItems)iq.Query;

                    // Put each returned <item> into the ServiceListView
                    foreach (DiscoItem i in item.GetItems())
                    {
                        string name = i.Named;

                        if (string.IsNullOrEmpty(name))
                        {
                            name = i.Jid.ToString();
                        }

                        string node = string.Empty;

                        if (i.Node != null)
                        {
                            node = i.Node;
                        }

                        ServiceListView.Items.Add(new ListViewItem(new string[] { name, i.Jid.ToString(), node }));
                    }

                    TurnOffSpinner();
                }
                else if (iq.Type == IQType.error)
                {
                    GotErrorBack(iq);
                }
            } catch (Exception) {
                GotErrorBack(iq);
                MessageBox.Show(string.Format("Had a problem with Items response: {0}", iq.OuterXml));
            }
        }
コード例 #9
0
        // We got back our disco#items commands query result
        private void GotCommandItemsQuery(object sender, IQ iq, object state)
        {
            // If the user clicked stop, ignore this result
            if (was_stopped)
            {
                return;
            }

            try {
                if (iq.Type == IQType.result)
                {
                    DiscoItems item = (DiscoItems)iq.Query;

                    foreach (ToolStripItem tsi in ActionMenu.Items)
                    {
                        if (tsi.Text == "More Commands")
                        {
                            ToolStripMenuItem mi = (ToolStripMenuItem)tsi;

                            mi.DropDownItems.Clear();

                            foreach (DiscoItem i in item.GetItems())
                            {
                                mi.DropDownItems.Add(i.Named, null, new EventHandler(GetCommandAction_Click)).Tag = new ItemNode(iq.From, i.Node);
                            }

                            if (mi.DropDownItems.Count == 0)
                            {
                                mi.DropDownItems.Add("None");
                            }
                        }
                    }
                }
                else if (iq.Type == IQType.error)
                {
                    MessageBox.Show("Commands error");
                }
            } catch (Exception) {
                GotErrorBack(iq);
                MessageBox.Show(string.Format("Had a problem with Commands response: {0}", iq.OuterXml));
                throw;
            }
        }
コード例 #10
0
 /// <summary>
 /// Callback
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="iq"></param>
 /// <param name="data"></param>
 private void OnDiscoServerResult(object sender, IQ iq, object data)
 {
     if (iq.Type == IqType.result)
     {
         Element query = iq.Query;
         if (query != null && query.GetType() == typeof(DiscoItems))
         {
             DiscoItems  items = query as DiscoItems;
             DiscoItem[] itms  = items.GetDiscoItems();
             foreach (DiscoItem itm in itms)
             {
                 if (itm.Jid != null)
                 {
                     discoManager.DiscoverInformation(itm.Jid, new IqCB(OnDiscoInfoResult), itm);
                 }
             }
         }
     }
 }
コード例 #11
0
ファイル: Util.cs プロジェクト: Br3nda/sfdocsamples
        /// <summary>
        /// Callback
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="iq"></param>
        /// <param name="data"></param>
        private void OnGetChatRooms(object sender, IQ iq, object data)
        {
            ChatRooms  wChatRooms = new ChatRooms();
            DiscoItems items      = iq.Query as DiscoItems;

            if (items == null)
            {
                return;
            }

            DiscoItem[] rooms = items.GetDiscoItems();
            foreach (DiscoItem item in rooms)
            {
                wChatRooms.Servername = data.ToString();
                wChatRooms.JidList.Add(item.Name, item.Jid);
            }
            if (OnRoomsLoadedEvent != null && wChatRooms.JidList.Count != 0)
            {
                OnRoomsLoadedEvent(wChatRooms);
            }
        }
コード例 #12
0
        private void OnDiscoRoomlist(object sender, IQ iq, object data)
        {
            if (iq.Type == IqType.result)
            {
                Element query = iq.Query;
                if (query != null && query.GetType() == typeof(DiscoItems))
                {
                    DiscoItems  items  = query as DiscoItems;
                    DiscoItem[] itms   = items.GetDiscoItems();
                    string      server = "";
                    listView1.BeginUpdate();
                    foreach (DiscoItem itm in itms)
                    {
                        if (itm.Jid != null)
                        {
                            var lvi = listView1.Items.Add(itm.Jid.Bare, itm.Jid.User, -1);
                            try { lvi.Group = listView1.Groups[itm.Jid.Server]; } catch (Exception e) { }
                            server = itm.Jid.Server;
                            lvi.SubItems.Add(itm.Name); lvi.Tag = itm.Jid.Bare;
                            if (listView1.Columns.Count == 3)
                            {
                                lvi.SubItems.Add(itm.Jid.Server);
                            }
                            //if (rooms.Contains(itm.Jid.Bare)) lvi.Checked = true;
                        }
                    }
                    if (server != "")
                    {
                        var lvi2 = listView1.Items.Add("@" + server, "< other room >", -1);
                        try { lvi2.Group = listView1.Groups[server]; lvi2.SubItems.Add(""); lvi2.SubItems.Add(server); } catch (Exception e) { }
                        lvi2.Tag = "@" + server;
                    }

                    listView1.Sort();
                    UseWaitCursor = false;
                    listView1.EndUpdate();
                }
            }
        }
コード例 #13
0
        private void OnDiscoServerResult(object sender, IQ iq, object data)
        {
            if (iq.Type == IqType.result)
            {
                Element query = iq.Query;
                if (query != null && query.GetType() == typeof(DiscoItems))
                {
                    DiscoItems items = query as DiscoItems;

                    if (items != null)
                    {
                        DiscoItem[] itms = items.GetDiscoItems();
                        foreach (DiscoItem itm in itms)
                        {
                            if (itm.Jid != null)
                            {
                            }
                        }
                    }
                }
            }
        }
コード例 #14
0
        protected virtual IQ GetDiscoItems(XmppStream stream, IQ iq, XmppHandlerContext context)
        {
            if (((DiscoItems)iq.Query).Node != null)
            {
                return(XmppStanzaError.ToServiceUnavailable(iq));
            }

            var answer = new IQ(IqType.result);

            answer.Id   = iq.Id;
            answer.From = Jid;
            answer.To   = iq.From;
            var items = new DiscoItems();

            answer.Query = items;
            foreach (var service in ServiceManager.GetChildServices(Jid))
            {
                if (service.DiscoItem != null)
                {
                    items.AddDiscoItem(service.DiscoItem);
                }
            }
            return(answer);
        }
コード例 #15
0
        static void HipchatClient_OnLogin(object sender)
        {
            HipchatClient.OnIq += (e, mIq) =>
            {
                if (mIq.Type == IqType.error)
                {
                    return;
                }
                DiscoItems item = mIq.Query as DiscoItems;
                if (item == null)
                {
                    return;
                }
                var items = item.GetDiscoItems();
                foreach (HipchatRoom hipChatRoom in items.Select(room => new HipchatRoom(room.Name, room.Jid)))
                {
                    Rooms.Add(hipChatRoom);
                    Lobby.DoRoomCheck();
                }
            };
            DiscoManager mgnr = new DiscoManager(HipchatClient);

            mgnr.DiscoverItems(new Jid("conf.hipchat.com"));
        }