From be84e1e144450f7f309b99c75c8ac98f12eecb3b Mon Sep 17 00:00:00 2001 From: Manuel Kamper Date: Fri, 2 Dec 2022 13:00:28 +0100 Subject: [PATCH] button undo unvisible at app start and only be visible for 1 undo where possible so far #32 improved handling with undo #26 improved handling for autoload and fixed button "load api" #34 implemented checking of valid api before saving #33 --- Mk0.Software.Bildduplikate/API.cs | 38 ++++++++++++++++--- Mk0.Software.Bildduplikate/Main.Designer.cs | 4 +- Mk0.Software.Bildduplikate/Main.cs | 30 +++++++++++++-- .../Mk0.Software.Bildduplikate.csproj | 2 +- .../Properties/AssemblyInfo.cs | 4 +- 5 files changed, 64 insertions(+), 14 deletions(-) diff --git a/Mk0.Software.Bildduplikate/API.cs b/Mk0.Software.Bildduplikate/API.cs index b10160b..fed041e 100644 --- a/Mk0.Software.Bildduplikate/API.cs +++ b/Mk0.Software.Bildduplikate/API.cs @@ -1,4 +1,5 @@ using System; +using System.Net; using System.Windows.Forms; namespace Mk0.Software.Bildduplikate @@ -17,12 +18,37 @@ namespace Mk0.Software.Bildduplikate private void ButtonSave_Click(object sender, EventArgs e) { - Properties.Settings.Default.ApiUrl = textBoxApiUrl.Text.Trim(); - Properties.Settings.Default.ReplacePath = textBoxPath1.Text.Trim(); - Properties.Settings.Default.ReplaceWith = textBoxPath2.Text.Trim(); - Properties.Settings.Default.imagesFromAPI = (int)numericUpDown1.Value; - Properties.Settings.Default.autoload = checkBoxAutoLoad.Checked; - Properties.Settings.Default.Save(); + if (!CheckWebsite(textBoxApiUrl.Text.Trim() + "?test")) + { + MessageBox.Show("The URL of the API is not valid!" + Environment.NewLine + "Settings not saved!", "No valid API", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + else + { + Properties.Settings.Default.ApiUrl = textBoxApiUrl.Text.Trim(); + Properties.Settings.Default.ReplacePath = textBoxPath1.Text.Trim(); + Properties.Settings.Default.ReplaceWith = textBoxPath2.Text.Trim(); + Properties.Settings.Default.imagesFromAPI = (int)numericUpDown1.Value; + Properties.Settings.Default.autoload = checkBoxAutoLoad.Checked; + Properties.Settings.Default.Save(); + } + } + + public bool CheckWebsite(string URL) + { + try + { + WebClient wc = new WebClient(); + string HTMLSource = wc.DownloadString(URL); + if (HTMLSource.Contains("API is working properly")) + { + return true; + } + return false; + } + catch (Exception) + { + return false; + } } } } diff --git a/Mk0.Software.Bildduplikate/Main.Designer.cs b/Mk0.Software.Bildduplikate/Main.Designer.cs index 68b5835..649005c 100644 --- a/Mk0.Software.Bildduplikate/Main.Designer.cs +++ b/Mk0.Software.Bildduplikate/Main.Designer.cs @@ -241,6 +241,7 @@ namespace Mk0.Software.Bildduplikate this.buttonAPILoad.TabIndex = 14; this.buttonAPILoad.Text = "Load API"; this.buttonAPILoad.UseVisualStyleBackColor = true; + this.buttonAPILoad.Visible = false; this.buttonAPILoad.Click += new System.EventHandler(this.ButtonAPILoad_Click); // // buttonUndo @@ -252,6 +253,7 @@ namespace Mk0.Software.Bildduplikate this.buttonUndo.TabIndex = 15; this.buttonUndo.Text = "undo"; this.buttonUndo.UseVisualStyleBackColor = true; + this.buttonUndo.Visible = false; this.buttonUndo.Click += new System.EventHandler(this.ButtonUndo_Click); // // Main @@ -273,7 +275,7 @@ namespace Mk0.Software.Bildduplikate this.MinimumSize = new System.Drawing.Size(1000, 590); this.Name = "Main"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Bildduplikate v1.9 by kmpr.at"; + this.Text = "Bildduplikate v1.10 by kmpr.at"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing); this.Shown += new System.EventHandler(this.Main_Shown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); diff --git a/Mk0.Software.Bildduplikate/Main.cs b/Mk0.Software.Bildduplikate/Main.cs index 6147245..e932da5 100644 --- a/Mk0.Software.Bildduplikate/Main.cs +++ b/Mk0.Software.Bildduplikate/Main.cs @@ -150,7 +150,7 @@ namespace Mk0.Software.Bildduplikate fileName2 = GetRtfUnicodeEscapedString(fileName2); dup1++; } - else if(fileName2.Count(Char.IsDigit) < fileName1.Count(Char.IsDigit)) + else if (fileName2.Count(Char.IsDigit) < fileName1.Count(Char.IsDigit)) { fileName1 = GetRtfUnicodeEscapedString(fileName1); fileName2 = @" \b " + GetRtfUnicodeEscapedString(fileName2) + @" \b0 "; @@ -415,6 +415,7 @@ namespace Mk0.Software.Bildduplikate { MessageBox.Show("Fehler bei der Kommunikation mit der API:" + Environment.NewLine + ex.ToString(), "API Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } + buttonUndo.Visible = true; } else { @@ -450,6 +451,8 @@ namespace Mk0.Software.Bildduplikate LoadDuplicates(line, api); lastStep = 2; } + //todo erst einkommentieren, wenn es die möglichkeit gibt, gelöschte wiederherzustellen + //buttonUndo.Visible = true; } catch (Exception ex) { @@ -491,6 +494,8 @@ namespace Mk0.Software.Bildduplikate LoadDuplicates(line, api); lastStep = 2; } + //todo erst einkommentieren, wenn es die möglichkeit gibt, gelöschte wiederherzustellen + //buttonUndo.Visible = true; } catch (Exception ex) { @@ -596,6 +601,18 @@ namespace Mk0.Software.Bildduplikate { API api = new API(); api.ShowDialog(); + if (Properties.Settings.Default.ApiUrl != String.Empty) + { + buttonAPILoad.Visible = true; + if (Properties.Settings.Default.autoload) + { + ButtonAPILoad_Click(null, null); + } + } + else + { + buttonAPILoad.Visible = false; + } } /// @@ -705,9 +722,13 @@ namespace Mk0.Software.Bildduplikate } } - if (Properties.Settings.Default.autoload && Properties.Settings.Default.ApiUrl != String.Empty) + if (Properties.Settings.Default.ApiUrl != String.Empty) { - ButtonAPILoad_Click(null, null); + buttonAPILoad.Visible = true; + if (Properties.Settings.Default.autoload) + { + ButtonAPILoad_Click(null, null); + } } } @@ -725,7 +746,7 @@ namespace Mk0.Software.Bildduplikate { WebClient webClient = new WebClient(); webClient.Headers[HttpRequestHeader.ContentType] = "application/json"; - string json = webClient.UploadString(Properties.Settings.Default.ApiUrl + "?undoDuplicate", "{\"duplicateId\":" + Duplicates.ElementAt(line-1).ID + "}"); + string json = webClient.UploadString(Properties.Settings.Default.ApiUrl + "?undoDuplicate", "{\"duplicateId\":" + Duplicates.ElementAt(line - 1).ID + "}"); var resObj = new JavaScriptSerializer().Deserialize(json); if (resObj.response_code != "200") { MessageBox.Show(resObj.response_desc, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } else @@ -741,6 +762,7 @@ namespace Mk0.Software.Bildduplikate { MessageBox.Show("Fehler bei der Kommunikation mit der API:" + Environment.NewLine + ex.ToString(), "API Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } + buttonUndo.Visible = false; } else if (lastStep == 2) { diff --git a/Mk0.Software.Bildduplikate/Mk0.Software.Bildduplikate.csproj b/Mk0.Software.Bildduplikate/Mk0.Software.Bildduplikate.csproj index 730a05a..c8406e2 100644 --- a/Mk0.Software.Bildduplikate/Mk0.Software.Bildduplikate.csproj +++ b/Mk0.Software.Bildduplikate/Mk0.Software.Bildduplikate.csproj @@ -24,7 +24,7 @@ false true 0 - 1.9.0.0 + 1.10.0.0 false true true diff --git a/Mk0.Software.Bildduplikate/Properties/AssemblyInfo.cs b/Mk0.Software.Bildduplikate/Properties/AssemblyInfo.cs index 924a928..ecd1b49 100644 --- a/Mk0.Software.Bildduplikate/Properties/AssemblyInfo.cs +++ b/Mk0.Software.Bildduplikate/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // indem Sie "*" wie unten gezeigt eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.9.0.0")] -[assembly: AssemblyFileVersion("1.9.0.0")] +[assembly: AssemblyVersion("1.10.0.0")] +[assembly: AssemblyFileVersion("1.10.0.0")]