5 changed files with 324 additions and 192 deletions
@ -0,0 +1,14 @@ |
|||
using System; |
|||
using System.Windows.Input; |
|||
|
|||
namespace Microsoft.Windows.Controls |
|||
{ |
|||
public static class CalculatorCommands |
|||
{ |
|||
private static RoutedCommand _calculatorButtonClickCommand = new RoutedCommand(); |
|||
public static RoutedCommand CalculatorButtonClick |
|||
{ |
|||
get { return _calculatorButtonClickCommand; } |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,194 @@ |
|||
using System; |
|||
using System.Windows.Controls; |
|||
using System.Windows; |
|||
using System.Windows.Media; |
|||
|
|||
namespace Microsoft.Windows.Controls.Core.Utilities |
|||
{ |
|||
static class CalculatorUtilities |
|||
{ |
|||
public static Calculator.CalculatorButtonType GetCalculatorButtonTypeFromText(string text) |
|||
{ |
|||
switch (text) |
|||
{ |
|||
case "0": return Calculator.CalculatorButtonType.Zero; |
|||
case "1": return Calculator.CalculatorButtonType.One; |
|||
case "2": return Calculator.CalculatorButtonType.Two; |
|||
case "3": return Calculator.CalculatorButtonType.Three; |
|||
case "4": return Calculator.CalculatorButtonType.Four; |
|||
case "5": return Calculator.CalculatorButtonType.Five; |
|||
case "6": return Calculator.CalculatorButtonType.Six; |
|||
case "7": return Calculator.CalculatorButtonType.Seven; |
|||
case "8": return Calculator.CalculatorButtonType.Eight; |
|||
case "9": return Calculator.CalculatorButtonType.Nine; |
|||
case "+": return Calculator.CalculatorButtonType.Add; |
|||
case "-": return Calculator.CalculatorButtonType.Subtract; |
|||
case "*": return Calculator.CalculatorButtonType.Multiply; |
|||
case "/": return Calculator.CalculatorButtonType.Divide; |
|||
case "%": return Calculator.CalculatorButtonType.Percent; |
|||
case "\b": return Calculator.CalculatorButtonType.Back; |
|||
case "\r": |
|||
case "=": return Calculator.CalculatorButtonType.Equal; |
|||
} |
|||
|
|||
//check for the escape key
|
|||
if (text == ((char)27).ToString()) |
|||
return Calculator.CalculatorButtonType.Clear; |
|||
|
|||
return Calculator.CalculatorButtonType.None; |
|||
} |
|||
|
|||
public static Button FindButtonByCalculatorButtonType(DependencyObject parent, Calculator.CalculatorButtonType type) |
|||
{ |
|||
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) |
|||
{ |
|||
var child = VisualTreeHelper.GetChild(parent, i); |
|||
|
|||
object buttonType = child.GetValue(Button.CommandParameterProperty); |
|||
|
|||
if (buttonType != null && (Calculator.CalculatorButtonType)buttonType == type) |
|||
{ |
|||
return child as Button; |
|||
} |
|||
else |
|||
{ |
|||
var result = FindButtonByCalculatorButtonType(child, type); |
|||
|
|||
if (result != null) |
|||
return result; |
|||
} |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
public static string GetCalculatorButtonContent(Calculator.CalculatorButtonType type) |
|||
{ |
|||
string content = string.Empty; |
|||
switch (type) |
|||
{ |
|||
case Calculator.CalculatorButtonType.Add: |
|||
content = "+"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Back: |
|||
content = "Back"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Cancel: |
|||
content = "CE"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Clear: |
|||
content = "C"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Decimal: |
|||
content = "."; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Divide: |
|||
content = "/"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Eight: |
|||
content = "8"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Equal: |
|||
content = "="; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Five: |
|||
content = "5"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Four: |
|||
content = "4"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Fract: |
|||
content = "1/x"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.MAdd: |
|||
content = "M+"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.MC: |
|||
content = "MC"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.MR: |
|||
content = "MR"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.MS: |
|||
content = "MS"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.MSub: |
|||
content = "M-"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Multiply: |
|||
content = "*"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Nine: |
|||
content = "9"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.None: |
|||
break; |
|||
case Calculator.CalculatorButtonType.One: |
|||
content = "1"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Percent: |
|||
content = "%"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Seven: |
|||
content = "7"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Sign: |
|||
content = "+/-"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Six: |
|||
content = "6"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Sqrt: |
|||
content = "Sqrt"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Subtract: |
|||
content = "-"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Three: |
|||
content = "3"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Two: |
|||
content = "2"; |
|||
break; |
|||
case Calculator.CalculatorButtonType.Zero: |
|||
content = "0"; |
|||
break; |
|||
} |
|||
return content; |
|||
} |
|||
|
|||
public static bool IsDigit(Calculator.CalculatorButtonType buttonType) |
|||
{ |
|||
switch (buttonType) |
|||
{ |
|||
case Calculator.CalculatorButtonType.Zero: |
|||
case Calculator.CalculatorButtonType.One: |
|||
case Calculator.CalculatorButtonType.Two: |
|||
case Calculator.CalculatorButtonType.Three: |
|||
case Calculator.CalculatorButtonType.Four: |
|||
case Calculator.CalculatorButtonType.Five: |
|||
case Calculator.CalculatorButtonType.Six: |
|||
case Calculator.CalculatorButtonType.Seven: |
|||
case Calculator.CalculatorButtonType.Eight: |
|||
case Calculator.CalculatorButtonType.Nine: |
|||
return true; |
|||
default: |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
public static bool IsOperation(Calculator.CalculatorButtonType buttonType) |
|||
{ |
|||
switch (buttonType) |
|||
{ |
|||
case Calculator.CalculatorButtonType.Add: |
|||
case Calculator.CalculatorButtonType.Subtract: |
|||
case Calculator.CalculatorButtonType.Multiply: |
|||
case Calculator.CalculatorButtonType.Divide: |
|||
case Calculator.CalculatorButtonType.Percent: |
|||
return true; |
|||
default: |
|||
return false; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue