public void SetCall(TLTuple <TLPhoneCallState, TLPhoneCallBase, TLUserBase, string> tuple) { if (_disposed) { return; } if (_state != tuple.Item1) { Debug.WriteLine("[{0:HH:mm:ss.fff}] State changed in app: " + tuple.Item1, DateTime.Now); _state = tuple.Item1; StateLabel.Content = StateToLabel(tuple.Item1); if (tuple.Item1 == TLPhoneCallState.Established) { SignalBarsLabel.Visibility = Visibility.Visible; StartUpdatingCallDuration(); if (_emojis != null) { for (int i = 0; i < _emojis.Length; i++) { var imageLarge = FindName($"LargeEmoji{i}") as Image; var source = Emoji.BuildUri(_emojis[i]); imageLarge.Source = new BitmapImage(new Uri(source)); } } } } if (tuple.Item2 is TLPhoneCallRequested call) { } if (tuple.Item3 is TLUser user) { if (user.HasPhoto && user.Photo is TLUserProfilePhoto) { Image.Source = DefaultPhotoConverter.Convert(user.Photo, true) as ImageSource; GrabPanel.Background = new SolidColorBrush(Colors.Transparent); } else { Image.Source = null; GrabPanel.Background = BindConvert.Current.Bubble(user.Id); } FromLabel.Text = user.FullName; DescriptionLabel.Text = string.Format(Strings.Android.CallEmojiKeyTooltip, user.FirstName); } if (tuple.Item4.Length > 0) { _emojis = tuple.Item4.Split(' '); } }
public void Update(Call call, DateTime started) { if (_disposed) { return; } var user = _cacheService.GetUser(call.UserId); if (user != null) { Image.Source = PlaceholderHelper.GetUser(_protoService, user, 144); //if (user.ProfilePhoto != null) //{ // var file = user.ProfilePhoto.Big; // if (file.Local.IsDownloadingCompleted) // { // Image.Source = new BitmapImage(new Uri("file:///" + file.Local.Path)); // BackgroundPanel.Background = new SolidColorBrush(Colors.Transparent); // } // else if (file.Local.CanBeDownloaded && !file.Local.IsDownloadingActive) // { // Image.Source = null; // BackgroundPanel.Background = PlaceholderHelper.GetBrush(user.Id); // _protoService?.DownloadFile(file.Id, 1, 0); // } //} //else //{ // Image.Source = null; // BackgroundPanel.Background = PlaceholderHelper.GetBrush(user.Id); //} FromLabel.Text = user.GetFullName(); DescriptionLabel.Text = string.Format(Strings.Resources.CallEmojiKeyTooltip, user.FirstName); AudioOffText.Text = string.Format(Strings.Resources.VoipUserMicrophoneIsOff, user.FirstName); VideoOffText.Text = string.Format(Strings.Resources.VoipUserCameraIsOff, user.FirstName); } if (call.State is CallStateReady ready) { _emojis = ready.Emojis; for (int i = 0; i < ready.Emojis.Count; i++) { var imageLarge = FindName($"LargeEmoji{i}") as Image; var source = Emoji.BuildUri(_emojis[i]); imageLarge.Source = new BitmapImage(new Uri(source)); } } switch (call.State) { case CallStatePending pending: if (call.IsOutgoing) { ResetUI(); } else { Audio.Visibility = Visibility.Collapsed; Video.Visibility = Visibility.Collapsed; Close.Visibility = Visibility.Collapsed; Close.Margin = new Thickness(); Accept.Margin = new Thickness(0, 0, 6, 0); Accept.Visibility = Visibility.Visible; Discard.Margin = new Thickness(6, 0, 0, 0); Discard.Visibility = Visibility.Visible; } break; case CallStateDiscarded discarded: if (call.IsOutgoing && discarded.Reason is CallDiscardReasonDeclined) { Audio.Visibility = Visibility.Collapsed; Video.Visibility = Visibility.Collapsed; Close.Margin = new Thickness(0, 0, 6, 0); Close.Visibility = Visibility.Visible; Accept.Margin = new Thickness(6, 0, 0, 0); Accept.Visibility = Visibility.Visible; Discard.Visibility = Visibility.Collapsed; Discard.Margin = new Thickness(); } break; default: ResetUI(); break; } switch (call.State) { case CallStatePending pending: StateLabel.Content = call.IsOutgoing ? pending.IsReceived ? Strings.Resources.VoipRinging : pending.IsCreated ? Strings.Resources.VoipWaiting : Strings.Resources.VoipRequesting : Strings.Resources.VoipIncoming; break; case CallStateExchangingKeys exchangingKeys: StateLabel.Content = Strings.Resources.VoipConnecting; break; case CallStateHangingUp hangingUp: StateLabel.Content = Strings.Resources.VoipHangingUp; break; case CallStateDiscarded discarded: StateLabel.Content = discarded.Reason is CallDiscardReasonDeclined ? Strings.Resources.VoipBusy : Strings.Resources.VoipCallEnded; break; } }
public void Update(Call call, DateTime started) { if (_disposed) { return; } _call = call; _started = started; //if (_state != call.State) //{ // Debug.WriteLine("[{0:HH:mm:ss.fff}] State changed in app: " + tuple.Item1, DateTime.Now); // _state = tuple.Item1; // StateLabel.Content = StateToLabel(tuple.Item1); // if (tuple.Item1 == TLPhoneCallState.Established) // { // SignalBarsLabel.Visibility = Visibility.Visible; // StartUpdatingCallDuration(); // if (_emojis != null) // { // for (int i = 0; i < _emojis.Length; i++) // { // var imageLarge = FindName($"LargeEmoji{i}") as Image; // var source = Emoji.BuildUri(_emojis[i]); // imageLarge.Source = new BitmapImage(new Uri(source)); // } // } // } //} //if (tuple.Item2 is TLPhoneCallRequested call) //{ //} var user = _cacheService.GetUser(call.UserId); if (user != null) { if (user.ProfilePhoto != null) { var file = user.ProfilePhoto.Big; if (file.Local.IsDownloadingCompleted) { Image.Source = new BitmapImage(new Uri("file:///" + file.Local.Path)); BackgroundPanel.Background = new SolidColorBrush(Colors.Transparent); } else if (file.Local.CanBeDownloaded && !file.Local.IsDownloadingActive) { Image.Source = null; BackgroundPanel.Background = PlaceholderHelper.GetBrush(user.Id); _protoService?.DownloadFile(file.Id, 1, 0); } } else { Image.Source = null; BackgroundPanel.Background = PlaceholderHelper.GetBrush(user.Id); } FromLabel.Text = user.GetFullName(); DescriptionLabel.Text = string.Format(Strings.Resources.CallEmojiKeyTooltip, user.FirstName); } if (call.State is CallStateReady ready) { _emojis = ready.Emojis; for (int i = 0; i < ready.Emojis.Count; i++) { var imageLarge = FindName($"LargeEmoji{i}") as Image; var source = Emoji.BuildUri(_emojis[i]); imageLarge.Source = new BitmapImage(new Uri(source)); } } switch (call.State) { case CallStatePending pending: if (call.IsOutgoing) { ResetUI(); } else { Mute.Visibility = Visibility.Collapsed; Close.Visibility = Visibility.Collapsed; Close.Margin = new Thickness(); Accept.Margin = new Thickness(0, 0, 6, 0); Accept.Visibility = Visibility.Visible; Discard.Margin = new Thickness(6, 0, 0, 0); Discard.Visibility = Visibility.Visible; } break; case CallStateDiscarded discarded: if (call.IsOutgoing && discarded.Reason is CallDiscardReasonDeclined) { Mute.Visibility = Visibility.Collapsed; Close.Margin = new Thickness(0, 0, 6, 0); Close.Visibility = Visibility.Visible; Accept.Margin = new Thickness(6, 0, 0, 0); Accept.Visibility = Visibility.Visible; Discard.Visibility = Visibility.Collapsed; Discard.Margin = new Thickness(); } break; default: ResetUI(); break; } switch (call.State) { case CallStatePending pending: StateLabel.Content = call.IsOutgoing ? pending.IsReceived ? Strings.Resources.VoipRinging : pending.IsCreated ? Strings.Resources.VoipWaiting : Strings.Resources.VoipRequesting : Strings.Resources.VoipIncoming; break; case CallStateExchangingKeys exchangingKeys: StateLabel.Content = Strings.Resources.VoipExchangingKeys; break; case CallStateHangingUp hangingUp: StateLabel.Content = Strings.Resources.VoipHangingUp; break; case CallStateDiscarded discarded: StateLabel.Content = discarded.Reason is CallDiscardReasonDeclined ? Strings.Resources.VoipBusy : Strings.Resources.VoipCallEnded; break; } }