protected override void OnCreate(Bundle savedInstanceState) { OverridePendingTransition(0, 0); SetTheme(StyleHelper.Style.CommonActivityStyle); base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_chat_create); _navigationBarView = FindViewById <NavigationBarView>(Resource.Id.activity_chat_create_navigation_bar); _navigationBarView.SetLeftButton(StyleHelper.Style.NavigationBarBackButtonIcon, ViewModel.BackCommand); _navigationBarView.SetTitle(ViewModel.LocalizedStrings.CreateGroup); _navigationBarView.SetRightButton(ViewModel.LocalizedStrings.Create, new RelayCommand(() => { KeyboardService.HideSoftKeyboard(_chatNameEditTextView); ViewModel.SaveCommand.Execute(_imagePicker.GetStreamFunc()); })); _navigationBarView.RightTextButton.SetBackgroundColor(Color.Transparent); _chatPhotoImageView = FindViewById <MvxCachedImageView>(Resource.Id.iv_chat_photo); _chatEditedPhotoImageView = FindViewById <MvxCachedImageView>(Resource.Id.iv_chat_photo_edited); _chatNameEditTextView = FindViewById <EditText>(Resource.Id.et_chat_name); _contactsRecyclerView = FindViewById <RecyclerView>(Resource.Id.rv_contacts_list); _membersCountTextView = FindViewById <TextView>(Resource.Id.tv_members_count); _changeChatPhotoButton = FindViewById <Button>(Resource.Id.b_chat_change_photo); _changeChatPhotoButton.SetCommand(new RelayCommand(ChangePhoto)); _changeChatPhotoButton.Text = ViewModel.LocalizedStrings.ChangePhoto; InitializeContactsRecyclerView(); _imagePicker = new ImagePicker(Dependencies.PermissionsManager, Dependencies.Container.Resolve <IImagePickerService>()) { MaxImageWidth = 300 }; _chatPhotoImageView.SetImageResource(StyleHelper.Style.ChatGroupNoAvatarIcon); _chatEditedPhotoImageView.Visibility = ViewStates.Gone; _addMembers = FindViewById <Button>(Resource.Id.activity_chat_create_add_member); _addMembers.Text = ViewModel.LocalizedStrings.AddMembers; _addMembers.SetCommand(ViewModel.AddMembersCommand); _chatNameEditTextView.Hint = ViewModel.LocalizedStrings.ChatName; _busyOverlayView = FindViewById <BusyOverlayView>(Resource.Id.activity_chat_create_busy_view); }
public void BindViewModel(ChatMessageInputViewModel viewModel) { _viewModelRef = new WeakReferenceEx <ChatMessageInputViewModel>(viewModel); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.MessageBody, () => _messageEditText.Text, BindingMode.TwoWay)); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.IsInEditMessageMode).WhenSourceChanges(() => { if (_viewModelRef.Target.IsInEditMessageMode) { _editingMessageBodyTextView.Text = _viewModelRef.Target.EditedMessageOriginalBody; KeyboardService.ShowSoftKeyboard(_messageEditText); } else { KeyboardService.HideSoftKeyboard(_messageEditText); } _editingMessageLayout.Visibility = BoolToViewStateConverter.ConvertGone(_viewModelRef.Target.IsInEditMessageMode); })); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.ImageObject).WhenSourceChanges(() => { if (_viewModelRef.Target.ImageObject == null) { _imagePreview.SetImageBitmap(null); _editImageContainer.Visibility = ViewStates.Gone; } else { _imagePreview.SetImageBitmap((Android.Graphics.Bitmap)_viewModelRef.Target.ImageObject); _editImageContainer.Visibility = ViewStates.Visible; } })); if (!_inited) { _messageEditText.Hint = _viewModelRef.Target.EnterMessagePlaceholderString; _editingMessageHeader.Text = _viewModelRef.Target.EditMessageHeaderString; _takeAttachmentButton.SetCommand(_viewModelRef.Target.OpenCameraCommand); _addAttachmentButton.SetCommand(_viewModelRef.Target.OpenGalleryCommand); _sendButton.SetCommand(_viewModelRef.Target.SendMessageCommand); _removeImageButton.SetCommand(_viewModelRef.Target.DeleteImageCommand); _editingMessageCloseButton.SetCommand(_viewModelRef.Target.CancelEditingCommand); _inited = true; } }
internal void HideKeyboard() { KeyboardService.HideSoftKeyboard(_messageEditText); }
protected override void DoAttachBindings() { base.DoAttachBindings(); Bindings.Add(this.SetBinding(() => ViewModel.HeaderViewModel.ChatName, () => _chatNameEditText.Text, BindingMode.TwoWay)); Bindings.Add(this.SetBinding(() => ViewModel.HeaderViewModel.ChatName, () => _chatNameText.Text)); Bindings.Add(this.SetBinding(() => ViewModel.MembersCountText, () => _chatMembersCountTextView.Text)); Bindings.Add(this.SetBinding(() => ViewModel.HeaderViewModel.AvatarUrl).WhenSourceChanges(() => { Execute.BeginOnUIThread(() => { _chatPhotoImageView.LoadImageWithTextPlaceholder( ViewModel.HeaderViewModel.AvatarUrl, ViewModel.HeaderViewModel.ChatName, new AvatarPlaceholderDrawable.AvatarStyles { BackgroundHexColors = StyleHelper.Style.ChatAvatarStyles.BackgroundHexColors, Size = new System.Drawing.Size(64, 64) }, x => x.Transform(new CircleTransformation())); }); })); Bindings.Add(this.SetBinding(() => _imagePicker.ViewModel.ImageCacheKey).WhenSourceChanges(() => { var newImageCacheKey = _imagePicker.ViewModel.ImageCacheKey; if (string.IsNullOrEmpty(newImageCacheKey) || newImageCacheKey == _previewImageKey) { return; } _previewImageKey = newImageCacheKey; Execute.BeginOnUIThread(() => { ViewModel.HeaderViewModel.StartEditingCommand.Execute(null); }); ImageService.Instance .LoadFile(_previewImageKey) .DownSampleInDip(95, 95) .Transform(new CircleTransformation()) .IntoAsync(_chatEditedPhotoImageView); })); Bindings.Add(this.SetBinding(() => ViewModel.HeaderViewModel.IsMuted, () => _muteNotificationsSwitch.Checked) .ConvertSourceToTarget(x => !x)); Bindings.Add(this.SetBinding(() => ViewModel.IsBusy, () => _muteNotificationsSwitch.Clickable) .ConvertSourceToTarget(x => !x)); Bindings.Add(this.SetBinding(() => ViewModel.IsLoading).WhenSourceChanges(() => { _busyOverlayView.Visibility = BoolToViewStateConverter.ConvertGone(ViewModel.IsLoading); _chatMembersCountTextView.Visibility = BoolToViewStateConverter.ConvertGone(!ViewModel.IsLoading); })); Bindings.Add(this.SetBinding(() => ViewModel.CanEdit, BindingMode.OneTime).WhenSourceChanges(() => { if (ViewModel.CanEdit) { _changeChatPhotoButton.Visibility = ViewStates.Visible; _chatNameEditText.Visibility = ViewStates.Visible; _chatNameText.Visibility = ViewStates.Gone; } else { _changeChatPhotoButton.Visibility = ViewStates.Gone; _chatNameEditText.Visibility = ViewStates.Gone; _chatNameText.Visibility = ViewStates.Visible; _chatNameText.Selected = true; } })); Bindings.Add(this.SetBinding(() => ViewModel.HeaderViewModel.IsInEditMode).WhenSourceChanges(() => { if (ViewModel.HeaderViewModel.IsInEditMode) { _navigationBarView.RightTextButton.Visibility = ViewStates.Visible; _chatEditedPhotoImageView.Visibility = ViewStates.Visible; } else { _previewImageKey = null; _navigationBarView.RightTextButton.Visibility = ViewStates.Gone; _chatNameEditText.ClearFocus(); _chatNameEditText.ClearComposingText(); KeyboardService.HideSoftKeyboard(_chatNameEditText); } })); _chatNameEditText.FocusChange += OnEditTextFocusChanged; _addMemberContainer.Click += OnAddMemberClick; }