- version 0.1.4 - experiments with new idle tracking logic

This commit is contained in:
Dmytro Bogovych 2022-05-23 22:11:37 +03:00
parent f6762c5946
commit 56ec61c92e
3 changed files with 39 additions and 24 deletions

View File

@ -4,7 +4,7 @@
// App version
#define QBREAK_VERSION_MAJOR 0
#define QBREAK_VERSION_MINOR 1
#define QBREAK_VERSION_SUFFIX 3
#define QBREAK_VERSION_SUFFIX 4
// How often UI is updated - interval in seconds
#define INTERVAL_UPDATE_UI (60)

View File

@ -264,34 +264,41 @@ static int msec2min(int msec)
void MainWindow::onUpdateUI()
{
if (mAppConfig.idle_timeout != 0 && mTimer->isActive())
if (mAppConfig.idle_timeout != 0 && (mTimer->isActive() || mIdleStart))
{
int idle_milliseconds = get_idle_time_dynamically();
if (idle_milliseconds >= mAppConfig.idle_timeout * 60 * 1000)
{
// Idle mode is active. Increase the timer interval
if (!mIdleStart)
{
// Start idle mode. Save idle start time
mIdleStart = std::chrono::steady_clock::now() - std::chrono::milliseconds(idle_milliseconds);
mIdleRemaining = mTimer->remainingTime() + idle_milliseconds;
// How much time remains ?
int remaining_milliseconds = mTimer->remainingTime();
// Change the time - increase by (idle_minutes - mLastIdleMinutes)
int delta_idle_milliseconds = idle_milliseconds - mLastIdleMilliseconds;
// Paranoidal
if (delta_idle_milliseconds < 0)
delta_idle_milliseconds = 0;
// Stop counting
mTimer->stop();
mTimer->start(std::chrono::milliseconds(remaining_milliseconds + delta_idle_milliseconds));
mLastIdleMilliseconds = idle_milliseconds;
qDebug() << "Increase remaining time from " << remaining_milliseconds << " by " << delta_idle_milliseconds << ". "
<< "New remaining time " << mTimer->remainingTime() << ". Idle in milliseconds " << idle_milliseconds;
}
else
mLastIdleMilliseconds = 0;
{
// Do nothing here - main timer is stopped, idle time & timer remaining duration are recorded already
// How much time remains ?
}
}
else
{
if (mIdleStart)
{
// Idle interval ended
mIdleStart.reset();
mTimer->setInterval(mIdleRemaining);
mTimer->setSingleShot(true);
mTimer->start();
}
else
{
// Do nothing here - timer is running already
}
}
}
if (mTrayIcon)

View File

@ -6,6 +6,8 @@
#include <QSystemTrayIcon>
#include <chrono>
#include <optional>
#include "settings.h"
#include "settingsdialog.h"
@ -39,7 +41,13 @@ private:
std::chrono::steady_clock::time_point mBreakStartTime;
app_settings::config mAppConfig;
int mPostponeCount;
std::chrono::steady_clock::time_point mIdleStart;
// Time when idle was started
std::optional<std::chrono::steady_clock::time_point> mIdleStart;
// Time remaining in main timer
int mIdleRemaining;
int mLastIdleMilliseconds;
void init();