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;