Пример #1
0
 protected virtual void OnPlacesChanged(PlaceChangedEventArgs e)
 {
     if (PlacesChanged != null)
         PlacesChanged(this, e);
 }
Пример #2
0
        private void Owner_PlacesChanged(object sender, PlaceChangedEventArgs e)
        {
            if (comboPlaces.InvokeRequired)
            {
                comboPlaces.BeginInvoke(new EventHandler<PlaceChangedEventArgs>(Owner_PlacesChanged), sender, e);
                return;
            }

            // if (Messenger.Owner.Places.Count > 1)
            {
                comboPlaces.BeginUpdate();
                comboPlaces.Items.Clear();
                comboPlaces.Items.Add("(" + Messenger.Owner.PlaceCount + ") Places");

                comboPlaces.Items.Add("Signout from here (" + Messenger.Owner.EpName + ")");
                comboPlaces.Items.Add("Signout from everywhere");

                Dictionary<Guid, EndPointData> copyPlaces = new Dictionary<Guid, EndPointData>(Messenger.Owner.EndPointData);

                foreach (KeyValuePair<Guid, EndPointData> keyvalue in copyPlaces)
                {
                    PrivateEndPointData ipep = keyvalue.Value as PrivateEndPointData;
                    if (ipep.Id != NSMessageHandler.MachineGuid)
                        comboPlaces.Items.Add(ipep.Name + " " + ipep.Id);
                }

                comboPlaces.SelectedIndex = 0;
                comboPlaces.Visible = true;
                comboPlaces.EndUpdate();
            }
        }
Пример #3
0
        internal void SetChangedPlace(PlaceChangedEventArgs e)
        {
            Trace.WriteLineIf(Settings.TraceSwitch.TraceVerbose,
                "The account " + e.EndPointData.Account +
                " was " + e.Reason +
                " at another place: " + e.PlaceName + " " + e.EndPointData.Id, GetType().Name);

            bool triggerEvent = false;

            lock (SyncObject)
            {
                switch (e.Reason)
                {
                    case PlaceChangedReason.SignedIn:

                        lock (SyncObject)
                            EndPointData[e.EndPointData.Id] = e.EndPointData;

                        triggerEvent = true;
                        break;

                    case PlaceChangedReason.SignedOut:
                        lock (SyncObject)
                        {
                            if (EndPointData.ContainsKey(e.EndPointData.Id))
                            {
                                EndPointData.Remove(e.EndPointData.Id);
                                triggerEvent = true;
                            }
                        }
                        break;
                }
            }

            if (triggerEvent)
            {
                OnPlacesChanged(e);
            }
        }