* Corrected small things to make Circ-git compile from within MonoDevelop
[circ.git] / CirC / CilControls / ChannelControl.cs
blob7fb457333a3a099add46c2d149a354604fc942d8
1 #region License
2 /* Circ : Main program
3 * Copyright (C) 2007 LAVAL Jérémie
5 * This file is licensed under the terms of the LGPL.
7 * For the complete licence see the file COPYING.
8 */
9 #endregion
10 using System;
11 using Circ.Backend;
12 using Circ.Frontend;
13 using Circ.Controller;
15 namespace Circ
17 public sealed class ChannelControl: IChannelControl
19 IrcChannel chan;
20 IChannelPanel frontend;
21 ConnectionControl connCtrl;
23 public ChannelControl(IrcChannel chan, ConnectionControl connCtrl)
25 this.chan = chan;
26 this.connCtrl = connCtrl;
28 UpdatePresentation();
29 chan.NewUserList += NewUserListHandler;
30 chan.MessageReceived += MessageReceivedHandler;
31 chan.NewUserConnected += delegate(object sender, UserEventArgs e) {
32 Logger.Debug("Adding User : " + e.User.Nick);
33 frontend.AddUser(e.User.Nick);
35 chan.UserDisconnected += delegate (object sender, UserQuitEventArgs e) {
36 Logger.Debug("Removing User : " + e.User.Nick);
37 frontend.RemoveUser(e.User.Nick, e.QuitMessage);
39 chan.TopicUpdated += delegate (object sender, TopicEventArgs e) {
40 frontend.ChangeTopic(e.Topic, "unknow", DateTime.Now);
45 public IrcChannel Backend {
46 get {
47 return chan;
51 public IChannelPanel Frontend {
52 get {
53 return frontend;
57 /*public void SendMessage(string message)
59 chan.SendMessage(message);
62 public string ChannelName {
63 get {
64 return chan.Name;
66 }*/
68 public void CloseChannel()
72 void UpdatePresentation()
74 frontend = GuiFactory.Factory.GetChannelPanel(connCtrl.Frontend, this);
75 connCtrl.AddChildDiscussion(frontend);
76 Logger.Debug("Added new chan");
79 #region Events handlers
80 void NewUserListHandler(object sender, UserListEventArgs e)
82 Logger.Debug("New user list for : " + chan.Name);
84 string[] usersList = new string[e.Users.Length];
85 for (int i = 0; i < e.Users.Length; i++)
86 usersList[i] = e.Users[i].ToString();
88 Array.Sort<string>(usersList, StringComparer.InvariantCultureIgnoreCase);
90 frontend.AddUser(usersList);
94 void MessageReceivedHandler(object sender, ChannelMessageEventArgs e)
96 Logger.Debug("Message received from chan : " + chan.Name);
97 bool isHl = e.Message.IndexOf(chan.ParentConnection.Nick) != -1;
98 frontend.AddNewMessage(DateTime.Now, e.Author, e.Message, (isHl) ? MessageFlags.Hl : MessageFlags.Default);
100 #endregion