@@ -21,13 +21,13 @@ public class ClipboardR : IPlugin, IDisposable, ISettingProvider, ISavable
2121 private DirectoryInfo ClipDir { get ; set ; } = null ! ;
2222 private DirectoryInfo ClipCacheDir { get ; set ; } = null ! ;
2323 private string _defaultIconPath = null ! ;
24- private const int MaxDataCount = 1000 ;
24+ private string _defaultPinIconPath = null ! ;
25+ private uint _maxDataCount = 10000 ;
2526 private const string PinUnicode = "📌" ;
2627 private Settings _settings = null ! ;
2728 private string _settingsPath = null ! ;
2829 private int CurrentScore { get ; set ; } = 0 ;
2930
30- // private readonly InputSimulator inputSimulator = new InputSimulator();
3131 private PluginInitContext ? _context ;
3232 private LinkedList < ClipboardData > _dataList = new ( ) ;
3333
@@ -43,6 +43,7 @@ public void Init(PluginInitContext ctx)
4343 : new DirectoryInfo ( imageCacheDirectoryPath ) ;
4444
4545 _defaultIconPath = Path . Join ( ClipDir . FullName , "Images/clipboard.png" ) ;
46+ _defaultPinIconPath = Path . Join ( ClipDir . FullName , "Images/clipboard_pined.png" ) ;
4647
4748 _settingsPath = Path . Join ( ClipDir . FullName , "settings.json" ) ;
4849 if ( File . Exists ( _settingsPath ) )
@@ -55,6 +56,8 @@ public void Init(PluginInitContext ctx)
5556
5657 _settings . ConfigFile = _settingsPath ;
5758 _settings . Save ( ) ;
59+
60+ _maxDataCount = _settings . MaxDataCount ;
5861 }
5962
6063 public List < Result > Query ( Query query )
@@ -72,16 +75,17 @@ public List<Result> Query(Query query)
7275
7376 private Result ClipDataToResult ( ClipboardData o )
7477 {
75- var disSubTitle = o . Pined ? $ "{ PinUnicode } : { o . SenderApp } " : o . SenderApp ! ;
78+ var dispSubTitle = $ "{ o . CreateTime : yyyy-MM-dd-hh-mm-ss} : { o . SenderApp } ";
79+ dispSubTitle = o . Pined ? $ "{ PinUnicode } { dispSubTitle } " : dispSubTitle ;
7680 return new Result
7781 {
7882 Title = o . DisplayTitle ,
79- SubTitle = disSubTitle ,
83+ SubTitle = dispSubTitle ,
8084 Icon = ( ) => o . Icon ,
8185 CopyText = o . Text ,
8286 Score = o . Score ,
8387 TitleToolTip = o . Text ,
84- SubTitleToolTip = disSubTitle ,
88+ SubTitleToolTip = dispSubTitle ,
8589 PreviewPanel = new Lazy < UserControl > ( ( ) => new PreviewPanel (
8690 o ,
8791 _context ! ,
@@ -120,6 +124,7 @@ private void _OnClipboardChange(object? sender, SharpClipboard.ClipboardChangedE
120124 InitScore = CurrentScore + 1 ,
121125 Time = DateTime . Now ,
122126 Pined = false ,
127+ CreateTime = DateTime . Now ,
123128 } ;
124129 switch ( e . ContentType )
125130 {
@@ -130,7 +135,6 @@ private void _OnClipboardChange(object? sender, SharpClipboard.ClipboardChangedE
130135 clipboardData . Text = $ "Image:{ clipboardData . Time : yy-MM-dd-HH:mm:ss} ";
131136 if ( _settings . CacheImages ) Utils . SaveImageCache ( clipboardData , ClipCacheDir ) ;
132137 clipboardData . Icon = _clipboard . ClipboardImage . ToBitmapImage ( ) ;
133-
134138 break ;
135139 case SharpClipboard . ContentTypes . Files :
136140 var t = _clipboard . ClipboardFiles . ToArray ( ) ;
@@ -150,7 +154,7 @@ private void _OnClipboardChange(object? sender, SharpClipboard.ClipboardChangedE
150154 if ( _dataList . Any ( node => node . Equals ( clipboardData ) ) )
151155 return ;
152156 _dataList . AddFirst ( clipboardData ) ;
153- if ( _dataList . Count > MaxDataCount )
157+ if ( _dataList . Count > _maxDataCount )
154158 _dataList . RemoveLast ( ) ;
155159 CurrentScore ++ ;
156160 }
@@ -174,18 +178,17 @@ public void RemoveFromDatalist(ClipboardData clipboardData)
174178 _context ! . API . ChangeQuery ( _context . CurrentPluginMetadata . ActionKeyword , true ) ;
175179 }
176180
177- public void PinOneRecord ( ClipboardData clipboardData )
181+ public void PinOneRecord ( ClipboardData c )
178182 {
179- _dataList . Remove ( clipboardData ) ;
180- _dataList . AddLast ( clipboardData ) ;
183+ _dataList . Remove ( c ) ;
184+ if ( c . Type is SharpClipboard . ContentTypes . Text or SharpClipboard . ContentTypes . Files )
185+ c . Icon = c . Pined
186+ ? new BitmapImage ( new Uri ( _defaultPinIconPath , UriKind . RelativeOrAbsolute ) )
187+ : new BitmapImage ( new Uri ( _defaultIconPath , UriKind . RelativeOrAbsolute ) ) ;
188+ _dataList . AddLast ( c ) ;
181189 _context ! . API . ChangeQuery ( _context . CurrentPluginMetadata . ActionKeyword , true ) ;
182190 }
183191
184- // private Task<bool> HideMainWindow()
185- // {
186- //
187- // }
188-
189192 public void Save ( )
190193 {
191194 _settings ? . Save ( ) ;
0 commit comments