private void xmppClient_OnRosterItem(object sender, Matrix.Xmpp.Roster.RosterEventArgs e) { DisplayEvent(string.Format("OnRosterItem\t{0}\t{1}", e.RosterItem.Jid, e.RosterItem.Name)); if (e.RosterItem.Ask == Matrix.Xmpp.Roster.Ask.Unsubscribe) { } else if (e.RosterItem.Subscription != Subscription.Remove) { // set a default group name string groupname = "Contacts"; // id the contact has groups get the 1st group. In this example we don't support multiple or nested groups // for contacts, but XMPP has support for this. if (e.RosterItem.HasGroups) { groupname = e.RosterItem.GetGroups()[0]; } if (!_dictContactGroups.ContainsKey(groupname)) { var newGroup = new ListViewGroup(groupname); _dictContactGroups.Add(groupname, newGroup); listContacts.Groups.Add(newGroup); } var listGroup = _dictContactGroups[groupname]; // contact already exists, this is a contact update if (_dictContats.ContainsKey(e.RosterItem.Jid)) { listContacts.Items.RemoveByKey(e.RosterItem.Jid); } var contract = listContacts.Items.Find(e.RosterItem.Jid, true); if (contract.Count() == 0) { //var newItem = new ListViewItem(e.RosterItem.Jid, listGroup) {Name = e.RosterItem.Jid}; var newItem = new RosterListViewItem(e.RosterItem.Name ?? e.RosterItem.Jid, 0, listGroup) { Name = e.RosterItem.Jid.Bare }; newItem.SubItems.AddRange(new[] { "", "" }); listContacts.Items.Add(newItem); } if (contract.Count() > 0) { listContacts.Items[listContacts.Items.IndexOf(contract[0])].Text = e.RosterItem.Name; listContacts.Items[listContacts.Items.IndexOf(contract[0])].Group = listGroup; } } else if (e.RosterItem.Subscription == Subscription.Remove) { listContacts.Items.RemoveByKey(e.RosterItem.Jid); } }
private void InitGroupList() { DataTable dt = new DataTable(); HistoryTransactionTableAdapter local_history = new HistoryTransactionTableAdapter(); SqlCeConnection connection = new SqlCeConnection(local_history.Connection.ConnectionString); connection.Open(); SqlCeDataAdapter adapter = new SqlCeDataAdapter(string.Format(@"Select GroupName from HistoryTransaction where AccountName = '{0}' and ServerID = '{1}' and IsGroup = '{2}' Group By GroupName", xmppClient.Username, xmppClient.XmppDomain, "1"), connection); adapter.Fill(dt); connection.Close(); foreach (DataRow item in dt.Rows) { if (item[0].ToString() != string.Empty) { Jid room = new Jid(item[0].ToString()); var newItem = new RosterListViewItem(room.User ?? room.Bare, 0, null) { Name = room.Bare }; listBookmarkedRooms.Items.Add(newItem); } } DiscoManager _dm = new DiscoManager(xmppClient); _dm.DiscoverItems("conference." + FrmLogin.Instance.HostName, new EventHandler <IqEventArgs>(DiscoItemsResult)); }
/// <summary> /// Discovering chat rooms /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="Matrix.Xmpp.Client.IqEventArgs"/> instance containing the event data.</param> private void DiscoItemsResult(object sender, IqEventArgs e) { //<iq from="vm-debian" to="alex@vm-debian/MatriX" id="MX_4" type="result" xmlns="jabber:client"> // <query xmlns="http://jabber.org/protocol/disco#items"> // <item jid="conference.vm-debian" /> // <item jid="irc.vm-debian" /> // <item jid="pubsub.vm-debian" /> // <item jid="vjud.vm-debian" /> // </query> //</iq> var query = e.Iq.Element <Matrix.Xmpp.Disco.Items>(); if (query != null) { foreach (var itm in query.GetItems()) { // some servers have problems ifwe flood them weith too many packets here // the sleep is a hack to avpid this problems. //System.Threading.Thread.Sleep(200); //_dm.DiscoverInformation(itm.Jid, itm.Node); //_dm.DiscoverInformation(itm.Jid, itm.Node, new EventHandler<IqEventArgs>(DiscoInfoResult)); var newItem = new RosterListViewItem(itm.Jid.User ?? itm.Jid.Bare, 0, null) { Name = itm.Jid.Bare }; listGroup.Items.Add(newItem); } } }
void _xmppClient_OnIq(object sender, IqEventArgs e) { if (e.Iq.From != null && e.Iq.From.Bare == "search." + FrmLogin.Instance.HostName) { var query = e.Iq.Element <Matrix.Xmpp.Search.Search>(); foreach (var itm in query.GetItems()) { var newItem = new RosterListViewItem(itm.Nick ?? itm.Jid.Bare, 0, null) { Name = itm.Jid.Bare }; listSearchContracts.Items.Add(newItem); } } }
private void xmppClient_OnRosterItem(object sender, Matrix.Xmpp.Roster.RosterEventArgs e) { DisplayEvent(string.Format("OnRosterItem\t{0}\t{1}", e.RosterItem.Jid, e.RosterItem.Name)); if (e.RosterItem.Ask == Matrix.Xmpp.Roster.Ask.Unsubscribe) { } else if (e.RosterItem.Subscription != Subscription.Remove) { // set a default group name string groupname = "Contacts"; // id the contact has groups get the 1st group. In this example we don't support multiple or nested groups // for contacts, but XMPP has support for this. if (e.RosterItem.HasGroups) groupname = e.RosterItem.GetGroups()[0]; if (!_dictContactGroups.ContainsKey(groupname)) { var newGroup = new ListViewGroup(groupname); _dictContactGroups.Add(groupname, newGroup); listContacts.Groups.Add(newGroup); } var listGroup = _dictContactGroups[groupname]; // contact already exists, this is a contact update if (_dictContats.ContainsKey(e.RosterItem.Jid)) { listContacts.Items.RemoveByKey(e.RosterItem.Jid); } var contract = listContacts.Items.Find(e.RosterItem.Jid, true); if (contract.Count() == 0) { //var newItem = new ListViewItem(e.RosterItem.Jid, listGroup) {Name = e.RosterItem.Jid}; var newItem = new RosterListViewItem(e.RosterItem.Name ?? e.RosterItem.Jid, 0, listGroup) { Name = e.RosterItem.Jid.Bare }; newItem.SubItems.AddRange(new[] { "", "" }); listContacts.Items.Add(newItem); } if (contract.Count() > 0) { listContacts.Items[listContacts.Items.IndexOf(contract[0])].Text = e.RosterItem.Name; listContacts.Items[listContacts.Items.IndexOf(contract[0])].Group = listGroup; } } else if (e.RosterItem.Subscription == Subscription.Remove) { listContacts.Items.RemoveByKey(e.RosterItem.Jid); } }
private void InitGroupList() { DataTable dt = new DataTable(); HistoryTransactionTableAdapter local_history = new HistoryTransactionTableAdapter(); SqlCeConnection connection = new SqlCeConnection(local_history.Connection.ConnectionString); connection.Open(); SqlCeDataAdapter adapter = new SqlCeDataAdapter(string.Format(@"Select GroupName from HistoryTransaction where AccountName = '{0}' and ServerID = '{1}' and IsGroup = '{2}' Group By GroupName", xmppClient.Username, xmppClient.XmppDomain, "1"), connection); adapter.Fill(dt); connection.Close(); foreach (DataRow item in dt.Rows) { if (item[0].ToString() != string.Empty) { Jid room = new Jid(item[0].ToString()); var newItem = new RosterListViewItem(room.User ?? room.Bare, 0, null) { Name = room.Bare }; listBookmarkedRooms.Items.Add(newItem); } } DiscoManager _dm = new DiscoManager(xmppClient); _dm.DiscoverItems("conference." + FrmLogin.Instance.HostName, new EventHandler<IqEventArgs>(DiscoItemsResult)); }
/// <summary> /// Discovering chat rooms /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="Matrix.Xmpp.Client.IqEventArgs"/> instance containing the event data.</param> private void DiscoItemsResult(object sender, IqEventArgs e) { //<iq from="vm-debian" to="alex@vm-debian/MatriX" id="MX_4" type="result" xmlns="jabber:client"> // <query xmlns="http://jabber.org/protocol/disco#items"> // <item jid="conference.vm-debian" /> // <item jid="irc.vm-debian" /> // <item jid="pubsub.vm-debian" /> // <item jid="vjud.vm-debian" /> // </query> //</iq> var query = e.Iq.Element<Matrix.Xmpp.Disco.Items>(); if (query != null) { foreach (var itm in query.GetItems()) { // some servers have problems ifwe flood them weith too many packets here // the sleep is a hack to avpid this problems. //System.Threading.Thread.Sleep(200); //_dm.DiscoverInformation(itm.Jid, itm.Node); //_dm.DiscoverInformation(itm.Jid, itm.Node, new EventHandler<IqEventArgs>(DiscoInfoResult)); var newItem = new RosterListViewItem(itm.Jid.User ?? itm.Jid.Bare, 0, null) { Name = itm.Jid.Bare }; listGroup.Items.Add(newItem); } } }
void _xmppClient_OnIq(object sender, IqEventArgs e) { if (e.Iq.From != null && e.Iq.From.Bare == "search." + FrmLogin.Instance.HostName) { var query = e.Iq.Element<Matrix.Xmpp.Search.Search>(); foreach (var itm in query.GetItems()) { var newItem = new RosterListViewItem(itm.Nick ?? itm.Jid.Bare, 0, null) { Name = itm.Jid.Bare }; listSearchContracts.Items.Add(newItem); } } }