show top 5 CMD history when CMD query is empty.

This commit is contained in:
qianlifeng
2014-01-26 18:06:38 +08:00
parent e8b284a89c
commit 36018fe570
2 changed files with 32 additions and 9 deletions

View File

@@ -17,6 +17,24 @@ namespace WinAlfred.Plugin.System
protected override List<Result> QueryInternal(Query query)
{
List<Result> results = new List<Result>();
if (query.RawQuery == ">")
{
IEnumerable<Result> history = cmdHistory.OrderByDescending(o => o.Value)
.Select(m => new Result
{
Title = m.Key,
SubTitle = "this command has been executed " + m.Value + " times",
IcoPath = "Images/cmd.png",
Action = () =>
{
ExecuteCmd(m.Key);
AddCmdHistory(m.Key);
}
}).Take(5);
results.AddRange(history);
}
if (query.RawQuery.StartsWith(">") && query.RawQuery.Length > 1)
{
string cmd = query.RawQuery.Substring(1);

View File

@@ -163,13 +163,13 @@ namespace WinAlfred
Hide();
}
private void ShowWinAlfred()
private void ShowWinAlfred(bool selectAll = true)
{
Show();
Activate();
tbQuery.SelectAll();
Focus();
tbQuery.Focus();
if(selectAll) tbQuery.SelectAll();
}
public void ParseArgs(string[] args)
@@ -235,13 +235,8 @@ namespace WinAlfred
{
if (keyevent == KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed)
{
Dispatcher.BeginInvoke(new Action(() =>
{
resultCtrl.Clear();
ShowWinAlfred();
ChangeQuery(">");
WinRStroked = true;
}));
WinRStroked = true;
Dispatcher.BeginInvoke(new Action(OnWinRPressed));
return false;
}
if (keyevent == KeyEvent.WM_KEYUP && WinRStroked && vkcode == (int)Keys.LWin)
@@ -254,6 +249,16 @@ namespace WinAlfred
return true;
}
private void OnWinRPressed()
{
ShowWinAlfred(false);
if (tbQuery.Text != ">")
{
resultCtrl.Clear();
ChangeQuery(">");
}
}
private void TbQuery_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)