Skip to content

Commit f069ee9

Browse files
committed
Show more info in file & folder tooltip
1 parent 1655139 commit f069ee9

File tree

2 files changed

+72
-7
lines changed

2 files changed

+72
-7
lines changed

Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ internal static Result CreateFolderResult(string title, string subtitle, string
163163
},
164164
Score = score,
165165
TitleToolTip = Main.Context.API.GetTranslation("plugin_explorer_plugin_ToolTipOpenDirectory"),
166-
SubTitleToolTip = path,
166+
SubTitleToolTip = Settings.DisplayMoreInformationInToolTip ? GetMoreInfoToolTip(path, ResultType.Folder) : path,
167167
ContextData = new SearchResult { Type = ResultType.Folder, FullPath = path, WindowsIndexed = windowsIndexed }
168168
};
169169
}
@@ -269,7 +269,6 @@ internal static Result CreateFileResult(string filePath, Query query, int score
269269
bool isMedia = IsMedia(Path.GetExtension(filePath));
270270
var title = Path.GetFileName(filePath);
271271

272-
273272
/* Preview Detail */
274273

275274
var result = new Result
@@ -318,7 +317,7 @@ internal static Result CreateFileResult(string filePath, Query query, int score
318317
return true;
319318
},
320319
TitleToolTip = Main.Context.API.GetTranslation("plugin_explorer_plugin_ToolTipOpenContainingFolder"),
321-
SubTitleToolTip = filePath,
320+
SubTitleToolTip = Settings.DisplayMoreInformationInToolTip ? GetMoreInfoToolTip(filePath, ResultType.File) : filePath,
322321
ContextData = new SearchResult { Type = ResultType.File, FullPath = filePath, WindowsIndexed = windowsIndexed }
323322
};
324323
return result;
@@ -349,6 +348,28 @@ private static void IncrementEverythingRunCounterIfNeeded(string fileOrFolder)
349348
_ = Task.Run(() => EverythingApi.IncrementRunCounterAsync(fileOrFolder));
350349
}
351350

351+
private static string GetMoreInfoToolTip(string filePath, ResultType type)
352+
{
353+
switch (type)
354+
{
355+
case ResultType.Folder:
356+
var folderSize = PreviewPanel.GetFolderSize(filePath);
357+
if (string.IsNullOrEmpty(folderSize)) folderSize = Context.API.GetTranslation("plugin_explorer_plugin_tooltip_more_info_unknown");
358+
var folderCreatedAt = PreviewPanel.GetFolderCreatedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
359+
var folderModifiedAt = PreviewPanel.GetFolderLastModifiedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
360+
return string.Format(Context.API.GetTranslation("plugin_explorer_plugin_tooltip_more_info"),
361+
filePath, folderSize, folderCreatedAt, folderModifiedAt, Environment.NewLine);
362+
case ResultType.File:
363+
var fileSize = PreviewPanel.GetFileSize(filePath);
364+
var fileCreatedAt = PreviewPanel.GetFileCreatedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
365+
var fileModifiedAt = PreviewPanel.GetFileLastModifiedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
366+
return string.Format(Context.API.GetTranslation("plugin_explorer_plugin_tooltip_more_info"),
367+
filePath, fileSize, fileCreatedAt, fileModifiedAt, Environment.NewLine);
368+
default:
369+
return filePath;
370+
}
371+
}
372+
352373
private static readonly string[] MediaExtensions = { ".jpg", ".png", ".avi", ".mkv", ".bmp", ".gif", ".wmv", ".mp3", ".flac", ".mp4" };
353374
}
354375

Plugins/Flow.Launcher.Plugin.Explorer/Views/PreviewPanel.xaml.cs

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ public PreviewPanel(Settings settings, string filePath)
6565

6666
if (Settings.ShowCreatedDateInPreviewPanel)
6767
{
68-
CreatedAt = GetCreatedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
68+
CreatedAt = GetFileCreatedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
6969
}
7070

7171
if (Settings.ShowModifiedDateInPreviewPanel)
7272
{
73-
LastModifiedAt = GetLastModifiedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
73+
LastModifiedAt = GetFileLastModifiedAt(filePath, Settings.PreviewPanelDateFormat, Settings.PreviewPanelTimeFormat, Settings.ShowFileAgeInPreviewPanel);
7474
}
7575

7676
_ = LoadImageAsync();
@@ -87,7 +87,7 @@ public static string GetFileSize(string filePath)
8787
return ResultManager.ToReadableSize(fileInfo.Length, 2);
8888
}
8989

90-
public static string GetCreatedAt(string filePath, string previewPanelDateFormat, string previewPanelTimeFormat, bool showFileAgeInPreviewPanel)
90+
public static string GetFileCreatedAt(string filePath, string previewPanelDateFormat, string previewPanelTimeFormat, bool showFileAgeInPreviewPanel)
9191
{
9292
var createdDate = File.GetCreationTime(filePath);
9393
var formattedDate = createdDate.ToString(
@@ -100,7 +100,7 @@ public static string GetCreatedAt(string filePath, string previewPanelDateFormat
100100
return result;
101101
}
102102

103-
public static string GetLastModifiedAt(string filePath, string previewPanelDateFormat, string previewPanelTimeFormat, bool showFileAgeInPreviewPanel)
103+
public static string GetFileLastModifiedAt(string filePath, string previewPanelDateFormat, string previewPanelTimeFormat, bool showFileAgeInPreviewPanel)
104104
{
105105
var lastModifiedDate = File.GetLastWriteTime(filePath);
106106
var formattedDate = lastModifiedDate.ToString(
@@ -113,6 +113,50 @@ public static string GetLastModifiedAt(string filePath, string previewPanelDateF
113113
return result;
114114
}
115115

116+
public static string GetFolderSize(string folderPath)
117+
{
118+
var directoryInfo = new DirectoryInfo(folderPath);
119+
long size = 0;
120+
try
121+
{
122+
foreach (var file in directoryInfo.GetFiles("*", SearchOption.AllDirectories))
123+
{
124+
size += file.Length;
125+
}
126+
}
127+
catch (Exception)
128+
{
129+
return string.Empty;
130+
}
131+
return ResultManager.ToReadableSize(size, 2);
132+
}
133+
134+
public static string GetFolderCreatedAt(string folderPath, string previewPanelDateFormat, string previewPanelTimeFormat, bool showFileAgeInPreviewPanel)
135+
{
136+
var createdDate = Directory.GetCreationTime(folderPath);
137+
var formattedDate = createdDate.ToString(
138+
$"{previewPanelDateFormat} {previewPanelTimeFormat}",
139+
CultureInfo.CurrentCulture
140+
);
141+
142+
var result = formattedDate;
143+
if (showFileAgeInPreviewPanel) result = $"{GetFileAge(createdDate)} - {formattedDate}";
144+
return result;
145+
}
146+
147+
public static string GetFolderLastModifiedAt(string folderPath, string previewPanelDateFormat, string previewPanelTimeFormat, bool showFileAgeInPreviewPanel)
148+
{
149+
var lastModifiedDate = Directory.GetLastWriteTime(folderPath);
150+
var formattedDate = lastModifiedDate.ToString(
151+
$"{previewPanelDateFormat} {previewPanelTimeFormat}",
152+
CultureInfo.CurrentCulture
153+
);
154+
155+
var result = formattedDate;
156+
if (showFileAgeInPreviewPanel) result = $"{GetFileAge(lastModifiedDate)} - {formattedDate}";
157+
return result;
158+
}
159+
116160
private static string GetFileAge(DateTime fileDateTime)
117161
{
118162
var now = DateTime.Now;

0 commit comments

Comments
 (0)