Skip to content

Commit 4d10089

Browse files
Refactor clear log folder logic
Clear logs of all versions Use binding for button text Move open log dir to vm
1 parent c53fdc1 commit 4d10089

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

Flow.Launcher/SettingWindow.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3041,7 +3041,7 @@
30413041
Name="ClearLogFolderBtn"
30423042
Margin="0,0,12,0"
30433043
Click="ClearLogFolder"
3044-
Content="{Binding CheckLogFolder, UpdateSourceTrigger=PropertyChanged}" />
3044+
Content="{Binding CheckLogFolder, Mode=OneWay}" />
30453045
<Button
30463046
Margin="0,0,8,0"
30473047
Content="&#xec7a;"

Flow.Launcher/SettingWindow.xaml.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ private void OpenWelcomeWindow(object sender, RoutedEventArgs e)
250250
}
251251
private void OpenLogFolder(object sender, RoutedEventArgs e)
252252
{
253-
PluginManager.API.OpenDirectory(Path.Combine(DataLocation.DataDirectory(), Constant.Logs, Constant.Version));
253+
viewModel.OpenLogFolder();
254254
}
255255
private void ClearLogFolder(object sender, RoutedEventArgs e)
256256
{
@@ -262,8 +262,6 @@ private void ClearLogFolder(object sender, RoutedEventArgs e)
262262
if (confirmResult == MessageBoxResult.Yes)
263263
{
264264
viewModel.ClearLogFolder();
265-
266-
ClearLogFolderBtn.Content = viewModel.CheckLogFolder;
267265
}
268266
}
269267

Flow.Launcher/ViewModel/SettingWindowViewModel.cs

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -863,31 +863,48 @@ public string CheckLogFolder
863863
{
864864
get
865865
{
866-
var dirInfo = new DirectoryInfo(Path.Combine(DataLocation.DataDirectory(), Constant.Logs, Constant.Version));
867-
long size = dirInfo.EnumerateFiles("*", SearchOption.AllDirectories).Sum(file => file.Length);
868-
869-
return _translater.GetTranslation("clearlogfolder") + " (" + FormatBytes(size) + ")";
866+
var logFiles = GetLogFiles();
867+
long size = logFiles.Sum(file => file.Length);
868+
return string.Format("{0} ({1})", _translater.GetTranslation("clearlogfolder"), BytesToReadableString(size));
870869
}
871870
}
872871

872+
private static DirectoryInfo GetLogDir(string version = "")
873+
{
874+
return new DirectoryInfo(Path.Combine(DataLocation.DataDirectory(), Constant.Logs, version));
875+
}
876+
877+
private static List<FileInfo> GetLogFiles(string version = "")
878+
{
879+
return GetLogDir(version).EnumerateFiles("*", SearchOption.AllDirectories).ToList();
880+
}
881+
873882
internal void ClearLogFolder()
874883
{
875-
var directory = new DirectoryInfo(
876-
Path.Combine(
877-
DataLocation.DataDirectory(),
878-
Constant.Logs,
879-
Constant.Version));
884+
var logDirectory = GetLogDir();
885+
var logFiles = GetLogFiles();
880886

881-
directory.EnumerateFiles()
887+
logFiles.ForEach(f => f.Delete());
888+
889+
logDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
890+
.Where(dir => !Constant.Version.Equals(dir.Name))
882891
.ToList()
883-
.ForEach(x => x.Delete());
892+
.ForEach(dir => dir.Delete());
893+
894+
OnPropertyChanged(nameof(CheckLogFolder));
895+
}
896+
897+
internal void OpenLogFolder()
898+
{
899+
App.API.OpenDirectory(GetLogDir(Constant.Version).FullName);
884900
}
885-
internal string FormatBytes(long bytes)
901+
902+
internal static string BytesToReadableString(long bytes)
886903
{
887904
const int scale = 1024;
888905
string[] orders = new string[]
889906
{
890-
"GB", "MB", "KB", "Bytes"
907+
"GB", "MB", "KB", "B"
891908
};
892909
long max = (long)Math.Pow(scale, orders.Length - 1);
893910

@@ -898,7 +915,7 @@ internal string FormatBytes(long bytes)
898915

899916
max /= scale;
900917
}
901-
return "0 Bytes";
918+
return "0 B";
902919
}
903920

904921
#endregion

0 commit comments

Comments
 (0)