Fixes unexpected clipboard content viewer behavior (as in #1769)

This commit is contained in:
CookieMichal 2018-10-30 01:37:58 +01:00
parent 505a40302a
commit f00eef28c4
3 changed files with 100 additions and 2 deletions

View file

@ -36,6 +36,14 @@ public enum EDataType
URL
}
public enum EClipboardContentType
{
Default,
Image,
Text,
Files
}
public enum PNGBitDepth // Localized
{
Default,

View file

@ -35,6 +35,8 @@ public partial class ClipboardContentViewer : 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 ClipboardContentViewer(bool showCheckBox = false)
{
@ -59,6 +61,8 @@ private bool CheckClipboardContents()
{
if (img != null)
{
ClipboardContentType = EClipboardContentType.Image;
ClipboardContent = img.Clone();
pbClipboard.LoadImage(img);
pbClipboard.Visible = true;
lblQuestion.Text = string.Format(Resources.ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__Image__Size___0_x_1__, img.Width, img.Height);
@ -72,6 +76,8 @@ private bool CheckClipboardContents()
if (!string.IsNullOrEmpty(text))
{
ClipboardContentType = EClipboardContentType.Text;
ClipboardContent = text;
txtClipboard.Text = text;
txtClipboard.Visible = true;
lblQuestion.Text = string.Format(Resources.ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__Text__Length___0__, text.Length);
@ -84,6 +90,8 @@ private bool CheckClipboardContents()
if (files.Length > 0)
{
ClipboardContentType = EClipboardContentType.Files;
ClipboardContent = files;
lbClipboard.Items.AddRange(files);
lbClipboard.Visible = true;
lblQuestion.Text = string.Format(Resources.ClipboardContentViewer_ClipboardContentViewer_Load_Clipboard_content__File__Count___0__, files.Length);

View file

@ -211,6 +211,74 @@ public static void ClipboardUpload(TaskSettings taskSettings = null)
}
}
public static void ClipboardUploadCached(ClipboardContentViewer ccv, TaskSettings taskSettings = null)
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
if (ccv.ClipboardContentType == EClipboardContentType.Image)
{
Image img = (Image)ccv.ClipboardContent;
if (img != null)
{
if (!taskSettings.AdvancedSettings.ProcessImagesDuringClipboardUpload)
{
taskSettings.AfterCaptureJob = AfterCaptureTasks.UploadImageToHost;
}
RunImageTask(img, taskSettings);
}
}
else if (ccv.ClipboardContentType == EClipboardContentType.Text)
{
string text = (string)ccv.ClipboardContent;
if (!string.IsNullOrEmpty(text))
{
string url = text.Trim();
if (URLHelpers.IsValidURL(url))
{
if (taskSettings.UploadSettings.ClipboardUploadURLContents)
{
DownloadAndUploadFile(url, taskSettings);
return;
}
if (taskSettings.UploadSettings.ClipboardUploadShortenURL)
{
ShortenURL(url, taskSettings);
return;
}
if (taskSettings.UploadSettings.ClipboardUploadShareURL)
{
ShareURL(url, taskSettings);
return;
}
}
if (taskSettings.UploadSettings.ClipboardUploadAutoIndexFolder && text.Length <= 260 && Directory.Exists(text))
{
IndexFolder(text, taskSettings);
}
else
{
UploadText(text, taskSettings, true);
}
}
}
else if (ccv.ClipboardContentType == EClipboardContentType.Files)
{
string[] files = (string[])ccv.ClipboardContent;
if (files.Length > 0)
{
UploadFile(files, taskSettings);
}
}
}
public static void ClipboardUploadWithContentViewer(TaskSettings taskSettings = null)
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
@ -219,7 +287,14 @@ public static void ClipboardUploadWithContentViewer(TaskSettings taskSettings =
{
if (ccv.ShowDialog() == DialogResult.OK && ccv.IsClipboardContentValid)
{
ClipboardUpload(taskSettings);
if (ccv.ClipboardContentType != EClipboardContentType.Default)
{
ClipboardUploadCached(ccv, taskSettings);
}
else
{
ClipboardUpload(taskSettings);
}
}
}
}
@ -234,7 +309,14 @@ public static void ClipboardUploadMainWindow(TaskSettings taskSettings = null)
{
if (ccv.ShowDialog() == DialogResult.OK && ccv.IsClipboardContentValid)
{
ClipboardUpload(taskSettings);
if (ccv.ClipboardContentType != EClipboardContentType.Default)
{
ClipboardUploadCached(ccv, taskSettings);
}
else
{
ClipboardUpload(taskSettings);
}
}
Program.Settings.ShowClipboardContentViewer = !ccv.DontShowThisWindow;