Skip to content
This repository was archived by the owner on Aug 25, 2024. It is now read-only.

Commit e3580b2

Browse files
committed
new: pin record
1 parent 9a01948 commit e3580b2

File tree

12 files changed

+96
-26
lines changed

12 files changed

+96
-26
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.idea/
22
.dist/
33
.vscode/
4+
*.svg
45

56
## Ignore Visual Studio temporary files, build results, and
67
## files generated by popular Visual Studio add-ons.

build/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class BuildContext : FrostingContext
3434
public Lazy<SolutionParserResult> DefaultSln { get; set; }
3535
public const string DeployFramework = "net7.0-windows";
3636
public string PublishDir = ".dist";
37-
public string PublishVersion = "0.1.6";
37+
public string PublishVersion = "0.1.7";
3838

3939
public BuildContext(ICakeContext context)
4040
: base(context)
@@ -105,7 +105,7 @@ public override void Run(BuildContext context)
105105
});
106106
context.CreateDirectory(dstDir);
107107
var files = context
108-
.GetFiles(@$"{srcDir}/**/(*(c|C)lipboard*.(png|json|dll)|plugin.json|*simulator.dll)");
108+
.GetFiles(@$"{srcDir}/**/(*(c|C)lipboard*.(png|json|dll)|*.png|plugin.json|*simulator.dll)");
109109
foreach (var f in files)
110110
context.Information($"Adding: {f}");
111111
context.ZipCompress(

src/ClipboardR.Core/Struct.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ public struct ClipboardData : IEquatable<ClipboardData>
1414
public string PreviewImagePath;
1515
public SharpClipboard.ContentTypes Type;
1616
public int Score;
17+
public int InitScore;
1718
public DateTime Time;
19+
public bool Pined;
1820

1921
public bool Equals(ClipboardData b)
2022
{

src/ClipboardR.Panels/ClipboardR.Panels.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@
2424
<PackageReference Include="Flow.Launcher.Plugin" Version="4.0.0" />
2525
</ItemGroup>
2626

27+
<ItemGroup>
28+
<Resource Include="Images/*.png" />
29+
</ItemGroup>
30+
2731
</Project>
3.72 KB
Loading
3.35 KB
Loading
3.64 KB
Loading
4.79 KB
Loading

src/ClipboardR.Panels/PreviewPanel.xaml

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:local="clr-namespace:ClipboardR.Panels"
77
mc:Ignorable="d">
8+
<UserControl.Resources>
9+
<Image x:Key="Copy" Source="pack://application:,,,/ClipboardR.Panels;Component/Images/copy.png" Height="30" Width="30" />
10+
<Image x:Key="Pin" Source="pack://application:,,,/ClipboardR.Panels;Component/Images/pin.png" Height="30" Width="30" />
11+
<Image x:Key="Pined" Source="pack://application:,,,/ClipboardR.Panels;Component/Images/pined.png" Height="30" Width="30" />
12+
<Image x:Key="Delete" Source="pack://application:,,,/ClipboardR.Panels;Component/Images/delete.png" Height="30" Width="30" />
13+
</UserControl.Resources>
814
<Grid
915
MinWidth="300" MinHeight="100"
1016
MaxWidth="340" MaxHeight="500" HorizontalAlignment="Center">
@@ -28,15 +34,38 @@
2834
VerticalScrollBarVisibility="Auto" Text="&lt;UserControl x:Class=&quot;ClipboardR.Panels.PreviewPanel&quot;&#xD;&#xA; xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&#xD;&#xA; xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&#xD;&#xA; xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&#xD;&#xA; xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&#xD;&#xA; xmlns:local=&quot;clr-namespace:ClipboardR.Panels&quot;&#xD;&#xA; mc:Ignorable=&quot;d&quot;&gt;&#xD;&#xA; &lt;Grid HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot; &#xD;&#xA; Margin=&quot;5, 5, 5, 5&quot;&#xD;&#xA; MinWidth=&quot;410&quot; MinHeight=&quot;620&quot;&gt;&#xD;&#xA; &lt;Grid.RowDefinitions&gt;&#xD;&#xA; &lt;RowDefinition Height=&quot;90*&quot; /&gt;&#xD;&#xA; &lt;RowDefinition Height=&quot;10*&quot; /&gt;&#xD;&#xA; &lt;/Grid.RowDefinitions&gt;&#xD;&#xA; &lt;Grid.ColumnDefinitions&gt;&#xD;&#xA; &lt;ColumnDefinition Width=&quot;50*&quot; /&gt;&#xD;&#xA; &lt;ColumnDefinition Width=&quot;50*&quot; /&gt;&#xD;&#xA; &lt;/Grid.ColumnDefinitions&gt;&#xD;&#xA; &lt;Image x:Name=&quot;PreImage&quot; Margin=&quot;3,3,3,3&quot;&#xD;&#xA; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot;&#xD;&#xA; Grid.ColumnSpan=&quot;2&quot; Visibility=&quot;Hidden&quot; Panel.ZIndex=&quot;0&quot;&#xD;&#xA; MinWidth=&quot;410&quot; MinHeight=&quot;100&quot; &#xD;&#xA; MaxWidth=&quot;420&quot; MaxHeight=&quot;500&quot; /&gt;&#xD;&#xA; &lt;TextBox Grid.Row=&quot;0&quot; Grid.Column=&quot;0&quot; Grid.ColumnSpan=&quot;2&quot; Grid.RowSpan=&quot;2&quot; &#xD;&#xA; x:Name=&quot;TxtBoxPre&quot; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot;&#xD;&#xA; Panel.ZIndex=&quot;1&quot; FontSize=&quot;14&quot; TextAlignment=&quot;Left&quot; Padding=&quot;3,3,3,3&quot; &#xD;&#xA; MinWidth=&quot;410&quot; MinHeight=&quot;100&quot; MaxWidth=&quot;420&quot; MaxHeight=&quot;500&quot; Focusable=&quot;True&quot; &#xD;&#xA; VerticalScrollBarVisibility=&quot;Auto&quot; Text=&quot;finition Width=&amp;quot;50*&amp;quot; /&amp;gt;&amp;#xD;&amp;#xA; &amp;lt;/Grid.ColumnDefinitions&amp;gt;&amp;#xD;&amp;#xA; &amp;lt;Image x:Name=&amp;quot;PreImage&amp;quot; Margin=&amp;quot;3,3,3,3&amp;quot;&amp;#xD;&amp;#xA; HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Center&amp;quot;&amp;#xD;&amp;#xA; Grid.ColumnSpan=&amp;quot;2&amp;quot; Visibility=&amp;quot;Hidden&amp;quot; Panel.ZIndex=&amp;quot;0&amp;quot;&amp;#xD;&amp;#xA; MinWidth=&amp;quot;410&amp;quot; MinHeight=&amp;quot;100&amp;quot; &amp;#xD;&amp;#xA; MaxWidth=&amp;quot;420&amp;quot; MaxHeight=&amp;quot;500&amp;quot; /&amp;gt;&amp;#xD;&amp;#xA; &amp;lt;TextBox Grid.Row=&amp;quot;0&amp;quot; Grid.Column=&amp;quot;0&amp;quot; Grid.ColumnSpan=&amp;quot;2&amp;quot; Grid.RowSpan=&amp;quot;2&amp;quot; &amp;#xD;&amp;#xA; x:Name=&amp;quot;TxtBoxPre&amp;quot; HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Center&amp;quot;&amp;#xD;&amp;#xA; Panel.ZIndex=&amp;quot;1&amp;quot; FontSize=&amp;quot;14&amp;quot; TextAlignment=&amp;quot;Left&amp;quot; Padding=&amp;quot;3,3,3,3&amp;quot; &amp;#xD;&amp;#xA; MinWidth=&amp;quot;410&amp;quot; MinHeight=&amp;quot;100&amp;quot; MaxWidth=&amp;quot;420&amp;quot; MaxHeight=&amp;quot;500&amp;quot; Focusable=&amp;quot;True&amp;quot; &amp;#xD;&amp;#xA; VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; Text=&amp;quot;dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd&amp;amp;#xD;&amp;amp;#xA;&amp;quot; GotFocus=&amp;quot;TxtBoxPre_GotFocus&amp;quot; &amp;#xD;&amp;#xA; Margin=&amp;quot;3,3,3,3&amp;quot; HorizontalContentAlignment=&amp;quot;Left&amp;quot; &amp;#xD;&amp;#xA; TextChanged=&amp;quot;TxtBoxPre_TextChanged&amp;quot; IsReadOnly=&amp;quot;True&amp;quot; /&amp;gt;&amp;#xD;&amp;#xA; &amp;lt;Button Grid.Column=&amp;quot;0&amp;quot; Grid.Row=&amp;quot;1&amp;quot; &amp;#xD;&amp;#xA; x:Name=&amp;quot;BtnCopy&amp;quot; Content=&amp;quot;Copy&amp;quot; HorizontalAlignment&quot; GotFocus=&quot;TxtBoxPre_GotFocus&quot; &#xD;&#xA; Margin=&quot;3,3,3,3&quot; HorizontalContentAlignment=&quot;Left&quot; &#xD;&#xA; TextChanged=&quot;TxtBoxPre_TextChanged&quot; IsReadOnly=&quot;True&quot; /&gt;&#xD;&#xA; &lt;Button Grid.Column=&quot;0&quot; Grid.Row=&quot;1&quot; &#xD;&#xA; x:Name=&quot;BtnCopy&quot; Content=&quot;Copy&quot; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot;&#xD;&#xA; MinWidth=&quot;50&quot; MinHeight=&quot;30&quot; MaxWidth=&quot;50&quot; MaxHeight=&quot;30&quot; &#xD;&#xA; Margin=&quot;5,5,5,5&quot; Click=&quot;BtnCopy_Click&quot; /&gt;&#xD;&#xA; &lt;Button Grid.Column=&quot;1&quot; Grid.Row=&quot;1&quot; &#xD;&#xA; x:Name=&quot;BtnDelete&quot; Content=&quot;Delete&quot; HorizontalAlignment=&quot;Center&quot; VerticalAlignment=&quot;Center&quot; &#xD;&#xA; MinWidth=&quot;50&quot; MinHeight=&quot;30&quot; MaxWidth=&quot;50&quot; MaxHeight=&quot;30&quot; &#xD;&#xA; Margin=&quot;5,5,5,5&quot; Click=&quot;BtnDelete_Click&quot; /&gt;&#xD;&#xA; &lt;/Grid&gt;&#xD;&#xA;&lt;/UserControl&gt;" GotFocus="TxtBoxPre_GotFocus"
2935
Margin="5,5,5,5" HorizontalContentAlignment="Left"
3036
TextChanged="TxtBoxPre_TextChanged" IsReadOnly="True" HorizontalScrollBarVisibility="Auto" MinWidth="320" UseLayoutRounding="False"/>
31-
<Button Grid.Row="1" Grid.Column="0"
32-
x:Name="BtnCopy" Content="Copy"
33-
HorizontalAlignment="Center" VerticalAlignment="Bottom"
34-
Width="80" Height="30"
35-
Margin="5,5,5,5" Click="BtnCopy_Click" />
36-
<Button Grid.Row="1" Grid.Column="1"
37-
x:Name="BtnDelete" Content="Delete"
37+
<Grid Grid.Row="1" Grid.Column="0"
38+
ColumnSpan="2" MaxWidth="320" MaxHeight="50">
39+
<Grid.RowDefinitions>
40+
<RowDefinition Height="99*" />
41+
</Grid.RowDefinitions>
42+
<Grid.ColumnDefinitions>
43+
<ColumnDefinition Width="30*" />
44+
<ColumnDefinition Width="30*" />
45+
<ColumnDefinition Width="30*" />
46+
</Grid.ColumnDefinitions>
47+
<Button Grid.Row="0" Grid.Column="0"
48+
x:Name="BtnCopy" ToolTip="Copy to clipboard"
49+
HorizontalAlignment="Center" VerticalAlignment="Bottom"
50+
Width="33" Height="33" Padding="0, 0, 0, 0"
51+
Margin="5,5,5,5" Click="BtnCopy_Click" >
52+
<DynamicResource ResourceKey="Copy"/>
53+
</Button>
54+
<Button Grid.Row="0" Grid.Column="1"
55+
x:Name="BtnPin" ToolTip="Pin on top"
56+
HorizontalAlignment="Center" VerticalAlignment="Bottom"
57+
Width="33" Height="33" Padding="0, 0, 0, 0"
58+
Margin="5,5,5,5" Click="BtnPin_Click" >
59+
<DynamicResource ResourceKey="Pined"/>
60+
</Button>
61+
<Button Grid.Row="0" Grid.Column="2"
62+
x:Name="BtnDelete" ToolTip="Delete this record"
3863
HorizontalAlignment="Center" VerticalAlignment="Bottom"
39-
Width="80" Height="30"
40-
Margin="5,5,5,5" Click="BtnDelete_Click" />
64+
Width="33" Height="33" Padding="0, 0, 0, 0"
65+
Margin="5,5,5,5" Click="BtnDelete_Click" >
66+
<DynamicResource ResourceKey="Delete"/>
67+
</Button>
68+
</Grid>
69+
4170
</Grid>
4271
</UserControl>

src/ClipboardR.Panels/PreviewPanel.xaml.cs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,22 @@ public partial class PreviewPanel : UserControl
1818
private PluginInitContext _context;
1919
private Action<ClipboardData> DeleteOneRecord { get; set; }
2020
private Action<ClipboardData> CopyRecord { get; set; }
21-
public PreviewPanel(ClipboardData clipboardData, PluginInitContext context, Action<ClipboardData> delAction, Action<ClipboardData> copyAction)
21+
private Action<ClipboardData> PinRecord { get; set; }
22+
private int OldScore { get; set; }
23+
24+
public PreviewPanel(ClipboardData clipboardData, PluginInitContext context, Action<ClipboardData> delAction,
25+
Action<ClipboardData> copyAction, Action<ClipboardData> pinAction)
2226
{
2327
_clipboardData = clipboardData;
2428
_context = context;
2529
DeleteOneRecord = delAction;
2630
CopyRecord = copyAction;
31+
PinRecord = pinAction;
32+
OldScore = clipboardData.Score;
2733
InitializeComponent();
28-
34+
2935
SetContent();
36+
SetBtnIcon();
3037
}
3138

3239
public void SetContent()
@@ -53,7 +60,7 @@ public void SetContent()
5360
break;
5461
}
5562
}
56-
63+
5764
public void SetText(string s = "")
5865
{
5966
TxtBoxPre.Clear();
@@ -77,6 +84,11 @@ private void BtnDelete_Click(object sender, System.Windows.RoutedEventArgs e)
7784
DeleteOneRecord?.Invoke(_clipboardData);
7885
}
7986

87+
private void SetBtnIcon()
88+
{
89+
BtnPin.Content = FindResource(_clipboardData.Pined ? "Pined" : "Pin");
90+
}
91+
8092
private void TxtBoxPre_GotFocus(object sender, System.Windows.RoutedEventArgs e)
8193
{
8294
TextBox tb = (TextBox)sender;
@@ -85,6 +97,12 @@ private void TxtBoxPre_GotFocus(object sender, System.Windows.RoutedEventArgs e)
8597

8698
private void TxtBoxPre_TextChanged(object sender, TextChangedEventArgs e)
8799
{
100+
}
88101

102+
private void BtnPin_Click(object sender, RoutedEventArgs e)
103+
{
104+
_clipboardData.Pined = !_clipboardData.Pined;
105+
_clipboardData.Score = _clipboardData.Pined ? int.MaxValue : _clipboardData.InitScore;
106+
PinRecord?.Invoke(_clipboardData);
89107
}
90108
}

0 commit comments

Comments
 (0)