示例#1
0
 /// <summary> Метод завершения звонка </summary>
 public void HangupCall()
 {
     if (DataSourceCall.HangupCall(CurrentModelCall))
     {
         OnCloseView();
     }
 }
示例#2
0
        /// <summary> Пометить пропущенные звонки прочитанными </summary>
        public void SetModelCallHistoryReaded(ModelCallHistoryPeer modelCallHistoryPeer)
        {
            DataSourceCall.SetCallHistoryReaded(modelCallHistoryPeer);

            CurrentModelCallHistory.TotalMissed -= modelCallHistoryPeer.ModelCallStatisticsObj.NumberOfMissedCalls;

            modelCallHistoryPeer.ModelCallStatisticsObj.NumberOfMissedCalls = 0;
        }
示例#3
0
        /// <summary> Метод выключения микрофона </summary>
        public void MuteMicrophone()
        {
            Mute = !Mute;

            DataSourceCall.MuteMicrophone(Mute);

            OnEventViewModel("Mute");
        }
示例#4
0
 /// <summary> Метод принятия звонка </summary>
 public void AcceptCall()
 {
     if (DataSourceCall.AcceptCall(CurrentModelCall))
     {
         StartDurationTimer();
         OnEventViewModel("ActiveCall");
     }
 }
示例#5
0
        /// <summary> Конструктор </summary>
        public ViewModelCallHistory()
        {
            CurrentModelCallHistory = DataSourceCall.GetModelCallHistoryAllDetail();

            SortListModelCallHistoryPeer();

            CallbackRouter.Instance.ListModelContactChanged             += InstanceOnListModelContactChanged;
            CallbackRouter.Instance.ModelCallHistoryChanged             += OnModelCallHistoryChanged;
            CallbackRouter.Instance.ListModelContactSubscriptionChanged += OnListModelContactSubscriptionChanged;
        }
        /// <summary> Обработчик изменения контактов </summary>
        private void InstanceOnListModelContactChanged(List <ModelContact> listChangedModelContact, List <ModelContact> listDeletedModelContact)
        {
            var modelCallHistoryDetail = DataSourceCall.GetChangedModelCallHistoryDetail(_modelCallHistoryPeerObj);

            Action action = () =>
            {
                ModelCallHistoryPeerObj.ListModelCallHistoryEntry = modelCallHistoryDetail.ListModelCallHistoryPeer.First().GetDeepCopy().ListModelCallHistoryEntry;
            };

            CurrentDispatcher.BeginInvoke(action);
        }
        /// <summary> Обработчик изменения истории вызовов </summary>
        private void OnModelCallHistoryChanged(object sender, ModelCallHistory modelCallHistory)
        {
            if (modelCallHistory.ListModelCallHistoryPeer.Any(obj => obj.ModelPeerObj.Id == _modelCallHistoryPeerObj.ModelPeerObj.Id))
            {
                var modelCallHistoryDetail = DataSourceCall.GetChangedModelCallHistoryDetail(_modelCallHistoryPeerObj);

                Action action = () =>
                {
                    ModelCallHistoryPeerObj.ListModelCallHistoryEntry = modelCallHistoryDetail.ListModelCallHistoryPeer.First().GetDeepCopy().ListModelCallHistoryEntry;
                };

                CurrentDispatcher.BeginInvoke(action);
            }
        }
示例#8
0
        /// <summary> Пометить все пропущенные звонки прочитанными </summary>
        public void SetModelCallHistoryReadedAll()
        {
            if (CurrentModelCallHistory.TotalMissed == 0)
            {
                return;
            }

            DataSourceCall.SetCallHistoryReadedAll();

            foreach (var i in CurrentModelCallHistory.ListModelCallHistoryPeer)
            {
                i.ModelCallStatisticsObj.NumberOfMissedCalls = 0;
            }

            CurrentModelCallHistory.TotalMissed = 0;
        }
示例#9
0
        /// <summary> Конструктор </summary>
        public ViewModelCallActive()
        {
            CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged;

            CurrentModelCall = DataSourceCall.GetListActiveCall()?.FirstOrDefault();

            if (CurrentModelCall == null)
            {
                OnCloseView();
            }

            CommandHangupCall     = new Command(obj => HangupCall());
            CommandAcceptCall     = new Command(obj => AcceptCall());
            CommandMuteMicrophone = new Command(obj => MuteMicrophone());

            ExistCall = true;
        }
示例#10
0
        /// <summary> Конструктор </summary>
        public ViewModelCallActive(ModelContact modelContact, string number)
        {
            CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged;

            if (DataSourceCall.StartOutgoingCallUrl(modelContact, number))
            {
                CurrentModelCall = DataSourceCall.GetListActiveCall()?.FirstOrDefault();
            }
            else
            {
                OnCloseView();
            }

            CommandHangupCall     = new Command(obj => HangupCall());
            CommandMuteMicrophone = new Command(obj => MuteMicrophone());

            ExistCall = true;
        }
示例#11
0
        /// <summary> Конструктор </summary>
        public ViewModelCallActive(ModelCall modelCall)
        {
            CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged;

            if (modelCall != null)
            {
                CurrentModelCall = modelCall;
            }
            else
            {
                OnCloseView();
            }

            CommandAcceptCall = new Command(obj => AcceptCall());
            CommandHangupCall = new Command(obj => HangupCall());

            Mute = DataSourceCall.CheckMuteMicrophone();

            ExistCall = true;
        }
示例#12
0
        /// <summary> Обработчик изменения истории вызовов </summary>
        private void ChangeModelCallHistory(ModelCallHistory modelCallHistory)
        {
            var copyModelCallHistory = modelCallHistory.GetDeepCopy();

            foreach (var i in copyModelCallHistory.ListModelCallHistoryPeer)
            {
                var modelCallHistoryPeer = _currentModelCallHistory.ListModelCallHistoryPeer.FirstOrDefault(obj => DataSourceCall.CompareModelCallHistoryPeerId(obj, i) == 0);

                if (modelCallHistoryPeer == null)
                {
                    _currentModelCallHistory.ListModelCallHistoryPeer.Add(i);
                }
                else
                {
                    modelCallHistoryPeer.ModelCallStatisticsObj    = i.ModelCallStatisticsObj;
                    modelCallHistoryPeer.ModelPeerObj              = i.ModelPeerObj;
                    modelCallHistoryPeer.ListModelCallHistoryEntry = i.ListModelCallHistoryEntry;
                }
            }

            SortListModelCallHistoryPeer();

            var listMissedCount = CurrentModelCallHistory.ListModelCallHistoryPeer.Select(obj => obj.ModelCallStatisticsObj.NumberOfMissedCalls);

            if (listMissedCount.Any())
            {
                var missedCount = 0;

                foreach (var i in listMissedCount)
                {
                    missedCount += i;
                }

                CurrentModelCallHistory.TotalMissed = missedCount;
            }
        }
示例#13
0
 /// <summary> Закончить тоновый сигнал </summary>
 public void StopSoundSignal()
 {
     DataSourceCall.StopSoundSignal();
 }
示例#14
0
        /// <summary> Обработчик изменения истории вызовов логики C++ </summary>
        private void LogicModelCallHistoryChangedHandler()
        {
            var modelCallHistory = DataSourceCall.GetModelCallHistoryAllDetail();

            OnModelCallHistoryChanged(modelCallHistory);
        }
示例#15
0
        /// <summary> Обработчик изменения состояния звонка внутри логики C++ </summary>
        private void LogicModelCallChangedHandler()
        {
            var modelCall = DataSourceCall.GetListActiveCall()?.FirstOrDefault();

            OnModelCallChanged(modelCall);
        }
 /// <summary> Перевести вызов </summary>
 public bool TransferCall(string number)
 {
     return(DataSourceCall.TransferCallToUrl(CurrentModelCall.Id, number));
 }
示例#17
0
 /// <summary> Обработчик изменения контактов </summary>
 private void InstanceOnListModelContactChanged(List <ModelContact> listChangedModelContact, List <ModelContact> listDeletedModelContact)
 {
     CurrentModelCallHistory = DataSourceCall.GetModelCallHistoryAllDetail();
 }
示例#18
0
 /// <summary> Начать тоновый сигнал </summary>
 public void StartSoundSignal(char charSignal)
 {
     DataSourceCall.StartSoundSignal(charSignal);
 }