///<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);
        }
Пример #3
0
        /// <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");
                }
            }
        }
Пример #4
0
        /// <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;
            }
        }
Пример #6
0
        /// <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;
        }
Пример #8
0
        /// <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);
        }