Пример #1
0
        public IEnumerable <MessageUC> GetMessages(ChatModel chatModel)
        {
            List <MessageUC>         messageUCs  = new List <MessageUC>();
            IService                 service     = new WCFService();
            IChatMap                 chatMap     = new Map();
            IEnumerable <MessageDTO> messageDTOs = service.GetMessages(chatMap.ChatModelToChatDTO(chatModel));

            if (messageDTOs != null)
            {
                foreach (MessageDTO mess in messageDTOs)
                {
                    MessageUC messageUC = new MessageUC();
                    MessageVM messageVM = new MessageVM();
                    messageVM.Message.Id     = mess.Id;
                    messageVM.Message.Text   = mess.Text;
                    messageVM.Message.Time   = mess.Time;
                    messageVM.Message.Author = mess.Author;
                    messageVM.Message.Img    = mess.Img;

                    messageUC.DataContext = messageVM;
                    messageUCs.Add(messageUC);
                }
            }

            return(messageUCs);
        }
        private void Manager_MessageArrivedEvent(object sender, MessageDictionary e)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                if (messageListSP.Children.Count >= maxMesListLen)
                {
                    messageListSP.Children.RemoveAt(0);
                }
                if ((CommandType)Enum.Parse(typeof(CommandType), e[MesKeyStr.CommandType]) == CommandType.GroupMessage)
                {
                    e.Add(MesKeyStr.Remark, "群聊消息");
                }
                else
                {
                    e.Add(MesKeyStr.Remark, "私聊消息,目标:" + e[MesKeyStr.UserID]);
                }

                DisplayMethod displayMethod = DisplayMethod.OnlyRemark;
                if (displayStyle)
                {
                    displayMethod = DisplayMethod.Both;
                }
                MessageUC messageUC = new MessageUC(e, displayMethod);
                messageListSP.Children.Add(messageUC);
                messageListSV.ScrollToEnd();
            });
        }
Пример #3
0
        public void DownloadMessages()
        {
            SqlDataReader dataReader = Connection.FetchReader("USE trentMessengerDB3; SELECT SenderID, Message, DateS, MessageID, State, DateR FROM Msgs WHERE SenderID IN (" + Account.AccountId + ", " + this.Contact_ID + ") AND RecieverID IN (" + Account.AccountId + ", " + this.Contact_ID + ");");

            while (dataReader.Read())
            {
                MessageUC MessageUC_ = new MessageUC();
                MessageUC_.Message_ID       = int.Parse(dataReader.GetValue(3).ToString());
                MessageUC_.Info.Text        = (int.Parse(dataReader.GetValue(0).ToString()) == Account.AccountId) ? Account.Username_ : labelUsername.Text;
                MessageUC_.Info.Text       += " • " + ((DateTime.Now - DateTime.Parse(dataReader.GetValue(2).ToString())).TotalHours > 24 ? ((DateTime.Now - DateTime.Parse(dataReader.GetValue(2).ToString())).TotalHours < 48 ? "Yesterday" : DateTime.Parse(dataReader.GetValue(2).ToString()).ToShortDateString()) : DateTime.Parse(dataReader.GetValue(2).ToString()).ToShortTimeString());
                MessageUC_.MessageUc.Text   = dataReader.GetString(1);
                MessageUC_.MessageUc.Height = ReturnMessageHeight(MessageUC_.MessageUc) * 15;
                MessageUC_.Height          += (ReturnMessageHeight(MessageUC_.MessageUc) * 15) - 10;
                MessageUC_.Top                 = (5 + ReturnPreviousHeights()) + panelMain.Controls.OfType <MessageUC>().Count <MessageUC>() * 5;
                MessageUC_.Left                = 20;
                MessageUC_.BackColor           = Classes.AppSettings.AppContactBackgroundColor;
                MessageUC_.MessageUc.BackColor = Classes.AppSettings.AppContactBackgroundColor;
                MessageUC_.MessageUc.ForeColor = Classes.AppSettings.AppContactTextColor;
                MessageUC_.Info.ForeColor      = Classes.AppSettings.AppContactTextColor;
                MessageUC_.MessagState.Top     = MessageUC_.MessageUc.Bottom - 10;
                ToolTip tTipInfo = new ToolTip();
                tTipInfo.ToolTipIcon  = ToolTipIcon.Info;
                tTipInfo.ToolTipTitle = "Unread Message";
                tTipInfo.SetToolTip(MessageUC_.MessagState, "User has not yet seen the message");

                if (int.Parse(dataReader.GetValue(0).ToString()) == Account.AccountId)
                {
                    MessageUC_.Left                = (panelMain.Width - MessageUC_.Width) - 20;
                    MessageUC_.BackColor           = Classes.AppSettings.AppAccountBackgroundColor;
                    MessageUC_.MessageUc.BackColor = Classes.AppSettings.AppAccountBackgroundColor;
                    MessageUC_.MessageUc.ForeColor = Classes.AppSettings.AppAccountTextColor;
                    MessageUC_.Info.ForeColor      = Classes.AppSettings.AppAccountTextColor;
                    MessageUC_.MessagState.Visible = true;
                    if (bool.Parse(dataReader.GetValue(4).ToString()) == true)
                    {
                        MessageUC_.MessagState.Image = Properties.Resources.icon_messageRead;
                        tTipInfo.ToolTipTitle        = "Message Read";
                        tTipInfo.SetToolTip(MessageUC_.MessagState, DateTime.Parse(dataReader.GetValue(5).ToString()).ToShortTimeString());
                    }
                }

                panelMain.Controls.Add(MessageUC_);
                MessageUC_.Scroll += new ScrollEventHandler(MainPanel_Scroll);
            }
            dataReader.Close();
            Connection.CloseConnection();

            if (panelMain.Controls.OfType <MessageUC>().Count <MessageUC>() == 0)
            {
                labelNoMessages.Visible = true;
            }
        }
Пример #4
0
        private void button_send_Click(object sender, EventArgs e)
        {
            MessageUC MessageUC_ = new MessageUC();

            MessageUC_.Info.Text        = Account.Username_ + " • " + DateTime.Now.ToShortTimeString();
            MessageUC_.MessageUc.Text   = textBoxForchatBox.Text;
            MessageUC_.MessageUc.Height = ReturnMessageHeight(MessageUC_.MessageUc) * 15;
            MessageUC_.Height          += (ReturnMessageHeight(MessageUC_.MessageUc) * 15) - 15;
            MessageUC_.Top                 = (panelMain.Controls.OfType <MessageUC>().Count <MessageUC>() == 0) ? 5 : panelMain.Controls.OfType <MessageUC>().Last <MessageUC>().Bottom + 5;
            MessageUC_.Left                = (panelMain.Width - MessageUC_.Width) - 20;
            MessageUC_.BackColor           = Classes.AppSettings.AppAccountBackgroundColor;
            MessageUC_.MessageUc.BackColor = Classes.AppSettings.AppAccountBackgroundColor;
            MessageUC_.MessageUc.ForeColor = Classes.AppSettings.AppAccountTextColor;
            MessageUC_.Info.ForeColor      = Classes.AppSettings.AppAccountTextColor;
            MessageUC_.MessagState.Top     = MessageUC_.MessageUc.Bottom - 15;
            MessageUC_.MessagState.Visible = true;
            ToolTip tTipInfo = new ToolTip();

            tTipInfo.ToolTipIcon  = ToolTipIcon.Info;
            tTipInfo.ToolTipTitle = "Unread Message";
            tTipInfo.SetToolTip(MessageUC_.MessagState, "User has not yet seen the message");

            panelMain.Controls.Add(MessageUC_);
            MessageUC_.Scroll += new ScrollEventHandler(MainPanel_Scroll);

            if (panelMain.Controls.OfType <MessageUC>().Count <MessageUC>() == 0)
            {
                labelNoMessages.Visible = true;
            }
            else
            {
                labelNoMessages.Visible = false;
            }

            Connection.sqlCommand.Parameters.Clear();
            Connection.sqlCommand.Parameters.AddWithValue("@message", textBoxForchatBox.Text);
            Connection.IssueQuery("USE trentMessengerDB3; INSERT INTO Msgs VALUES(" + Account.AccountId + ", " + this.Contact_ID + ", @message, '" + DateTime.Now + "', 0, '" + DateTime.Now + "');");
            Connection.CloseConnection();

            EmoticonUC.Visible = false;
            panelMain.ScrollControlIntoView(MessageUC_);
            textBoxForchatBox.Clear();
        }