Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        /// <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);
                }
            }
        }
Ejemplo n.º 4
0
 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);
         }
     }
 }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        /// <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);
                }
            }
        }
Ejemplo n.º 8
0
 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);
         }
     }
 }