///<summary> Создание элемента для котактов </summary> private Grid CreateContactControl(ModelUserContact modelUserContact) { var grid = new Grid(); var stackPanel = new StackPanel { Height = 36, Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Left }; grid.Children.Add(stackPanel); stackPanel.Children.Add(new TextBlock { VerticalAlignment = VerticalAlignment.Center, Text = @"d-sip", Foreground = Brushes.Gray }); stackPanel.Children.Add(new TextBlock { Margin = new Thickness(10, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, FontWeight = FontWeights.Bold, Text = modelUserContact.IdentityString }); var imagePhone = new Image { Height = 19, Margin = new Thickness(0, 8, 0, 8), Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/phone_offline.png") }; var button = new Button { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Right, Style = Application.Current.TryFindResource(@"ButtonStyleTransparent") as Style, Content = imagePhone }; button.Click += (sender, args) => ContactNumberButtonCall(modelUserContact.Identity); grid.Children.Add(button); return(grid); }
///<summary> Создание контрола запросов </summary> private Grid CreateRequestControl(ModelContact modelContact) { var result = new Grid { Height = 53, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(58) }, new ColumnDefinition(), new ColumnDefinition{ Width = new GridLength(56) } } }; result.MouseEnter += (sender, args) => result.Background = Brushes.WhiteSmoke; result.MouseLeave += (sender, args) => result.Background = Brushes.Transparent; var grid = new Grid { Height = 36, Width = 36, Margin = new Thickness(8, 0, 10, 0) }; Grid.SetColumn(grid, 0); grid.Children.Add(new Image { Source = modelContact.Avatar }); grid.Children.Add(new Image { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Bottom, Height = 15, Width = 15, Source = UtilityPicture.GetBitmapImageFromStringUri(@"/Resources/IconTray_small.png") }); var textBlock = new TextBlock { FontWeight = FontWeights.Bold, FontSize = 14, TextTrimming = TextTrimming.CharacterEllipsis, VerticalAlignment = VerticalAlignment.Center, Text = modelContact.FullName }; Grid.SetColumn(textBlock, 1); var image = new Image { Margin = new Thickness(5, 5, 8, 5), Height = 17, Width = 16, Source = UtilityPicture.GetBitmapImageFromStringUri(@"/Resources/sent_request.png") }; Grid.SetColumn(image, 2); result.Children.Add(grid); result.Children.Add(textBlock); result.Children.Add(image); result.MouseLeftButtonDown += (sender, args) => OpenModelContactDetail(modelContact); result.DataContext = modelContact; return(result); }
/// <summary> Изменение статуса контакта </summary> private void ChengeContactStatus(ModelContact modelContact) { if (modelContact == null) { return; } if (_currentExpandContact == null) { return; } if (_currentExpandContact.Id != modelContact.Id) { return; } switch (modelContact.ModelEnumUserBaseStatusObj?.Code) { case 1: foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/transfer_online.png"); } break; case 3: foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/transfer_dnd.png"); } break; default: foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/transfer_default_offline.png"); } break; } if (!modelContact.IsAccessStatus) { foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/transfer_default_offline.png"); } } }
/// <summary> Создание элемента для котактных номеров </summary> private Grid CreateContactControl(ModelUserContact modelUserContact) { var grid = new Grid { Margin = new Thickness(0, 0, 0, 10), ColumnDefinitions = { new ColumnDefinition { Width = GridLength.Auto }, new ColumnDefinition(), new ColumnDefinition{ Width = GridLength.Auto } } }; var comboBox = new ComboBox { Margin = new Thickness(0, 0, 10, 0), Width = 180, ItemsSource = _viewModelManualContact.ListModelEnumUserContactType, DisplayMemberPath = @"Name" }; var bindingComboBox = new Binding { Source = modelUserContact, Path = new PropertyPath("ModelEnumUserContactTypeObj") }; comboBox.SetBinding(ComboBox.SelectedItemProperty, bindingComboBox); var textBox = new TextBox(); var bindingTextBox = new Binding { Source = modelUserContact, Path = new PropertyPath("Identity") }; textBox.SetBinding(TextBox.TextProperty, bindingTextBox); textBox.PreviewTextInput += TextBoxPreviewTextInput; textBox.TextChanged += TextBoxOnTextChanged; textBox.CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste, OnPasteCommand)); // нужно для запрета вставки по Ctrl+V если оставить обработчик пустым Grid.SetColumn(textBox, 1); var image = new Image { Margin = new Thickness(0, 1, 0, 0), Height = 11, Source = UtilityPicture.GetBitmapImageFromStringUri(@"/Resources/cancel.png") }; var button = new Button { Margin = new Thickness(5, 0, 0, 0), Content = image, VerticalContentAlignment = VerticalAlignment.Center, Style = Application.Current.TryFindResource(@"ButtonStyleTransparent") as Style }; button.DataContext = modelUserContact; button.Click += (sender, args) => _viewModelManualContact.RemoveUserContact((sender as Button)?.DataContext as ModelUserContact); Grid.SetColumn(button, 2); grid.Children.Add(comboBox); grid.Children.Add(textBox); grid.Children.Add(button); return(grid); }
/// <summary> Изменение статуса контакта </summary> private void ChengeContactStatus(ModelContact modelContact) { if (modelContact == null) { return; } switch (modelContact.ModelEnumUserBaseStatusObj?.Code) { case 1: foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/phone_online.png"); } break; case 3: foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/phone_dnd.png"); } break; default: foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/phone_offline.png"); } break; } if (!modelContact.IsAccessStatus) { foreach (var image in _listImageSip) { image.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/phone_offline.png"); } } else { TextBlockSentRequest.Visibility = Visibility.Hidden; } }
/// <summary> Обработчик события ViewModelDialpad </summary> private void ViewModelDialpadOnEventViewModel(object sender, ViewModelEventHandlerArgs e) { if (e.Key == "IncomingCall") { WindowCallActive.IncomingCall(); } if (e.Key == "CallEnableChanged") { Dispatcher.Invoke(() => { var isCallEnd = (bool)e.Data; ButtonCall.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/" + (isCallEnd ? "start_call.png" : "start_call_disable.png")); }); } }
///<summary> Обработчик нажатия кнопки диалпада </summary> private void GridDialpad_Click(object sender, RoutedEventArgs e) { RectangleContact.Fill = Brushes.Transparent; RectangleHistory.Fill = Brushes.Transparent; RectangleChat.Fill = Brushes.Transparent; RectangleDialpad.Fill = Brushes.Red; //TextBlockContact.Foreground = Brushes.Silver; //TextBlockHistory.Foreground = Brushes.Silver; //TextBlockChat.Foreground = Brushes.Black; ImageContact.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/contacts_inactive.png"); ImageHistory.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/history_inactive.png"); ImageChat.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/chat_inactive.png"); ImageDialpad.Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/dialpad_active.png"); _viewModelContact.ContactList = false; _viewModelContact.HistoryList = false; _viewModelContact.ChatList = false; _viewModelContact.DialpadList = true; }
/// <summary> Создание элемента для дополнительных котактов </summary> private Grid CreateContactExtraControl(ModelUserContact modelUserContact, ModelContact currentModelContact) { var grid = new Grid(); var stackPanel = new StackPanel { Height = 36, Orientation = Orientation.Horizontal, HorizontalAlignment = HorizontalAlignment.Left }; grid.Children.Add(stackPanel); var textBlock = new TextBlock { VerticalAlignment = VerticalAlignment.Center, Foreground = Brushes.Silver }; textBlock.SetResourceReference(TextBlock.TextProperty, @"ViewCallRedirect_Phone"); stackPanel.Children.Add(textBlock); stackPanel.Margin = new Thickness(20, 10, 10, 10); stackPanel.Children.Add(new TextBlock { Margin = new Thickness(20, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center, Text = modelUserContact.IdentityString }); var imagePhoneTransfer = new Image { Height = 19, Margin = new Thickness(0, 8, 0, 8), Source = UtilityPicture.GetBitmapImageFromStringUri("/Resources/transfer_default_offline.png") }; var button = new Button { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Right, Style = Application.Current.TryFindResource(@"ButtonStyleTransparent") as Style, Content = imagePhoneTransfer }; button.Click += (sender, args) => ContactExtraNumberTransferCall(modelUserContact.Identity); grid.Children.Add(button); return(grid); }
///<summary> Создание контрола запросов </summary> private Grid CreateModelContactControl(ModelContact _modelContact) { ModelContact modelContact = _modelContact.GetDeepCopy(); var result = new Grid { Height = 53 /*, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(45) }, new ColumnDefinition { Width = new GridLength(48) }, new ColumnDefinition() } */ }; result.MouseEnter += (sender, args) => result.Background = Brushes.WhiteSmoke; result.MouseLeave += (sender, args) => result.Background = Brushes.Transparent; var checkBox = new CheckBox { HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Center }; var selectedContact = _viewModelSelectionContact.SelectedListModelContact.FirstOrDefault(obj => modelContact.Id == obj.Id); if (selectedContact != null) { checkBox.IsChecked = true; } //if (_viewModelSelectionContact.SelectedListModelContact.Contains(modelContact)) checkBox.IsChecked = true; checkBox.Checked += (sender, args) => _viewModelSelectionContact.SelectModelContact(modelContact); checkBox.Unchecked += (sender, args) => _viewModelSelectionContact.UnselectModelContact(modelContact); var gridAvatar = new Grid { Height = 36, Width = 36, Margin = new Thickness(0, 0, 10, 0) }; Grid.SetColumn(gridAvatar, 0); gridAvatar.Children.Add(new Image { Source = modelContact.Avatar }); gridAvatar.Children.Add(new Image { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Bottom, Height = 15, Width = 15, Source = UtilityPicture.GetBitmapImageFromStringUri(@"/Resources/IconTray_small.png") }); var gridUserNameStatus = new Grid { RowDefinitions = { new RowDefinition(), new RowDefinition() } }; Grid.SetColumn(gridUserNameStatus, 1); var textBlockFullName = new TextBlock { FontWeight = FontWeights.Bold, FontSize = 14, TextTrimming = TextTrimming.CharacterEllipsis, VerticalAlignment = VerticalAlignment.Center, Text = modelContact.FullName, Margin = new Thickness(0, 8, 0, 0) }; var gridStatus = new Grid { ColumnDefinitions = { new ColumnDefinition { Width = GridLength.Auto }, new ColumnDefinition() } }; Grid.SetRow(gridStatus, 1); var stackPanelBaseStatus = new StackPanel { Orientation = Orientation.Horizontal }; var ellipseStatus = new Ellipse { Margin = new Thickness(3, 7, 3, 5), Height = 6, Width = 6 /*, Fill = modelContact.ModelEnumUserBaseStatusObj.Color*/ }; ellipseStatus.SetBinding(Ellipse.FillProperty, new Binding { Source = _modelContact, Path = new PropertyPath("ModelEnumUserBaseStatusObj.Color") }); var textBlockStatus = new TextBlock { Margin = new Thickness(5, 6, 0, 5), TextTrimming = TextTrimming.CharacterEllipsis, FontSize = 12 }; textBlockStatus.SetBinding(TextBlock.TextProperty, new Binding { Source = _modelContact, Path = new PropertyPath("ModelEnumUserBaseStatusObj.Name") }); stackPanelBaseStatus.Children.Add(ellipseStatus); stackPanelBaseStatus.Children.Add(textBlockStatus); var textBlockExtStatus = new TextBlock { Margin = new Thickness(0, 5, 10, 5), TextTrimming = TextTrimming.CharacterEllipsis, FontSize = 12 }; textBlockExtStatus.SetBinding(TextBlock.TextProperty, new Binding { Source = _modelContact, Path = new PropertyPath("UserExtendedStatusForFullStatus") }); Grid.SetColumn(textBlockExtStatus, 1); gridStatus.Children.Add(stackPanelBaseStatus); gridStatus.Children.Add(textBlockExtStatus); gridUserNameStatus.Children.Add(textBlockFullName); gridUserNameStatus.Children.Add(gridStatus); var rectangle = new Rectangle { Opacity = 1, Width = 550 }; Grid.SetColumnSpan(rectangle, 2); Panel.SetZIndex(rectangle, -1); var gridContent = new Grid { ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(48) }, new ColumnDefinition() } }; gridContent.Children.Add(gridAvatar); gridContent.Children.Add(gridUserNameStatus); gridContent.Children.Add(rectangle); checkBox.Content = gridContent; result.Children.Add(checkBox); /*result.Children.Add(gridAvatar); * result.Children.Add(gridUserNameStatus);*/ result.DataContext = modelContact; return(result); }
///<summary> Создание контрола приглашений </summary> private Grid CreateInvateControl(ModelContact modelContact) { var result = new Grid { Height = 53, ColumnDefinitions = { new ColumnDefinition { Width = new GridLength(58) }, new ColumnDefinition(), new ColumnDefinition{ Width = new GridLength(56) } } }; result.MouseEnter += (sender, args) => result.Background = Brushes.WhiteSmoke; result.MouseLeave += (sender, args) => result.Background = Brushes.Transparent; var grid = new Grid { Height = 36, Width = 36, Margin = new Thickness(8, 0, 10, 0) }; Grid.SetColumn(grid, 0); grid.Children.Add(new Image { Source = modelContact.Avatar }); grid.Children.Add(new Image { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Bottom, Height = 15, Width = 15, Source = UtilityPicture.GetBitmapImageFromStringUri(@"/Resources/IconTray_small.png") }); var textBlock = new TextBlock { FontWeight = FontWeights.Bold, FontSize = 14, TextTrimming = TextTrimming.CharacterEllipsis, VerticalAlignment = VerticalAlignment.Center, Text = modelContact.FullName, Foreground = modelContact.ModelContactSubscriptionObj.ModelEnumSubscriptionStatusObj.Code == 0 ? Brushes.Red : Brushes.Black }; Grid.SetColumn(textBlock, 1); var button = new Button { Margin = new Thickness(5, 5, 8, 5), Style = Application.Current.TryFindResource(@"ButtonStyleTransparent") as Style, Content = new Image { Height = 24, Width = 23, Source = UtilityPicture.GetBitmapImageFromStringUri(@"/Resources/send_request.png") } }; Grid.SetColumn(button, 2); button.Click += ButtonApplyInvite_OnClick; result.Children.Add(grid); result.Children.Add(textBlock); result.Children.Add(button); result.MouseLeftButtonDown += (sender, args) => { textBlock.Foreground = Brushes.Black; OpenModelContactDetail(modelContact); }; result.DataContext = modelContact; return(result); }