Ejemplo n.º 1
0
        /// <summary> Конструктор </summary>
        public ViewModelContactDetail(ModelContact modelContact)
        {
            CurrentModelContact = modelContact;

            CommandDelete = new Command(obj =>
            {
                if (DataSourceContact.DeleteModelContact(CurrentModelContact))
                {
                    OnDeleteModelContactSuccessful();
                }
            });

            CommandApplyInvite = new Command(obj => ApplyInvite());

            CommandDenyInvite = new Command(obj => DenyInvite());

            CommandAddToWhite = new Command(obj => { AddToWhite(); OnWhiteChanged(); });

            CommandDeleteFromWhite = new Command(obj => { DeleteFromWhite(); OnWhiteChanged(); });

            CommandSendRequest = new Command(obj => SendRequest());

            CommandBlock = new Command(obj => { DataSourceContact.BlockModelContact(CurrentModelContact); OnBlockedChanged(); });

            CommandUnblock = new Command(obj => { DataSourceContact.UnblockModelContact(CurrentModelContact); OnBlockedChanged(); });

            CurrentModelContact.PropertyChanged += CurrentModelContact_PropertyChanged;
        }
Ejemplo n.º 2
0
 ///<summary> Метод прочтения сообщения </summary>
 public void InviteRead()
 {
     if (DataSourceContact.ReadInvite(CurrentModelContact))
     {
         OnInviteReadSuccessful();
     }
 }
        /// <summary> Конструктор </summary>
        public ViewModelCallRedirect(ModelCall currentModelCall)
        {
            var callerModelContact = currentModelCall?.ModelContactObj;

            ListModelContact = callerModelContact == null?DataSourceContact.GetListModelContact() : DataSourceContact.GetListModelContact().Where(a => a.Id != currentModelCall.ModelContactObj.Id).ToList();

            CurrentModelCall = currentModelCall;

            ApplyFilter(); // автоматически присвоит CurrentListModelContact

            CallbackRouter.Instance.ListModelContactStatusChanged       += OnListModelContactStatusChanged;
            CallbackRouter.Instance.ListModelContactSubscriptionChanged += OnListModelContactSubscriptionChanged;
            CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged;

            CommandApplyFilterAllContact      = new Command(obj => ApplyFilterListFilterContact(@"ViewModelCallRedirect_AllContact"));
            CommandApplyFilterDodicallContact = new Command(obj => ApplyFilterListFilterContact(@"ViewModelCallRedirect_DodicallContact"));
            CommandApplyFilterSavedContact    = new Command(obj => ApplyFilterListFilterContact(@"ViewModelCallRedirect_SavedContact"));
            CommandApplyFilterBlockedContact  = new Command(obj => ApplyFilterListFilterContact(@"ViewModelCallRedirect_BlockedContact"));
            CommandApplyFilterWhiteContact    = new Command(obj => ApplyFilterListFilterContact(@"ViewModelCallRedirect_WhiteContact"));

            CommandSelectContactList = new Command(obj => SelectContactList());
            CommandSelectHistoryList = new Command(obj => SelectHistoryList());
            CommandSelectDialpadList = new Command(obj => SelectDialpadList());

            ContactList = true;
        }
Ejemplo n.º 4
0
        /// <summary> Обработчик изменения подписки контактов внутри логики C++ </summary>
        private void ChangedListModelContactSubscription(List <PackageModelContactSubscription> listPackageModelContactSubscriptions)
        {
            if (ListModelConctactChatMembers == null)
            {
                return;
            }

            //var dictionary = _dataSourceContact.GetDictionaryModelContactSubscriptionByArrayXmppId(arrayXmppId);

            foreach (var i in listPackageModelContactSubscriptions)
            {
                var modelContact = ListModelConctactChatMembers.FirstOrDefault(obj => obj.XmppId == i.XmppId);

                if (modelContact != null)
                {
                    Action action = () => { modelContact.ModelContactSubscriptionObj = i.ModelContactSubscriptionObj.GetDeepCopy(); };

                    CurrentDispatcher.BeginInvoke(action);

                    //modelContact.ModelContactSubscriptionObj = i.Value;
                }
            }

            DataSourceContact.RefreshModelContactStatus(ListModelConctactChatMembers.Where(obj => listPackageModelContactSubscriptions.Any(o => o.XmppId == obj.XmppId)).ToList());
        }
        ///<summary> Метод удаления из белого списка </summary>
        public void DeleteFromWhite()
        {
            if (DataSourceContact.DeleteFromWhiteModelContact(CurrentModelContact))
            {
                ApplyFilter();
            }

            СheckСountWhiteContact();
        }
Ejemplo n.º 6
0
        //[Conditional("DEBUG")]
        //private void CheckCallbackName(string callbackName)
        //{
        //    throw new Exception($@"Неизвестный ключ Callback'a: {callbackName}");
        //}

        /// <summary> Обработчик изменений контактов внутри логики С++ </summary>
        private void LogicListContactChangedHandler()
        {
            var listChangedModelContact = new List <ModelContact>();
            var listDeletedModelContact = new List <ModelContact>();

            DataSourceContact.GetListChangedModelContact(listChangedModelContact, listDeletedModelContact);

            OnListModelContactChanged(listChangedModelContact, listDeletedModelContact);
        }
        /// <summary> Конструктор (без сохраненных контактов и заблокированных) </summary>
        public ViewModelSelectionContact()
        {
            ListModelContact = DataSourceContact.GetListModelContact().Where(obj => obj.IsDodicall && obj.Blocked == false && obj.IsAccessStatus).ToList();

            ApplyFilter(); // автоматически присвоит CurrentListModelContact

            CallbackRouter.Instance.ListModelContactStatusChanged += OnListModelContactStatusChanged;

            CallbackRouter.Instance.ListModelContactSubscriptionChanged += OnListModelContactSubscriptionChanged;
        }
        /// <summary> Обработчик изменения состояний подписки контактов </summary>
        private void OnListModelContactSubscriptionChanged(object sender, List <PackageModelContactSubscription> packageModelContactSubscriptions)
        {
            CurrentListModelContact = DataSourceContact.GetListModelContact().Where(obj => obj.IsDodicall && obj.Blocked == false && obj.IsAccessStatus).ToList();

            ListModelContactSort();

            Action action = () => OnEventViewModel("ChangedList");

            CurrentDispatcher.BeginInvoke(action);
        }
Ejemplo n.º 9
0
        ///<summary> Метод принятия приглашения </summary>
        public void ApplyInvite()
        {
            if (CurrentModelContact == null)
            {
                return;
            }

            if (DataSourceContact.ApplyInviteModelContact(CurrentModelContact))
            {
                OnApplyDenyInviteSuccessful(true);
            }
        }
        ///<summary> Метод отправки запроса контакту </summary>
        public void SendRequest(ModelContact modelContact)
        {
            if (modelContact == null)
            {
                return;
            }

            if (DataSourceContact.SendRequestModelContact(modelContact))
            {
                OnSendRequestSuccessful(modelContact);
            }
        }
        ///<summary> Метод принятия приглашения </summary>
        public void ApplyInvite(ModelContact modelContact)
        {
            if (modelContact == null)
            {
                return;
            }

            if (DataSourceContact.ApplyInviteModelContact(modelContact))
            {
                OnApplyInviteSuccessful(modelContact);
            }
        }
Ejemplo n.º 12
0
        ///<summary> Метод отправки запроса контакту </summary>
        public void SendRequest()
        {
            if (CurrentModelContact == null)
            {
                return;
            }

            if (DataSourceContact.SendRequestModelContact(CurrentModelContact))
            {
                OnSendRequestSuccessful();
            }
        }
        ///<summary> Проверка количества контактов в белом списке </summary>
        private void СheckСountWhiteContact()
        {
            var countWhiteContact = DataSourceContact.GetCountWhiteContact();

            if (countWhiteContact == 0)
            {
                var CurrentModelUserSettings = DataSourceUserSettings.GetModelUserSettings();

                CurrentModelUserSettings.DoNotDesturbMode = false;

                DataSourceUserSettings.SaveModelUserSettings(CurrentModelUserSettings);
            }
        }
Ejemplo n.º 14
0
        ///<summary> Метод отклонения приглашения </summary>
        public void DenyInvite()
        {
            if (CurrentModelContact == null)
            {
                return;
            }

            if (DataSourceContact.DenyInviteModelContact(CurrentModelContact))
            {
                CurrentModelContact.Id = Int32.MaxValue; // кастыль для демо, нет времени исправлять сейчас
                OnApplyDenyInviteSuccessful(false);
            }
        }
        ///<summary> Метод выполнения потока BackgroundWorker </summary>
        private void BackgroundWorkerOnDoWork(object sender, DoWorkEventArgs e)
        {
            _thread = Thread.CurrentThread;

            var listModelContact = DataSourceContact.FindModelContactsInDirectory(_filter);

            e.Result = listModelContact;

            if (_backgroundWorker.CancellationPending)
            {
                e.Cancel = true;
            }
        }
Ejemplo n.º 16
0
        /// <summary> Метод сохранения контакта </summary>
        private void Save()
        {
            CurrentModelContact.ListModelUserContactExtra = CurrentModelContact.ListModelUserContactExtra.Where(obj => !String.IsNullOrWhiteSpace(obj.Identity.Trim('+')))?.ToList();

            if (DataSourceContact.SaveModelContact(CurrentModelContact))
            {
                AddManualContactSuccessful?.Invoke(this, CurrentModelContact); // кастыль для демо
                OnCloseView();
            }
            else
            {
                throw new Exception(LocalizationApp.GetInstance().GetValueByKey(@"ViewModelManualContact_ContactNotSaved"));
            }
        }
        ///<summary> Метод отправки запроса контакту </summary>
        public void SendRequest()
        {
            if (_modelContactObj == null)
            {
                return;
            }

            if (DataSourceContact.SendRequestModelContact(_modelContactObj))
            {
                DataSourceContact.RefreshModelContactStatus(_modelContactObj); // кастылек, СВ сказал вручную после принятия заявки запрашивать статус, т.к. callback со статусом не прилетает

                OnSendRequestSuccessful();
            }
        }
        /// <summary> Метод обновления списков запросов и приглашений </summary>
        public void RefreshRequestInvite()
        {
            var listModelContactInvite = DataSourceContact.GetInviteListModelContact();

            // для сортировки сначала непрочитанные потом прочитанные
            ListModelContactInvite.Clear();
            ListModelContactInvite.AddRange(listModelContactInvite.FindAll(obj => obj.ModelContactSubscriptionObj.ModelEnumSubscriptionStatusObj.Code == 0));
            ListModelContactInvite.AddRange(listModelContactInvite.FindAll(obj => obj.ModelContactSubscriptionObj.ModelEnumSubscriptionStatusObj.Code != 0));

            ListModelContactRequest.Clear();
            ListModelContactRequest = DataSourceContact.GetRequestListModelContact();

            CountInvateUnread = DataSourceContact.GetCountInviteUnread();
        }
Ejemplo n.º 19
0
        /// <summary> Конструктор </summary>
        public ViewModelChatRedirect()
        {
            CommandSelectContactList = new Command(obj => SelectContactList());

            CommandSelectChatList = new Command(obj => SelectChattList());

            UseContactList = true;

            _listModelContact = DataSourceContact.GetListModelContact().Where(obj => obj.IsDodicall && !obj.Blocked).ToList();

            CurrentListModelContact = new ObservableCollection <ModelContact>(_listModelContact);

            _listModelChat = DataSourceChat.GetListModelChat().Where(obj => !obj.IsP2P).ToList();

            CurrentListModelChat = new ObservableCollection <ModelChat>(SortCurrentListModelChat(_listModelChat));
        }
        /// <summary> Конструктор </summary>
        public ViewModelContact()
        {
            ListModelContact = DataSourceContact.GetListModelContact();

            ApplyFilter(); // автоматически присвоит CurrentListModelContact

            CallbackRouter.Instance.ListModelContactChanged             += OnListModelContactChanged;
            CallbackRouter.Instance.ListModelContactStatusChanged       += OnListModelContactStatusChanged;
            CallbackRouter.Instance.ListModelContactSubscriptionChanged += OnListModelContactSubscriptionChanged;
            CallbackRouter.Instance.ModelConnectStateChanged            += OnModelConnectStateChanged;
            CallbackRouter.Instance.PresenceOffline += OnPresenceOffline;

            CommandApplyFilterAllContact      = new Command(obj => ApplyFilterListFilterContact(@"ViewModelContact_AllContact"));
            CommandApplyFilterDodicallContact = new Command(obj => ApplyFilterListFilterContact(@"ViewModelContact_DodicallContact"));
            CommandApplyFilterSavedContact    = new Command(obj => ApplyFilterListFilterContact(@"ViewModelContact_SavedContact"));
            CommandApplyFilterBlockedContact  = new Command(obj => ApplyFilterListFilterContact(@"ViewModelContact_BlockedContact"));
            CommandApplyFilterWhiteContact    = new Command(obj => ApplyFilterListFilterContact(@"ViewModelContact_WhiteContact"));

            CommandAddToWhiteModelContact = new Command(obj => { if (DataSourceContact.AddToWhiteModelContact(CurrentModelContact))
                                                                 {
                                                                     ApplyFilter();
                                                                 }
                                                        });
            CommandDeleteFromWhiteModelContact = new Command(obj => DeleteFromWhite());
            CommandBlockModelContact           = new Command(obj => { if (DataSourceContact.BlockModelContact(CurrentModelContact))
                                                                      {
                                                                          ApplyFilter();
                                                                      }
                                                             });
            CommandUnblockModelContact = new Command(obj => { if (DataSourceContact.UnblockModelContact(CurrentModelContact))
                                                              {
                                                                  ApplyFilter();
                                                              }
                                                     });
            CommandDeleteModelContact = new Command(obj =>
            {
                if (DataSourceContact.DeleteModelContact(CurrentModelContact))
                {
                    ApplyFilter();
                    OnDeleteModelContactSuccessful();
                }
            });

            ModelConnectStateObj = DataSourceUtility.GetCurrentModelConnectState();

            ChangedInviteUnread();
        }
        /// <summary> Конструктор </summary>
        public ViewModelUserSettings()
        {
            CurrentModelUserSettings = DataSourceUserSettings.GetModelUserSettings();

            _countWhiteContact = DataSourceContact.GetCountWhiteContact();

            _currentModelLanguage = CurrentModelUserSettings.ModelLanguageObj;

            CommandOpenUrl = new Command(OpenUrl);

            CommandOpenLogChat     = new Command(obj => { OpenLog(DataSourceLogScope.GetChatLog()); });
            CommandOpenLogDatabase = new Command(obj => { OpenLog(DataSourceLogScope.GetDatabaseLog()); });
            CommandOpenLogRequest  = new Command(obj => { OpenLog(DataSourceLogScope.GetRequestsLog()); });
            CommandOpenLogVoip     = new Command(obj => { OpenLog(DataSourceLogScope.GetVoipLog()); });

            CommandOpenLogCallQuality = new Command(obj => { OpenLog(DataSourceLogScope.GetCallQualityLog()); });
            CommandOpenLogCallHistory = new Command(obj => { OpenLog(DataSourceLogScope.GetCallHistoryLog()); });
            CommandOpenLogGui         = new Command(obj => { OpenLog(DataSourceLogScope.GetGuiLog()); });

            CommandClearLogs = new Command(obj => { DataSourceLogScope.ClearLogs(); });

            ExportAviable = CheckEncryptionkey();

            CommandSave = new Command(obj => Save(obj as bool? ?? false));

            CommandEnableWriteList = new Command(obj => EnableWriteList());

            CommandPasteFromClipBoard = new Command(obj => { PasteFromClipBoard(); });

            CurrentModelUserSettings.PropertyChanged += (sender, args) => { CurrentModelUserSettingsPropertyChanged(); };

            foreach (var modelCodecSettings in CurrentModelUserSettings.ListModelCodecSettingsAudioWifi)
            {
                modelCodecSettings.PropertyChanged += (sender, args) => { CurrentModelUserSettingsPropertyChanged(); };
            }

            foreach (var modelCodecSettings in CurrentModelUserSettings.ListModelCodecSettingsAudioCell)
            {
                modelCodecSettings.PropertyChanged += (sender, args) => { CurrentModelUserSettingsPropertyChanged(); };
            }

            foreach (var modelCodecSettings in CurrentModelUserSettings.ListModelCodecSettingsVideo)
            {
                modelCodecSettings.PropertyChanged += (sender, args) => { CurrentModelUserSettingsPropertyChanged(); };
            }
        }
        /// <summary> Обработчик изменения подписок контактов </summary>
        private void OnListModelContactSubscriptionChanged(object sender, List <PackageModelContactSubscription> listPackageModelContactSubscriptions)
        {
            foreach (var i in listPackageModelContactSubscriptions)
            {
                var modelContact = ListModelContact.FirstOrDefault(obj => obj.XmppId == i.XmppId);

                if (modelContact != null)
                {
                    Action action = () => { modelContact.ModelContactSubscriptionObj = i.ModelContactSubscriptionObj.GetDeepCopy(); };

                    //Debug.WriteLine(modelContact.FullName + " - " + i.ModelContactSubscriptionObj.Ask);

                    Thread.Sleep(1000);

                    CurrentDispatcher.BeginInvoke(action);
                }
            }

            DataSourceContact.RefreshModelContactStatus(ListModelContact.Where(obj => listPackageModelContactSubscriptions.Exists(o => o.XmppId == obj.XmppId)).ToList());
        }
        /// <summary> Контструктор </summary>
        public ViewModelCallHistoryDetail(ModelCallHistoryPeer modelCallHistoryPeer)
        {
            ModelCallHistoryPeerObj = modelCallHistoryPeer;
            ModelContactObj         = ModelCallHistoryPeerObj.ModelPeerObj.ModelContactObj;

            CommandSendRequest = new Command(obj => SendRequest());

            //    SendRequestSuccessful += (sender, args) => ViewContact.CurrentViewContact.AddContactListBoxContact(args, false);

            if (ModelContactObj != null)
            {
                if (ModelContactObj.IsDodicall)
                {
                    DataSourceContact.RefreshModelContactStatus(ModelContactObj);
                }

                ModelContactObj.PropertyChanged += ModelContactObj_PropertyChanged;
            }

            CallbackRouter.Instance.ListModelContactChanged       += InstanceOnListModelContactChanged;
            CallbackRouter.Instance.ModelCallHistoryChanged       += OnModelCallHistoryChanged;
            CallbackRouter.Instance.ListModelContactStatusChanged += OnListModelContactStatusChanged;
        }
Ejemplo n.º 24
0
        /// <summary> Добавление новых сообщений </summary>
        private void AddNewModelChatMessage(List <ModelChatMessage> listModelChatMessages)
        {
            //var listNewModelChatMessage = DataSourceChat.GetModelChatMessageById(entityIds).Where(obj => obj.IdChat == CurrentModelChat.Id).ToList();
            //нужно вернуть TSAPOV
            //foreach (var i in listNewModelChatMessage)
            //{
            //    var modelContact = CurrentModelChat.ListModelContact.FirstOrDefault(obj => obj.Id == i.Sender.Id);

            //    if (modelContact != null) i.Sender = modelContact;
            //}

            //var listNewModelChatMessage = DataSourceChat.GetModelChatMessageById(entityIds).Where(obj => obj.IdChat == CurrentModelChat.Id).ToList();

            foreach (var i in listModelChatMessages)
            {
                var modelContact = CurrentModelChat.ListModelContact.FirstOrDefault(obj => obj.DodicallId == i?.Sender?.DodicallId);

                if (modelContact != null)
                {
                    i.Sender = modelContact;
                }
            }

            if (!CurrentModelChat.IsP2P)
            {
                //_dataSourceContact.RefreshModelContactStatus(listNewModelChatMessage.Select(obj => obj?.Sender).ToList());
                //_dataSourceContact.RefreshModelContactStatus(CurrentModelChat.ListModelContact);
                DataSourceContact.RefreshModelContactStatus(GetAllSendersAndUserFromChat());
            }

            ListModelChatMessage.AddRange(listModelChatMessages);

            OnEventViewModel("NewMessage", listModelChatMessages);

            //MarkReadModelMessage(); // СВ сказал что при любой активности в чате все сообщения считаем прочитанными
        }
        ///// <summary> Обработчик изменения модели внутри логики C++ </summary>
        //public void DoCallback(object sender, DoCallbackArgs e)
        //{
        //if (e.ModelName == "ContactsPresence")
        //{
        //    // поменял на этот некрасивый вариант для Perfomance
        //    //CurrentDispatcher.BeginInvoke(new Action(ChangedStatusListModelContact));

        //    ChangedStatusListModelContact(e.EntityIds);
        //}

        //if (e.ModelName == "Contacts")
        //{
        //    // поменял на этот некрасивый вариант для Perfomance
        //    //CurrentDispatcher.BeginInvoke(new Action(ChangedListModelContact));
        //    ChangedListModelContact();
        //}

        //if (e.ModelName == "ContactSubscriptions")
        //{
        //    CurrentDispatcher.BeginInvoke(new Action(ChangedInviteUnread));

        //    //Action action = () => ChangedListModelContactSubscription(e.EntityIds);

        //    //CurrentDispatcher.BeginInvoke(action);

        //    ChangedListModelContactSubscription(e.EntityIds);
        //}

        //if (e.ModelName == "NetworkStateChanged")
        //{
        //    Action action = () => ModelConnectStateObj = _dataSourceUtility.GetCurrentModelConnectState();

        //    CurrentDispatcher.BeginInvoke(action);
        //}
        //}

        ///// <summary> Обработчик изменения статусов в списке контактов внутри логики C++ </summary>
        //private void ChangedStatusListModelContact(string[] arrayXmppId)
        //{
        //    var dictionary = _dataSourceContact.GetModelContactStatusForAsync(arrayXmppId);

        //    foreach (var i in dictionary)
        //    {
        //        var modelContact = ListModelContact.FirstOrDefault(obj => obj.XmppId == i.Key);

        //        if (modelContact != null)
        //        {
        //            Action action = () =>
        //            {
        //                modelContact.ModelEnumUserBaseStatusObj = i.Value.ModelEnumUserBaseStatusObj;
        //                modelContact.UserExtendedStatus = i.Value.UserExtendedStatus;
        //            };

        //            CurrentDispatcher.BeginInvoke(action);
        //        }
        //    }
        //}

        ///// <summary> Обработчик изменения списка контактов внутри логики C++ </summary>
        //private void ChangedListModelContact()
        //{
        //    var listChangedModelContact = new List<ModelContact>();
        //    var listDeletedModelContact = new List<ModelContact>();

        //    _dataSourceContact.GetListChangedModelContact(listChangedModelContact, listDeletedModelContact);

        //    foreach (var modelContact in listChangedModelContact.Where(obj => obj.Id > 0))
        //    {
        //        var changedModelContact = ListModelContact.FirstOrDefault(obj => obj.Id == modelContact.Id);

        //        if (changedModelContact != null)
        //        {
        //            // поменял на этот некрасивый вариант для Perfomance
        //            Action action = () =>
        //            {
        //                var modelContactCopy = modelContact.GetDeepCopy();

        //                changedModelContact.Avatar = modelContactCopy.Avatar;
        //                changedModelContact.Blocked = modelContactCopy.Blocked;
        //                changedModelContact.DodicallId = modelContactCopy.DodicallId;
        //                changedModelContact.NativeId = modelContactCopy.NativeId;
        //                changedModelContact.White = modelContactCopy.White;
        //                changedModelContact.XmppId = modelContactCopy.XmppId;
        //                changedModelContact.FirstName = modelContactCopy.FirstName;
        //                changedModelContact.MiddleName = modelContactCopy.MiddleName;
        //                changedModelContact.LastName = modelContactCopy.LastName;
        //                changedModelContact.ModelEnumUserBaseStatusObj = modelContactCopy.ModelEnumUserBaseStatusObj;
        //                changedModelContact.UserExtendedStatus = modelContactCopy.UserExtendedStatus;
        //                changedModelContact.ModelContactSubscriptionObj = modelContactCopy.ModelContactSubscriptionObj;
        //                //Debug.WriteLine(modelContactCopy.FullName + " " + modelContactCopy.ModelContactSubscriptionObj.Ask);
        //                changedModelContact.ListModelUserContact = modelContactCopy.ListModelUserContact;
        //                changedModelContact.ListModelUserContactExtra = modelContactCopy.ListModelUserContactExtra;
        //            };

        //            CurrentDispatcher.BeginInvoke(action);

        //            //changedModelContact.Avatar = modelContact.Avatar;
        //            //changedModelContact.Blocked = modelContact.Blocked;
        //            //changedModelContact.DodicallId = modelContact.DodicallId;
        //            //changedModelContact.NativeId = modelContact.NativeId;
        //            //changedModelContact.White = modelContact.White;
        //            //changedModelContact.XmppId = modelContact.XmppId;
        //            //changedModelContact.FirstName = modelContact.FirstName;
        //            //changedModelContact.MiddleName = modelContact.MiddleName;
        //            //changedModelContact.LastName = modelContact.LastName;
        //            //changedModelContact.ModelEnumUserBaseStatusObj = modelContact.ModelEnumUserBaseStatusObj;
        //            //changedModelContact.UserExtendedStatus = modelContact.UserExtendedStatus;
        //            //changedModelContact.ModelContactSubscriptionObj = modelContact.ModelContactSubscriptionObj;
        //            //changedModelContact.ListModelUserContact = modelContact.ListModelUserContact;
        //            //changedModelContact.ListModelUserContactExtra = modelContact.ListModelUserContactExtra;
        //        }
        //        else
        //        {
        //            // поменял на этот некрасивый вариант для Perfomance
        //            Action action = () =>
        //            {
        //                var modelContactCopy = modelContact.GetDeepCopy();

        //                ListModelContact.Add(modelContactCopy);
        //            };

        //            CurrentDispatcher.BeginInvoke(action);

        //            //ListModelContact.Add(modelContact);
        //        }
        //    }

        //    foreach (var modelContact in listDeletedModelContact)
        //    {
        //        var deletedModelContact = ListModelContact.FirstOrDefault(obj => obj.Id == modelContact.Id);

        //        Action action = () => { ListModelContact.Remove(deletedModelContact); };

        //        CurrentDispatcher.BeginInvoke(action);

        //        //ListModelContact.Remove(deletedModelContact);
        //    }

        //    CurrentDispatcher.BeginInvoke(new Action(ApplyFilter));
        //}

        ///// <summary> Обработчик изменения подписки контактов внутри логики C++ </summary>
        //private void ChangedListModelContactSubscription(string[] arrayXmppId)
        //{
        //    if (ListModelContact == null) return;

        //    var dictionary = _dataSourceContact.GetDictionaryModelContactSubscriptionByArrayXmppId(arrayXmppId);

        //    foreach (var i in dictionary)
        //    {
        //        var modelContact = ListModelContact.FirstOrDefault(obj => obj.XmppId == i.Key);

        //        if (modelContact != null)
        //        {
        //            Action action = () => { modelContact.ModelContactSubscriptionObj = i.Value.GetDeepCopy(); };

        //            Debug.WriteLine(modelContact.FullName + " - " + i.Value.Ask);

        //            Thread.Sleep(1000);

        //            CurrentDispatcher.BeginInvoke(action);

        //            //modelContact.ModelContactSubscriptionObj = i.Value;
        //        }
        //    }

        //    _dataSourceContact.RefreshModelContactStatus(ListModelContact.Where(obj => dictionary.ContainsKey(obj.XmppId)).ToList());
        //}

        /// <summary> Обработчик изменения кол-во непрочитанных приглашений </summary>
        public void ChangedInviteUnread()
        {
            CountInvateUnread = DataSourceContact.GetCountInviteUnread();
        }
Ejemplo n.º 26
0
 /// <summary> Метод форматирования телефонного номера </summary>
 public string FormatPhone(string phone)
 {
     return(DataSourceContact.FormatPhone(phone));
 }
Ejemplo n.º 27
0
 ///<summary> Метод принятия приглашения </summary>
 public void AddToWhite()
 {
     DataSourceContact.AddToWhiteModelContact(CurrentModelContact);
 }
Ejemplo n.º 28
0
        ///<summary> Метод удаления из белого списка </summary>
        public void DeleteFromWhite()
        {
            DataSourceContact.DeleteFromWhiteModelContact(CurrentModelContact);

            СheckСountWhiteContact();
        }
Ejemplo n.º 29
0
        /// <summary> Обработчик изменений статусов контактов внутри логики С++ </summary>
        private void LogicListStatusContactChangedHandler(string[] entityIds)
        {
            var listPackageModelContactStatus = DataSourceContact.GetListModelContactStatus(entityIds);

            OnListModelContactStatusChanged(listPackageModelContactStatus);
        }
Ejemplo n.º 30
0
        /// <summary> Обработчик изменения подписки контактов внутри логики C++ </summary>
        private void LogicListSubscriptionContactChangedHandler(string[] entityIds)
        {
            var listModelContactSubscription = DataSourceContact.GetListModelContactSubscription(entityIds);

            OnListModelContactSubscriptionChanged(listModelContactSubscription);
        }