コード例 #1
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);
                }
            }
        }
コード例 #2
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));
            }
        }
コード例 #3
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;
            }
        }