* renamed MockGraphingImpl to GraphingImpl, updated the nuget.config to include the WindowsApps feed
* Revert nuget.config change
* Updated vcxproj files to output to the same directory regardless of configuration
* Removed outder used GenerateProjectSpecificOutputfolder instead
* revert commenting out the temporary.pfx cert in the calculator.vcxproj file
* init
* Replace the Add equation button by an EquationTextBox
* Move automatically the focus to the next textbox when users press Enter
* nit
* localize the placeholder
* rebase
* rebased and disable remove context menu when the equation is the last one
* replace storyboards by setters in visual states
* Add context menu to rich edit to allow for keyboard support
* Update src/Calculator/Controls/EquationTextBox.cpp
Co-Authored-By: Pepe Rivera <joseartrivera@gmail.com>
* Check for focus before triggering submit
* Added enable/disable line functionality
* Update EquationTextBox to change the opacity of functions have are not visible. Update the function label for the EquationTextBox to increment the label to show f1, f2, f3, etc
* rebase key-graph-features and fix issue where removing an equation box and adding a new one repopulates the previous equation
* Added visibility icon for the equation button hover
* updated EquationButton to be a toggle button to better handle the LineHidden state and other PR comment fixes.
* Updated EquationButton style to use a toggle button and to have placeholder icons for the show/hide states
* Updated equation button after pulling the refactor work into the branch. Fixed the Equation Button in KGF UI
* Fixed Pepe's bugs
* Uncomment temporary.pfx in calculator.vcxproj
* 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
* 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.
* Plumebd with data transfer
* Getting mainpage to talk to getbitmap. moving share callbacks from mainpage to graphingcalculator
* Trying to get bitmap from renderer.
* work
* Share worked
* cleanups
* Cleanups progressing
* Share working, need loc for title string and user notification incase of a failure. Then add the equations key.
* More cleanup, now using share icon image and resources for strings. Still need to do the graph equation key.
* Change share to html based start.
* Key working, with UL but going to try changing to table.
* Fix a html formating error, generating a new UL for each equation.
* Switched over to a table for equation key and have color block formating
* Updates from PR feedback, using Graphing::IBitmap abstraction.
* Update src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h
Fixed
Co-Authored-By: Pepe Rivera <joseartrivera@gmail.com>
* PR Updates.
* Add variables to the graph key.
* eod
* Passive graph value tracing working.
* Basic active tracing cursor working.
* Move active tracing from graphingcalculator to grapher to save some hops.
Also block tracking of the active tracing key's when in the EquationTextBox.
* Active tracing working, need to put button on screen for activation.
* Added active tracing control button (placeholder image)
* Eod
* Popup trace value now tracks the highlighted point.
* Popup skined
* PR Updates.
* Update certificate thumbnail so VS2019 doesn't have a build error.
* PR comments in process.
* PR Updates
* PR Updates, change tracing value to use tooltip static resource so we automatically change depending on system values. And changed text formatting of the value to be generic (x,y) value.
* PR updates, changed how we detect who has focus so we don't eat keys when not in active tracing.
* Additional filtering for the Key Up/Down in the grapher.
* Fix bug where active tracing would turn back on after clicking button to turn it off.
* Added new dev app icons
* Removed VS added page include in calculator.vcsxproj.filters and increased the internal version number and the app version number
* Plumebd with data transfer
* Getting mainpage to talk to getbitmap. moving share callbacks from mainpage to graphingcalculator
* Trying to get bitmap from renderer.
* work
* Share worked
* cleanups
* Cleanups progressing
* Share working, need loc for title string and user notification incase of a failure. Then add the equations key.
* More cleanup, now using share icon image and resources for strings. Still need to do the graph equation key.
* Change share to html based start.
* Key working, with UL but going to try changing to table.
* Fix a html formating error, generating a new UL for each equation.
* Switched over to a table for equation key and have color block formating
* Updates from PR feedback, using Graphing::IBitmap abstraction.
* Update src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h
Fixed
Co-Authored-By: Pepe Rivera <joseartrivera@gmail.com>
* PR Updates.
* Add variables to the graph key.
* eod
* Passive graph value tracing working.
* Basic active tracing cursor working.
* Move active tracing from graphingcalculator to grapher to save some hops.
Also block tracking of the active tracing key's when in the EquationTextBox.
* Active tracing working, need to put button on screen for activation.
* Added active tracing control button (placeholder image)
* Eod
* Popup trace value now tracks the highlighted point.
* Popup skined
* PR Updates.
* Update certificate thumbnail so VS2019 doesn't have a build error.
* PR comments in process.
* PR Updates
* PR Updates, change tracing value to use tooltip static resource so we automatically change depending on system values. And changed text formatting of the value to be generic (x,y) value.
* PR updates, changed how we detect who has focus so we don't eat keys when not in active tracing.
* Additional filtering for the Key Up/Down in the grapher.
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.
Adds a Copy button to the context menu for history menu items located above the delete button in the menu. Copy only copies the result and not the entire content of the history item (equation and result).
Fixes#429
* 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
Move back the VisualStateManager node to the root XAML element to fix visual states of the titlebar.
### How changes were validated:
- Manually
Fixes#631
* Plumebd with data transfer
* Getting mainpage to talk to getbitmap. moving share callbacks from mainpage to graphingcalculator
* Trying to get bitmap from renderer.
* work
* Share worked
* cleanups
* Cleanups progressing
* Share working, need loc for title string and user notification incase of a failure. Then add the equations key.
* More cleanup, now using share icon image and resources for strings. Still need to do the graph equation key.
* Change share to html based start.
* Key working, with UL but going to try changing to table.
* Fix a html formating error, generating a new UL for each equation.
* Switched over to a table for equation key and have color block formating
* Updates from PR feedback, using Graphing::IBitmap abstraction.
* Update src/Calculator/Views/GraphingCalculator/GraphingCalculator.xaml.h
Fixed
Co-Authored-By: Pepe Rivera <joseartrivera@gmail.com>
* PR Updates.
* Add variables to the graph key.
* PR Updates.
Commit 0722781fc updated the app to use `DevAppName` for the
app's window title when it was a non-official build, based on
the state of `IsStoreBuild`.
Unfortunately, `IsStoreBuild` is a _project_ level variable defined in
[build-app-internal.yaml](0722781fc6/build/pipelines/templates/build-app-internal.yaml (L36)),
but not a _compile-time_ defined value.
To solve this, we are now defining `IS_STORE_BUILD` in
`Calculator.vcxproj` when `IsStoreBuild='True'`, the same way that
we set `SEND_DIAGNOSTICS` for official builds, and we'll change the
window title based on that new `#define`.
Using this new `#define` can lead us down a slippery slope. We need to
limit the amount of divergent code that we have between dev/official
builds. This should be hopefully one of very few instances where
this value is ever used.
* Fixed the WindowIdLog so that it is updated when a new WindowCreated event is fired
* Updated the windowidlog check in LogWindowCreated to use IsWindowIdInLog
* 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
Simplifies the layout of `ConverterNumPad` to match that
seen of `NumpadPanel` in Calculator.xaml by using the same
static margin and removing the use of columns that had been used
for dynamic margins.
Fixes#87
* Bound the calendar picker to the control above
* collapsed textbox and added headertext to the calendar picker element
* collpased textbox from both To and From calendar picker used headertext instead
* localized strings for the new headers added for the calendar date pickers
* modified the resoruces file so as to localize the strings
* remapped the grid components after the removal of the text Block
* restored original spacing between components
* Added the property name to be shown on the Scrollable links to solve issue 482
* Added the x:uid tag for the buttons and also added the automationID
* Added two new uids keys for the left and right scroll buttons for the calculation result.
* Force en-US for unit tests
* fix some spacing issues after merge
* remove default argument of LocalizationService to fix compilation issue in Release mode
Description of the changes:
Adjusted some of the values in .clang-format
Add clang-format-all.ps1
Fix path to .clang-format in Calculator.sln
How changes were validated:
Manual.
Fixes#202
This PR fixes code style for the project files.
The Problem
Different files in the project use different code style. That is not consistent and leads to harder maintenance of the project.
Description of the changes:
Have investigated and determined the most used code style across the given codebase
Have configured IDE and applied code style to all project files.
Have crafted clang-formatter config.
see https://clang.llvm.org/docs/ClangFormat.htmlhttps://clang.llvm.org/docs/ClangFormatStyleOptions.html
Some cases were fixed manually
How changes were validated:
manual/ad-hoc testing, automated testing
All tests pass as before because these are only code style changes.
Additional
Please review, and let me know if I have any mistake in the code style. In case of any mistake, I will change the configuration and re-apply it to the project.
Fixes#313
In Scan/Item mode, Narrator focus navigates to hidden element “No next item” after “Update rates” link in "Currency Converter" window #313
Description of the changes:
Adds an x:Name to the CurrencySecondaryStatus text block
Adds a NormalCurrencyStatus visual state to the CurrencySecondaryStatusStates
Adds functionality to the CurrencySecondaryStatusStates to show or hide the CurrencySecondaryStatus text block.
How changes were validated:
Verified that the textblock is not visible in the accessibility tree via inspect.exe from the windows sdk.
Verified that Narrator also does not stop on the block when in scan mode.
Verified that the textblock is visible in the accessibility tree and read out in Narrator when the ChargesMayApplyCurrencyStatus or FailedCurrencyStatus viewstates are set.
Fixes#437.
Clicking on the same element in the hamburger view should re-open that view, like the menu items do
Description of the changes:
-Fixed the bug that was listed
How changes were validated:
-manual
Fixes#407 (partially) and #441
Description of the changes:
Remove TitleBarHelper and all <Border x:Name="CustomTitleBar" />
Let the system defines the draggable region
Centralize all events and functions associated to the title bar in a single control TitleBar instead of code splitted between MainPage/TitleBar/HistoryList/Memory.
Use the standard title bar when high contrast is activated instead of the custom one.
Modify the color of the title when the window doesn't have focus
Fix the right padding of the title bar with high contrast
How changes were validated:
Manually tested with LtR and RtL languages
Manually tested with high contrast
Tested when History and Memory flyout are opened
Fix#409 - Some content in Currency Converter not right-aligned properly in RtL
Fix#59 Currency symbol precedence is opposite of system setting in RTL languages
Description of the changes:
Add a property FlowDirectionHorizontalAlignment in UnitConverter to align some controls to the right (without modifying the FlowDirection of their parent items)
Force FlowDirection of Value1Container and Value2Container to LeftToRight (but align panels to the right)
How changes were validated:
Tested with LtR and RtL languages and with currency symbols on the left and on the right.
Fixes#402 and #414
Divide by 4 the CPU usage of OverflowTextBlock when buttons are pressed very quickly.
Description of the changes:
Xaml-side:
OverflowTextBlock has some performance issues:
double scrollviewer: the listview was in a scrollviewer, while the control already containing one -> it breaks the virtualization of the listview and impacts on UI performance.
The listview used a StackPanel, this panel doesn't support virtualization of ListViewItems contrary to ItemsStackPanel
No ListView-specific features were used, an ItemsControl is more efficient and lighter.
refactor how we manage the visibility of the left/right buttons in OverflowTextBlock, the new version is more reactive and will not display the right arrow when not necessary (see GIF below).
remove the ItemContainerSelector ExpressionItemContainerStyle, not really used by OverflowTextBlock
remove UI glitches generated by ChangeView when users type fast (control partially hidden and scrolling issues, see the GIF below).
only modify the accessibility view when it's necessary
ViewModel-side:
stop fully refreshing ExpressionTokens in StandardCalculatorViewModel when a new command were sent, instead, use a IObservableVector to only send new tokens to the UI (in average only 1 or 2 UI items are refreshed while the full expression was refreshed before)
How changes were validated:
Manually
Fixes#382
Description of the changes:
Add Pyeong as an Area conversion unit.
Pyeong shows up only if the user's current region is Korea ( i.e. region is either KP or KR ).
Added Korean translation for Pyeong (평). For other locales, we default to English ( Pyeong ).
How changes were validated:
Manually tested the below
For non-Korean regions, Pyeong does not show up.
Korean region with Korean locale => Pyeong shows up and Pyeong is correctly translated.
pyeong_Korean
Korean region with English locale => Pyeong shows up and Pyeong is in English.
pyeong_English
Korean region with simplified Chinese locale => Pyeong shows up and Pyeong is in English.
pyeong_Chinese
Initial PR for the feature/GraphingCalculator feature branch, part of #338.
The feature incorporates a proprietary Microsoft-owned graphing engine to drive graphing experiences in the Windows Calculator app. Due to the private nature of the graphing engine, the source available in the public repo will make use of a mock graphing engine. See README.md for more details.
This PR simply serves as a base for future feature development. As such, the PR will be immediately merged. Feedback on the content of this PR, and on the feature in general, is encouraged. If there is feedback related to the content of this specific PR, please leave comments on the PR page. We will address the comments in future PRs to the feature branch.
- Merge the 3 CalculationResultStyle(S|M|L) in App.xaml
- Only modify CalculationResult::*FontSize in Calculator.xaml instead of fully updating the style of the control.
- Create a new property MaxFontSize in order to be able to update it without being forced to fully update the Style (because m_startingFontSize was set in OnApplyTemplate)
- Modify how DisplayMargin is managed to prevent the textblock Margin to shift when we update its value (without fully updating the Style).
Add Reveal Highlight effect on the 4 basic operator buttons + Equal button (effect more visible with purple and all grey-ish accent colors). Also fixes a high contrast issue when the operator buttons were pressed.
* Modify the height of RowDltrUnits when UnitConverter is in LandscapeLayout mode
* clean
* Use the same layout than the existing one while fixing the issue
* Refactor SupplementaryItemsControl to improve performance, not rely on parents and not force the parent element to be HorizonAlignment="stretch"
* take feedback into account
* add HorizontalNoOverflowStackPanel to vcproj.filters
* format conditionals
* replace max by std::max
Description of the changes:
Disable Windows-provided min/max macros using the NOMINMAX flag. Add the flag to each project's pch to disable the macros across the solution.
How changes were validated:
Project builds.
Unit tests pass.
Smoke tests.
Fixes#362.
The .resw files for all languages are expected to be checked into the repo (this used to not the the case). Let's remove the conditions in the project file which ignore them if they don't exist.
Additionally removes pseudo-loc resource references from the build as pseudo-loc resources aren't currently being generated.
Templatize the copyright string and use a build variable to set the year for use across the entire app.
How changes were validated:
Tested with English and French and with different dates.
* Fix auto-scaling of CalculationResult when the current locale displays symbols at the right
* Formatting
* add padding
* modify padding of ValueContainer
Description of the changes:
Hide the History button when in Programmer mode via VisualState
How changes were validated:
Open Standard mode
Switch to Programmer mode
Verify that the History button isn't visible
Fixes#326
Fixed comments that were inconsistent with the style guidelines described in C++ core guidelines and the modern C++/WinRT language projections and removed trailing whitespace.
Inserted a space after the beginning of the comment so the text wasn't touching the // on all occurrences.
Removed all occurrences of trailing whitespace
If we allow users to select texts, the application will feel more like a "Desktop app", will be easier to use on a tablet and users will be more prompt to use Ctrl+C to use the result in another app.
Saved 301 KB out of 9.2 MB. 15.8% per file on average (up to 82.2%)
Fixes #.
Saves 301 KB (although not all files are included in the build)
Description of the changes:
For PNG files: used a combination of Pngcrush, OxiPNG, AdvPNG, PNGOUT and Zopfli
For GIF files: used Gifsicle
How changes were validated:
No changes to behaviour or source code.
Previewed the changed files to make sure they still work
* added bug report and feature request issue tempaltes
* copied pull_request_template.md to .github folder
* Updated the DateCalculation narrator logic to use PropertyChangedCallbacks for the DateResultLabel and DateDiffAllUnitsResultLabel TextBlocks.
* Reverted textblock callback changes and added an event handler for when the radio buttons are checked.
* Revert NarratorAnnouncement.h changes and removed unused code from DataCalculator.xaml.h. Updated comments in RaiseNotification method in DateCalculator.xaml.cpp
* Reverted changes in NarratorAnnouncement.h and NarratorAnnouncement.cpp
* Added SAL annotation to AddSubtractOption_Checked
* Remove namespaces from input types on AddSubtractOption_Checked
All Calculator app iconography uses the "developer version" icon from Design,
to help differentiate a developer build of Calculator from the official version.
Assets have been run through the image compression tools to ensure all unnecessary
metadata has been removed.
* update currency hyperlink changed to a hyperlink button
* added bug report and feature request issue tempaltes
* copied pull_request_template.md to .github folder
* update currency hyperlink changed to a hyperlink button
* Updated hyperlink button to move text that should not be linked outside the hyperlink button
* Updated hyperlink button to move CurrencySecondaryStatus text out of the hyperlinkbutton control.
* Updated the HyperlinkButton to set the content without using a TextBlock and fixed the AutomationTree issue where the HyperlinkButton wasn't being seen
* Calculator.xaml - Simple Readability Adjustments
Improved readability of the XAML document by inserting newline where they were missing and removed rextra newlines from others.
* Added comments and organized resources for superior readability
Using comments and grouping DataTemplates, Styles and other resources significantly increases the readability and discovery of resources.
This change moves the RADIX_TYPE enum into its own header. This resolves a compilation error and reduces the dependency graph by allowing RadixToStringConverter to include just the enum header rather than the entire CalcEngine header.
Change verified by ensuring Calculator build locally.
Before this change, the pchs for CalcViewModel and Calculator project referenced project headers. If those project headers (or any of their dependencies) were to change, then the pch would be recompiled, slowing local build times.
By removing references to project headers, the pch will be compiled once and is resilient to changes in the project. Now that project headers are explicit about their dependencies, when there is a change to a project header only the translation units referencing the modified header will need to be rebuilt.
- Manually tested by ensuring Calculator project builds locally.
@Microsoft/calculator-team
Update the Microsoft.UI.Xaml NuGet package to a new version. The ARM64 framework package in 2.0.181018003.1 had entries missing from its manifest, so the classes in the package couldn't be activated.
The app currently logs diagnostic events to ETW in various places. If we add certain flags to those events, the data is eligible to be sent as telemetry. (Whether it actually gets sent is controlled outside of Calculator--for example, there are lots of checks at the system level to ensure privacy settings are honored.)
Currently we set the "eligible for telemetry" flags only in official builds, so no telemetry gets uploaded while the app is in development. We already have this set up for the main TraceLogging provider, but we also need to do this for the AppLifecycle performance logging.
Calculator (the main app project) depends on CalcManager, but only transitively: Calculator -> CalcViewModel -> CalcManager.
However, Calculator's project file currently has a direct dependency on CalcManager. Let's remove this to make it harder to accidentally introduce new dependencies between the layers.
Also cleaning up some commented-out directives in the CalcManager MSBuild file.
A few small changes to improve the view of the code in Solution Explorer:
* Delete folders from solution explorer which don't appear on disk (Resource Files, PerfTrack)
* Delete files on disk which aren't compiled into the project (Type.xaml)
* Rename CalculatorHistory.Cpp to CalculatorHistory.cpp, for consistency with other files
Remove LayoutAwarePage, SuspensionManager, and other suspend-resume handling code. SuspensionManager::SaveAsync and related methods weren't actually called anywhere. I didn't attempt to remove the serialize/deserialize code at the ViewModel layer, although much of that is likely not needed either.
We may decide we want to persist more state through a suspend-terminate-resume cycle (as the app might have done a long time ago). But if we decide we want that, we should not use a persistence mechanism that's closely coupled to frame navigation.