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); } } }
// 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)); } }
// 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; } }