public ChatPageBaumgartner()
        {
            InitializeComponent();
            Title          = "Gerald Baumgartner";
            BindingContext = vm = new ChatViewModel();

            ((NavigationPage)Application.Current.MainPage).BarBackgroundColor = Color.FromHex("#E67349");
            ((NavigationPage)Application.Current.MainPage).BarTextColor       = Color.White;

            bool[]   outOrIn       = new bool[] { true, false, false, true, false, true };
            string[] messagesSent  = new string[] { "Hey Dr. Baumgartner! Could we meet up sometime this week?", "Yes Mike, I will be free on Thursday at 12:30pm. Does that work?", "I do have a meeting around 2pm that I will have to attend, but that shouldn't be a problem.", "It does, thanks. I've got a couple questions from my Programming Languages class", "Alright, see you then.", "Thanks" };
            var      messageCreate = new Message {
                Text = "", OutOrIn = true
            };

            for (int i = 0; i < outOrIn.Length; i++)
            {
                messageCreate = new Message
                {
                    Text    = messagesSent[i],
                    OutOrIn = outOrIn[i]
                };
                vm.Messages.Add(messageCreate);
            }

            vm.Messages.CollectionChanged += (sender, e) =>
            {
                var target = vm.Messages[vm.Messages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
Beispiel #2
0
 async Task ViewMessage(string msg)
 {
     await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
     {
         MessagesListView.Add(msg);
     });
 }
        private void MessagesListView_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                MessagesContextMenuStrip.Items.Clear();

                ListViewItem item = MessagesListView.GetItemAt(e.X, e.Y);
                if (item != null)
                {
                    OnNotificationArgs message = (OnNotificationArgs)item.Tag;

                    foreach (string url in message.Urls)
                    {
                        ToolStripMenuItem menuItem = new ToolStripMenuItem {
                            Tag   = url,
                            Image = Properties.Resources.BrowserLink_16x,
                            Text  = url.Truncate(50, Truncator.FixedLength, TruncateFrom.Right)
                        };
                        menuItem.Click += DynamicMenuItem_Click;

                        MessagesContextMenuStrip.Items.Add(menuItem);
                    }
                }

                if (MessagesContextMenuStrip.Items.Count > 0)
                {
                    MessagesContextMenuStrip.Show(MessagesListView, e.Location);
                }
            }
        }
        private void NotificationsClient_Notification(object sender, OnNotificationArgs e)
        {
            ListViewItem itemDateTime = new ListViewItem {
                Tag      = e,
                ImageKey = e.Type.GetAttribute <ImageKeyAttribute>().ImageKey,
                UseItemStyleForSubItems = true,
                BackColor = (e.ContainsUrls) ? Color.FromArgb(179, 209, 255) : Color.FromArgb(140, 255, 102),
                Text      = e.DateTime.Humanize(false),
            };

            ListViewItem.ListViewSubItem itemFrom = new ListViewItem.ListViewSubItem {
                Text = e.From
            };
            itemDateTime.SubItems.Add(itemFrom);

            ListViewItem.ListViewSubItem itemMessage = new ListViewItem.ListViewSubItem {
                Text = e.Message
            };
            itemDateTime.SubItems.Add(itemMessage);

            Invoke(new Action(() => {
                MessagesListView.BeginUpdate();

                if (MessagesListView.Items.Count >= SettingsManager.Configuration.Notifications.MaximumNotifications)
                {
                    MessagesListView.Items.RemoveAt(MessagesListView.Items.Count - 1);;
                }

                MessagesListView.Items.Insert(0, itemDateTime);
                MessagesListView.EndUpdate();
            }));
        }
Beispiel #5
0
 public void ScrollEnd()
 {
     if (vm.Messages.Count > 0)
     {
         MessagesListView.ScrollTo(vm.Messages.Last(), ScrollToPosition.MakeVisible, false);
     }
 }
Beispiel #6
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (Request.Cookies["user"] != null)
     {
         ScriptManager scriptManager = ScriptManager.GetCurrent(this);
         person = new Person(Request.Cookies["user"].Value);
         if (!scriptManager.IsInAsyncPostBack || scriptManager.AsyncPostBackSourceElementID == FriendListUPanel.UniqueID)
         {
             FriendsToTalkList.DataSource = person.FindFriends(TalkToTxt.Text == string.Empty ? "" : TalkToTxt.Text).Friends;
             FriendsToTalkList.DataBind();
         }
         else if (!scriptManager.IsInAsyncPostBack || scriptManager.AsyncPostBackSourceElementID == MessagesUPanel.UniqueID)
         {
             System.Threading.Thread.Sleep(1000);
             MessagesListView.DataSource = Helper.FindMessages(Request.Cookies["user"].Value, talkingFriendId.Value);
             MessagesListView.DataBind();
         }
         else
         {
             FriendsToTalkList.DataSource = person.FindFriends("").Friends;
             FriendsToTalkList.DataBind();
         }
         Items["isMyPage"] = true;
     }
     else
     {
         Response.Redirect("~/Login.aspx");
     }
 }
        public Messages()
        {
            InitializeComponent();
            vm             = new MessagesViewModel(Navigation, "Messages");
            BindingContext = vm;
            //vm.IsBusy = true;
            vm.OverlayText = "Pulling messages";
            //DelayActionAsync(6000, () => vm.IsBusy = false);
            if (vm.MessagesList.Count > 0)
            {
                //Move to end of list by default when opening Messages view
                var target = vm.MessagesList[vm.MessagesList.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            }

            vm.MessagesList.CollectionChanged += (sender, e) =>
            {
                var target = vm.MessagesList[vm.MessagesList.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };

            vm.MessagesList.Add(new Models.Message()
            {
                Text = "Hola que tal!", IsTextIn = true, MessageDateTime = new DateTime()
            });
        }
Beispiel #8
0
 private void ScrollAtEnd()
 {
     if (_model.Messages.Count > 0)
     {
         MessagesListView.ScrollTo(_model.Messages.Last(), ScrollToPosition.MakeVisible, false);
     }
 }
Beispiel #9
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            var messageToSendReturn = Observable
                                      .FromEvent <KeyEventHandler, KeyRoutedEventArgs>(
                handler => (s, k) => handler(k),
                handler => MessageToSendTextBox.KeyUp += handler,
                handler => MessageToSendTextBox.KeyUp -= handler)
                                      .Where(k => k.Key == Windows.System.VirtualKey.Enter);

            var themeChanger = Observer.Create <string>(
                value =>
            {
                if (Enum.TryParse <ElementTheme>(value, out ElementTheme theme) && Windows.UI.Xaml.Window.Current.Content is FrameworkElement frameworkElement)
                {
                    frameworkElement.RequestedTheme = theme;
                }
            }
                );

            var scroller = Observer.Create <Message.Model>(model => MessagesListView.ScrollIntoView(model));

            _behaviours = _viewModel.Activate(messageToSendReturn, themeChanger, scroller);
        }
Beispiel #10
0
        private void OnChatRoomUpdated(object sender, ConversationUpdatedEventArgs e)
        {
            //************************************************************************************************************************************
            // When a message is sent or received in Chat then this method will called.
            //************************************************************************************************************************************
            if (!e.Conversation.IsRttChat)
            {
                return;
            }

            if (ServiceManager.Instance.Dispatcher.Thread != Thread.CurrentThread)
            {
                ServiceManager.Instance.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                                                               new EventHandler <ConversationUpdatedEventArgs>(OnChatRoomUpdated), sender, new object[] { e });
                return;
            }

            if (!e.Conversation.Equals(this.Chat))
            {
                return;
            }

            try
            {
                if (MessagesListView != null && MessagesListView.SourceCollection != null)
                {
                    MessagesListView.Refresh();
                }
            }
            catch (Exception)
            {
            }

            RaiseConversationChanged();
        }
        public Messages(Contact contact)
        {
            InitializeComponent();
            vm             = new MessagesViewModel(Navigation, "Messages");
            BindingContext = vm;
            vm.Contact     = contact;
            //vm.IsBusy = true;
            vm.OverlayText = "Pulling messages";
            //DelayActionAsync(6000, () => vm.IsBusy = false);
            if (vm.MessagesList.Count > 0)
            {
                //Move to end of list by default when opening Messages view
                var target = vm.MessagesList[vm.MessagesList.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            }

            vm.OnMessageReceived += (s, msg) =>
            {
                //Execute on main thread. Event raising comes fron another thread
                //Creating a new event takes avoids timing issues between PropertyChanged mechanism and UI
                Device.BeginInvokeOnMainThread(() => MessagesListView.ScrollTo(msg, ScrollToPosition.End, true));
            };


            //vm.MessagesList.Add(new Models.Message() { Text = "Hola que tal!", IsTextIn = true, MessageDateTime = new DateTime() });
        }
Beispiel #12
0
        protected override void OnAppearing()
        {
            var messages = new MainPageViewModel(_cust_no, Navigation, _cust_name);

            if (messages.Messages.Count > 0)
            {
                BindingContext = messages;
                var last = MessagesListView.ItemsSource.Cast <MessageViewModel>().LastOrDefault();
                MessagesListView.ScrollTo(last, ScrollToPosition.End, true);
            }
            //startNotiMessage();
            base.OnAppearing();


            // อย่าลืมดัก สำหรับ ios เท่านั้น
            //MessagingCenter.Subscribe<App>(this, "refreshSmsOnResume", app => {
            //    BindingContext = new MainPageViewModel(_cust_no);
            //    var last = MessagesListView.ItemsSource.Cast<MessageViewModel>().LastOrDefault();
            //    MessagesListView.ScrollTo(last, ScrollToPosition.End, true);
            //});
            //base.OnAppearing();

            //BindingContext = new MainPageViewModel(_cust_no);
            //var last = MessagesListView.ItemsSource.Cast<MessageViewModel>().LastOrDefault();
            //MessagesListView.ScrollTo(last, ScrollToPosition.End, true);
        }
Beispiel #13
0
 /// <summary>
 /// Used for Add Message in Last List in Chat Message
 /// </summary>
 /// <param name="Message"></param>
 private void AppendMessage(BLL.M.Mobile.MessageModel Message)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         Messages.Add(Message);
         MessagesListView.ScrollTo(Messages.Last(), ScrollToPosition.End, animated: true);
     });
 }
Beispiel #14
0
 private void AppendMessage(string message)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         _messages.Add(message);
         MessagesListView.ScrollTo(_messages.Last(), ScrollToPosition.End, animated: true);
     });
 }
Beispiel #15
0
 private void OnSend(string nama, string pesan)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         _messages.Add($"{nama} : {pesan}");
         MessagesListView.ScrollTo(_messages.Last(),
                                   ScrollToPosition.End, animated: true);
     });
 }
Beispiel #16
0
 public ChatBotClientPage()
 {
     InitializeComponent();
     BindingContext = new MainPageViewModel();
     (BindingContext as MainPageViewModel).Messages.CollectionChanged += Messages_CollectionChanged;
     if ((BindingContext as MainPageViewModel).Messages.Any())
     {
         MessagesListView.ScrollTo((BindingContext as MainPageViewModel)?.Messages?.Last(), ScrollToPosition.MakeVisible, true);
     }
 }
 public MainPageChat()
 {
     InitializeComponent();
     BindingContext = vm = new chatViewModels();
     vm.ListMessages.CollectionChanged += (sender, e) =>
     {
         var target = vm.ListMessages[vm.ListMessages.Count - 1];
         MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
     };
 }
 private void UpdateScroll()
 {
     // TODO: Hack to make we scroll to the most recent message
     Task.Factory.StartNew(() =>
     {
         System.Threading.Thread.Sleep(1000);
         var target = vm.Messages[vm.Messages.Count - 1];
         MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
     });
 }
Beispiel #19
0
        protected override void OnAppearing()
        {
            base.OnAppearing();
            var v = viewModel.MessageList.LastOrDefault();

            if (v == null)
            {
                return;
            }
            MessagesListView.ScrollTo(v, ScrollToPosition.MakeVisible, false);
        }
        private void UpdateMessagesTimer_Tick(object sender, EventArgs e)
        {
            MessagesListView.BeginUpdate();

            foreach (ListViewItem item in MessagesListView.Items)
            {
                UpdateMessage(item);
            }

            MessagesListView.EndUpdate();
        }
Beispiel #21
0
        protected override void OnAppearing()
        {
            base.OnAppearing();

            // Have one initial message from Technical Founders as default. "Welcome to Technical Founders!"

            // Fix Android (not scrolling initially) - might need a custom renderer

            var item = ((ObservableCollection <MessageViewModel>)(this.MessagesListView.ItemsSource)).Last();

            MessagesListView.ScrollTo(item, ScrollToPosition.End, false);
        }
Beispiel #22
0
        public ChatPage(string receiver)
        {
            InitializeComponent();
            Title          = receiver;
            BindingContext = vm = new LoginPageViewModel();

            vm.Messages.CollectionChanged += (sender, e) =>
            {
                var target = vm.Messages[vm.Messages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
Beispiel #23
0
        public MainChatPage()
        {
            InitializeComponent();
            Title          = "#general";
            BindingContext = vm = new MainChatViewModel();


            vm.Messages.CollectionChanged += (sender, e) =>
            {
                var target = vm.Messages[vm.Messages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
Beispiel #24
0
        public ChatPage(IChatController controller)
        {
            InitializeComponent();

            var vm = new ChatPageViewModel(controller);

            BindingContext = vm;

            vm.ScrollToLast += () =>
            {
                MessagesListView.ScrollTo(controller.CurrentConversation?.Messages.Last(), ScrollToPosition.End, true);
            };
        }
Beispiel #25
0
        public ChatPage(SteamID friendSteamID)
        {
            InitializeComponent();
            Title          = sc.bot.SteamFriends.GetFriendPersonaName(friendSteamID);
            BindingContext = vm = new ChatPageViewModel(friendSteamID);


            vm.ListMessages.CollectionChanged += (sender, e) =>
            {
                var target = vm.ListMessages[vm.ListMessages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
        public Messages()
        {
            InitializeComponent();

            // Automatically scroll to bottom of listview whenever a new item is added
            (MessagesListView.Items as INotifyCollectionChanged).CollectionChanged +=
                (sender, args) =>
            {
                if (MessagesListView.Items.Count > 0)
                {
                    MessagesListView.ScrollIntoView(MessagesListView.Items[MessagesListView.Items.Count - 1]);
                }
            };
        }
Beispiel #27
0
        private void LabelsListView_CellClick(object sender, BrightIdeasSoftware.CellClickEventArgs e)
        {
            MessagesListView.ClearObjects();
            string selectedLabelId = LabelsListView.SelectedItem.Text;
            IList <Google.Apis.Gmail.v1.Data.Message> currentLabelMessages = gmmailAPIhandler.ListMessages(selectedLabelId);
            IDictionary <string, GMail> extractedMails = GMail.CreateGmailMessage(currentLabelMessages, gmmailAPIhandler);
            List <GMail> mailList = new List <GMail>();

            foreach (KeyValuePair <string, GMail> mail in extractedMails)
            {
                mailList.Add(mail.Value);
            }
            MessagesListView.SetObjects(mailList);
        }
Beispiel #28
0
        public ChatPage(GroupChat chat)
        {
            InitializeComponent();
            vm = new ChatViewModel(chat);
            Content.BindingContext     = vm;
            MessageArea.BindingContext = vm;
            TextArea.BindingContext    = vm;

            vm.Messages.CollectionChanged += (sender, e) =>
            {
                var target = vm.Messages[vm.Messages.Count - 1];
                MessagesListView.ScrollTo(target, ScrollToPosition.End, true);
            };
        }
Beispiel #29
0
        public MessagesPage()
        {
            InitializeComponent();

            Title = "Chat";

            BindingContext = new MessagesPageViewModel();

            MessagingCenter.Subscribe <ScrollListViewMessage>(this, "ScrollToBottom", message =>
            {
                var item = ((ObservableCollection <MessageViewModel>)(this.MessagesListView.ItemsSource)).Last();
                MessagesListView.ScrollTo(item, ScrollToPosition.End, false);
            });
        }
 private void ScrollToMessageIndex(int index, ScrollToPosition position, Action callback = null)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         try
         {
             MessagesListView.ScrollTo(vm.MessagesList[index], position, false);
             callback?.Invoke();
         }
         catch
         {
         }
     });
 }