- version 0.1.4 - experiments with new idle tracking logic
This commit is contained in:
parent
f6762c5946
commit
56ec61c92e
@ -4,7 +4,7 @@
|
|||||||
// App version
|
// App version
|
||||||
#define QBREAK_VERSION_MAJOR 0
|
#define QBREAK_VERSION_MAJOR 0
|
||||||
#define QBREAK_VERSION_MINOR 1
|
#define QBREAK_VERSION_MINOR 1
|
||||||
#define QBREAK_VERSION_SUFFIX 3
|
#define QBREAK_VERSION_SUFFIX 4
|
||||||
|
|
||||||
// How often UI is updated - interval in seconds
|
// How often UI is updated - interval in seconds
|
||||||
#define INTERVAL_UPDATE_UI (60)
|
#define INTERVAL_UPDATE_UI (60)
|
||||||
|
|||||||
@ -264,34 +264,41 @@ static int msec2min(int msec)
|
|||||||
|
|
||||||
void MainWindow::onUpdateUI()
|
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();
|
int idle_milliseconds = get_idle_time_dynamically();
|
||||||
if (idle_milliseconds >= mAppConfig.idle_timeout * 60 * 1000)
|
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);
|
mIdleStart = std::chrono::steady_clock::now() - std::chrono::milliseconds(idle_milliseconds);
|
||||||
|
mIdleRemaining = mTimer->remainingTime() + idle_milliseconds;
|
||||||
|
|
||||||
// How much time remains ?
|
// Stop counting
|
||||||
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;
|
|
||||||
|
|
||||||
mTimer->stop();
|
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
|
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)
|
if (mTrayIcon)
|
||||||
|
|||||||
@ -6,6 +6,8 @@
|
|||||||
#include <QSystemTrayIcon>
|
#include <QSystemTrayIcon>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "settingsdialog.h"
|
#include "settingsdialog.h"
|
||||||
|
|
||||||
@ -39,7 +41,13 @@ private:
|
|||||||
std::chrono::steady_clock::time_point mBreakStartTime;
|
std::chrono::steady_clock::time_point mBreakStartTime;
|
||||||
app_settings::config mAppConfig;
|
app_settings::config mAppConfig;
|
||||||
int mPostponeCount;
|
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;
|
int mLastIdleMilliseconds;
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user