mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Merge branch 'dev' into administrator_mode
This commit is contained in:
commit
f02a6c5118
17 changed files with 137 additions and 57 deletions
15
.github/actions/spelling/expect.txt
vendored
15
.github/actions/spelling/expect.txt
vendored
|
|
@ -1,3 +1,5 @@
|
||||||
|
# This file should contain names of products, companies, or individuals that aren't in a standard dictionary (e.g., GitHub, Keptn, VSCode).
|
||||||
|
|
||||||
crowdin
|
crowdin
|
||||||
DWM
|
DWM
|
||||||
workflows
|
workflows
|
||||||
|
|
@ -34,7 +36,6 @@ mscorlib
|
||||||
pythonw
|
pythonw
|
||||||
dotnet
|
dotnet
|
||||||
winget
|
winget
|
||||||
jjw24
|
|
||||||
wolframalpha
|
wolframalpha
|
||||||
gmail
|
gmail
|
||||||
duckduckgo
|
duckduckgo
|
||||||
|
|
@ -49,7 +50,6 @@ srchadmin
|
||||||
EWX
|
EWX
|
||||||
dlgtext
|
dlgtext
|
||||||
CMD
|
CMD
|
||||||
appref-ms
|
|
||||||
appref
|
appref
|
||||||
TSource
|
TSource
|
||||||
runas
|
runas
|
||||||
|
|
@ -57,7 +57,6 @@ dpi
|
||||||
popup
|
popup
|
||||||
ptr
|
ptr
|
||||||
pluginindicator
|
pluginindicator
|
||||||
TobiasSekan
|
|
||||||
img
|
img
|
||||||
resx
|
resx
|
||||||
bak
|
bak
|
||||||
|
|
@ -68,9 +67,6 @@ dlg
|
||||||
ddd
|
ddd
|
||||||
dddd
|
dddd
|
||||||
clearlogfolder
|
clearlogfolder
|
||||||
ACCENT_ENABLE_TRANSPARENTGRADIENT
|
|
||||||
ACCENT_ENABLE_BLURBEHIND
|
|
||||||
WCA_ACCENT_POLICY
|
|
||||||
HGlobal
|
HGlobal
|
||||||
dopusrt
|
dopusrt
|
||||||
firefox
|
firefox
|
||||||
|
|
@ -91,22 +87,15 @@ keyevent
|
||||||
KListener
|
KListener
|
||||||
requery
|
requery
|
||||||
vkcode
|
vkcode
|
||||||
čeština
|
|
||||||
Polski
|
Polski
|
||||||
Srpski
|
Srpski
|
||||||
Português
|
|
||||||
Português (Brasil)
|
|
||||||
Italiano
|
Italiano
|
||||||
Slovenský
|
|
||||||
quicklook
|
quicklook
|
||||||
Tiếng Việt
|
|
||||||
Droplex
|
Droplex
|
||||||
Preinstalled
|
Preinstalled
|
||||||
errormetadatafile
|
errormetadatafile
|
||||||
noresult
|
noresult
|
||||||
pluginsmanager
|
pluginsmanager
|
||||||
alreadyexists
|
alreadyexists
|
||||||
JsonRPC
|
|
||||||
JsonRPCV2
|
|
||||||
Softpedia
|
Softpedia
|
||||||
img
|
img
|
||||||
|
|
|
||||||
12
.github/actions/spelling/patterns.txt
vendored
12
.github/actions/spelling/patterns.txt
vendored
|
|
@ -1,4 +1,6 @@
|
||||||
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
|
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
|
||||||
|
# This file should contain strings that contain a mix of letters and numbers, or specific symbols
|
||||||
|
|
||||||
|
|
||||||
# Questionably acceptable forms of `in to`
|
# Questionably acceptable forms of `in to`
|
||||||
# Personally, I prefer `log into`, but people object
|
# Personally, I prefer `log into`, but people object
|
||||||
|
|
@ -121,3 +123,13 @@
|
||||||
|
|
||||||
# version suffix <word>v#
|
# version suffix <word>v#
|
||||||
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
||||||
|
|
||||||
|
\bjjw24\b
|
||||||
|
\bappref-ms\b
|
||||||
|
\bTobiasSekan\b
|
||||||
|
\bJsonRPC\b
|
||||||
|
\bJsonRPCV2\b
|
||||||
|
\bTiếng Việt\b
|
||||||
|
\bPortuguês (Brasil)\b
|
||||||
|
\bčeština\b
|
||||||
|
\bPortuguês\b
|
||||||
|
|
|
||||||
|
|
@ -189,31 +189,46 @@ namespace Flow.Launcher
|
||||||
var releases = JsonSerializer.Deserialize<List<GitHubReleaseInfo>>(releaseNotesJSON);
|
var releases = JsonSerializer.Deserialize<List<GitHubReleaseInfo>>(releaseNotesJSON);
|
||||||
|
|
||||||
// Get the latest releases
|
// Get the latest releases
|
||||||
var latestReleases = releases.OrderByDescending(release => release.PublishedDate).Take(3);
|
var latestReleases = releases.OrderByDescending(release => release.PublishedDate).Take(3).ToList();
|
||||||
|
|
||||||
// Build the release notes in Markdown format
|
// Build the release notes in Markdown format
|
||||||
var releaseNotesHtmlBuilder = new StringBuilder(string.Empty);
|
var releaseNotesHtmlBuilder = new StringBuilder(string.Empty);
|
||||||
foreach (var release in latestReleases)
|
|
||||||
|
for (int i = 0; i < latestReleases.Count; i++)
|
||||||
{
|
{
|
||||||
|
var release = latestReleases[i];
|
||||||
releaseNotesHtmlBuilder.AppendLine("# " + release.Name);
|
releaseNotesHtmlBuilder.AppendLine("# " + release.Name);
|
||||||
|
|
||||||
// Because MdXaml.Html package cannot correctly render images without units,
|
// Because MdXaml.Html package cannot correctly render images without units,
|
||||||
// We need to manually add unit for images
|
// We need to manually add unit for images
|
||||||
// E.g. Replace <img src="..." width="500"> with <img src="..." width="500px">
|
// E.g. Replace <img src="..." width="500"> with <img src="..." width="500px">
|
||||||
var notes = ImageUnitRegex().Replace(release.ReleaseNotes, m =>
|
var notes = ImageUnitRegex().Replace(release.ReleaseNotes, m =>
|
||||||
{
|
{
|
||||||
var prefix = m.Groups[1].Value;
|
var prefix = m.Groups[1].Value;
|
||||||
var widthValue = m.Groups[2].Value;
|
var widthValue = m.Groups[2].Value;
|
||||||
var quote = m.Groups[3].Value;
|
var quote = m.Groups[3].Value;
|
||||||
var suffix = m.Groups[4].Value;
|
var suffix = m.Groups[4].Value;
|
||||||
// Only replace if width is number like 500 without units like 500px
|
// Only replace if width is number like 500 without units like 500px
|
||||||
if (IsNumber(widthValue))
|
if (IsNumber(widthValue))
|
||||||
return $"{prefix}{widthValue}px{quote}{suffix}";
|
return $"{prefix}{widthValue}px{quote}{suffix}";
|
||||||
return m.Value;
|
return m.Value;
|
||||||
});
|
});
|
||||||
|
|
||||||
releaseNotesHtmlBuilder.AppendLine(notes);
|
releaseNotesHtmlBuilder.AppendLine(notes);
|
||||||
releaseNotesHtmlBuilder.AppendLine();
|
releaseNotesHtmlBuilder.AppendLine();
|
||||||
|
|
||||||
|
// Add separator if it is not last release note
|
||||||
|
if (i < latestReleases.Count - 1)
|
||||||
|
{
|
||||||
|
releaseNotesHtmlBuilder.Append("<br />");
|
||||||
|
releaseNotesHtmlBuilder.Append("\n\n");
|
||||||
|
|
||||||
|
releaseNotesHtmlBuilder.AppendLine("---");
|
||||||
|
|
||||||
|
releaseNotesHtmlBuilder.Append("\n\n");
|
||||||
|
releaseNotesHtmlBuilder.Append("<br />");
|
||||||
|
releaseNotesHtmlBuilder.Append("\n\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return releaseNotesHtmlBuilder.ToString();
|
return releaseNotesHtmlBuilder.ToString();
|
||||||
|
|
|
||||||
|
|
@ -38,21 +38,21 @@
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
|
|
||||||
<DataTrigger Binding="{Binding (local:CardGroup.Position), RelativeSource={RelativeSource AncestorType=local:Card}}" Value="First">
|
<DataTrigger Binding="{Binding Type, RelativeSource={RelativeSource AncestorType=local:Card}}" Value="First">
|
||||||
<Setter Property="Margin" Value="0" />
|
<Setter Property="Margin" Value="0" />
|
||||||
<Setter Property="CornerRadius" Value="0" />
|
<Setter Property="CornerRadius" Value="0" />
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
<Setter Property="BorderThickness" Value="0" />
|
<Setter Property="BorderThickness" Value="0" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
|
|
||||||
<DataTrigger Binding="{Binding (local:CardGroup.Position), RelativeSource={RelativeSource AncestorType=local:Card}}" Value="Middle">
|
<DataTrigger Binding="{Binding Type, RelativeSource={RelativeSource AncestorType=local:Card}}" Value="Middle">
|
||||||
<Setter Property="Margin" Value="0" />
|
<Setter Property="Margin" Value="0" />
|
||||||
<Setter Property="CornerRadius" Value="0" />
|
<Setter Property="CornerRadius" Value="0" />
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
<Setter Property="BorderThickness" Value="0 1 0 0" />
|
<Setter Property="BorderThickness" Value="0 1 0 0" />
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
|
|
||||||
<DataTrigger Binding="{Binding (local:CardGroup.Position), RelativeSource={RelativeSource AncestorType=local:Card}}" Value="Last">
|
<DataTrigger Binding="{Binding Type, RelativeSource={RelativeSource AncestorType=local:Card}}" Value="Last">
|
||||||
<Setter Property="Margin" Value="0" />
|
<Setter Property="Margin" Value="0" />
|
||||||
<Setter Property="CornerRadius" Value="0" />
|
<Setter Property="CornerRadius" Value="0" />
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,10 @@ namespace Flow.Launcher.Resources.Controls
|
||||||
{
|
{
|
||||||
Default,
|
Default,
|
||||||
Inside,
|
Inside,
|
||||||
InsideFit
|
InsideFit,
|
||||||
|
First,
|
||||||
|
Middle,
|
||||||
|
Last
|
||||||
}
|
}
|
||||||
|
|
||||||
public Card()
|
public Card()
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,8 @@ public partial class SettingsPaneThemeViewModel : BaseModel
|
||||||
"dddd dd', 'MMMM",
|
"dddd dd', 'MMMM",
|
||||||
"dd', 'MMMM",
|
"dd', 'MMMM",
|
||||||
"dd.MM.yy",
|
"dd.MM.yy",
|
||||||
"dd.MM.yyyy"
|
"dd.MM.yyyy",
|
||||||
|
"dd MMMM yyyy"
|
||||||
};
|
};
|
||||||
|
|
||||||
public string TimeFormat
|
public string TimeFormat
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,10 @@
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:CardGroup Margin="0 4 0 0">
|
<cc:CardGroup Margin="0 4 0 0">
|
||||||
<cc:Card Title="{DynamicResource SearchWindowPosition}" Icon="">
|
<cc:Card
|
||||||
|
Title="{DynamicResource SearchWindowPosition}"
|
||||||
|
Icon=""
|
||||||
|
Type="First">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
MinWidth="220"
|
MinWidth="220"
|
||||||
|
|
@ -125,6 +128,7 @@
|
||||||
<cc:Card
|
<cc:Card
|
||||||
Title="{DynamicResource SearchWindowAlign}"
|
Title="{DynamicResource SearchWindowAlign}"
|
||||||
Icon=""
|
Icon=""
|
||||||
|
Type="Last"
|
||||||
Visibility="{ext:CollapsedWhen {Binding Settings.SearchWindowScreen},
|
Visibility="{ext:CollapsedWhen {Binding Settings.SearchWindowScreen},
|
||||||
IsEqualTo={x:Static userSettings:SearchWindowScreens.RememberLastLaunchLocation}}">
|
IsEqualTo={x:Static userSettings:SearchWindowScreens.RememberLastLaunchLocation}}">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
|
|
@ -205,7 +209,10 @@
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:CardGroup Margin="0 14 0 0">
|
<cc:CardGroup Margin="0 14 0 0">
|
||||||
<cc:Card Title="{DynamicResource querySearchPrecision}" Sub="{DynamicResource querySearchPrecisionToolTip}">
|
<cc:Card
|
||||||
|
Title="{DynamicResource querySearchPrecision}"
|
||||||
|
Sub="{DynamicResource querySearchPrecisionToolTip}"
|
||||||
|
Type="First">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
MaxWidth="200"
|
MaxWidth="200"
|
||||||
DisplayMemberPath="Display"
|
DisplayMemberPath="Display"
|
||||||
|
|
@ -214,7 +221,10 @@
|
||||||
SelectedValuePath="Value" />
|
SelectedValuePath="Value" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource lastQueryMode}" Sub="{DynamicResource lastQueryModeToolTip}">
|
<cc:Card
|
||||||
|
Title="{DynamicResource lastQueryMode}"
|
||||||
|
Sub="{DynamicResource lastQueryModeToolTip}"
|
||||||
|
Type="Last">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
MinWidth="210"
|
MinWidth="210"
|
||||||
DisplayMemberPath="Display"
|
DisplayMemberPath="Display"
|
||||||
|
|
@ -384,7 +394,8 @@
|
||||||
<cc:Card
|
<cc:Card
|
||||||
Title="{DynamicResource KoreanImeRegistry}"
|
Title="{DynamicResource KoreanImeRegistry}"
|
||||||
Icon=""
|
Icon=""
|
||||||
Sub="{DynamicResource KoreanImeRegistryTooltip}">
|
Sub="{DynamicResource KoreanImeRegistryTooltip}"
|
||||||
|
Type="First">
|
||||||
<ui:ToggleSwitch
|
<ui:ToggleSwitch
|
||||||
IsOn="{Binding LegacyKoreanIMEEnabled}"
|
IsOn="{Binding LegacyKoreanIMEEnabled}"
|
||||||
OffContent="{DynamicResource disable}"
|
OffContent="{DynamicResource disable}"
|
||||||
|
|
@ -393,7 +404,8 @@
|
||||||
<cc:Card
|
<cc:Card
|
||||||
Title="{DynamicResource KoreanImeOpenLink}"
|
Title="{DynamicResource KoreanImeOpenLink}"
|
||||||
Icon=""
|
Icon=""
|
||||||
Sub="{DynamicResource KoreanImeOpenLinkToolTip}">
|
Sub="{DynamicResource KoreanImeOpenLinkToolTip}"
|
||||||
|
Type="Last">
|
||||||
<Button Command="{Binding OpenImeSettingsCommand}" Content="{DynamicResource KoreanImeOpenLinkButton}" />
|
<Button Command="{Binding OpenImeSettingsCommand}" Content="{DynamicResource KoreanImeOpenLinkButton}" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
</cc:CardGroup>
|
</cc:CardGroup>
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,10 @@
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:CardGroup Margin="0 12 0 0">
|
<cc:CardGroup Margin="0 12 0 0">
|
||||||
<cc:Card Title="{DynamicResource openResultModifiers}" Sub="{DynamicResource openResultModifiersToolTip}">
|
<cc:Card
|
||||||
|
Title="{DynamicResource openResultModifiers}"
|
||||||
|
Sub="{DynamicResource openResultModifiersToolTip}"
|
||||||
|
Type="First">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
Width="120"
|
Width="120"
|
||||||
FontSize="14"
|
FontSize="14"
|
||||||
|
|
@ -59,7 +62,10 @@
|
||||||
SelectedValue="{Binding Settings.OpenResultModifiers}" />
|
SelectedValue="{Binding Settings.OpenResultModifiers}" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource showOpenResultHotkey}" Sub="{DynamicResource showOpenResultHotkeyToolTip}">
|
<cc:Card
|
||||||
|
Title="{DynamicResource showOpenResultHotkey}"
|
||||||
|
Sub="{DynamicResource showOpenResultHotkeyToolTip}"
|
||||||
|
Type="Last">
|
||||||
<ui:ToggleSwitch
|
<ui:ToggleSwitch
|
||||||
IsOn="{Binding Settings.ShowOpenResultHotkey}"
|
IsOn="{Binding Settings.ShowOpenResultHotkey}"
|
||||||
OffContent="{DynamicResource disable}"
|
OffContent="{DynamicResource disable}"
|
||||||
|
|
|
||||||
|
|
@ -32,35 +32,35 @@
|
||||||
TextAlignment="left" />
|
TextAlignment="left" />
|
||||||
|
|
||||||
<cc:CardGroup>
|
<cc:CardGroup>
|
||||||
<cc:Card Title="{DynamicResource enableProxy}">
|
<cc:Card Title="{DynamicResource enableProxy}" Type="First">
|
||||||
<ui:ToggleSwitch
|
<ui:ToggleSwitch
|
||||||
IsOn="{Binding Settings.Proxy.Enabled}"
|
IsOn="{Binding Settings.Proxy.Enabled}"
|
||||||
OffContent="{DynamicResource disable}"
|
OffContent="{DynamicResource disable}"
|
||||||
OnContent="{DynamicResource enable}" />
|
OnContent="{DynamicResource enable}" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource server}">
|
<cc:Card Title="{DynamicResource server}" Type="Middle">
|
||||||
<TextBox
|
<TextBox
|
||||||
Width="300"
|
Width="300"
|
||||||
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
||||||
Text="{Binding Settings.Proxy.Server}" />
|
Text="{Binding Settings.Proxy.Server}" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource port}">
|
<cc:Card Title="{DynamicResource port}" Type="Middle">
|
||||||
<TextBox
|
<TextBox
|
||||||
Width="100"
|
Width="100"
|
||||||
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
||||||
Text="{Binding Settings.Proxy.Port, TargetNullValue={x:Static sys:String.Empty}}" />
|
Text="{Binding Settings.Proxy.Port, TargetNullValue={x:Static sys:String.Empty}}" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource userName}">
|
<cc:Card Title="{DynamicResource userName}" Type="Middle">
|
||||||
<TextBox
|
<TextBox
|
||||||
Width="200"
|
Width="200"
|
||||||
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
||||||
Text="{Binding Settings.Proxy.UserName}" />
|
Text="{Binding Settings.Proxy.UserName}" />
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource password}">
|
<cc:Card Title="{DynamicResource password}" Type="Last">
|
||||||
<TextBox
|
<TextBox
|
||||||
Width="200"
|
Width="200"
|
||||||
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
IsEnabled="{Binding Settings.Proxy.Enabled}"
|
||||||
|
|
|
||||||
|
|
@ -489,7 +489,8 @@
|
||||||
Title="{DynamicResource BackdropType}"
|
Title="{DynamicResource BackdropType}"
|
||||||
Margin="0 0 0 0"
|
Margin="0 0 0 0"
|
||||||
Icon=""
|
Icon=""
|
||||||
Sub="{Binding BackdropSubText}">
|
Sub="{Binding BackdropSubText}"
|
||||||
|
Type="First">
|
||||||
<ComboBox
|
<ComboBox
|
||||||
MinWidth="160"
|
MinWidth="160"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
|
@ -505,7 +506,8 @@
|
||||||
<cc:Card
|
<cc:Card
|
||||||
Title="{DynamicResource queryWindowShadowEffect}"
|
Title="{DynamicResource queryWindowShadowEffect}"
|
||||||
Margin="0 0 0 0"
|
Margin="0 0 0 0"
|
||||||
Icon="">
|
Icon=""
|
||||||
|
Type="Last">
|
||||||
<ui:ToggleSwitch
|
<ui:ToggleSwitch
|
||||||
IsEnabled="{Binding IsDropShadowEnabled}"
|
IsEnabled="{Binding IsDropShadowEnabled}"
|
||||||
IsOn="{Binding DropShadowEffect}"
|
IsOn="{Binding DropShadowEffect}"
|
||||||
|
|
@ -546,7 +548,10 @@
|
||||||
|
|
||||||
<!-- Time and date -->
|
<!-- Time and date -->
|
||||||
<cc:CardGroup Margin="0 14 0 0">
|
<cc:CardGroup Margin="0 14 0 0">
|
||||||
<cc:Card Title="{DynamicResource Clock}" Icon="">
|
<cc:Card
|
||||||
|
Title="{DynamicResource Clock}"
|
||||||
|
Icon=""
|
||||||
|
Type="First">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
|
@ -567,7 +572,10 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</cc:Card>
|
</cc:Card>
|
||||||
|
|
||||||
<cc:Card Title="{DynamicResource Date}" Icon="">
|
<cc:Card
|
||||||
|
Title="{DynamicResource Date}"
|
||||||
|
Icon=""
|
||||||
|
Type="Last">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock
|
<TextBlock
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ namespace Flow.Launcher.Plugin.Calculator
|
||||||
@"bin2dec|hex2dec|oct2dec|" +
|
@"bin2dec|hex2dec|oct2dec|" +
|
||||||
@"factorial|sign|isprime|isinfty|" +
|
@"factorial|sign|isprime|isinfty|" +
|
||||||
@"==|~=|&&|\|\||(?:\<|\>)=?|" +
|
@"==|~=|&&|\|\||(?:\<|\>)=?|" +
|
||||||
@"[ei]|[0-9]|[\+\%\-\*\/\^\., ""]|[\(\)\|\!\[\]]" +
|
@"[ei]|[0-9]|0x[\da-fA-F]+|[\+\%\-\*\/\^\., ""]|[\(\)\|\!\[\]]" +
|
||||||
@")+$", RegexOptions.Compiled);
|
@")+$", RegexOptions.Compiled);
|
||||||
private static readonly Regex RegBrackets = new Regex(@"[\(\)\[\]]", RegexOptions.Compiled);
|
private static readonly Regex RegBrackets = new Regex(@"[\(\)\[\]]", RegexOptions.Compiled);
|
||||||
private static Engine MagesEngine;
|
private static Engine MagesEngine;
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@
|
||||||
"ID": "CEA0FDFC6D3B4085823D60DC76F28855",
|
"ID": "CEA0FDFC6D3B4085823D60DC76F28855",
|
||||||
"ActionKeyword": "*",
|
"ActionKeyword": "*",
|
||||||
"Name": "Calculator",
|
"Name": "Calculator",
|
||||||
"Description": "Provide mathematical calculations.(Try 5*3-2 in Flow Launcher)",
|
"Description": "Perform mathematical calculations (including hexadecimal values)",
|
||||||
"Author": "cxfksword",
|
"Author": "cxfksword",
|
||||||
"Version": "1.0.0",
|
"Version": "1.0.0",
|
||||||
"Language": "csharp",
|
"Language": "csharp",
|
||||||
"Website": "https://github.com/Flow-Launcher/Flow.Launcher",
|
"Website": "https://github.com/Flow-Launcher/Flow.Launcher",
|
||||||
"ExecuteFileName": "Flow.Launcher.Plugin.Calculator.dll",
|
"ExecuteFileName": "Flow.Launcher.Plugin.Calculator.dll",
|
||||||
"IcoPath": "Images\\calculator.png"
|
"IcoPath": "Images\\calculator.png"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Flow.Launcher.Plugin.Explorer
|
||||||
{
|
{
|
||||||
internal static PluginInitContext Context { get; set; }
|
internal static PluginInitContext Context { get; set; }
|
||||||
|
|
||||||
internal Settings Settings;
|
internal static Settings Settings { get; set; }
|
||||||
|
|
||||||
private SettingsViewModel viewModel;
|
private SettingsViewModel viewModel;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks
|
||||||
{
|
{
|
||||||
internal static class QuickAccess
|
internal static class QuickAccess
|
||||||
{
|
{
|
||||||
private const int quickAccessResultScore = 100;
|
private const int QuickAccessResultScore = 100;
|
||||||
|
|
||||||
internal static List<Result> AccessLinkListMatched(Query query, IEnumerable<AccessLink> accessLinks)
|
internal static List<Result> AccessLinkListMatched(Query query, IEnumerable<AccessLink> accessLinks)
|
||||||
{
|
{
|
||||||
|
|
@ -19,8 +19,9 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks
|
||||||
.ThenBy(x => x.Name)
|
.ThenBy(x => x.Name)
|
||||||
.Select(l => l.Type switch
|
.Select(l => l.Type switch
|
||||||
{
|
{
|
||||||
ResultType.Folder => ResultManager.CreateFolderResult(l.Name, l.Path, l.Path, query, quickAccessResultScore),
|
ResultType.Volume => ResultManager.CreateDriveSpaceDisplayResult(l.Path, query.ActionKeyword, QuickAccessResultScore),
|
||||||
ResultType.File => ResultManager.CreateFileResult(l.Path, query, quickAccessResultScore),
|
ResultType.Folder => ResultManager.CreateFolderResult(l.Name, l.Path, l.Path, query, QuickAccessResultScore),
|
||||||
|
ResultType.File => ResultManager.CreateFileResult(l.Path, query, QuickAccessResultScore),
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
_ => throw new ArgumentOutOfRangeException()
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
@ -32,8 +33,9 @@ namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks
|
||||||
.ThenBy(x => x.Name)
|
.ThenBy(x => x.Name)
|
||||||
.Select(l => l.Type switch
|
.Select(l => l.Type switch
|
||||||
{
|
{
|
||||||
ResultType.Folder => ResultManager.CreateFolderResult(l.Name, l.Path, l.Path, query),
|
ResultType.Volume => ResultManager.CreateDriveSpaceDisplayResult(l.Path, query.ActionKeyword, QuickAccessResultScore),
|
||||||
ResultType.File => ResultManager.CreateFileResult(l.Path, query, quickAccessResultScore),
|
ResultType.Folder => ResultManager.CreateFolderResult(l.Name, l.Path, l.Path, query, QuickAccessResultScore),
|
||||||
|
ResultType.File => ResultManager.CreateFileResult(l.Path, query, QuickAccessResultScore),
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
_ => throw new ArgumentOutOfRangeException()
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,17 @@ namespace Flow.Launcher.Plugin.Explorer.Search
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static Result CreateDriveSpaceDisplayResult(string path, string actionKeyword, int score)
|
||||||
|
{
|
||||||
|
return CreateDriveSpaceDisplayResult(path, actionKeyword, score, SearchManager.UseIndexSearch(path));
|
||||||
|
}
|
||||||
|
|
||||||
internal static Result CreateDriveSpaceDisplayResult(string path, string actionKeyword, bool windowsIndexed = false)
|
internal static Result CreateDriveSpaceDisplayResult(string path, string actionKeyword, bool windowsIndexed = false)
|
||||||
|
{
|
||||||
|
return CreateDriveSpaceDisplayResult(path, actionKeyword, 500, windowsIndexed);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Result CreateDriveSpaceDisplayResult(string path, string actionKeyword, int score, bool windowsIndexed = false)
|
||||||
{
|
{
|
||||||
var progressBarColor = "#26a0da";
|
var progressBarColor = "#26a0da";
|
||||||
var title = string.Empty; // hide title when use progress bar,
|
var title = string.Empty; // hide title when use progress bar,
|
||||||
|
|
@ -197,7 +207,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search
|
||||||
SubTitle = subtitle,
|
SubTitle = subtitle,
|
||||||
AutoCompleteText = GetPathWithActionKeyword(path, ResultType.Folder, actionKeyword),
|
AutoCompleteText = GetPathWithActionKeyword(path, ResultType.Folder, actionKeyword),
|
||||||
IcoPath = path,
|
IcoPath = path,
|
||||||
Score = 500,
|
Score = score,
|
||||||
ProgressBar = progressValue,
|
ProgressBar = progressValue,
|
||||||
ProgressBarColor = progressBarColor,
|
ProgressBarColor = progressBarColor,
|
||||||
Preview = new Result.PreviewInfo
|
Preview = new Result.PreviewInfo
|
||||||
|
|
|
||||||
|
|
@ -246,6 +246,18 @@ namespace Flow.Launcher.Plugin.Explorer.Search
|
||||||
|
|
||||||
public bool IsFileContentSearch(string actionKeyword) => actionKeyword == Settings.FileContentSearchActionKeyword;
|
public bool IsFileContentSearch(string actionKeyword) => actionKeyword == Settings.FileContentSearchActionKeyword;
|
||||||
|
|
||||||
|
public static bool UseIndexSearch(string path)
|
||||||
|
{
|
||||||
|
if (Main.Settings.IndexSearchEngine is not Settings.IndexSearchEngineOption.WindowsIndex)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Check if the path is using windows index search
|
||||||
|
var pathToDirectory = FilesFolders.ReturnPreviousDirectoryIfIncompleteString(path);
|
||||||
|
|
||||||
|
return !Main.Settings.IndexSearchExcludedSubdirectoryPaths.Any(
|
||||||
|
x => FilesFolders.ReturnPreviousDirectoryIfIncompleteString(pathToDirectory).StartsWith(x.Path, StringComparison.OrdinalIgnoreCase))
|
||||||
|
&& WindowsIndex.WindowsIndex.PathIsIndexed(pathToDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
private bool UseWindowsIndexForDirectorySearch(string locationPath)
|
private bool UseWindowsIndexForDirectorySearch(string locationPath)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
12
appveyor.yml
12
appveyor.yml
|
|
@ -69,7 +69,17 @@ deploy:
|
||||||
- provider: GitHub
|
- provider: GitHub
|
||||||
repository: Flow-Launcher/Prereleases
|
repository: Flow-Launcher/Prereleases
|
||||||
release: v$(prereleaseTag)
|
release: v$(prereleaseTag)
|
||||||
description: 'This is the early access build of our upcoming release. All changes contained here are reviewed, tested and stable to use.\n\nSee our [release](https://github.com/Flow-Launcher/Flow.Launcher/pulls?q=is%3Aopen+is%3Apr+label%3Arelease) Pull Request for details.\n\nFor latest production release visit [here](https://github.com/Flow-Launcher/Flow.Launcher/releases/latest)\n\nPlease report any bugs or issues over at the [main repository](https://github.com/Flow-Launcher/Flow.Launcher/issues)'
|
description: |
|
||||||
|
This is the early access build of our upcoming release.
|
||||||
|
All changes contained here are reviewed, tested and stable to use.
|
||||||
|
|
||||||
|
This build includes new changes from commit:
|
||||||
|
$(APPVEYOR_REPO_COMMIT_MESSAGE)
|
||||||
|
|
||||||
|
See all changes in this early access by going to the [milstones](https://github.com/Flow-Launcher/Flow.Launcher/milestones?sort=title&direction=asc) section and choosing the upcoming milestone.
|
||||||
|
For latest production release visit [here](https://github.com/Flow-Launcher/Flow.Launcher/releases/latest)
|
||||||
|
|
||||||
|
Please report any bugs or issues over at the [main repository](https://github.com/Flow-Launcher/Flow.Launcher/issues)'
|
||||||
auth_token:
|
auth_token:
|
||||||
secure: ij4UeXUYQBDJxn2YRAAhUOjklOGVKDB87Hn5J8tKIzj13yatoI7sLM666QDQFEgv
|
secure: ij4UeXUYQBDJxn2YRAAhUOjklOGVKDB87Hn5J8tKIzj13yatoI7sLM666QDQFEgv
|
||||||
artifact: Squirrel Installer, Portable Version, Squirrel nupkg, Squirrel RELEASES
|
artifact: Squirrel Installer, Portable Version, Squirrel nupkg, Squirrel RELEASES
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue