mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Make CopyToClipboard generic
This commit is contained in:
parent
1ff328be03
commit
2b862f702a
7 changed files with 39 additions and 52 deletions
|
|
@ -38,13 +38,15 @@ namespace Flow.Launcher.Plugin
|
|||
/// <exception cref="FileNotFoundException">Thrown when unable to find the file specified in the command </exception>
|
||||
/// <exception cref="Win32Exception">Thrown when error occurs during the execution of the command </exception>
|
||||
void ShellRun(string cmd, string filename = "cmd.exe");
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// If the passed in text is the path to a file or directory, the actual file/directory will
|
||||
/// be copied to clipboard. Otherwise the text itself will be copied to clipboard.
|
||||
/// Copies the passed in text and shows a message indicating whether the operation was completed successfully.
|
||||
/// When directCopy is set to true and passed in text is the path to a file or directory,
|
||||
/// the actual file/directory will be copied to clipboard. Otherwise the text itself will still be copied to clipboard.
|
||||
/// </summary>
|
||||
/// <param name="text">Text to save on clipboard</param>
|
||||
public void CopyToClipboard(string text);
|
||||
/// <param name="directCopy">When true it will directly copy the file/folder from the path specified in text</param>
|
||||
public void CopyToClipboard(string text, bool directCopy = false);
|
||||
|
||||
/// <summary>
|
||||
/// Save everything, all of Flow Launcher and plugins' data and settings
|
||||
|
|
|
|||
|
|
@ -63,8 +63,7 @@ namespace Flow.Launcher
|
|||
if (QueryTextBox.SelectionLength == 0 && result != null)
|
||||
{
|
||||
string copyText = result.CopyText;
|
||||
_viewModel.ResultCopy(copyText);
|
||||
|
||||
App.API.CopyToClipboard(copyText, directCopy: true);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(QueryTextBox.Text))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ using Flow.Launcher.Infrastructure.Logger;
|
|||
using Flow.Launcher.Infrastructure.Storage;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Diagnostics;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace Flow.Launcher
|
||||
{
|
||||
|
|
@ -116,10 +117,35 @@ namespace Flow.Launcher
|
|||
ShellCommand.Execute(startInfo);
|
||||
}
|
||||
|
||||
public void CopyToClipboard(string text)
|
||||
public void CopyToClipboard(string stringToCopy, bool directCopy = false)
|
||||
{
|
||||
_mainVM.ResultCopy(text);
|
||||
if (string.IsNullOrEmpty(stringToCopy))
|
||||
return;
|
||||
|
||||
var isFile = File.Exists(stringToCopy);
|
||||
if (directCopy && (isFile || Directory.Exists(stringToCopy)))
|
||||
{
|
||||
var paths = new StringCollection
|
||||
{
|
||||
stringToCopy
|
||||
};
|
||||
|
||||
Clipboard.SetFileDropList(paths);
|
||||
|
||||
ShowMsg(
|
||||
$"{GetTranslation("copy")} {(isFile ? GetTranslation("fileTitle") : GetTranslation("folderTitle"))}",
|
||||
GetTranslation("completedSuccessfully"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Clipboard.SetDataObject(stringToCopy);
|
||||
|
||||
ShowMsg(
|
||||
$"{GetTranslation("copy")} {GetTranslation("textTitle")}",
|
||||
GetTranslation("completedSuccessfully"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void StartLoadingBar() => _mainVM.ProgressBarVisibility = Visibility.Visible;
|
||||
|
||||
|
|
|
|||
|
|
@ -1103,43 +1103,6 @@ namespace Flow.Launcher.ViewModel
|
|||
Results.AddResults(resultsForUpdates, token);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copies the specified file or folder path to the clipboard, or the specified text if it is not a valid file or folder path.
|
||||
/// Shows a message indicating whether the operation was completed successfully.
|
||||
/// </summary>
|
||||
/// <param name="stringToCopy">The file or folder path, or text to copy to the clipboard.</param>
|
||||
/// <returns>Nothing.</returns>
|
||||
public void ResultCopy(string stringToCopy)
|
||||
{
|
||||
if (string.IsNullOrEmpty(stringToCopy))
|
||||
return;
|
||||
|
||||
var isFile = File.Exists(stringToCopy);
|
||||
var isFolder = isFile ? false : Directory.Exists(stringToCopy); // No need to eval directory exists if determined that file exists
|
||||
if (isFile || isFolder)
|
||||
{
|
||||
var paths = new StringCollection
|
||||
{
|
||||
stringToCopy
|
||||
};
|
||||
|
||||
Clipboard.SetFileDropList(paths);
|
||||
|
||||
App.API.ShowMsg(
|
||||
$"{App.API.GetTranslation("copy")} {(isFile ? App.API.GetTranslation("fileTitle") : App.API.GetTranslation("folderTitle"))}",
|
||||
App.API.GetTranslation("completedSuccessfully"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Clipboard.SetDataObject(stringToCopy);
|
||||
|
||||
App.API.ShowMsg(
|
||||
$"{App.API.GetTranslation("copy")} {App.API.GetTranslation("textTitle")}",
|
||||
App.API.GetTranslation("completedSuccessfully"));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ namespace Flow.Launcher.Plugin.Explorer
|
|||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetDataObject(record.FullPath);
|
||||
Context.API.CopyToClipboard(record.FullPath);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
@ -147,10 +147,7 @@ namespace Flow.Launcher.Plugin.Explorer
|
|||
{
|
||||
try
|
||||
{
|
||||
Clipboard.SetFileDropList(new System.Collections.Specialized.StringCollection
|
||||
{
|
||||
record.FullPath
|
||||
});
|
||||
Context.API.CopyToClipboard(record.FullPath, directCopy: true);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ namespace Flow.Launcher.Plugin.Explorer
|
|||
? action
|
||||
: _ =>
|
||||
{
|
||||
Clipboard.SetDataObject(e.ToString());
|
||||
Context.API.CopyToClipboard(e.ToString());
|
||||
return new ValueTask<bool>(true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -406,7 +406,7 @@ namespace Flow.Launcher.Plugin.Shell
|
|||
Title = context.API.GetTranslation("flowlauncher_plugin_cmd_copy"),
|
||||
Action = c =>
|
||||
{
|
||||
Clipboard.SetDataObject(selectedResult.Title);
|
||||
context.API.CopyToClipboard(selectedResult.Title);
|
||||
return true;
|
||||
},
|
||||
IcoPath = "Images/copy.png",
|
||||
|
|
|
|||
Loading…
Reference in a new issue