コード例 #1
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
 public void OpenNewWindow(Commons.Message msg)
 {
     MessageWindow msgWindow = new MessageWindow(msg.Sender.UserName);
     Statics.MessageWindows.Add(msgWindow);
     SetMessage(msgWindow, msg);
     System.Windows.Forms.Application.Run(msgWindow);
 }
コード例 #2
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
 private void HideWindow(MessageWindow window)
 {
     if (this.InvokeRequired)
     {
         window.Invoke(new HideWindowCallback(HideWindow), window);
     }
     else
     {
         window.Hide();
     }
 }
コード例 #3
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
 public void SetMessage(MessageWindow messageWindow, Commons.Message message)
 {
     if (messageWindow.InvokeRequired)
     {
         SetMessageCallback callback = new SetMessageCallback(messageWindow.RecievedNewMessage);
         messageWindow.Invoke(callback, message.Text, message.Sender.UserName);
     }
     else
     {
         messageWindow.RecievedNewMessage(message.Text, message.Sender.UserName);
     }
 }
コード例 #4
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
 private void lvUserList_ItemActivate(object sender, EventArgs e)
 {
     bool windowOpened = false;
     string identifier = lvUserList.SelectedItems[0].Tag.ToString();
     foreach (MessageWindow mw in Statics.MessageWindows)
     {
         if (mw.Tag.ToString().Equals(identifier))
         {
             // A hidden window.
             ShowWindow(mw);
             windowOpened = true;
         }
     }
     if (!windowOpened)
     {
         MessageWindow msgWindow = new MessageWindow(identifier);
         ShowWindow(msgWindow);
         Statics.MessageWindows.Add(msgWindow);
     }
 }
コード例 #5
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
 private void ShowWindow(MessageWindow window)
 {
     if (window.InvokeRequired)
     {
         window.Invoke(new ShowWindowCallback(ShowWindow), window);
     }
     else
     {
         window.Show();
     }
 }
コード例 #6
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
 private void refreshTimer_Tick(object sender, EventArgs e)
 {
     RefreshList();
     if (Statics.MessageQueue.Count > 0)
     {
         if (Statics.MessageWindows.Count > 0)
         {
             List<string> tags = (from MessageWindow mw in Statics.MessageWindows select mw.Tag.ToString()).ToList<string>();
             foreach (Commons.Message msg in Statics.MessageQueue)
             {
                 if (!tags.Contains(msg.Sender.UserName))
                 {
                     MessageWindow msgWindow = new MessageWindow(msg.Sender.UserName);
                     msgWindow.Show();
                     Statics.MessageWindows.Add(msgWindow);
                 }
             }
         }
     }
 }
コード例 #7
0
ファイル: UserList.cs プロジェクト: Xmindz/ProjectTalk
        void ProcessMessage(Commons.Message msg, NetworkStream ns)
        {
            Commons.Message response = new Commons.Message();

            switch (msg.Command)
            {
                case Commons.Statics.Commands.LISTUSERS:
                    // List all the users.
                    Statics.CurrentUsers = Commons.UserInfo.Deserialize(msg.Text);
                    break;
                case Commons.Statics.Commands.SENDMSG:
                    //Statics.MessageQueue.Add(msg);
                    if (Statics.MessageWindows.Count > 0)
                    {
                        List<string> tags = (from MessageWindow mw in Statics.MessageWindows select mw.Tag.ToString()).ToList<string>();
                        if (!tags.Contains(msg.Sender.UserName))
                        {
                            MessageWindow msgWindow = new MessageWindow(msg.Sender.UserName);
                            msgWindow.Show();
                            Statics.MessageWindows.Add(msgWindow);
                        }
                        else
                        {
                            MessageWindow msw = (MessageWindow)(from MessageWindow mw in Statics.MessageWindows where mw.Tag.ToString().Equals(msg.Sender.UserName) select mw).ToList<MessageWindow>().First<MessageWindow>();
                            SetMessage(msw, msg);
                        }
                    }
                    else
                    {
                        OpenNewWindow(msg);
                    }
                    break;
                case Commons.Statics.Commands.USERONLINE:
                    if (!Statics.CurrentUsers.Contains(msg.Sender))
                        Statics.CurrentUsers.Add(msg.Sender);
                    break;
                case Commons.Statics.Commands.USEROFFLINE:
                    if (Statics.CurrentUsers.Contains(msg.Sender))
                        Statics.CurrentUsers.Remove(msg.Sender);
                    break;
            }
        }