From 70339423d011ec07afacd77c4e0524784608a785 Mon Sep 17 00:00:00 2001 From: qianlifeng Date: Tue, 7 Jan 2014 23:27:05 +0800 Subject: [PATCH] start issue#11 --- Plugins/WinAlfred.Plugin.Fanyi/Main.cs | 2 + WinAlfred.Plugin.System/Sys.cs | 2 +- WinAlfred/App.xaml | 3 +- WinAlfred/Commands/BaseCommand.cs | 5 +- WinAlfred/Commands/SystemCommand.cs | 2 +- WinAlfred/DispatcherExtensions.cs | 11 +++- WinAlfred/Helper/SelectedRecords.cs | 38 +++++++++++++ WinAlfred/Images/enter.png | Bin 0 -> 367 bytes WinAlfred/Images/exit.png | Bin 2724 -> 1731 bytes WinAlfred/Images/lock.png | Bin 4625 -> 1602 bytes WinAlfred/MainWindow.xaml | 2 +- WinAlfred/MainWindow.xaml.cs | 74 ++++++++++++++++++++----- WinAlfred/PluginLoader/Plugins.cs | 11 +++- WinAlfred/ResultItem.xaml | 4 +- WinAlfred/ResultItem.xaml.cs | 9 +++ WinAlfred/ResultPanel.xaml.cs | 8 +-- WinAlfred/WinAlfred.csproj | 1 + 17 files changed, 139 insertions(+), 33 deletions(-) create mode 100644 WinAlfred/Helper/SelectedRecords.cs create mode 100644 WinAlfred/Images/enter.png diff --git a/Plugins/WinAlfred.Plugin.Fanyi/Main.cs b/Plugins/WinAlfred.Plugin.Fanyi/Main.cs index 66559b8be0..cdbbc41677 100644 --- a/Plugins/WinAlfred.Plugin.Fanyi/Main.cs +++ b/Plugins/WinAlfred.Plugin.Fanyi/Main.cs @@ -5,7 +5,9 @@ using System.Linq; using System.Net; using System.Reflection; using System.Text; +using System.Threading; using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; using Newtonsoft.Json; namespace WinAlfred.Plugin.Fanyi diff --git a/WinAlfred.Plugin.System/Sys.cs b/WinAlfred.Plugin.System/Sys.cs index 2494cfc6dc..69db348fe5 100644 --- a/WinAlfred.Plugin.System/Sys.cs +++ b/WinAlfred.Plugin.System/Sys.cs @@ -70,7 +70,7 @@ namespace WinAlfred.Plugin.System Title = "Exit", SubTitle = "Close this app", Score = 110, - IcoPath = "Images\\exit.png", + IcoPath = "Images\\ico.png", Action = () => context.CloseApp() }); } diff --git a/WinAlfred/App.xaml b/WinAlfred/App.xaml index 1a43596b7a..43657b4414 100644 --- a/WinAlfred/App.xaml +++ b/WinAlfred/App.xaml @@ -10,7 +10,7 @@ - + @@ -53,6 +53,7 @@ + diff --git a/WinAlfred/Commands/BaseCommand.cs b/WinAlfred/Commands/BaseCommand.cs index aa3dfbdb75..fd16c8ab55 100644 --- a/WinAlfred/Commands/BaseCommand.cs +++ b/WinAlfred/Commands/BaseCommand.cs @@ -20,10 +20,7 @@ namespace WinAlfred.Commands protected void UpdateResultView(List results) { - if (results.Count > 0) - { - window.OnUpdateResultView(results); - } + window.OnUpdateResultView(results); } } } diff --git a/WinAlfred/Commands/SystemCommand.cs b/WinAlfred/Commands/SystemCommand.cs index 52ff2d5d6e..7ecad98203 100644 --- a/WinAlfred/Commands/SystemCommand.cs +++ b/WinAlfred/Commands/SystemCommand.cs @@ -31,7 +31,7 @@ namespace WinAlfred.Commands result.PluginDirectory = pair1.Metadata.PluginDirecotry; result.OriginQuery = query; } - UpdateResultView(results); + if(results.Count > 0) UpdateResultView(results); }); } } diff --git a/WinAlfred/DispatcherExtensions.cs b/WinAlfred/DispatcherExtensions.cs index 72f5be8edf..15a56bfa71 100644 --- a/WinAlfred/DispatcherExtensions.cs +++ b/WinAlfred/DispatcherExtensions.cs @@ -13,7 +13,14 @@ namespace WinAlfred private static readonly object syncRoot = new object(); public static string DelayInvoke(this Dispatcher dispatcher, string namedInvocation, - Action action, TimeSpan delay, + Action action, TimeSpan delay, + DispatcherPriority priority = DispatcherPriority.Normal) + { + return DelayInvoke(dispatcher, namedInvocation, action, delay, string.Empty, priority); + } + + public static string DelayInvoke(this Dispatcher dispatcher, string namedInvocation, + Action action, TimeSpan delay, string arg, DispatcherPriority priority = DispatcherPriority.Normal) { lock (syncRoot) @@ -29,7 +36,7 @@ namespace WinAlfred var timer = new DispatcherTimer(delay, priority, (s, e) => { RemoveTimer(namedInvocation); - action(); + action(arg); }, dispatcher); timer.Start(); timers.Add(namedInvocation, timer); diff --git a/WinAlfred/Helper/SelectedRecords.cs b/WinAlfred/Helper/SelectedRecords.cs new file mode 100644 index 0000000000..8e773cfcbd --- /dev/null +++ b/WinAlfred/Helper/SelectedRecords.cs @@ -0,0 +1,38 @@ +using WinAlfred.Plugin; + +namespace WinAlfred.Helper +{ + public class SelectedRecords + { + private int hasAddedCount = 0; + + public void LoadSelectedRecords() + { + + } + + public void AddSelect(Result result) + { + hasAddedCount++; + if (hasAddedCount == 10) + { + SaveSelectedRecords(); + hasAddedCount = 0; + } + + + + + } + + public int GetSelectedCount(Result result) + { + return 0; + } + + public void SaveSelectedRecords() + { + + } + } +} diff --git a/WinAlfred/Images/enter.png b/WinAlfred/Images/enter.png new file mode 100644 index 0000000000000000000000000000000000000000..0999b37cd721455c0e0d80e2ba1e575e36c5c416 GIT binary patch literal 367 zcmV-#0g(QQP)kdg0003tNklP9G&dyU!;qxWJwVO zF?2II7kk*6)DVX*{q66=o8!1JbV7)gbtxk;hJF7+3iL}&`z|Tsaiz#FIi874k;Eu4 z3TQ5A4Gd^ukS3c}h0g&2wM-vra7>p2{u`ahfXeDade!wdH696N>mByRqH8?JWA%=6 z1UfGZ03a`rvAr>~UC|>$I5SR;Yq9`zn8OK{)RWoZ@9~MWSK|giw>iN9tFFOppowzD z1|f7+&M<7EO+F|Bev;BWyBq+qHbBnr_Xx`AkH+^A&M*ZKH((Nrv#BQeL|0i?OQ)#T ztE%8737EuP8wVryCm6T9vqmVJI97?IaQP2c3MFexTO?wBZ9{$1z5v=RREDvw-r@iN N002ovPDHLkV1h7Ho7VsU literal 0 HcmV?d00001 diff --git a/WinAlfred/Images/exit.png b/WinAlfred/Images/exit.png index 523c3d5197db3825be40fa89af1c943ec37dbcbd..af7c738244dfc50d7e896fdf41adad6283ba3d7f 100644 GIT binary patch delta 1697 zcmV;S244B36~hf7iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPqe+E@a zL_t(og}s(th+Wkc$A4?>eeZl;O;a-H1d}!)A(;_1RGOEmB_K_)$p|8f526x?w&_Dj zq|k>})OLcY(56(U4+Tr8NpWl^HiblLELBACA(DVPt=c-nOkyXQnatezy!V{F`*8L- z_uM-lZC|=Ci?i1LSnI$3Ykyqvf8GNy-g9fWFUBwQ=#~wUk z%!AA6OHi4F&#JJ;&dn`86a9T`doy5yXii_tmNZz9yuMnW16rX_fbLQFe}Q%Li(f4e zvI&xJzClmLtS)(o5m&+D-z_L024I^p< z>%Cu-ZfS6;fD{U}tXr35f6~^`k&XW^KvV_I16a+81FAqJXE!z%#xE6%TwTRiBLERa zW4HEZbHLT6CO$oOj8BdqXSlVMcohI6M~?9I>1p)L89r-kTayg{6~*FR9o>!DT`v?U z4h+zG@)UHkSieEvKi-*XRNo}63;el(yM**?%mw_)?56ev$KxP`ct5&3y@Z%zpsz(`|r00mMM%<(K*V(MO4+2!NZqyV>~Si&UtmzK#KWjg&mn*;0wFC!VMa?)v+) z>vSas9I$ZW1Xp@{e~Bs;0J`qIm$6;DmSvv+P&D>9zk;L6BahI0!wmoo4-Qi8@6X2K zC?Z;1tgR`R>+b#evuC;d(o5O+rl+1-#+n0A@fxWvecq6j18#Zv;mn?Y{`p#Pz(o<` z0|VLk?5R_=u^@|meYjAHo%{Dw5y|FPfKfoLan^g!Ja8HKe91>C#u z5|f;g)J^%o0mjaqBOV`z+`dR_9gU1IH$G0OvlCGzZf_?lmzf2o0!S6by08nE0tgF~ zfGwp`!bTKjM>GvC0M#lpCr@TU^TAVlX?mJcXD0v?>()^%m+Q))Dp=?1w^S4mN}#OR z*2X_OI@oaSe=5e;{s#!4_;6|jC$$n)frV0uuB}^>B;pu1H%DVrmD(|EY-4Y}nPjU< z>wWi8ZYnU{Qe>*NiK(_`rrMjCXm4e*y@l)T%}lp8Gt<(pQnF_PCXUXDOinE2C~%)aCBVdh&~vDRPZV%=d z(Bv^{q{SMgeC{j@6B7Vz*tU(%XMaLfr9N;5#%7?Z#<1yU$63F5GXQhft}*+&Qy62i zvSzW2pe}a{hzQ0g#wdPnmZ2vPXJfm+{TX*@B+KN7(Y)R~X*5lbP6oCQfIZ zvX@Csw!e>;R4lN?PC#(2C}y!SZgQ59qmE{Mo3 zYZYS>DveQ$HQ0dMSj$a6dWMY$4lb)>V~eX*hWmfX#83N(V@Djt#IYj^dX(Bx%+8&g z-qUpBi6jgpqL}biljxI2pXQT&ck{2oSF_hH-@J2NIrAEyesd4ypC3yY4C_;NQ{N(z zf7xO3y>tAaWbJ7J-ss``6GqU3x?@)JRXcN(bRAT5nCicOE8H5d~Z3RH`x38cOx^_(~r z=;&BiDHQDqYmEMa*nKIgMth=a6n1MkHYx3zY)Yeonxrh6)i;18WEm1D6fMQ3Bq=M#@z(0=O-;q$NaIcT|8D;VVTWwY!O_+O00000NkvXXu0mjf*b6^D delta 2698 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 Eg0x^5*8l(j diff --git a/WinAlfred/Images/lock.png b/WinAlfred/Images/lock.png index 5a1593aafe22172c236d3b72df8c532c64849620..3eaa9abaa05d87a830a838e2aa9e1d830ac43729 100644 GIT binary patch literal 1602 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 Hu0mjf9Dlqa diff --git a/WinAlfred/MainWindow.xaml b/WinAlfred/MainWindow.xaml index d07aa89fd4..02da826d89 100644 --- a/WinAlfred/MainWindow.xaml +++ b/WinAlfred/MainWindow.xaml @@ -19,7 +19,7 @@ - + diff --git a/WinAlfred/MainWindow.xaml.cs b/WinAlfred/MainWindow.xaml.cs index 00e00e86ca..35fd1f2992 100644 --- a/WinAlfred/MainWindow.xaml.cs +++ b/WinAlfred/MainWindow.xaml.cs @@ -26,6 +26,8 @@ namespace WinAlfred private NotifyIcon notifyIcon; private Command cmdDispatcher; Storyboard progressBarStoryboard = new Storyboard(); + private bool queryHasReturn = false; + SelectedRecords selectedRecords = new SelectedRecords(); public MainWindow() { @@ -40,10 +42,10 @@ namespace WinAlfred private void InitProgressbarAnimation() { - DoubleAnimation da = new DoubleAnimation(progressBar.X2, Width + 100, new Duration(new TimeSpan(0, 0, 0,0,1600))); - DoubleAnimation da1 = new DoubleAnimation(progressBar.X1, Width, new Duration(new TimeSpan(0, 0, 0, 0,1600))); - Storyboard.SetTargetProperty(da, new PropertyPath("(Line.X1)")); - Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X2)")); + DoubleAnimation da = new DoubleAnimation(progressBar.X2, Width + 100, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); + DoubleAnimation da1 = new DoubleAnimation(progressBar.X1, Width, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); + Storyboard.SetTargetProperty(da, new PropertyPath("(Line.X2)")); + Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X1)")); progressBarStoryboard.Children.Add(da); progressBarStoryboard.Children.Add(da1); progressBarStoryboard.RepeatBehavior = RepeatBehavior.Forever; @@ -81,20 +83,45 @@ namespace WinAlfred } } + protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) + { + base.OnMouseLeftButtonDown(e); + + // Begin dragging the window + this.DragMove(); + } + private void TextBoxBase_OnTextChanged(object sender, TextChangedEventArgs e) { resultCtrl.Dirty = true; Dispatcher.DelayInvoke("UpdateSearch", - () => + o => { - resultCtrl.Clear(); + Dispatcher.DelayInvoke("ClearResults", i => + { + // first try to use clear method inside resultCtrl, which is more closer to the add new results + // and this will not bring splash issues.After waiting 30ms, if there still no results added, we + // must clear the result. otherwise, it will be confused why the query changed, but the results + // didn't. + if (resultCtrl.Dirty) resultCtrl.Clear(); + }, TimeSpan.FromMilliseconds(30), null); var q = new Query(tbQuery.Text); cmdDispatcher.DispatchCommand(q); + queryHasReturn = false; + if (Plugins.HitThirdpartyKeyword(q)) + { + Dispatcher.DelayInvoke("ShowProgressbar", originQuery => + { + if (!queryHasReturn && originQuery == tbQuery.Text) + { + StartProgress(); + } + }, TimeSpan.FromSeconds(1), tbQuery.Text); + } + }, TimeSpan.FromMilliseconds(300)); - } - private void StartProgress() { progressBar.Visibility = Visibility.Visible; @@ -124,7 +151,7 @@ namespace WinAlfred } } - public void SetAutoStart(bool IsAtuoRun) + private void SetAutoStart(bool IsAtuoRun) { string LnkPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "//WinAlfred.lnk"; if (IsAtuoRun) @@ -148,10 +175,10 @@ namespace WinAlfred Plugins.Init(this); cmdDispatcher = new Command(this); InitialTray(); + selectedRecords.LoadSelectedRecords(); SetAutoStart(true); //var engine = new Jurassic.ScriptEngine(); //MessageBox.Show(engine.Evaluate("5 * 10 + 2").ToString()); - StartProgress(); } private void TbQuery_OnPreviewKeyDown(object sender, KeyEventArgs e) @@ -174,7 +201,15 @@ namespace WinAlfred break; case Key.Enter: - if (resultCtrl.AcceptSelect()) HideWinAlfred(); + Result result = resultCtrl.AcceptSelect(); + if (result != null) + { + selectedRecords.AddSelect(result); + if (!result.DontHideWinAlfredAfterAction) + { + HideWinAlfred(); + } + } e.Handled = true; break; } @@ -182,11 +217,20 @@ namespace WinAlfred public void OnUpdateResultView(List list) { - resultCtrl.Dispatcher.Invoke(new Action(() => + queryHasReturn = true; + progressBar.Dispatcher.Invoke(new Action(StopProgress)); + if (list.Count > 0) { - List l = list.Where(o => o.OriginQuery != null && o.OriginQuery.RawQuery == tbQuery.Text).OrderByDescending(o => o.Score).ToList(); - resultCtrl.AddResults(l); - })); + list.ForEach(o => + { + o.Score += selectedRecords.GetSelectedCount(o); + }); + resultCtrl.Dispatcher.Invoke(new Action(() => + { + List l = list.Where(o => o.OriginQuery != null && o.OriginQuery.RawQuery == tbQuery.Text).OrderByDescending(o => o.Score).ToList(); + resultCtrl.AddResults(l); + })); + } } #region Public API diff --git a/WinAlfred/PluginLoader/Plugins.cs b/WinAlfred/PluginLoader/Plugins.cs index 42f527bf09..06bbceb65b 100644 --- a/WinAlfred/PluginLoader/Plugins.cs +++ b/WinAlfred/PluginLoader/Plugins.cs @@ -24,9 +24,9 @@ namespace WinAlfred.PluginLoader Plugins = plugins, ChangeQuery = s => window.ChangeQuery(s), CloseApp = window.CloseApp, - HideApp = window.HideApp, + HideApp = window.HideApp, ShowApp = window.ShowApp, - ShowMsg = (title,subTitle,iconPath) => window.ShowMsg(title,subTitle,iconPath) + ShowMsg = (title, subTitle, iconPath) => window.ShowMsg(title, subTitle, iconPath) })); } } @@ -35,5 +35,12 @@ namespace WinAlfred.PluginLoader { get { return plugins; } } + + public static bool HitThirdpartyKeyword(Query query) + { + if (string.IsNullOrEmpty(query.ActionName)) return false; + + return plugins.Any(o => o.Metadata.PluginType == PluginType.ThirdParty && o.Metadata.ActionKeyword == query.ActionName); + } } } diff --git a/WinAlfred/ResultItem.xaml b/WinAlfred/ResultItem.xaml index 50235dc9a4..34d3ef4d25 100644 --- a/WinAlfred/ResultItem.xaml +++ b/WinAlfred/ResultItem.xaml @@ -22,8 +22,8 @@ sdfdsf - - + + diff --git a/WinAlfred/ResultItem.xaml.cs b/WinAlfred/ResultItem.xaml.cs index 63cdba5678..389ee3af3a 100644 --- a/WinAlfred/ResultItem.xaml.cs +++ b/WinAlfred/ResultItem.xaml.cs @@ -27,6 +27,15 @@ namespace WinAlfred selected = value; BrushConverter bc = new BrushConverter(); Background = selected ? (Brush)(bc.ConvertFrom("#d1d1d1")) : (Brush)(bc.ConvertFrom("#ebebeb")); + if (selected) + { + img.Visibility = Visibility.Visible; + img.Source = new BitmapImage(new Uri(Directory.GetCurrentDirectory()+"\\Images\\enter.png")); + } + else + { + img.Visibility = Visibility.Hidden; + } } } diff --git a/WinAlfred/ResultPanel.xaml.cs b/WinAlfred/ResultPanel.xaml.cs index 35af12e2ac..26aa8f9598 100644 --- a/WinAlfred/ResultPanel.xaml.cs +++ b/WinAlfred/ResultPanel.xaml.cs @@ -192,10 +192,10 @@ namespace WinAlfred Select(0); } - public bool AcceptSelect() + public Result AcceptSelect() { int index = GetCurrentSelectedResultIndex(); - if (index < 0) return false; + if (index < 0) return null; var resultItemControl = pnlContainer.Children[index] as ResultItem; if (resultItemControl != null) @@ -205,10 +205,10 @@ namespace WinAlfred resultItemControl.Result.Action(); } - return !resultItemControl.Result.DontHideWinAlfredAfterAction; + return resultItemControl.Result; } - return true; + return null; } public ResultPanel() diff --git a/WinAlfred/WinAlfred.csproj b/WinAlfred/WinAlfred.csproj index 197c21d9ef..66418b728f 100644 --- a/WinAlfred/WinAlfred.csproj +++ b/WinAlfred/WinAlfred.csproj @@ -112,6 +112,7 @@ ResultItem.xaml + MSBuild:Compile Designer