public override void AwakeFromNib() { UnreadMessageCountBackground.Layer.MasksToBounds = true; UnreadMessageCountBackground.Layer.CornerRadius = 9; SenderPhotoImageView.MakeImageViewCircular(); }
public void BindViewModel(ChatSummaryViewModel viewModel) { _viewModelRef = WeakReferenceEx.Create(viewModel); LastMessageBodyPhotoIcon.Image = UIImage.FromBundle(StyleHelper.Style.LastMessageBodyPhotoIcon); LastMessageBodyPhotoLabel.Text = viewModel.LocalizedStrings.Photo; _bindings.Apply(x => x.Detach()); _bindings.Clear(); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.ChatName, () => ChatNameLabel.Text)); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.LastMessageViewModel.Body).WhenSourceChanges((obj) => { MessageBodyLabel.Text = _viewModelRef.Target.LastMessageViewModel.Body; BodyContainer.Hidden = !_viewModelRef.Target.LastMessageViewModel.HasBody && !_viewModelRef.Target.LastMessageViewModel.HasPhoto; })); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.ChatPhotoUrl).WhenSourceChanges(() => { SenderPhotoImageView.LoadImageWithTextPlaceholder( _viewModelRef.Target.ChatPhotoUrl, _viewModelRef.Target.ChatName, StyleHelper.Style.AvatarStyles); })); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.IsMuted).WhenSourceChanges(() => { if (UnreadMessageCountLabel != null) { UnreadMessageCountBackground.BackgroundColor = _viewModelRef.Target.IsMuted ? UIColor.FromRGB(180, 180, 180) : StyleHelper.Style.AccentColor; } })); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.UnreadMessageCount).WhenSourceChanges(() => { if (UnreadMessageCountLabel != null) { UnreadMessageCountLabel.Text = _viewModelRef.Target.UnreadMessageCount.ToString(); UnreadMessageCountBackground.Hidden = _viewModelRef.Target.UnreadMessageCount == 0; } })); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.LastMessageViewModel.DateTime, () => DateTimeLabel.Text)); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.UnreadMessageCount, () => UnreadMessageCountLabel.Text)); _bindings.Add(this.SetBinding(() => _viewModelRef.Target.LastMessageViewModel.HasPhoto).WhenSourceChanges(() => { if (!_viewModelRef.Target.LastMessageViewModel.HasBody && _viewModelRef.Target.LastMessageViewModel.HasPhoto) { LastMessageBodyPhotoView.Hidden = false; } else { LastMessageBodyPhotoView.Hidden = true; } BodyContainer.Hidden = !_viewModelRef.Target.LastMessageViewModel.HasBody && !_viewModelRef.Target.LastMessageViewModel.HasPhoto; })); }
public override void BindViewModel(ChatMessageViewModel viewModel) { _viewModelRef = WeakReferenceEx.Create(viewModel); Bindings.Add(this.SetBinding(() => _viewModelRef.Target.Body).WhenSourceChanges(() => { // TODO: check Execute.OnUIThread(() => { var hideMessageBody = string.IsNullOrEmpty(_viewModelRef.Target.Body) && _viewModelRef.Target.HasAttachment; MessageBodyTextView.Visibility = BoolToViewStateConverter.ConvertGone(hideMessageBody == false); MessageBodyTextView.Text = _viewModelRef.Target.Body; }); })); Bindings.Add(this.SetBinding(() => _viewModelRef.Target.TextDateTime).WhenSourceChanges(() => { // TODO: check Execute.OnUIThread(() => { MessageDateTimeTextView.Text = _viewModelRef.Target.TextDateTime; }); })); if (_viewModelRef.Target.HasAttachment) { var model = _viewModelRef.Target.Model; var expr = default(TaskParameter); AttachmentImageView.SetImageResource(StyleHelper.Style.AttachmentImagePlaceholder); UpdateAttachmentImageViewSizeAndVisibility(); if (!string.IsNullOrEmpty(model.ImageCacheKey)) { expr = ImageService.Instance.LoadFile(model.ImageCacheKey); } else if (!string.IsNullOrEmpty(model.ImageRemoteUrl)) { expr = ImageService.Instance.LoadUrl(model.ImageRemoteUrl); } if (expr == null) { return; } _downloadAttachTask = expr.DownSampleInDip(90, 90) .Finish(x => { Execute.BeginOnUIThread(UpdateAttachmentImageViewSizeAndVisibility); }); _downloadAttachTask.IntoAsync(AttachmentImageView); } else { _downloadAttachTask?.Dispose(); AttachmentImageView.SetImageDrawable(null); AttachmentImageView.Visibility = ViewStates.Gone; } if (_isIncomingMessageViewType && SenderPhotoImageView != null) { SenderPhotoImageView.LoadImageWithTextPlaceholder( _viewModelRef.Target.SenderPhotoUrl, _viewModelRef.Target.SenderName, new WhiteLabel.Droid.Controls.AvatarPlaceholderDrawable.AvatarStyles { BackgroundHexColors = StyleHelper.Style.ChatAvatarStyles.BackgroundHexColors, Size = new System.Drawing.Size(35, 35) }, x => x.Transform(new CircleTransformation())); } if (!_isIncomingMessageViewType && MessageStatusView != null) { Bindings.Add(this.SetBinding(() => _viewModelRef.Target.Status).WhenSourceChanges(() => { // TODO: check Execute.OnUIThread(() => { if (_viewModelRef.Target == null) { return; } ChangeMessageViewStatus(_viewModelRef.Target.Status); }); })); } }
void ReleaseDesignerOutlets() { if (BodyContainer != null) { BodyContainer.Dispose(); BodyContainer = null; } if (ChatNameLabel != null) { ChatNameLabel.Dispose(); ChatNameLabel = null; } if (DateTimeLabel != null) { DateTimeLabel.Dispose(); DateTimeLabel = null; } if (MessageBodyLabel != null) { MessageBodyLabel.Dispose(); MessageBodyLabel = null; } if (ReadUnreadIndicator != null) { ReadUnreadIndicator.Dispose(); ReadUnreadIndicator = null; } if (SenderPhotoImageView != null) { SenderPhotoImageView.Dispose(); SenderPhotoImageView = null; } if (UnreadMessageCountBackground != null) { UnreadMessageCountBackground.Dispose(); UnreadMessageCountBackground = null; } if (UnreadMessageCountLabel != null) { UnreadMessageCountLabel.Dispose(); UnreadMessageCountLabel = null; } if (UnreadView != null) { UnreadView.Dispose(); UnreadView = null; } if (UsernameLabel != null) { UsernameLabel.Dispose(); UsernameLabel = null; } if (LastMessageBodyPhotoView != null) { LastMessageBodyPhotoView.Dispose(); LastMessageBodyPhotoView = null; } if (LastMessageBodyPhotoIcon != null) { LastMessageBodyPhotoIcon.Dispose(); LastMessageBodyPhotoIcon = null; } if (LastMessageBodyPhotoLabel != null) { LastMessageBodyPhotoLabel.Dispose(); LastMessageBodyPhotoLabel = null; } }