diff --git a/src/CalcViewModel/CalcViewModel.vcxproj b/src/CalcViewModel/CalcViewModel.vcxproj index 1735d2d3..e2e98ab9 100644 --- a/src/CalcViewModel/CalcViewModel.vcxproj +++ b/src/CalcViewModel/CalcViewModel.vcxproj @@ -356,7 +356,6 @@ - diff --git a/src/CalcViewModel/CalcViewModel.vcxproj.filters b/src/CalcViewModel/CalcViewModel.vcxproj.filters index ca114731..d05aca0b 100644 --- a/src/CalcViewModel/CalcViewModel.vcxproj.filters +++ b/src/CalcViewModel/CalcViewModel.vcxproj.filters @@ -213,9 +213,6 @@ Common - - Common - diff --git a/src/CalcViewModel/Common/CalculatorButtonUser.h b/src/CalcViewModel/Common/CalculatorButtonUser.h index 19fa4044..e2d757e8 100644 --- a/src/CalcViewModel/Common/CalculatorButtonUser.h +++ b/src/CalcViewModel/Common/CalculatorButtonUser.h @@ -163,53 +163,4 @@ public BINEND = (int)CM::Command::CommandBINEDITEND, Hyp = (int)CM::Command::CommandHYP }; - - // This contains list of functions whose usage we are tracelogging -public - enum class FunctionLogEnum - { - Invert = (int)CM::Command::CommandREC, - Sqrt = (int)CM::Command::CommandSQRT, - Percent = (int)CM::Command::CommandPERCENT, - Negate = (int)CM::Command::CommandSIGN, - Degrees = (int)CM::Command::CommandDegrees, - Pi = (int)CM::Command::CommandPI, - Sin = (int)CM::Command::CommandSIN, - Cos = (int)CM::Command::CommandCOS, - Tan = (int)CM::Command::CommandTAN, - Factorial = (int)CM::Command::CommandFAC, - XPower2 = (int)CM::Command::CommandSQR, - Mod = (int)CM::Command::CommandMOD, - FToE = (int)CM::Command::CommandFE, - LogBaseE = (int)CM::Command::CommandLN, - InvSin = (int)CM::Command::CommandASIN, - InvCos = (int)CM::Command::CommandACOS, - InvTan = (int)CM::Command::CommandATAN, - LogBase10 = (int)CM::Command::CommandLOG, - XPowerY = (int)CM::Command::CommandPWR, - YRootX = (int)CM::Command::CommandROOT, - TenPowerX = (int)CM::Command::CommandPOW10, - EPowerX = (int)CM::Command::CommandPOWE, - Exp = (int)CM::Command::CommandEXP, - DecButton = (int)CM::Command::CommandDec, - OctButton = (int)CM::Command::CommandOct, - HexButton = (int)CM::Command::CommandHex, - BinButton = (int)CM::Command::CommandBin, - And = (int)CM::Command::CommandAnd, - Ror = (int)CM::Command::CommandROR, - Rol = (int)CM::Command::CommandROL, - Or = (int)CM::Command::CommandOR, - Lsh = (int)CM::Command::CommandLSHF, - Rsh = (int)CM::Command::CommandRSHF, - Xor = (int)CM::Command::CommandXor, - Not = (int)CM::Command::CommandNot, - Sinh = (int)CM::Command::CommandSINH, - Cosh = (int)CM::Command::CommandCOSH, - Tanh = (int)CM::Command::CommandTANH, - InvSinh = (int)CM::Command::CommandASINH, - InvCosh = (int)CM::Command::CommandACOSH, - InvTanh = (int)CM::Command::CommandATANH, - Cube = (int)CM::Command::CommandCUB, - DMS = (int)CM::Command::CommandDMS, - }; } diff --git a/src/CalcViewModel/Common/TraceLogger.cpp b/src/CalcViewModel/Common/TraceLogger.cpp index b3b3fee8..e9c5ff09 100644 --- a/src/CalcViewModel/Common/TraceLogger.cpp +++ b/src/CalcViewModel/Common/TraceLogger.cpp @@ -61,7 +61,7 @@ namespace CalculatorApp constexpr auto EVENT_NAME_BITFLIP_BUTTONS_USED = L"BitFlipToggleButtonUsed"; constexpr auto EVENT_NAME_ANGLE_BUTTONS_USED = L"AngleButtonUsedInSession"; constexpr auto EVENT_NAME_HYP_BUTTON_USED = L"HypButtonUsedInSession"; - constexpr auto EVENT_NAME_FUNCTION_USAGE = L"KeyboardOperatorUsageInSession"; + constexpr auto EVENT_NAME_BUTTON_USAGE = L"KeyboardOperatorUsageInSession"; constexpr auto EVENT_NAME_BITLENGTH_BUTTON_USED = L"BitLengthButtonUsed"; constexpr auto EVENT_NAME_RADIX_BUTTON_USED = L"RadixButtonUsed"; constexpr auto EVENT_NAME_MAX_WINDOW_COUNT = L"MaxWindowCountInSession"; @@ -109,8 +109,6 @@ namespace CalculatorApp , // Unique providerID {0905CA09-610E-401E-B650-2F212980B9E0} m_appLaunchActivity{ nullptr } { - // initialize the function array - // InitFunctionLogArray(); } TraceLogger::~TraceLogger() @@ -776,40 +774,23 @@ namespace CalculatorApp LogLevel2Event(EVENT_NAME_EXCEPTION, fields); } - void TraceLogger::UpdateFunctionUsage(int functionId, int mode) + void TraceLogger::UpdateButtonUsage(int buttonId, int mode) { // Writer lock for the static resources reader_writer_lock::scoped_lock lock(s_traceLoggerLock); - vector::iterator it = - std::find_if(funcLog.begin(), funcLog.end(), [functionId, mode](const FuncLog& f) -> bool { return f.functionId == functionId && f.mode == mode; }); - if (it != funcLog.end()) + vector::iterator it = std::find_if( + buttonLog.begin(), buttonLog.end(), [buttonId, mode](const ButtonLog& bLog) -> bool { return bLog.buttonId == buttonId && bLog.mode == mode; }); + if (it != buttonLog.end()) { it->count++; } else { - FunctionLogEnum func = safe_cast(functionId); - funcLog.push_back(FuncLog(functionId, func.ToString()->Data(), mode)); + NumbersAndOperatorsEnum button = safe_cast(buttonId); + buttonLog.push_back(ButtonLog(buttonId, button.ToString()->Data(), mode)); } } - // void TraceLogger::InitFunctionLogArray() - //{ - // int i = -1; - // for (int funcIndex = 0; funcIndex != maxFunctionSize; funcIndex++) - // { - // FunctionLogEnum func = safe_cast(funcIndex); - // wstring functionName = func.ToString()->Data(); - // if (functionName.compare(L"CalculatorApp.FunctionLogEnum") != 0) - // { - // findIndex[funcIndex] = ++i; - // funcLog.push_back(FuncLog(functionName)); - // } - // } - // // update the functionCount with total function count which we are tracking through tracelog. - // functionCount = i; - //} - wstring TraceLogger::GetProgrammerType(int index) { if (index >= 0) @@ -820,20 +801,10 @@ namespace CalculatorApp return s_programmerType[0]; } - /* bool TraceLogger::GetIndex(int& index) - { - if (findIndex[index] > 0) - { - index = findIndex[index]; - return true; - } - return false; - }*/ - void TraceLogger::UpdateWindowCount(size_t windowCount) { maxWindowCount = (maxWindowCount > windowCount) ? maxWindowCount : windowCount; - windowLaunchCount++; + currentWindowCount = windowCount; } void TraceLogger::LogMaxWindowCount() @@ -924,20 +895,19 @@ namespace CalculatorApp } } - void TraceLogger::LogFunctionUsage(int windowId) + void TraceLogger::LogButtonUsage() { if (!GetTraceLoggingProviderEnabled()) return; - for (auto i : funcLog) + for (auto i : buttonLog) { LoggingFields fields{}; - fields.AddUInt32(L"FunctionId", i.functionId); - fields.AddString(L"FunctionName", i.functionName.data()); + fields.AddUInt32(L"ButtonId", i.buttonId); + fields.AddString(L"ButtonName", i.buttonName.data()); fields.AddUInt32(L"ViewModeId", i.mode); fields.AddUInt32(L"UsageCount", i.count); - fields.AddUInt32(L"WindowId", windowId); - LogLevel2Event(EVENT_NAME_FUNCTION_USAGE, fields); + LogLevel2Event(EVENT_NAME_BUTTON_USAGE, fields); } } @@ -1062,9 +1032,12 @@ namespace CalculatorApp LogLevel3Event(L"CurrencyConverterInputReceived", fields); } - void TraceLogger::LogViewClosingTelemetry(int windowId) + void TraceLogger::LogViewClosingTelemetry() { - LogFunctionUsage(windowId); + if (currentWindowCount == 1) + { + LogButtonUsage(); + } LogMaxWindowCount(); } diff --git a/src/CalcViewModel/Common/TraceLogger.h b/src/CalcViewModel/Common/TraceLogger.h index 304de6b2..3755ebb1 100644 --- a/src/CalcViewModel/Common/TraceLogger.h +++ b/src/CalcViewModel/Common/TraceLogger.h @@ -13,17 +13,17 @@ static const int maxFunctionSize = (int)CalculationManager::Command::CommandBINE // This class implements a singleton model ensure that only one instance is created. namespace CalculatorApp { - struct FuncLog + struct ButtonLog { public: int count; - int functionId; - std::wstring functionName; + int buttonId; + std::wstring buttonName; int mode; - FuncLog(int fId, std::wstring fName, int vMode) + ButtonLog(int bId, std::wstring bName, int vMode) { - functionId = fId; - functionName = fName; + buttonId = bId; + buttonName = bName; mode = vMode; count = 1; } @@ -72,9 +72,8 @@ namespace CalculatorApp void LogMemoryFlyoutOpenEnd(unsigned int) const; void LogInvalidPastedInputOccurred(std::wstring_view reason, CalculatorApp::Common::ViewMode mode, int ProgrammerNumberBase, int bitLengthType); void LogValidInputPasted(CalculatorApp::Common::ViewMode mode) const; - void UpdateFunctionUsage(int functionId, int mode); - void LogFunctionUsage(int); - // void InitFunctionLogArray(); + void UpdateButtonUsage(int buttonId, int mode); + void LogButtonUsage(); void LogBitLengthButtonUsed(int windowId); void LogRadixButtonUsed(int windowId); void LogAngleButtonUsed(int windowId); @@ -95,7 +94,7 @@ namespace CalculatorApp void LogConversionResult(std::wstring_view fromValue, std::wstring_view fromUnit, std::wstring_view toValue, std::wstring_view toUnit) const; void LogAboutFlyoutOpened() const; void LogNavBarOpened() const; - void LogViewClosingTelemetry(int); + void LogViewClosingTelemetry(); void LogCoreWindowWasNull() const; // Trace methods for Date Calculator usage @@ -134,12 +133,9 @@ namespace CalculatorApp bool bitLengthButtonLoggedInSession = false; GUID sessionGuid; CalculatorApp::Common::ViewMode currentMode = CalculatorApp::Common::ViewMode::None; - std::vector funcLog; - //int functionCount = 0; + std::vector buttonLog; bool isHypButtonLogged = false; bool isAngleButtonInitialized = false; - //unsigned int findIndex[maxFunctionSize] = { 0 }; - //bool GetIndex(int& index); std::wstring GetProgrammerType(int index); size_t maxWindowCount = 0; bool isAppLaunchBeginLogged = false; @@ -156,7 +152,7 @@ namespace CalculatorApp std::map m_dateAddModeUsage; std::map m_dateSubtractModeUsage; - size_t windowLaunchCount = 0; + size_t currentWindowCount = 0; winrt::Windows::Foundation::Diagnostics::LoggingActivity m_appLaunchActivity; }; diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index 0033977e..a0801f65 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -618,7 +618,7 @@ void StandardCalculatorViewModel::OnButtonPressed(Object ^ parameter) mode = ViewMode::Programmer; } - TraceLogger::GetInstance().UpdateFunctionUsage((int)numOpEnum, (int)mode); + TraceLogger::GetInstance().UpdateButtonUsage((int)numOpEnum, (int)mode); } if (IsInError) diff --git a/src/CalcViewModel/TraceLoggerEnums.h b/src/CalcViewModel/TraceLoggerEnums.h deleted file mode 100644 index 55eb7f4f..00000000 --- a/src/CalcViewModel/TraceLoggerEnums.h +++ /dev/null @@ -1,108 +0,0 @@ -#pragma once -namespace CalculatorApp -{ - public enum TraceLoggerCalculatorModeEnum - { - Standard, - Scientific, - Programmer, - DateCalculation, - CurrencyConverter, - VolumeConverter, - LengthConverter, - WeightMassConverter, - TemperatureConverter, - EnergyConverter, - AreaConverter, - SpeedConverter, - TimeConverter, - }; - - - public enum TraceLoggerButtonIdEnum - { - // Numberpad - ZeroButton, - OneButton, - TwoButton, - ThreeButton, - FourButton, - FiveButton, - SixButton, - SevenButton, - EightButton, - NineButton, - DecimalButton, - - // Standard Operators - NegateButton, - EqualsButton, - PlusButton, - MinusButton, - MultiplyButton, - DivideButton, - PercentButton, - SquareRootButton, - XPower2Button, - XPower3Button, - OpenParenthesisButton, - CloseParenthesisButton, - - // Display Controls - BackspaceButton, - ClearButton, - ClearEntryButton, - - // Scientific Operators - InvertButton, - SinButton, - CosButton, - TanButton, - InvsinButton, - InvcosButton, - InvtanButton, - SinhButton, - CoshButton, - TanhButton, - InvsinhButton, - InvcoshButton, - InvtanhButton, - LogBase10Button, - ExpButton, - ModButton, - LogBaseEButton, - DmsButton, - DegreesButton, - FactorialButton, - PowerOf10Button, - PowerOfEButton, - ShiftButton, - PiButton, - YSquareRootButton, - PowerButton, - - // Programmer Operators - RolButton, - RorButton, - LshButton, - RshButton, - OrButton, - XorButton, - NotButton, - AndButton, - - // Programmer Numberpad - AButton, - BButton, - CButton, - DButton, - EButton, - FButton - }; - - public enum TraceLoggerInputMethodEnum - { - PhysicalKeyboard, - OnScreenKeyboard - }; -} diff --git a/src/Calculator/WindowFrameService.cpp b/src/Calculator/WindowFrameService.cpp index e952ab23..2b51c7cb 100644 --- a/src/Calculator/WindowFrameService.cpp +++ b/src/Calculator/WindowFrameService.cpp @@ -140,7 +140,7 @@ namespace CalculatorApp { if (coreWindow) { - TraceLogger::GetInstance().LogViewClosingTelemetry(ApplicationView::GetApplicationViewIdForWindow(coreWindow)); + TraceLogger::GetInstance().LogViewClosingTelemetry(); } else {