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.
13 using Circ
.Controller
;
17 public sealed class ChannelControl
: IChannelControl
20 IChannelPanel frontend
;
21 ConnectionControl connCtrl
;
23 public ChannelControl(IrcChannel chan
, ConnectionControl connCtrl
)
26 this.connCtrl
= connCtrl
;
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
{
51 public IChannelPanel Frontend
{
57 /*public void SendMessage(string message)
59 chan.SendMessage(message);
62 public string ChannelName {
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
);