mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
refactoring
This commit is contained in:
parent
657bde5de7
commit
8138158d3a
3 changed files with 49 additions and 41 deletions
|
|
@ -23,7 +23,7 @@ using Flow.Launcher.Plugin;
|
||||||
using Flow.Launcher.Plugin.SharedCommands;
|
using Flow.Launcher.Plugin.SharedCommands;
|
||||||
using Flow.Launcher.Storage;
|
using Flow.Launcher.Storage;
|
||||||
using Microsoft.VisualStudio.Threading;
|
using Microsoft.VisualStudio.Threading;
|
||||||
using Svg;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.ViewModel
|
namespace Flow.Launcher.ViewModel
|
||||||
{
|
{
|
||||||
|
|
@ -932,45 +932,61 @@ namespace Flow.Launcher.ViewModel
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
private void RenameFile()
|
private void RenameFile()
|
||||||
{
|
{
|
||||||
|
// at runtime this is an instance the Flow.Launcher.Plugin.Explorer.Main
|
||||||
|
dynamic explorerPlugin = GetExplorerPlugin();
|
||||||
|
|
||||||
const string explorerPluginID = "572be03c74c642baae319fc283e561a8";
|
if (explorerPlugin == null && timesTriedToRenameFileWithExplorerDisabled > 3)
|
||||||
// check if explorer plugin is enabled
|
|
||||||
IEnumerable<PluginPair> explorerPluginMatches = App.API.GetAllPlugins().Where(
|
|
||||||
plugin => plugin.Metadata.ID == explorerPluginID);
|
|
||||||
|
|
||||||
if (!explorerPluginMatches.Any() || explorerPluginMatches == null)
|
|
||||||
{
|
|
||||||
|
|
||||||
timesTriedToRenameFileWithExplorerDisabled++;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if ((!explorerPluginMatches.Any() || explorerPluginMatches == null) && timesTriedToRenameFileWithExplorerDisabled > 3)
|
|
||||||
{
|
{
|
||||||
App.API.ShowMsg(App.API.GetTranslation("AreTryingToRenameFile"), App.API.GetTranslation("ExplorerNeedsEnabledForRenameFile"));
|
App.API.ShowMsg(App.API.GetTranslation("AreTryingToRenameFile"), App.API.GetTranslation("ExplorerNeedsEnabledForRenameFile"));
|
||||||
timesTriedToRenameFileWithExplorerDisabled = 0;
|
timesTriedToRenameFileWithExplorerDisabled = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (explorerPlugin == null)
|
||||||
|
{
|
||||||
|
timesTriedToRenameFileWithExplorerDisabled++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// at runtime the type of the will be <see cref="../../Plugins/Flow.Launcher.Plugin.Explorer/Main.cs" />
|
|
||||||
dynamic explorerPlugin = explorerPluginMatches.First(); // assuming there's only one match
|
|
||||||
string path = SelectedResults?.SelectedItem?.Result.SubTitle ?? "";
|
string path = SelectedResults?.SelectedItem?.Result.SubTitle ?? "";
|
||||||
string name = SelectedResults?.SelectedItem?.Result.Title ?? "";
|
string name = SelectedResults?.SelectedItem?.Result.Title ?? "";
|
||||||
if (path.Trim() == "" || name.Trim() == "") return;
|
if (string.IsNullOrWhiteSpace(path) || string.IsNullOrWhiteSpace(name)) return;
|
||||||
if (File.Exists(Path.Join(path, name)))
|
ShowRenamingDialog(explorerPlugin, path, name);
|
||||||
{
|
}
|
||||||
explorerPlugin.Plugin.RenameDialog(new FileInfo(Path.Join(path, name)), App.API);
|
}
|
||||||
return;
|
/// <summary>
|
||||||
}
|
/// Get an instance of the explorer plugin if it's loaded
|
||||||
if (Directory.Exists(path))
|
/// </summary>
|
||||||
{
|
/// <returns>Returns an instance of Flow.Launcher.Plugin.Explorer.Main, if it's not loaded this returns null.</returns>
|
||||||
explorerPlugin.Plugin.RenameDialog(new DirectoryInfo(path), App.API); // this feels kinda hacky
|
private IAsyncPlugin GetExplorerPlugin()
|
||||||
return;
|
{
|
||||||
}
|
const string explorerPluginID = "572be03c74c642baae319fc283e561a8";
|
||||||
|
IEnumerable<PluginPair> explorerPluginMatches = App.API.GetAllPlugins().Where(
|
||||||
|
plugin => plugin.Metadata.ID == explorerPluginID);
|
||||||
|
if (explorerPluginMatches.Any())
|
||||||
|
{
|
||||||
|
// assuming it's the first plugin as no 2 plugins can be loaded with the same ID
|
||||||
|
return explorerPluginMatches.First().Plugin;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Shows the dialog to rename a file system element.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="explorerPlugin">An instance of the Flow.Launcher.Plugin.Explorer.Main, which is invisible in the current namespace</param>
|
||||||
|
/// <param name="path">The path of the element</param>
|
||||||
|
/// <param name="name">The new name</param>
|
||||||
|
private void ShowRenamingDialog(dynamic explorerPlugin, string path, string name)
|
||||||
|
{
|
||||||
|
if (File.Exists(Path.Join(path, name)))
|
||||||
|
{
|
||||||
|
explorerPlugin.RenameDialog(new FileInfo(Path.Join(path, name)), App.API);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
explorerPlugin.RenameDialog(new DirectoryInfo(path), App.API);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.CodeDom;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
|
|
||||||
namespace Flow.Launcher.Plugin.Explorer.Helper
|
namespace Flow.Launcher.Plugin.Explorer.Helper
|
||||||
{
|
{
|
||||||
|
|
@ -18,7 +13,7 @@ namespace Flow.Launcher.Plugin.Explorer.Helper
|
||||||
{
|
{
|
||||||
throw new InvalidNameException();
|
throw new InvalidNameException();
|
||||||
}
|
}
|
||||||
FileInfo file = new FileInfo(info.FullName);
|
FileInfo file = (FileInfo)info;
|
||||||
DirectoryInfo directory;
|
DirectoryInfo directory;
|
||||||
|
|
||||||
directory = file.Directory ?? new DirectoryInfo(Path.GetPathRoot(file.FullName));
|
directory = file.Directory ?? new DirectoryInfo(Path.GetPathRoot(file.FullName));
|
||||||
|
|
@ -31,14 +26,11 @@ namespace Flow.Launcher.Plugin.Explorer.Helper
|
||||||
}
|
}
|
||||||
else if (info is DirectoryInfo)
|
else if (info is DirectoryInfo)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!api.IsValidDirectoryName(newName))
|
if (!api.IsValidDirectoryName(newName))
|
||||||
{
|
{
|
||||||
throw new InvalidNameException();
|
throw new InvalidNameException();
|
||||||
}
|
}
|
||||||
DirectoryInfo directory = new DirectoryInfo(info.FullName);
|
DirectoryInfo directory = (DirectoryInfo)info;
|
||||||
DirectoryInfo parent;
|
DirectoryInfo parent;
|
||||||
parent = directory.Parent ?? new DirectoryInfo(Path.GetPathRoot(directory.FullName));
|
parent = directory.Parent ?? new DirectoryInfo(Path.GetPathRoot(directory.FullName));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,7 @@
|
||||||
<system:String x:Key="YearsAgo">{0} years ago</system:String>
|
<system:String x:Key="YearsAgo">{0} years ago</system:String>
|
||||||
|
|
||||||
<!--Rename File Dialog-->
|
<!--Rename File Dialog-->
|
||||||
<system:String x:Key="plugin_explorer_new_file_name">New File name:</system:String>
|
<system:String x:Key="plugin_explorer_new_file_name">New name:</system:String>
|
||||||
<system:String x:Key="plugin_explorer_rename_file_done">Rename</system:String>
|
<system:String x:Key="plugin_explorer_rename_file_done">Rename</system:String>
|
||||||
<system:String x:Key="plugin_explorer_rename_a_file">Rename</system:String>
|
<system:String x:Key="plugin_explorer_rename_a_file">Rename</system:String>
|
||||||
<system:String x:Key="plugin_explorer_not_a_new_name">The given name: {0} was not new.</system:String>
|
<system:String x:Key="plugin_explorer_not_a_new_name">The given name: {0} was not new.</system:String>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue