From 801a0da615d9c2ade83aaea8497e7d29796c2605 Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 18:32:18 +0200 Subject: [PATCH 1/3] Added class for identified strings --- .../DML.Application.csproj | 1 + .../Helper/IdentifiedString.cs | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 Discord Media Loader.Application/Helper/IdentifiedString.cs diff --git a/Discord Media Loader.Application/DML.Application.csproj b/Discord Media Loader.Application/DML.Application.csproj index 0e3a4d2..17496c5 100644 --- a/Discord Media Loader.Application/DML.Application.csproj +++ b/Discord Media Loader.Application/DML.Application.csproj @@ -179,6 +179,7 @@ FrmInternalSplash.cs + Form diff --git a/Discord Media Loader.Application/Helper/IdentifiedString.cs b/Discord Media Loader.Application/Helper/IdentifiedString.cs new file mode 100644 index 0000000..828d6cf --- /dev/null +++ b/Discord Media Loader.Application/Helper/IdentifiedString.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DML.Application.Helper +{ + internal class IdentifiedString + { + internal T Id { get; set; } + internal string Caption { get; set; } + + internal IdentifiedString(T id, string caption) + { + Id = id; + Caption = caption; + } + + public override string ToString() => Caption; + } +} From 5e940c09bde35500e720fc6528b6b8187e3bd528 Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 18:33:00 +0200 Subject: [PATCH 2/3] Added implementation for guild and channel selection with identified strings --- Discord Media Loader.Application/MainForm.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Discord Media Loader.Application/MainForm.cs b/Discord Media Loader.Application/MainForm.cs index d74faba..99b2fe9 100644 --- a/Discord Media Loader.Application/MainForm.cs +++ b/Discord Media Loader.Application/MainForm.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; @@ -8,7 +9,9 @@ using Discord; using Discord.WebSocket; using DML.AppCore.Classes; using DML.Application.Classes; +using DML.Application.Helper; using DML.Client; +using static DML.Client.DMLClient; using static SweetLib.Utils.Logger.Logger; namespace DML.Application @@ -57,7 +60,9 @@ namespace DML.Application if (cbGuild.Items.Count == 0) { Trace("Adding guilds to component..."); - cbGuild.Items.AddRange(DMLClient.Client.Guilds.Where(g => g.Name != null).OrderBy(g => g.Name).Select(g => g.Name).ToArray()); + + cbGuild.Items.AddRange(DMLClient.Client.Guilds.Where(g => g.Name != null).OrderBy(g => g.Name).Select(g => new IdentifiedString(g.Id, g.Name)).ToArray()); + cbGuild.SelectedIndex = 0; Trace("Guild component initialized."); } @@ -153,7 +158,7 @@ namespace DML.Application UseWaitCursor = true; try { - var guild = FindServerByName(cbGuild.Text); + var guild = FindServerById(((IdentifiedString)cbGuild.SelectedItem).Id); if (guild != null) { @@ -161,7 +166,9 @@ namespace DML.Application cbChannel.Items.Clear(); Trace("Adding new channels..."); - cbChannel.Items.AddRange(guild.TextChannels.OrderBy(c => c.Position).Select(c => c.Name).ToArray()); + + cbChannel.Items.AddRange(guild.TextChannels.OrderBy(c => c.Position).Select(c => new IdentifiedString(c.Id, c.Name)).ToArray()); + Trace($"Added {cbChannel.Items.Count} channels."); cbChannel.SelectedIndex = 0; @@ -183,8 +190,8 @@ namespace DML.Application { var job = new Job { - GuildId = FindServerByName(cbGuild.Text).Id, - ChannelId = FindChannelByName(FindServerByName(cbGuild.Text), cbChannel.Text).Id + GuildId = ((IdentifiedString)cbGuild.SelectedItem).Id, + ChannelId = ((IdentifiedString)cbChannel.SelectedItem).Id }; if (!(from j in Core.Scheduler.JobList From 5c936841643fc0372791210c62e4d99a4f92ea1d Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 18:46:44 +0200 Subject: [PATCH 3/3] Switched joblist to IdentifiedString objects --- Discord Media Loader.Application/MainForm.cs | 30 ++++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/Discord Media Loader.Application/MainForm.cs b/Discord Media Loader.Application/MainForm.cs index 99b2fe9..ce7b754 100644 --- a/Discord Media Loader.Application/MainForm.cs +++ b/Discord Media Loader.Application/MainForm.cs @@ -72,8 +72,7 @@ namespace DML.Application lbxJobs.Items.Clear(); foreach (var job in Core.Scheduler.JobList) { - lbxJobs.Items.Add( - $"{FindServerById(job.GuildId)?.Name}:{FindChannelById(FindServerById(job.GuildId), job.ChannelId)?.Name}"); + lbxJobs.Items.Add(new IdentifiedString(job.Id, $"{FindServerById(job.GuildId)?.Name}:{FindChannelById(FindServerById(job.GuildId), job.ChannelId)?.Name}")); } lbxJobs.SelectedIndex = oldIndex; @@ -215,28 +214,15 @@ namespace DML.Application MessageBox.Show("No job has been seleted.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); } - var jobNameData = lbxJobs.SelectedItem.ToString().Split(':'); + var jobId = ((IdentifiedString)lbxJobs.SelectedItem).Id; - var guildName = ""; - for (var i = 0; i < jobNameData.Length - 1; i++) - guildName += jobNameData[i] + ":"; - guildName = guildName.Substring(0, guildName.Length - 1); - - var channelName = jobNameData[jobNameData.Length - 1]; - - var guild = FindServerByName(guildName); - var channel = FindChannelByName(guild, channelName); - - foreach (var job in Core.Scheduler.JobList) + var job = Core.Scheduler.JobList.FirstOrDefault(j => j.Id == jobId); + if (job != null) { - if (job.GuildId == guild.Id && job.ChannelId == channel.Id) - { - Core.Scheduler.JobList.Remove(job); - Core.Scheduler.RunningJobs.Remove(job.Id); - job.Stop(); - job.Delete(); - break; - } + Core.Scheduler.JobList.Remove(job); + Core.Scheduler.RunningJobs.Remove(job.Id); + job.Stop(); + job.Delete(); } lbxJobs.SelectedIndex = -1;