do not allow to change storage folder as long as monitoring is active
This commit is contained in:
@@ -783,7 +783,6 @@ public class SettingsUi : WindowMediatorSubscriberBase
|
|||||||
+ UiSharedService.TooltipSeparator + "Hold CTRL to enable this button");
|
+ UiSharedService.TooltipSeparator + "Hold CTRL to enable this button");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
_uiShared.DrawCacheDirectorySetting();
|
_uiShared.DrawCacheDirectorySetting();
|
||||||
ImGui.TextUnformatted($"Currently utilized local storage: {UiSharedService.ByteToString(_uiShared.FileCacheSize)}");
|
ImGui.TextUnformatted($"Currently utilized local storage: {UiSharedService.ByteToString(_uiShared.FileCacheSize)}");
|
||||||
bool isLinux = Util.IsWine();
|
bool isLinux = Util.IsWine();
|
||||||
|
|||||||
@@ -594,36 +594,39 @@ public partial class UiSharedService : DisposableMediatorSubscriberBase
|
|||||||
ImGui.InputText("Storage Folder##cache", ref cacheDirectory, 255, ImGuiInputTextFlags.ReadOnly);
|
ImGui.InputText("Storage Folder##cache", ref cacheDirectory, 255, ImGuiInputTextFlags.ReadOnly);
|
||||||
|
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.PushFont(UiBuilder.IconFont);
|
using (ImRaii.Disabled(_cacheMonitor.MareWatcher != null))
|
||||||
string folderIcon = FontAwesomeIcon.Folder.ToIconString();
|
|
||||||
if (ImGui.Button(folderIcon + "##chooseCacheFolder"))
|
|
||||||
{
|
{
|
||||||
FileDialogManager.OpenFolderDialog("Pick Loporrit Storage Folder", (success, path) =>
|
if (NormalizedIconButton(FontAwesomeIcon.Folder))
|
||||||
{
|
{
|
||||||
if (!success) return;
|
FileDialogManager.OpenFolderDialog("Pick Loporrit Storage Folder", (success, path) =>
|
||||||
|
|
||||||
_isOneDrive = path.Contains("onedrive", StringComparison.OrdinalIgnoreCase);
|
|
||||||
_isPenumbraDirectory = string.Equals(path.ToLowerInvariant(), _ipcManager.PenumbraModDirectory?.ToLowerInvariant(), StringComparison.Ordinal);
|
|
||||||
_isDirectoryWritable = IsDirectoryWritable(path);
|
|
||||||
_cacheDirectoryHasOtherFilesThanCache = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Any(f => Path.GetFileNameWithoutExtension(f).Length != 40);
|
|
||||||
_cacheDirectoryIsValidPath = PathRegex().IsMatch(path);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(path)
|
|
||||||
&& Directory.Exists(path)
|
|
||||||
&& _isDirectoryWritable
|
|
||||||
&& !_isPenumbraDirectory
|
|
||||||
&& !_isOneDrive
|
|
||||||
&& !_cacheDirectoryHasOtherFilesThanCache
|
|
||||||
&& _cacheDirectoryIsValidPath)
|
|
||||||
{
|
{
|
||||||
_configService.Current.CacheFolder = path;
|
if (!success) return;
|
||||||
_configService.Save();
|
|
||||||
_cacheMonitor.StartMareWatcher(path);
|
_isOneDrive = path.Contains("onedrive", StringComparison.OrdinalIgnoreCase);
|
||||||
_cacheMonitor.InvokeScan();
|
_isPenumbraDirectory = string.Equals(path.ToLowerInvariant(), _ipcManager.PenumbraModDirectory?.ToLowerInvariant(), StringComparison.Ordinal);
|
||||||
}
|
_isDirectoryWritable = IsDirectoryWritable(path);
|
||||||
});
|
_cacheDirectoryHasOtherFilesThanCache = Directory.GetFiles(path, "*", SearchOption.AllDirectories).Any(f => Path.GetFileNameWithoutExtension(f).Length != 40);
|
||||||
|
_cacheDirectoryIsValidPath = PathRegex().IsMatch(path);
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(path)
|
||||||
|
&& Directory.Exists(path)
|
||||||
|
&& _isDirectoryWritable
|
||||||
|
&& !_isPenumbraDirectory
|
||||||
|
&& !_cacheDirectoryHasOtherFilesThanCache
|
||||||
|
&& _cacheDirectoryIsValidPath)
|
||||||
|
{
|
||||||
|
_configService.Current.CacheFolder = path;
|
||||||
|
_configService.Save();
|
||||||
|
_cacheMonitor.StartMareWatcher(path);
|
||||||
|
_cacheMonitor.InvokeScan();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_cacheMonitor.MareWatcher != null)
|
||||||
|
{
|
||||||
|
AttachToolTip("Stop the Monitoring before changing the Storage folder. As long as monitoring is active, you cannot change the Storage folder location.");
|
||||||
}
|
}
|
||||||
ImGui.PopFont();
|
|
||||||
|
|
||||||
if (_isPenumbraDirectory)
|
if (_isPenumbraDirectory)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user