diff --git a/Mainspring/src/Application.cpp b/Mainspring/src/Application.cpp index 73c8b75..263430e 100644 --- a/Mainspring/src/Application.cpp +++ b/Mainspring/src/Application.cpp @@ -16,7 +16,7 @@ namespace mainspring { : m_appName(appName) , m_appVersion(appVersion) , m_timing(false) - , m_elapsed() + , m_elapsedSaved() { std::cout << std::format("{} {}\n", m_appName, m_appVersion); } @@ -63,10 +63,8 @@ namespace mainspring { case WM_COMMAND: switch (LOWORD(wParam)) { - case IDC_BUTTONSTARTPAUSE: { - app->m_timing = !app->m_timing; - - if (app->m_timing) { + case IDC_BUTTONSTARTPAUSE: + if (!app->m_timing) { SetDlgItemText(dlg, IDC_BUTTONSTARTPAUSE, "Pause"); app->m_startTime = Clock::now(); // Timer to update time @@ -75,10 +73,12 @@ namespace mainspring { else { SetDlgItemText(dlg, IDC_BUTTONSTARTPAUSE, "Start"); KillTimer(dlg, 1); + app->m_elapsedSaved += app->getElapsed(); } + app->m_timing = !app->m_timing; + return TRUE; - } case ID_HELP_ABOUT: MessageBox(dlg, std::format("{} {}\nCopyright Grayson Riffe 2025\ngraysonriffe.com", app->m_appName, app->m_appVersion).c_str(), std::format("About {}", app->m_appName).c_str(), MB_OK); @@ -87,17 +87,12 @@ namespace mainspring { return FALSE; - case WM_TIMER: { + case WM_TIMER: SendMessage(dlg, WM_UPDATETIME, NULL, NULL); return TRUE; - } case WM_UPDATETIME: { - Seconds sinceLastStart = 0; - if(app->m_timing) - sinceLastStart = Duration(Clock::now() - app->m_startTime).count(); - - Seconds totalTime = app->m_elapsed + sinceLastStart; + Seconds totalTime = app->m_elapsedSaved + app->getElapsed(); uint32_t hr = totalTime / (3600), min = totalTime % (3600) / 60, sec = totalTime % 60; SetDlgItemText(dlg, IDC_STATICTIME, std::format("{:02}:{:02}:{:02}", hr, min, sec).c_str()); @@ -113,4 +108,11 @@ namespace mainspring { return FALSE; } + + Seconds Application::getElapsed() { + if (m_timing) + return Duration(Clock::now() - m_startTime).count(); + else + return 0; + } } \ No newline at end of file diff --git a/Mainspring/src/Application.h b/Mainspring/src/Application.h index c73c7f3..00b4f45 100644 --- a/Mainspring/src/Application.h +++ b/Mainspring/src/Application.h @@ -15,12 +15,14 @@ namespace mainspring { private: static BOOL CALLBACK mainDlgProc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam); + Seconds getElapsed(); // Gets the current timing session time + const char* m_appName; const char* m_appVersion; // Current "Time" (state of the app) - bool m_timing; // Currently counting time? - Seconds m_elapsed; // in seconds - TimePoint m_startTime; // When the timer was started + bool m_timing; // Currently timing? + Seconds m_elapsedSaved; // Time saved + TimePoint m_startTime; // When the current timing session was started }; } \ No newline at end of file