Commit Graph

159 Commits

Author SHA1 Message Date
Scott Freeman
00346cc5a3 Fixing typo in StandardCalculatorViewModel::UpdatecommandsInRecording… (#810)
* Fixing typo in StandardCalculatorViewModel::UpdatecommandsInRecordingMode
Removing unnecessary copy of vector in StandardCalculatorViewModel::UpdateCommandsInRecordingMode
Using range-for in StandardCalculatorViewModel::UpdateCommandsInRecordingMode

* Using static_cast instead of safe_cast for unsigned char to Command
2019-11-19 07:08:05 -08:00
Scott Freeman
582e10faed Updating RemoveUnwantedCharsFromString to be a template (#808) 2019-11-18 19:02:45 -08:00
Rudy Huyn
86307f206f Modify the declaration of some properties of StandardCalculatorViewModel to make them read-only and use macros (#799) 2019-11-14 08:08:03 -08:00
Rudy Huyn
1380c7ed83 Use only NumberBase to represent radix in CalcViewModel (#797) 2019-11-14 07:09:17 -08:00
Rudy Huyn
b9b0e068cd Convert CopyPasteManager to runtime class (#766)
* Convert CopyPasteManager to runtime class
* merge AssertUtils and Helpers.h
* update onpastemanager
2019-11-13 15:15:13 -08:00
Stephanie Anderl
442ed6a861 Key graph features (#704)
* Added IGraphAnalyzer

* Key Graph Features called and getting returned to the client. To do put all strings into the Equation object

* Updated UpdateKeyGraphFeatures to add function analysis data to all properties in Equation object

* Update KGF when variables are updated

* Key graph features ui started

* Added MathRichEditBox and started hooking up key graph features to the UI

* Updated EquationViewModel to include parity and periodicity

* Updated key graph features to update the EquationViewModel

* updated key graph features to display more values

* Key graph features populating uing MathRichEdit mode

* moved KeyGraphFeatures control to GraphingCalculator.xaml

* Use MathML formatting instead of MathRichEdit for strings passed back from the engine

* cleaned up project targeting and equation.h comments

* Updated equation edit box to populate for KeyGraphFeatures

* Fixed vcxproj files to have the correct targeting and certificates. KGF Title strings moved to x:Uid instead of the code behind

* Updated per PR feedback

* Update MathRichEditBox to detect if the string is a mathml string and use the appropriate set method to set the text

* fixed the issue where parity, periodicity and monotonicity could be set with an old value if the next one is empty

* KGF control UI adjustments and error handling

* Error control updates

* Error handling added when analysis fails

* fixed alignment on rich edit boxes

* Add monotonicity direction into the mathml string and only have 1 richeditbox

* Set hover state on KGF EquationEditBox to change button opacity and fixed spacing in Monotonicity RichEditBox

* remove sideload package certificate info VS added

* updated logic for setting error strings to be in the viewmodel

* Updated KeyGraphFeatures to populate dynamically using a ListView and TemplateSelector

* Update periodicity to not show if it isn't supported

* Fixed issue where y-intercept was using the x-intercept value

* Remove ItemsControl ItemsContainerStyle

* Updated per pr feedback. Fixed bug where analysis error would not reset

* Update MathRichEdit box to remove selection when focus is lost

* Updated mathrichedit to get LAF access for Dev, Release and Graphing projects

* Remove OnLostFocus in MathRichEdit, Change KGF ItemsControl back to ListView

* Clean up styles for KGF and ensure the match the comps

* Moved formatoptions logic to the Grapher constructor and reverted LineColor.Text resource that was mistakenly taken out

* Add copyright header to KGF Files

* fixed issue where asymptote values were not populating

* Disable KGF button when there is no equation. Fixed issue where equation populated in a new equationtextbox after the previous one was deleted

* Removed formatoptions testing lines used for debugging
2019-11-12 13:46:11 -08:00
Scott Freeman
01299a92cd Updating code to append a wchar_t instead of const wchar_t (#778) 2019-11-11 09:23:34 -08:00
Rudy Huyn
4c81ed83c7 use Command instead of int to represent a command id (#781) 2019-11-06 15:45:31 -08:00
Rudy Huyn
5df3016df6 Fully separate Calculator and CalcManager (#752) 2019-11-06 15:31:57 -08:00
Scott Freeman
be68e72a9a Updating StandardCalculatorViewModel to use algorithms (#776)
- Using default wstring constructor instead of taking empty string literal
- Updated to for range-for where appropriate
- Used std::find for IsOp* code that was doing it by hand
- Used std::count to calculate LengthWithoutPadding
- Used existing wstring constructor to pad a string
2019-11-06 12:07:23 -08:00
Rudy Huyn
caa1c6bb9d Convert DateCalculatorViewModel to runtime class (#769) 2019-11-06 06:58:34 -08:00
Rudy Huyn
577aafb3f4 Migrate TraceLogger to runtime class (#772) 2019-11-05 18:59:24 -08:00
Rudy Huyn
613aaebf6f fix DateDifference::operator== (#762) 2019-11-05 16:51:03 -08:00
Rudy Huyn
e38e911bfa Modify how Calculator manages the visibility of the History button (#712)
* Modify how Calculator manages the History button + code cleaning

* remove extra include
2019-11-05 15:04:28 -08:00
Rudy Huyn
136ade6aa8 Replace wstring used in public methods by Platform::String in CalcViewModel (#768) 2019-11-05 13:57:48 -08:00
Rudy Huyn
049d3f4c6c Revert "Replace wstring used in public methods by Platform::String in CalcViewModel (#758)" (#767)
This reverts commit 93f1f784bb.
2019-11-04 17:54:12 -08:00
Rudy Huyn
93f1f784bb Replace wstring used in public methods by Platform::String in CalcViewModel (#758) 2019-11-04 17:16:16 -08:00
Scott Freeman
5e46ceabc8 Making string concatenations more efficent (#760)
by appending wchar_ts instead of  wstrings
2019-10-31 11:44:25 -07:00
Scott Freeman
6366e0c535 Replacing CalculatorVector usage with std::vector (#756)
* Replacing CalculatorVector usage with std::vector

Assumptions made here are that memory allocations
are not recoverable.  If it can be proved that an index
will be in range, then the indexing operation is used.
If not (without manual checks) the std::vector::at function
is used to throw an exception in case of a programmer bug.

* Changes based on PR feedback

Using auto& in CalculatorCollector::UpdateHistoryExpression
so the token.first value is properly updated.

Using range for loop to GenerateExpressions.

Setting isEditable directly to the result of boolean expression.

Using token.second directly instead of creating a
separate tokenCommandIndex variable.

* Fixing issue with generating expressions strings.

A space should not be added before the first item.
2019-10-30 10:55:13 -07:00
Rudy Huyn
bc2d2d4e9d use short date (#739) 2019-10-29 11:14:11 -07:00
Rudy Huyn
8db4c2b25a Allow negative numbers without digits before the decimal point (#743) 2019-10-28 10:17:02 -07:00
Mateusz
bfa5f81ef6 Do not hide expression when user presses Enter or = (#695)
* #653 Do not hide expression on EQU operation

* #653 Clear expression, when user makes an action

* #653 Fixed UI tests

* #653 Review fixes
2019-10-18 13:40:13 -07:00
Rudy Huyn
b97046ad67 Allow users to paste expressions with ^or % (#682) 2019-10-18 11:07:51 -07:00
Rudy Huyn
05eda81ba2 Add E-notation support to CopyPasteManager for standard mode (#687)
* Add scientific notation support to CopyPasteManager for standard mode

* improve c_signedDecFloat to ignore '.'

* fix c_signedDecFloat
2019-10-14 10:16:31 -07:00
Pepe Rivera
55074c2312 Update Calculator keyboard for greater consistency and extensibility (#688) 2019-10-03 15:56:44 -07:00
Pepe Rivera
9cb0932eaa Update Calc Engine for new functions needed for keyboard refresh (#662)
* Update Calc Engine to Support New Functionality

* Address PR comments

* Address PR comments
2019-09-30 14:04:20 -07:00
Matt Cooley
d9bf57ff99 Code cleanup: simplify NarratorNotifier (#646)
Now that the RaiseNotificationEvent API is available on all platforms where the Calculator app runs, we can remove the factory classes which switched between RaiseNotificationEvent and an alternative implementation based on live regions.
2019-09-29 16:42:37 -07:00
Pepe Rivera
7864fe6413 Update color picker (#668) 2019-09-25 10:48:56 -07:00
Pepe Rivera
b2dd55a64f Switch to RichEdit math mode in EquationTextBox (#672)
* Use RichEdit Math Mode

* Add comment

Co-Authored-By: Stephanie Anderl <46726333+sanderl@users.noreply.github.com>
2019-09-23 11:51:08 -07:00
Pepe Rivera
41fbcfe9c5 Merge master into feature/GraphingCalculator branch (#660) 2019-09-05 15:01:12 -07:00
Stephanie Anderl
98908c627f Updated Win UI to 2.2 for Calculator and CalcViewModel projects (#658) 2019-09-05 10:23:35 -07:00
Pepe Rivera
6b8a83a2f9 Remove ProgModeRadixChange unload (#641) 2019-09-04 14:20:58 -07:00
Rudy Huyn
41e2e97591 Optimize BitFlipPanel to suppress flicker when users switch between bit lengths (#640)
* Optimize BitFlipPanel

* remove namespace in cpp file

* improve localization + add tests

* add helper to compare ivector

* Modify how the control manages AutomationProperties::Name
2019-08-26 09:31:13 -07:00
Rudy Huyn
eb24c085bc General improvement of the title bar for Always-On-Top. (#634)
* Make sure TitleBar takes into account the AOT mode change

* remove namespaces in cpp files

* code linting

* use macro for IsAlwaysOnTop and make IsAlwaysOnTop/DisplayNormalAlwaysOnTopOption read-only

* Fix FontWeight
2019-08-23 13:42:00 -07:00
Wei (Waley) Zhang
672e88187b Fixes Always-on-Top crashes (#626) 2019-08-06 19:52:19 -07:00
Rudy Huyn
cc8491a3d7 Currency rate: always display minimum 4 significant decimals or 2 trailing zeros if the number is integer (#256)
* Currency rate: Compute how many decimals we need to display two meaningful digits at minimum

* formatting

* nit

* Increase the number of meaningfull digits (2->4)

* Revert "Increase the number of meaningfull digits (2->4)"

This reverts commit 9ad93e0d591a386e3e229e09b39a58158d544069.

* Rename constants

* modify FORMATTER_RATE_* values

* format CurrencyConverterUnitTests.cpp
2019-08-01 15:07:27 -07:00
Wei (Waley) Zhang
796d171960 Always-on-Top mode implemented (#579) 2019-07-30 17:53:39 -07:00
Seulgi Kim
af8322617f Restore user preferences (#456)
### Description of the changes:
**1) Do not set units to default values if they already have valid values** 
This fixes the actual issue. `UnitConverter::InitializeSelectedUnits()` ( this function resets all units to their default units if available for the current category ) gets called after `UnitConverterViewModel::RestoreUserPreferences()` ( this function restores user preferences ).
So Calculator has been restoring saved values, and then overriding the restored values with default values.
I modified `InitializeSelectedUnits()` so that we only initialize units only when they are not already set to valid units for the current category.

**2) Removed `m_isFirstTime`** 
I noticed that we are calling `RestoreUserPreferences()`  twice when Calculator starts up, and the function is restoring the same value both times

The below happens when Calculator starts up
1) On startup, in `UnitConverterViewModel::InitializeView()`, `RestoreUserPreferences()` is called.
2) `RestoreUserPreferences()` in turn triggers `OnUnitChanged()`
3) During the first call to `OnUnitChanged()`, m_IsFirstTime is `True`, so we call `RestoreUserPreferences()` again while also setting `m_IsFirstTime` to `False`. 
4) `RestoreUserPreference()` again triggers `OnUnitChanged()`
5) During the second call to `OnUnitChanged()`,  m_IsFirstTime is `False`, so we call `SaveUserPreferences()`

I think we should only call `SaveUserPreferences()` inside `OnUnitChanged()` since we already restored user preferences during view initialization. I can't really think of a reason to restore units after view has been initialized. This led me to just delete `m_isFirstTime`.


### How changes were validated:
Manually tested that units and the current category are properly selected when you quit and start Calculator.

![GifMaker_20190414182150911](https://user-images.githubusercontent.com/3166423/56102706-88f73400-5ee3-11e9-8bbf-7a0c8e051a5c.gif)

![GifMaker_20190414183403644](https://user-images.githubusercontent.com/3166423/56102763-f0ad7f00-5ee3-11e9-99ef-3b932f587393.gif)

## Fixes #445.
2019-07-29 09:39:19 -07:00
Stephanie Anderl
8106691d7c Fixed issue where UI Responsive events were not fired (#603)
* Fixed the WindowIdLog so that it is updated when a new WindowCreated event is fired

* Updated the windowidlog check in LogWindowCreated to use IsWindowIdInLog
2019-07-26 11:51:01 -07:00
Pepe Rivera
46f11c7c72 Add variable editing (#581) 2019-07-24 11:23:33 -07:00
Stephanie Anderl
bb027aa9c3 Added Input pasted event and added to all modes (#593) 2019-07-18 11:21:35 -07:00
Matt Cooley
01cfe6dd89 Fix 32-bit build (#588) 2019-07-17 19:00:19 -07:00
Stephanie Anderl
a6384269bc Updated Calculator diagnostic data collection per the specification (#572)
- Removed unneeded diagnostic events and code
- Added and consolidated events into the events defined in the spec
2019-07-17 18:09:39 -07:00
Rudy Huyn
a35a030683 Use the current locale to sort country names (#259) 2019-07-16 11:44:12 -07:00
Stephanie Anderl
a418777f02 Merge master into feature/GraphingCalculator branch (#585)
* Merge master into feature/GraphingCalculator branch
2019-07-15 11:17:21 -07:00
Rudy Huyn
2a5a52d44d Date difference: display the difference in days (only) when we aren't able to calculate the difference in days/weeks/months.. (#555)
* Display date difference in days if can't display in days/weeks/months/...

* add comments

* remove not used variable totalDaysDiff

* improve UpdateDisplayResult

* Display error message when the calculator can't calculate the difference between 2 dates
2019-06-30 18:22:29 -07:00
Matt Cooley
b3432c93c8 Update to SDK 18362 (#568) 2019-06-27 09:53:06 -07:00
Rudy Huyn
cb5dfdda7b Modify ClipTime to adjust to local time before clipping (#558) 2019-06-26 16:17:47 -07:00
Pepe Rivera
1475b49120 Create EquationTextBox control (#547) 2019-06-25 13:40:56 -07:00
Matt Cooley
33b885ac17 Update to v142 build tools for Visual Studio 2019 (#548)
* Update to build tools v142
* Update official build pipelines to use VS2019
* Update instructions to suggest updating to VS2019
2019-06-24 16:38:45 -07:00