From aca197a96f87b9aca40cfb7243f5edecbacf07ef Mon Sep 17 00:00:00 2001 From: Bernhard Kirchen Date: Thu, 31 Mar 2022 13:02:28 +0200 Subject: [PATCH] Add 12 hours expiration preset (#7738) * Add hours precision to TimeDelta * Add 12 hours expiration preset Fixes #7369 --- share/translations/keepassxc_en.ts | 11 +++++++---- src/core/TimeDelta.cpp | 29 ++++++++++++++++++++++------- src/core/TimeDelta.h | 5 ++++- src/gui/entry/EditEntryWidget.cpp | 3 ++- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts index 2b83e1d2c8..2a9c7b335c 100644 --- a/share/translations/keepassxc_en.ts +++ b/share/translations/keepassxc_en.ts @@ -2537,10 +2537,6 @@ Would you like to correct it? Hide - - Tomorrow - - %n week(s) @@ -2562,6 +2558,13 @@ Would you like to correct it? + + %n hour(s) + + + + + EditEntryWidgetAdvanced diff --git a/src/core/TimeDelta.cpp b/src/core/TimeDelta.cpp index a5331736cd..0037396f6f 100644 --- a/src/core/TimeDelta.cpp +++ b/src/core/TimeDelta.cpp @@ -21,38 +21,53 @@ QDateTime operator+(const QDateTime& dateTime, const TimeDelta& delta) { - return dateTime.addDays(delta.getDays()).addMonths(delta.getMonths()).addYears(delta.getYears()); + return dateTime.addSecs(delta.getHours() * 3600) + .addDays(delta.getDays()) + .addMonths(delta.getMonths()) + .addYears(delta.getYears()); +} + +TimeDelta TimeDelta::fromHours(int hours) +{ + return TimeDelta(hours, 0, 0, 0); } TimeDelta TimeDelta::fromDays(int days) { - return TimeDelta(days, 0, 0); + return TimeDelta(0, days, 0, 0); } TimeDelta TimeDelta::fromMonths(int months) { - return TimeDelta(0, months, 0); + return TimeDelta(0, 0, months, 0); } TimeDelta TimeDelta::fromYears(int years) { - return TimeDelta(0, 0, years); + return TimeDelta(0, 0, 0, years); } TimeDelta::TimeDelta() - : m_days(0) + : m_hours(0) + , m_days(0) , m_months(0) , m_years(0) { } -TimeDelta::TimeDelta(int days, int months, int years) - : m_days(days) +TimeDelta::TimeDelta(int hours, int days, int months, int years) + : m_hours(hours) + , m_days(days) , m_months(months) , m_years(years) { } +int TimeDelta::getHours() const +{ + return m_hours; +} + int TimeDelta::getDays() const { return m_days; diff --git a/src/core/TimeDelta.h b/src/core/TimeDelta.h index d52ba72e5c..0f1e5b1979 100644 --- a/src/core/TimeDelta.h +++ b/src/core/TimeDelta.h @@ -28,18 +28,21 @@ QDateTime operator+(const QDateTime& dateTime, const TimeDelta& delta); class TimeDelta { public: + static TimeDelta fromHours(int hours); static TimeDelta fromDays(int days); static TimeDelta fromMonths(int months); static TimeDelta fromYears(int years); TimeDelta(); - TimeDelta(int days, int months, int years); + TimeDelta(int hours, int days, int months, int years); + int getHours() const; int getDays() const; int getMonths() const; int getYears() const; private: + int m_hours; int m_days; int m_months; int m_years; diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 52b3d32d8a..e2a4f426cf 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -1574,7 +1574,8 @@ void EditEntryWidget::deleteAllHistoryEntries() QMenu* EditEntryWidget::createPresetsMenu() { auto* expirePresetsMenu = new QMenu(this); - expirePresetsMenu->addAction(tr("Tomorrow"))->setData(QVariant::fromValue(TimeDelta::fromDays(1))); + expirePresetsMenu->addAction(tr("%n hour(s)", nullptr, 12))->setData(QVariant::fromValue(TimeDelta::fromHours(12))); + expirePresetsMenu->addAction(tr("%n hour(s)", nullptr, 24))->setData(QVariant::fromValue(TimeDelta::fromHours(24))); expirePresetsMenu->addSeparator(); expirePresetsMenu->addAction(tr("%n week(s)", nullptr, 1))->setData(QVariant::fromValue(TimeDelta::fromDays(7))); expirePresetsMenu->addAction(tr("%n week(s)", nullptr, 2))->setData(QVariant::fromValue(TimeDelta::fromDays(14)));