- 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
|
||||
#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)
|
||||
|
||||
@ -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
|
||||
mIdleStart = std::chrono::steady_clock::now() - std::chrono::milliseconds(idle_milliseconds);
|
||||
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;
|
||||
|
||||
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;
|
||||
// Stop counting
|
||||
mTimer->stop();
|
||||
}
|
||||
else
|
||||
{
|
||||
// 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
|
||||
}
|
||||
}
|
||||
else
|
||||
mLastIdleMilliseconds = 0;
|
||||
}
|
||||
|
||||
if (mTrayIcon)
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user