void ReleaseDesignerOutlets() { if (MessagesScrollView != null) { MessagesScrollView.Dispose(); MessagesScrollView = null; } if (MessagesTableView != null) { MessagesTableView.Dispose(); MessagesTableView = null; } if (MessageTextView != null) { MessageTextView.Dispose(); MessageTextView = null; } if (SendButton != null) { SendButton.Dispose(); SendButton = null; } }
void ReleaseDesignerOutlets() { if (BottomStackViewConstraint != null) { BottomStackViewConstraint.Dispose(); BottomStackViewConstraint = null; } if (MessagesScrollView != null) { MessagesScrollView.Dispose(); MessagesScrollView = null; } if (MessagesTableView != null) { MessagesTableView.Dispose(); MessagesTableView = null; } if (MessageTextView != null) { MessageTextView.Dispose(); MessageTextView = null; } if (SendButton != null) { SendButton.Dispose(); SendButton = null; } }
void ReleaseDesignerOutlets() { if (ConnectDisconnectButton != null) { ConnectDisconnectButton.Dispose(); ConnectDisconnectButton = null; } if (MessagesTableView != null) { MessagesTableView.Dispose(); MessagesTableView = null; } if (MessageTextField != null) { MessageTextField.Dispose(); MessageTextField = null; } if (SendButton != null) { SendButton.Dispose(); SendButton = null; } if (ServerUrlTextField != null) { ServerUrlTextField.Dispose(); ServerUrlTextField = null; } }
public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); if (messages.Count > minimumAmountOfMessagesToScroll) { MessagesTableView.ScrollToRow(NSIndexPath.FromItemSection((nint)messages.Count - 1, 0), UITableViewScrollPosition.Bottom, true); } }
private void AppendMessage(string message) { _source.Messages.Add(message); MessagesTableView.ReloadData(); // Scroll to the bottom var indexPath = NSIndexPath.FromRowSection(MessagesTableView.NumberOfRowsInSection(0) - 1, 0); MessagesTableView.ScrollToRow(indexPath, UITableViewScrollPosition.Bottom, animated: true); }
private void Messages_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { dataSource = new MessagesListDataSource(viewModel.Messages); MessagesTableView.Source = dataSource; MessagesTableView.ReloadData(); if (viewModel.Messages.Count > 0) { View.BringSubviewToFront(MessagesTableView); } }
void ReleaseDesignerOutlets() { if (MessagesTableView != null) { MessagesTableView.Dispose(); MessagesTableView = null; } if (RevealButton != null) { RevealButton.Dispose(); RevealButton = null; } }
private void UpdateInfo() { new Thread(new ThreadStart(async() => { await RemoteService.GetInfo(); UpdateLocalMessages(); InvokeOnMainThread(() => { MessagesTableView.Source = new MessagesTableSource(messages, textField, this); MessagesTableView.ReloadData(); if (messages.Count > minimumAmountOfMessagesToScroll) { MessagesTableView.ScrollToRow(NSIndexPath.FromItemSection((nint)messages.Count - 1, 0), UITableViewScrollPosition.Bottom, true); } }); })).Start(); }
void CorrectMessagesList(object sender, UIKeyboardEventArgs args) { if (delta > 0) { MessagesTableView.Frame = new CGRect(MessagesTableView.Frame.X, MessagesTableView.Frame.Y, View.Frame.Width, MessagesTableView.Frame.Height - delta + 38); if (messages.Count > minimumAmountOfMessagesToScroll) { MessagesTableView.ScrollToRow(NSIndexPath.FromItemSection((nint)messages.Count - 1, 0), UITableViewScrollPosition.Bottom, true); } } else if (delta == 0) { } else { } }
public override void ViewWillAppear(bool animated) { base.ViewWillAppear(animated); ParentViewController.TabBarController.TabBar.Hidden = true; View.AddSubviews(textField, sendButton); textField.Placeholder = "Enter your message here"; textField.BorderStyle = UITextBorderStyle.RoundedRect; sendButton.SetTitle("Send", UIControlState.Normal); sendButton.SetTitleColor(UIColor.LinkColor, UIControlState.Normal); sendButton.SetTitleColor(UIColor.Gray, UIControlState.Disabled); textField.Frame = new CGRect(8, View.Frame.Height - 75, View.Frame.Width - 16 - 60, 30); textField.Text = ""; sendButton.Frame = new CGRect(View.Frame.Width - 60, View.Frame.Height - 75, 50, 30); sendButton.Enabled = false; View.BringSubviewToFront(textField); View.BringSubviewToFront(sendButton); sendButton.TouchUpInside += delegate(object sender, EventArgs args) { Send(); }; textField.EditingChanged += (x, y) => { if (textField.Text.Length != 0) { sendButton.Enabled = true; } else { sendButton.Enabled = false; } }; RemoteService.UpdateMessagesList += UpdateInfo; UpdateLocalMessages(); UpdateEnteringPossibility(); Constants.ChatIsPresented = true; MessagesTableView.Frame = new CGRect(0, 0, View.Frame.Width, View.Frame.Height - 83); MessagesTableView.Source = new MessagesTableSource(messages, textField, this); MessagesTableView.SeparatorStyle = UITableViewCellSeparatorStyle.None; MessagesTableView.RowHeight = UITableView.AutomaticDimension; MessagesTableView.EstimatedRowHeight = 50; MessagesTableView.ContentInset = new UIEdgeInsets(10, 0, 10, 0); if (messages.Count > minimumAmountOfMessagesToScroll) { MessagesTableView.ScrollToRow(NSIndexPath.FromItemSection((nint)messages.Count - 1, 0), UITableViewScrollPosition.Bottom, false); } }
private void GetAndSendTheImage(UIImagePickerMediaPickedEventArgs e) { UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage; if (originalImage != null) { new Thread(new ThreadStart(async() => { StringBuilder fileName = new StringBuilder(); for (int i = 0; i <= 32; i++) { if (i == 8 || i == 16) { fileName.Append('-'); i++; } if (gnr.NextDouble() < 0.3) { fileName.Append(Math.Floor(gnr.NextDouble() * 10)); } else { fileName.Append((char)Convert.ToInt32(Math.Floor(gnr.NextDouble() * 26) + 'a')); } } Message message = new Message() { Text = fileName.ToString(), Sender = Profile.Instance.Status, SendTime = string.Format($"{DateTime.Now.Day:d2}.{DateTime.Now.Month:d2}.{DateTime.Now.Year} {DateTime.Now.Hour:d2}:{DateTime.Now.Minute:d2}:{DateTime.Now.Second:d2}"), UserId = messages[0].UserId, TicketId = messages[0].TicketId, Type = "Picture" }; try { originalImage.AsJPEG().Save(Constants.Images + fileName.ToString() + ".jpg", false); if (!File.Exists(Constants.Images + fileName.ToString() + ".jpg")) { throw new Exception(); } UIImage image = await ImageService.Instance.LoadFile(Constants.Images + fileName.ToString() + ".jpg") .DownSample(width: 385) .AsUIImageAsync(); image.AsJPEG().Save(Constants.Images + fileName.ToString() + ".jpg", false); Ticket ticket = RemoteService.Tickets.Find(x => x.Id == message.TicketId); ticket.LastMessageText = "Picture"; ticket.LastMessageTime = message.SendTime; await RemoteService.UpdateTicketInfo(ticket); DateTime previousMessageTime = DateTime.ParseExact(messages[messages.Count - 1].SendTime, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture); Message dateMessage = null; if (previousMessageTime.Date != DateTime.Today) { dateMessage = new Message() { Text = $"{DateTime.Now.Day:d2}.{DateTime.Now.Month:d2}.{DateTime.Now.Year}", Sender = "System", SendTime = string.Format($"{DateTime.Now.Day:d2}.{DateTime.Now.Month:d2}.{DateTime.Now.Year} {DateTime.Now.Hour:d2}:{DateTime.Now.Minute:d2}:{DateTime.Now.Second:d2}"), UserId = messages[0].UserId, TicketId = messages[0].TicketId, Type = "Text" }; await RemoteService.SendMessage(dateMessage); } } catch (Exception) { return; } await RemoteService.SendPictureAsAttachment(message, Profile.Instance, Constants.Images + fileName.ToString() + ".jpg"); if (File.Exists(Constants.Images + fileName.ToString() + ".jpg")) { File.Delete(Constants.Images + fileName.ToString() + ".jpg"); } await RemoteService.UpdateMessages(); UpdateLocalMessages(); InvokeOnMainThread(() => { MessagesTableView.Source = new MessagesTableSource(messages, textField, this); MessagesTableView.ReloadData(); if (messages.Count > minimumAmountOfMessagesToScroll) { MessagesTableView.ScrollToRow(NSIndexPath.FromItemSection((nint)messages.Count - 1, 0), UITableViewScrollPosition.Bottom, true); } }); })).Start(); } }