/// <summary> /// Constructeur /// </summary> public Contact(agsXMPP.Jid jid, string nickname, agsXMPP.Xml.Dom.ElementList grps) { _identity = new Identity(jid); if (nickname != null && nickname.Trim() != string.Empty) { _identity.nickname = nickname; } if (grps != null) { foreach (agsXMPP.protocol.Base.Group g in grps) { if (!_groups.Contains(g.Name)) { _groups.Add(g.Name); } } } _status = new Status(); _status.type = Enums.StatusType.Unavailable; _status.message = string.Empty; _mood = new Mood(); _mood.type = Enums.MoodType.none; _mood.text = string.Empty; _activity = new Activity(); _activity.type = Enums.ActivityType.none; _activity.text = string.Empty; _location = new Location(); _location.altitude = 0; _location.latitude = 0; _location.longitude = 0; _location.bearing = 0; _location.error = 0; _location.speed = 0; _location.area = string.Empty; _location.building = string.Empty; _location.country = string.Empty; _location.datum = string.Empty; _location.description = string.Empty; _location.floor = string.Empty; _location.locality = string.Empty; _location.postalcode = string.Empty; _location.region = string.Empty; _location.room = string.Empty; _location.street = string.Empty; _location.text = string.Empty; _location.timestamp = new DateTime(); _location.uri = string.Empty; _tune = new Tune(); _tune.artist = string.Empty; _tune.length = 0; _tune.rating = 1; _tune.source = string.Empty; _tune.title = string.Empty; _tune.track = 0; _tune.uri = string.Empty; }
/// <summary> /// Constructeur /// </summary> public Presence() { _status = new Status(); _status.type = Enums.StatusType.Normal; _status.message = string.Empty; _mood = new Mood(); _mood.type = Enums.MoodType.none; _mood.text = string.Empty; _location = new Location(); _location.altitude = 0; _location.latitude = 0; _location.longitude = 0; _location.bearing = 0; _location.error = 0; _location.speed = 0; _location.area = string.Empty; _location.building = string.Empty; _location.country = string.Empty; _location.datum = string.Empty; _location.description = string.Empty; _location.floor = string.Empty; _location.locality = string.Empty; _location.postalcode = string.Empty; _location.region = string.Empty; _location.room = string.Empty; _location.street = string.Empty; _location.text = string.Empty; _location.timestamp = new DateTime(); _location.uri = string.Empty; _tune = new Tune(); _tune.artist = string.Empty; _tune.length = 0; _tune.rating = 1; _tune.source = string.Empty; _tune.title = string.Empty; _tune.track = 0; _tune.uri = string.Empty; _autoIdleStatus = new Status(); _autoIdleStatus.type = Enums.StatusType.Away; _autoIdleStatus.message = "(Auto Idle)"; autoIdleTimer.Elapsed += new System.Timers.ElapsedEventHandler(autoIdleTimerElapsed); autoIdleTimer.Enabled = true; }
/// <summary> /// Change la Presence d'une resource /// </summary> /// <param name="presence">Contenu de la pr�sence</param> private void SetPresence(agsXMPP.protocol.client.Presence presence) { if (presence.From != null && presence.To.Bare == Jabber.xmpp.MyJID.Bare) { string bare = presence.From.Bare; string resource = (presence.From.Resource != null) ? presence.From.Resource.Trim() : string.Empty; if (contacts.ContainsKey(bare)) { if (resource != string.Empty) { if (!contacts[bare].ContainsKey(resource)) { contacts[bare].Add(resource, new Contact(presence.From, string.Empty, null)); OnResourceAdded(contacts[bare][resource]); } contacts[bare][resource].priority = presence.Priority; Status st = new Status(); st.message = (presence.Status != null) ? presence.Status.Trim() : string.Empty; st.type = Enumerations.PresenceTypeConverter(presence.Type); if (st.type == Enumerations.StatusType.Normal) { if (contacts[bare][resource].status.type != Enumerations.StatusType.Normal) { if (initialUserPEP.ContainsKey(bare)) { if (initialUserPEP[bare].activity.text != null) { contacts[bare][resource].activity = initialUserPEP[bare].activity; OnActivityUpdated(contacts[bare][resource], contacts[bare][resource].activity); } if (initialUserPEP[bare].mood.text != null) { contacts[bare][resource].mood = initialUserPEP[bare].mood; OnMoodUpdated(contacts[bare][resource], contacts[bare][resource].mood); } if (initialUserPEP[bare].location.text != null) { contacts[bare][resource].location = initialUserPEP[bare].location; OnLocationUpdated(contacts[bare][resource], contacts[bare][resource].location); } if (initialUserPEP[bare].tune.title != null) { contacts[bare][resource].tune = initialUserPEP[bare].tune; OnTuneUpdated(contacts[bare][resource], contacts[bare][resource].tune); } initialUserPEP.Remove(bare); } } st.type = Enumerations.StatusTypeConverter(presence.Show); } if (st.type == Enumerations.StatusType.Unvailable) { if (contacts[bare][resource].status.type != Enumerations.StatusType.Unvailable) { if (initialUserPEP.ContainsKey(bare)) { initialUserPEP.Remove(bare); } UserPEP up = new UserPEP(); up.tune = contacts[bare][resource].tune; up.activity = contacts[bare][resource].activity; up.mood = contacts[bare][resource].mood; up.location = contacts[bare][resource].location; initialUserPEP.Add(bare, up); } } contacts[bare][resource].status = st; if (presence.XDelay != null) { contacts[bare][resource].timeInterval = (DateTime.Now - presence.XDelay.Stamp); } if (presence.Nickname != null) { contacts[bare][resource].identity.nickname = presence.Nickname.ToString().Trim(); } contacts[bare][resource].lastUpdated = DateTime.Now; OnPresenceUpdated(contacts[bare][resource]); } privacyListUpdated(Jabber._privacy); } } }
/// <summary> /// Se produit � chaque fois que l'inactivit� est trop longue /// </summary> /// <param name="sender">Objet parent</param> /// <param name="e">Arguments du timer</param> private void autoIdleTimerElapsed(object sender, System.Timers.ElapsedEventArgs e) { if (autoIdle) { int idleMinutes = ((Environment.TickCount - getLastActivityTicks()) / 1000) / 60; if (idleMinutes >= autoIdleMinutes && !_autoIdleState) { _autoIdleState = true; _autoIdleLastStatus = status; status = autoIdleStatus; applyStatus(); } else if (idleMinutes < autoIdleMinutes && _autoIdleState) { _autoIdleState = false; status = _autoIdleLastStatus; applyStatus(); } } }