From 801a0da615d9c2ade83aaea8497e7d29796c2605 Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 18:32:18 +0200 Subject: [PATCH 1/6] 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/6] 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/6] 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; From 8c7253dfccc117e132451b8f7b1bd255f150d847 Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 18:51:16 +0200 Subject: [PATCH 4/6] Changed combobox style of guild and channel selection to suggest elements from its data lists --- .../MainForm.Designer.cs | 92 ++++++++++--------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/Discord Media Loader.Application/MainForm.Designer.cs b/Discord Media Loader.Application/MainForm.Designer.cs index d3ea045..8fdcfd2 100644 --- a/Discord Media Loader.Application/MainForm.Designer.cs +++ b/Discord Media Loader.Application/MainForm.Designer.cs @@ -46,6 +46,11 @@ this.cbGuild = new System.Windows.Forms.ComboBox(); this.lbGuild = new System.Windows.Forms.Label(); this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.lbStatus = new System.Windows.Forms.ToolStripDropDownButton(); + this.invisibleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.doNotDisturbToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.doNotDenyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.onlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.pgbProgress = new System.Windows.Forms.ToolStripProgressBar(); this.lbProgress = new System.Windows.Forms.ToolStripStatusLabel(); this.lblVersionPlaceholder = new System.Windows.Forms.ToolStripStatusLabel(); @@ -57,11 +62,6 @@ this.btnDelete = new System.Windows.Forms.Button(); this.lbxJobs = new System.Windows.Forms.ListBox(); this.tmrRefreshProgress = new System.Windows.Forms.Timer(this.components); - this.lbStatus = new System.Windows.Forms.ToolStripDropDownButton(); - this.onlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.doNotDenyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.doNotDisturbToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.invisibleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tmrTriggerRefresh = new System.Windows.Forms.Timer(this.components); this.pnlSettings.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.edThreadLimit)).BeginInit(); @@ -206,6 +206,8 @@ // this.cbChannel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.cbChannel.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; + this.cbChannel.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.cbChannel.FormattingEnabled = true; this.cbChannel.Location = new System.Drawing.Point(294, 19); this.cbChannel.Name = "cbChannel"; @@ -223,6 +225,8 @@ // // cbGuild // + this.cbGuild.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; + this.cbGuild.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.cbGuild.FormattingEnabled = true; this.cbGuild.Location = new System.Drawing.Point(52, 19); this.cbGuild.Name = "cbGuild"; @@ -254,6 +258,45 @@ this.statusStrip.TabIndex = 2; this.statusStrip.Text = "statusStrip1"; // + // lbStatus + // + this.lbStatus.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.invisibleToolStripMenuItem, + this.doNotDisturbToolStripMenuItem, + this.doNotDenyToolStripMenuItem, + this.onlineToolStripMenuItem}); + this.lbStatus.Name = "lbStatus"; + this.lbStatus.Size = new System.Drawing.Size(13, 20); + this.lbStatus.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked); + // + // invisibleToolStripMenuItem + // + this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem"; + this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.invisibleToolStripMenuItem.Tag = "3"; + this.invisibleToolStripMenuItem.Text = "Invisible"; + // + // doNotDisturbToolStripMenuItem + // + this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem"; + this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.doNotDisturbToolStripMenuItem.Tag = "2"; + this.doNotDisturbToolStripMenuItem.Text = "Do not disturb"; + // + // doNotDenyToolStripMenuItem + // + this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem"; + this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.doNotDenyToolStripMenuItem.Tag = "1"; + this.doNotDenyToolStripMenuItem.Text = "Idle"; + // + // onlineToolStripMenuItem + // + this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem"; + this.onlineToolStripMenuItem.Size = new System.Drawing.Size(150, 22); + this.onlineToolStripMenuItem.Tag = "0"; + this.onlineToolStripMenuItem.Text = "Online"; + // // pgbProgress // this.pgbProgress.Name = "pgbProgress"; @@ -341,45 +384,6 @@ this.tmrRefreshProgress.Interval = 500; this.tmrRefreshProgress.Tick += new System.EventHandler(this.tmrRefreshProgress_Tick); // - // lbStatus - // - this.lbStatus.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.invisibleToolStripMenuItem, - this.doNotDisturbToolStripMenuItem, - this.doNotDenyToolStripMenuItem, - this.onlineToolStripMenuItem}); - this.lbStatus.Name = "lbStatus"; - this.lbStatus.Size = new System.Drawing.Size(13, 20); - this.lbStatus.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked); - // - // onlineToolStripMenuItem - // - this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem"; - this.onlineToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.onlineToolStripMenuItem.Tag = "0"; - this.onlineToolStripMenuItem.Text = "Online"; - // - // doNotDenyToolStripMenuItem - // - this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem"; - this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.doNotDenyToolStripMenuItem.Tag = "1"; - this.doNotDenyToolStripMenuItem.Text = "Idle"; - // - // doNotDisturbToolStripMenuItem - // - this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem"; - this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.doNotDisturbToolStripMenuItem.Tag = "2"; - this.doNotDisturbToolStripMenuItem.Text = "Do not disturb"; - // - // invisibleToolStripMenuItem - // - this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem"; - this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.invisibleToolStripMenuItem.Tag = "3"; - this.invisibleToolStripMenuItem.Text = "Invisible"; - // // tmrTriggerRefresh // this.tmrTriggerRefresh.Interval = 5000; From 033cb203b0119fb0206be6132047101e27fcc401 Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 18:59:34 +0200 Subject: [PATCH 5/6] Revert "Merge branch 'bugfix/UI-improvments' into support/1.1" This reverts commit 33474c2daba0f1849e372c0531a0a7aed9fc4083, reversing changes made to 6b2fc74a9e316435222005abdd2f053f83a8ad2f. --- .../MainForm.Designer.cs | 92 +++++++++---------- 1 file changed, 44 insertions(+), 48 deletions(-) diff --git a/Discord Media Loader.Application/MainForm.Designer.cs b/Discord Media Loader.Application/MainForm.Designer.cs index 8fdcfd2..d3ea045 100644 --- a/Discord Media Loader.Application/MainForm.Designer.cs +++ b/Discord Media Loader.Application/MainForm.Designer.cs @@ -46,11 +46,6 @@ this.cbGuild = new System.Windows.Forms.ComboBox(); this.lbGuild = new System.Windows.Forms.Label(); this.statusStrip = new System.Windows.Forms.StatusStrip(); - this.lbStatus = new System.Windows.Forms.ToolStripDropDownButton(); - this.invisibleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.doNotDisturbToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.doNotDenyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.onlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.pgbProgress = new System.Windows.Forms.ToolStripProgressBar(); this.lbProgress = new System.Windows.Forms.ToolStripStatusLabel(); this.lblVersionPlaceholder = new System.Windows.Forms.ToolStripStatusLabel(); @@ -62,6 +57,11 @@ this.btnDelete = new System.Windows.Forms.Button(); this.lbxJobs = new System.Windows.Forms.ListBox(); this.tmrRefreshProgress = new System.Windows.Forms.Timer(this.components); + this.lbStatus = new System.Windows.Forms.ToolStripDropDownButton(); + this.onlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.doNotDenyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.doNotDisturbToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.invisibleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tmrTriggerRefresh = new System.Windows.Forms.Timer(this.components); this.pnlSettings.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.edThreadLimit)).BeginInit(); @@ -206,8 +206,6 @@ // this.cbChannel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.cbChannel.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.cbChannel.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.cbChannel.FormattingEnabled = true; this.cbChannel.Location = new System.Drawing.Point(294, 19); this.cbChannel.Name = "cbChannel"; @@ -225,8 +223,6 @@ // // cbGuild // - this.cbGuild.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; - this.cbGuild.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems; this.cbGuild.FormattingEnabled = true; this.cbGuild.Location = new System.Drawing.Point(52, 19); this.cbGuild.Name = "cbGuild"; @@ -258,45 +254,6 @@ this.statusStrip.TabIndex = 2; this.statusStrip.Text = "statusStrip1"; // - // lbStatus - // - this.lbStatus.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.invisibleToolStripMenuItem, - this.doNotDisturbToolStripMenuItem, - this.doNotDenyToolStripMenuItem, - this.onlineToolStripMenuItem}); - this.lbStatus.Name = "lbStatus"; - this.lbStatus.Size = new System.Drawing.Size(13, 20); - this.lbStatus.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked); - // - // invisibleToolStripMenuItem - // - this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem"; - this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(150, 22); - this.invisibleToolStripMenuItem.Tag = "3"; - this.invisibleToolStripMenuItem.Text = "Invisible"; - // - // doNotDisturbToolStripMenuItem - // - this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem"; - this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(150, 22); - this.doNotDisturbToolStripMenuItem.Tag = "2"; - this.doNotDisturbToolStripMenuItem.Text = "Do not disturb"; - // - // doNotDenyToolStripMenuItem - // - this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem"; - this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(150, 22); - this.doNotDenyToolStripMenuItem.Tag = "1"; - this.doNotDenyToolStripMenuItem.Text = "Idle"; - // - // onlineToolStripMenuItem - // - this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem"; - this.onlineToolStripMenuItem.Size = new System.Drawing.Size(150, 22); - this.onlineToolStripMenuItem.Tag = "0"; - this.onlineToolStripMenuItem.Text = "Online"; - // // pgbProgress // this.pgbProgress.Name = "pgbProgress"; @@ -384,6 +341,45 @@ this.tmrRefreshProgress.Interval = 500; this.tmrRefreshProgress.Tick += new System.EventHandler(this.tmrRefreshProgress_Tick); // + // lbStatus + // + this.lbStatus.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.invisibleToolStripMenuItem, + this.doNotDisturbToolStripMenuItem, + this.doNotDenyToolStripMenuItem, + this.onlineToolStripMenuItem}); + this.lbStatus.Name = "lbStatus"; + this.lbStatus.Size = new System.Drawing.Size(13, 20); + this.lbStatus.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked); + // + // onlineToolStripMenuItem + // + this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem"; + this.onlineToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.onlineToolStripMenuItem.Tag = "0"; + this.onlineToolStripMenuItem.Text = "Online"; + // + // doNotDenyToolStripMenuItem + // + this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem"; + this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.doNotDenyToolStripMenuItem.Tag = "1"; + this.doNotDenyToolStripMenuItem.Text = "Idle"; + // + // doNotDisturbToolStripMenuItem + // + this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem"; + this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.doNotDisturbToolStripMenuItem.Tag = "2"; + this.doNotDisturbToolStripMenuItem.Text = "Do not disturb"; + // + // invisibleToolStripMenuItem + // + this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem"; + this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.invisibleToolStripMenuItem.Tag = "3"; + this.invisibleToolStripMenuItem.Text = "Invisible"; + // // tmrTriggerRefresh // this.tmrTriggerRefresh.Interval = 5000; From 145a5eb0ca368aacd1fea714db574ce480110c75 Mon Sep 17 00:00:00 2001 From: Serraniel Date: Fri, 15 Jun 2018 19:04:32 +0200 Subject: [PATCH 6/6] Build --- Discord Media Loader.Application/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Discord Media Loader.Application/Properties/AssemblyInfo.cs b/Discord Media Loader.Application/Properties/AssemblyInfo.cs index b9030cb..a856e06 100644 --- a/Discord Media Loader.Application/Properties/AssemblyInfo.cs +++ b/Discord Media Loader.Application/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.1.1.0")] -[assembly: AssemblyFileVersion("1.1.1.0")] +[assembly: AssemblyVersion("1.1.2.0")] +[assembly: AssemblyFileVersion("1.1.2.0")]