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
{