コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        void ReleaseDesignerOutlets()
        {
            if (MessagesTableView != null)
            {
                MessagesTableView.Dispose();
                MessagesTableView = null;
            }

            if (RevealButton != null)
            {
                RevealButton.Dispose();
                RevealButton = null;
            }
        }
コード例 #8
0
 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();
 }
コード例 #9
0
 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
     {
     }
 }
コード例 #10
0
 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);
     }
 }
コード例 #11
0
        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();
            }
        }