private void eUsersList_DoubleClick(object sender, EventArgs e) { var userItem = eUsersList.SelectedItem; if (userItem == null) { return; } Match m = Regex.Match(userItem.ToString(), "^[@+]?(.*)$"); string targetNick = m.Groups[1].Value; var ctx = ContextCollection.GetByName(targetNick); if (ctx == null) { ContextCollection.Add(new IrcQuery(targetNick)); } else { ContextCollection.Current = ctx; UpdateContext(); } }
static public void PrivmsgAction(Message message) { if (message.ParamsArray[1] == ContextCollection.Server.Client.Nickname) // Private message { var ctx = ContextCollection.GetByName(message.Nick); if (ctx != null) { ctx.WriteMessage(message.Nick, message.Text); } else { IrcQuery query = new IrcQuery(message.Nick); ContextCollection.Add(query, true); query.WriteMessage(message.Nick, message.Text); } } else // Channel { var ctx = ContextCollection.GetByName(message.ParamsArray[1]); if (ctx != null) { ctx.WriteMessage(message.Nick, message.Text); } } }
static public void NamesEndAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[2]); if (ctx == ContextCollection.Current) { Program.MainWindow.UpdateUsersList(); } }
static public void TopicInfoAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[2]); var timeSpan = TimeSpan.FromSeconds(double.Parse(message.ParamsArray[4])); var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var dateTime = epoch.Add(timeSpan).ToLocalTime(); ctx.WriteLine(RTF.ColourString("Topic set by " + message.ParamsArray[3] + " on " + dateTime, IrcColor.Green)); }
static public void NamesAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[3]); string[] names = message.Text.Split(' '); foreach (string name in names) { ((IrcChannel)ctx).Users.Add(name); } }
static public void TopicChangeAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[1]); ctx.WriteLine(RTF.ColourString(message.Nick + " changed topic to: " + message.Text, IrcColor.Green)); ctx.Topic = message.Text; if (ctx == ContextCollection.Current) { Program.MainWindow.UpdateTopic(); } }
static public void TopicAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[2]); ctx.Topic = message.Text; ctx.WriteLine(RTF.ColourString("Topic for " + message.ParamsArray[2] + ": " + message.Text, IrcColor.Green)); if (ctx == ContextCollection.Current) { Program.MainWindow.UpdateTopic(); } }
static public void ModeAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[1]); if (ctx != null) { ctx.WriteLine(RTF.ColourString(message.Nick + " sets mode" + message.Params, IrcColor.Green)); ContextCollection.Server.SendQuery("NAMES " + message.ParamsArray[1]); } else { ContextCollection.Server.WriteLine(RTF.ColourString(message.Nick + " sets mode " + message.Text, IrcColor.Green)); } }
static public void KickAction(Message message) { var ctx = ContextCollection.GetByName(message.ParamsArray[1]); if (ContextCollection.Server.Client.Nickname == message.ParamsArray[2]) { ContextCollection.Server.WriteLine(string.Format("You were kicked from {0} by {1} ({2})", message.ParamsArray[1], message.Nick, message.Text)); ContextCollection.Remove(ctx); } else { ctx.WriteLine(RTF.ColourString(string.Format("{0} has been kicked by {1} ({2})", message.ParamsArray[2], message.Nick, message.Text), IrcColor.Orange)); ctx.UsersList.Remove(message.ParamsArray[2]); Program.MainWindow.UpdateUsersList(); } }
static public void JoinAction(Message message) { if (message.Nick == ContextCollection.Server.Client.Nickname) { ContextCollection.Add(new IrcChannel(message.ParamsArray[1])); } else { var ctx = ContextCollection.GetByName(message.ParamsArray[1]); if (ctx != null) { ((IrcChannel)ctx).Users.Add(message.Nick); ctx.WriteLine(RTF.ColourString(message.Nick + " (" + message.Ident + "@" + message.Host + ") has joined.", IrcColor.Orange)); Program.MainWindow.UpdateUsersList(); } } }
static public void PartAction(Message message) { if (message.Nick == ContextCollection.Server.Client.Nickname) { ContextCollection.Remove(ContextCollection.GetByName(message.ParamsArray[1])); } else { var ctx = ContextCollection.GetByName(message.ParamsArray[1]); if (ctx != null) { ((IrcChannel)ctx).Users.Remove(message.Nick); ctx.WriteLine(RTF.ColourString(message.Nick + " has left.", IrcColor.Orange)); Program.MainWindow.UpdateUsersList(); } } }
static public void QueryCommand(string _params) { Match m = Regex.Match(_params.Trim(), @"^([A-Za-z0-9_\-\[\]\\^{}|`]+)$"); if (m.Groups[1] == null || m.Groups[1].Value.Length == 0) { ContextCollection.Current.WriteLine("Usage: /query [<nickname>]"); return; } var ctx = ContextCollection.GetByName(m.Groups[1].Value); if (ctx == null) { IrcQuery query = new IrcQuery(m.Groups[1].Value); ContextCollection.Add(query); } else { ContextCollection.Current = ctx; Program.MainWindow.UpdateContext(); } }