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; + } +} diff --git a/Discord Media Loader.Application/MainForm.cs b/Discord Media Loader.Application/MainForm.cs index d74faba..ce7b754 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."); } @@ -67,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; @@ -153,7 +157,7 @@ namespace DML.Application UseWaitCursor = true; try { - var guild = FindServerByName(cbGuild.Text); + var guild = FindServerById(((IdentifiedString)cbGuild.SelectedItem).Id); if (guild != null) { @@ -161,7 +165,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 +189,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 @@ -208,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;