private void serversListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (serversListView.SelectedIndex > -1) { ServerStub stub = serversListView.SelectedItem as ServerStub; ServerView view = new ServerView(stub.Server, MainClient); view.Closed += (se, xe) => { openServerViews.Remove(se as ServerView); }; openServerViews.Add(view); view.Show(); //ServerInfo info = new ServerInfo(stub.Server); //info.ShowDialog(); } }
private void SetupEvents() { MainClient.Connected += (sender, e) => { Dispatcher.Invoke(() => this.Title = "Dissonance - " + e.User.Username); PopulateLists(); Dispatcher.Invoke(() => { Mouse.OverrideCursor = null; }); }; MainClient.TextClientDebugMessageReceived += (sender, e) => { //if(e.message.Level == MessageLevel.Critical) //{ // MessageBox.Show("Critical DiscordSharp Error Ocurred: " + e.message.Message); //} }; MainClient.MessageDeleted += (sender, e) => { if (e.DeletedMessage != null) { var serverView = openServerViews.Find(x => x.Server.ID == e.Channel.Parent.ID); if (serverView != null) { serverView.RemoveMessage(e.DeletedMessage); } } else { var serverView = openServerViews.Find(x => x.Server.ID == e.Channel.Parent.ID); if (serverView != null) { serverView.RemoveMessage(e.RawJson["d"]["id"].ToString(), e.RawJson["d"]["channel_id"].ToString()); } } }; MainClient.MentionReceived += (sender, e) => { string toReplace = $"<@{MainClient.Me.ID}>"; string message = e.Message.Content; message = message.Replace(toReplace, $"@{MainClient.Me.Username}"); if (e.Author.Avatar != null) { e.Author.GetAvatar().Save("temp.png"); } string messageToShow = e.Message.Content; string idToReplace = $"<@{MainClient.Me.ID}>"; messageToShow = messageToShow.Replace(idToReplace, $"@{MainClient.Me.Username}"); if (App.ClientConfiguration.Settings.UseWindows10Notifications) { var toast = toastManager.CreateToast(System.IO.Path.GetFullPath("temp.png"), $"Mention received from {e.Author.Username}", $"{messageToShow}", ""); lastNotification = $"{e.Channel.Parent.ID}:{e.Channel.ID}"; //server:channel toast.Activated += (sxc, exc) => { string[] split = lastNotification.Split(new char[] { ':' }, 2); lastNotification = null; string serverID = split[0]; string channelID = split[1]; bool hasServer = false; foreach (var serverView in openServerViews) { if (serverView.Server.ID == serverID) { hasServer = true; } } if (hasServer) { Dispatcher.Invoke(() => openServerViews.Find(x => x.Server.ID == serverID).Activate()); } else { Dispatcher.Invoke(() => { ServerView view = new ServerView(MainClient.GetServersList().Find(x => x.ID == serverID), MainClient); view.Closed += (x, f) => { openServerViews.Remove(x as ServerView); }; openServerViews.Add(view); view.LoadChannel(view.Server.Channels.Find(x => x.ID == channelID)); view.Show(); view.Activate(); }); } }; ToastNotificationManager.CreateToastNotifier(toastManager.GetAppID).Show(toast); } else { lastNotification = $"{e.Channel.Parent.ID}:{e.Channel.ID}"; //server:channel notificationIcon.BalloonTipClicked += (sxc, exc) => { string[] split = lastNotification.Split(new char[] { ':' }, 2); lastNotification = null; string serverID = split[0]; string channelID = split[1]; bool hasServer = false; foreach (var serverView in openServerViews) { if (serverView.Server.ID == serverID) { hasServer = true; } } if (hasServer) { Dispatcher.Invoke(() => openServerViews.Find(x => x.Server.ID == serverID).Activate()); } else { Dispatcher.Invoke(() => { ServerView view = new ServerView(MainClient.GetServersList().Find(x => x.ID == serverID), MainClient); view.Closed += (x, f) => { openServerViews.Remove(x as ServerView); }; openServerViews.Add(view); view.LoadChannel(view.Server.Channels.Find(x => x.ID == channelID)); view.Show(); view.Activate(); }); } }; notificationIcon.BalloonTipTitle = $"Mentioned received from {e.Author.Username}"; notificationIcon.BalloonTipText = $"{messageToShow}"; notificationIcon.ShowBalloonTip(2500); //2.5 seconds notificationSound.PlaySync(); } }; MainClient.SocketClosed += (sender, e) => { if (closing) { return; } Dispatcher.Invoke(() => Title = "Connection lost, retrying.."); discordTask.Dispose(); Task.Delay(3000).Wait(); if (MainClient.SendLoginRequest() != null) { discordTask = Task.Run(() => MainClient.Connect()); } }; MainClient.MessageReceived += (sender, e) => { DiscordServer serverIn = e.Channel.Parent; openServerViews.ForEach(x => { if (x.Server.ID == serverIn.ID) { x.AddMessage(e.Message); } }); }; }
private void SetupEvents() { MainClient.Connected += (sender, e) => { Dispatcher.Invoke(()=>this.Title = "Dissonance - " + e.user.Username); PopulateLists(); Dispatcher.Invoke(()=> { Mouse.OverrideCursor = null; }); }; MainClient.TextClientDebugMessageReceived += (sender, e) => { //if(e.message.Level == MessageLevel.Critical) //{ // MessageBox.Show("Critical DiscordSharp Error Ocurred: " + e.message.Message); //} }; MainClient.MessageDeleted += (sender, e) => { if(e.DeletedMessage != null) { var serverView = openServerViews.Find(x => x.Server.id == e.Channel.parent.id); if(serverView != null) { serverView.RemoveMessage(e.DeletedMessage); } } else { var serverView = openServerViews.Find(x => x.Server.id == e.Channel.parent.id); if (serverView != null) { serverView.RemoveMessage(e.RawJson["d"]["id"].ToString(), e.RawJson["d"]["channel_id"].ToString()); } } }; MainClient.MentionReceived += (sender, e) => { string toReplace = $"<@{MainClient.Me.ID}>"; string message = e.message.content; message = message.Replace(toReplace, $"@{MainClient.Me.Username}"); if (e.author.Avatar != null) { e.author.GetAvatar().Save("temp.png"); } string messageToShow = e.message.content; string idToReplace = $"<@{MainClient.Me.ID}>"; messageToShow = messageToShow.Replace(idToReplace, $"@{MainClient.Me.Username}"); if (App.ClientConfiguration.Settings.UseWindows10Notifications) { var toast = toastManager.CreateToast(System.IO.Path.GetFullPath("temp.png"), $"Mention received from {e.author.Username}", $"{messageToShow}", ""); lastNotification = $"{e.Channel.parent.id}:{e.Channel.ID}"; //server:channel toast.Activated += (sxc, exc) => { string[] split = lastNotification.Split(new char[] { ':' }, 2); lastNotification = null; string serverID = split[0]; string channelID = split[1]; bool hasServer = false; foreach (var serverView in openServerViews) if (serverView.Server.id == serverID) hasServer = true; if (hasServer) { Dispatcher.Invoke(() => openServerViews.Find(x => x.Server.id == serverID).Activate()); } else { Dispatcher.Invoke(() => { ServerView view = new ServerView(MainClient.GetServersList().Find(x => x.id == serverID), MainClient); view.Closed += (x, f) => { openServerViews.Remove(x as ServerView); }; openServerViews.Add(view); view.LoadChannel(view.Server.channels.Find(x => x.ID == channelID)); view.Show(); view.Activate(); }); } }; ToastNotificationManager.CreateToastNotifier(toastManager.GetAppID).Show(toast); } else { lastNotification = $"{e.Channel.parent.id}:{e.Channel.ID}"; //server:channel notificationIcon.BalloonTipClicked += (sxc, exc) => { string[] split = lastNotification.Split(new char[] { ':' }, 2); lastNotification = null; string serverID = split[0]; string channelID = split[1]; bool hasServer = false; foreach (var serverView in openServerViews) if (serverView.Server.id == serverID) hasServer = true; if (hasServer) Dispatcher.Invoke(() => openServerViews.Find(x => x.Server.id == serverID).Activate()); else { Dispatcher.Invoke(() => { ServerView view = new ServerView(MainClient.GetServersList().Find(x => x.id == serverID), MainClient); view.Closed += (x, f) => { openServerViews.Remove(x as ServerView); }; openServerViews.Add(view); view.LoadChannel(view.Server.channels.Find(x => x.ID == channelID)); view.Show(); view.Activate(); }); } }; notificationIcon.BalloonTipTitle = $"Mentioned received from {e.author.Username}"; notificationIcon.BalloonTipText = $"{messageToShow}"; notificationIcon.ShowBalloonTip(2500); //2.5 seconds notificationSound.PlaySync(); } }; MainClient.SocketClosed += (sender, e) => { if (closing) return; Dispatcher.Invoke(() => Title = "Connection lost, retrying.."); discordTask.Dispose(); Task.Delay(3000).Wait(); if (MainClient.SendLoginRequest() != null) discordTask = Task.Run(() => MainClient.Connect()); }; MainClient.MessageReceived += (sender, e) => { DiscordServer serverIn = e.Channel.parent; openServerViews.ForEach(x => { if(x.Server.id == serverIn.id) { x.AddMessage(e.message); } }); }; }