From 3d4e1c952a4bb19205b4021351910e690ef5767c Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 8 Aug 2020 05:04:59 +0300 Subject: [PATCH] Refactor clipboard upload form codes --- ShareX.HelpersLib/Enums.cs | 8 --- ShareX/Forms/ClipboardUploadForm.Designer.cs | 4 +- ShareX/Forms/ClipboardUploadForm.cs | 59 +++++++++++++++---- ShareX/UploadManager.cs | 60 +++----------------- 4 files changed, 58 insertions(+), 73 deletions(-) diff --git a/ShareX.HelpersLib/Enums.cs b/ShareX.HelpersLib/Enums.cs index c19ed84b7..84e0e62c1 100644 --- a/ShareX.HelpersLib/Enums.cs +++ b/ShareX.HelpersLib/Enums.cs @@ -36,14 +36,6 @@ public enum EDataType URL } - public enum EClipboardContentType - { - Default, - Image, - Text, - Files - } - public enum PNGBitDepth // Localized { Default, diff --git a/ShareX/Forms/ClipboardUploadForm.Designer.cs b/ShareX/Forms/ClipboardUploadForm.Designer.cs index 3cb5e075d..cb8434688 100644 --- a/ShareX/Forms/ClipboardUploadForm.Designer.cs +++ b/ShareX/Forms/ClipboardUploadForm.Designer.cs @@ -51,6 +51,7 @@ private void InitializeComponent() this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.Name = "btnCancel"; this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // // txtClipboard // @@ -89,6 +90,7 @@ private void InitializeComponent() this.btnUpload.DialogResult = System.Windows.Forms.DialogResult.OK; this.btnUpload.Name = "btnUpload"; this.btnUpload.UseVisualStyleBackColor = true; + this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click); // // ClipboardUploadForm // @@ -106,7 +108,7 @@ private void InitializeComponent() this.Controls.Add(this.lbClipboard); this.Name = "ClipboardUploadForm"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; - this.Load += new System.EventHandler(this.ClipboardContentViewer_Load); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.ClipboardUploadForm_FormClosed); this.Shown += new System.EventHandler(this.ClipboardContentViewer_Shown); this.ResumeLayout(false); this.PerformLayout(); diff --git a/ShareX/Forms/ClipboardUploadForm.cs b/ShareX/Forms/ClipboardUploadForm.cs index 834deadec..a1455ba45 100644 --- a/ShareX/Forms/ClipboardUploadForm.cs +++ b/ShareX/Forms/ClipboardUploadForm.cs @@ -35,13 +35,16 @@ public partial class ClipboardUploadForm : Form { public bool IsClipboardContentValid { get; private set; } public bool DontShowThisWindow { get; private set; } - public EClipboardContentType ClipboardContentType { get; private set; } public object ClipboardContent { get; private set; } + public bool KeepClipboardContent { get; private set; } - public ClipboardUploadForm(bool showCheckBox = false) + private TaskSettings taskSettings; + + public ClipboardUploadForm(TaskSettings taskSettings, bool showCheckBox = false) { InitializeComponent(); ShareXResources.ApplyTheme(this); + this.taskSettings = taskSettings; if (ShareXResources.UseCustomTheme) { @@ -49,14 +52,12 @@ public ClipboardUploadForm(bool showCheckBox = false) } cbDontShowThisWindow.Visible = showCheckBox; + + IsClipboardContentValid = CheckClipboardContent(); + btnUpload.Enabled = IsClipboardContentValid; } - private void ClipboardContentViewer_Load(object sender, EventArgs e) - { - IsClipboardContentValid = CheckClipboardContents(); - } - - private bool CheckClipboardContents() + private bool CheckClipboardContent() { pbClipboard.Visible = txtClipboard.Visible = lbClipboard.Visible = false; @@ -66,7 +67,6 @@ private bool CheckClipboardContents() { if (bmp != null) { - ClipboardContentType = EClipboardContentType.Image; ClipboardContent = bmp.Clone(); pbClipboard.LoadImage(bmp); pbClipboard.Visible = true; @@ -81,7 +81,6 @@ private bool CheckClipboardContents() if (!string.IsNullOrEmpty(text)) { - ClipboardContentType = EClipboardContentType.Text; ClipboardContent = text; txtClipboard.Text = text; txtClipboard.Visible = true; @@ -95,7 +94,6 @@ private bool CheckClipboardContents() if (files != null && files.Length > 0) { - ClipboardContentType = EClipboardContentType.Files; ClipboardContent = files; lbClipboard.Items.AddRange(files); lbClipboard.Visible = true; @@ -108,14 +106,53 @@ private bool CheckClipboardContents() return false; } + private void ClipboardUpload() + { + if (IsClipboardContentValid) + { + switch (ClipboardContent) + { + case Bitmap bmp: + KeepClipboardContent = true; + UploadManager.ProcessImageUpload(bmp, taskSettings); + break; + case string text: + UploadManager.ProcessTextUpload(text, taskSettings); + break; + case string[] files: + UploadManager.ProcessFilesUpload(files, taskSettings); + break; + } + } + } + private void ClipboardContentViewer_Shown(object sender, EventArgs e) { this.ForceActivate(); } + private void ClipboardUploadForm_FormClosed(object sender, FormClosedEventArgs e) + { + if (!KeepClipboardContent && ClipboardContent is Bitmap bmp) + { + bmp.Dispose(); + } + } + private void cbDontShowThisWindow_CheckedChanged(object sender, EventArgs e) { DontShowThisWindow = cbDontShowThisWindow.Checked; } + + private void btnUpload_Click(object sender, EventArgs e) + { + ClipboardUpload(); + Close(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + Close(); + } } } \ No newline at end of file diff --git a/ShareX/UploadManager.cs b/ShareX/UploadManager.cs index 06736b9f8..bf0d7aa2c 100644 --- a/ShareX/UploadManager.cs +++ b/ShareX/UploadManager.cs @@ -142,7 +142,7 @@ public static void UploadFolder(TaskSettings taskSettings = null) } } - private static void ProcessImageUpload(Bitmap bmp, TaskSettings taskSettings) + public static void ProcessImageUpload(Bitmap bmp, TaskSettings taskSettings) { if (bmp != null) { @@ -155,7 +155,7 @@ private static void ProcessImageUpload(Bitmap bmp, TaskSettings taskSettings) } } - private static void ProcessTextUpload(string text, TaskSettings taskSettings) + public static void ProcessTextUpload(string text, TaskSettings taskSettings) { if (!string.IsNullOrEmpty(text)) { @@ -193,7 +193,7 @@ private static void ProcessTextUpload(string text, TaskSettings taskSettings) } } - private static void ProcessFilesUpload(string[] files, TaskSettings taskSettings) + public static void ProcessFilesUpload(string[] files, TaskSettings taskSettings) { if (files != null && files.Length > 0) { @@ -225,58 +225,13 @@ public static void ClipboardUpload(TaskSettings taskSettings = null) } } - private static void ClipboardUploadCached(ClipboardUploadForm form, TaskSettings taskSettings = null) - { - if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings(); - - if (form.ClipboardContentType == EClipboardContentType.Image) - { - Bitmap bmp = (Bitmap)form.ClipboardContent; - - ProcessImageUpload(bmp, taskSettings); - } - else if (form.ClipboardContentType == EClipboardContentType.Text) - { - string text = (string)form.ClipboardContent; - - ProcessTextUpload(text, taskSettings); - } - else if (form.ClipboardContentType == EClipboardContentType.Files) - { - string[] files = (string[])form.ClipboardContent; - - ProcessFilesUpload(files, taskSettings); - } - } - - private static void ProcessClipboardUploadDialog(ClipboardUploadForm form, TaskSettings taskSettings = null) - { - if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings(); - - if (form.ShowDialog() == DialogResult.OK && form.IsClipboardContentValid) - { - if (form.ClipboardContentType != EClipboardContentType.Default) - { - ClipboardUploadCached(form, taskSettings); - } - else - { - ClipboardUpload(taskSettings); - } - } - else if (form.ClipboardContentType == EClipboardContentType.Image) - { - ((Bitmap)form.ClipboardContent).Dispose(); - } - } - public static void ClipboardUploadWithContentViewer(TaskSettings taskSettings = null) { if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings(); - using (ClipboardUploadForm clipboardUploadForm = new ClipboardUploadForm()) + using (ClipboardUploadForm clipboardUploadForm = new ClipboardUploadForm(taskSettings)) { - ProcessClipboardUploadDialog(clipboardUploadForm, taskSettings); + clipboardUploadForm.ShowDialog(); } } @@ -286,10 +241,9 @@ public static void ClipboardUploadMainWindow(TaskSettings taskSettings = null) if (Program.Settings.ShowClipboardContentViewer) { - using (ClipboardUploadForm clipboardUploadForm = new ClipboardUploadForm(true)) + using (ClipboardUploadForm clipboardUploadForm = new ClipboardUploadForm(taskSettings, true)) { - ProcessClipboardUploadDialog(clipboardUploadForm, taskSettings); - + clipboardUploadForm.ShowDialog(); Program.Settings.ShowClipboardContentViewer = !clipboardUploadForm.DontShowThisWindow; } }