Cosmetic change, plugin work, various reaorganization (Frontend, Control, CilBackend)
[circ.git] / CirC / CilControls / ChannelControl.cs
blobe113b93a70523bfb8ecc731f1cddf6ac1c2b2ee5
2 using System;
3 using Circ.Backend;
4 using Circ.Frontend;
5 using Circ.Controller;
7 namespace Circ
9 public class ChannelControl: IChannelControl
11 IrcChannel chan;
12 IDiscussionPanel messages;
13 ConnectionControl connCtrl;
15 public ChannelControl(IrcChannel chan, ConnectionControl connCtrl)
17 this.chan = chan;
18 this.connCtrl = connCtrl;
20 UpdatePresentation();
21 chan.NewUserList += NewUserListHandler;
22 chan.MessageReceived += MessageReceivedHandler;
25 public void SendMessage(string message)
27 chan.SendMessage(message);
30 public string ChannelName {
31 get {
32 return chan.Name;
36 public void CloseChannel()
40 void UpdatePresentation()
42 messages = GuiFactory.Factory.GetDiscussionPanel(connCtrl.Presentation, this);
43 connCtrl.AddChildDiscussion(messages);
44 Logger.Debug("Added new chan");
47 #region Events handlers
48 void NewUserListHandler(object sender, UserListEventArgs e)
50 Logger.Debug("New user list for : " + chan.Name);
52 string[] usersList = new string[e.Users.Length];
53 for (int i = 0; i < e.Users.Length; i++)
54 usersList[i] = e.Users[i].ToString();
56 Array.Sort<string>(usersList, StringComparer.InvariantCultureIgnoreCase);
58 messages.AddUsers(usersList);
62 void MessageReceivedHandler(object sender, ChannelMessageEventArgs e)
64 Logger.Debug("Message received from chan : " + chan.Name);
65 bool isHl = e.Message.IndexOf(chan.ParentConnection.Nick) != -1;
66 messages.AddNewMessage(e.Author, e.Message, isHl);
68 #endregion