Bartosz Kosiorek has proposed merging lp:~gang65/ubuntu-clock-app/ubuntu-clock-stopwatch-runtime-timezone-fix into lp:ubuntu-clock-app.
Commit message: Fix stopwatch issue appering during changing timezone during runtime (LP: #1493358) Requested reviews: Ubuntu Clock Developers (ubuntu-clock-dev) Related bugs: Bug #1493358 in Ubuntu Clock App: "Stopwatch is not working correctly after change timezone during runtime" https://bugs.launchpad.net/ubuntu-clock-app/+bug/1493358 For more details, see: https://code.launchpad.net/~gang65/ubuntu-clock-app/ubuntu-clock-stopwatch-runtime-timezone-fix/+merge/270396 Fix stopwatch issue appering during changing timezone during runtime (LP: #1493358) -- Your team Ubuntu Clock Developers is requested to review the proposed merge of lp:~gang65/ubuntu-clock-app/ubuntu-clock-stopwatch-runtime-timezone-fix into lp:ubuntu-clock-app.
=== modified file 'app/MainPage.qml' --- app/MainPage.qml 2015-08-20 16:03:35 +0000 +++ app/MainPage.qml 2015-09-08 12:52:12 +0000 @@ -63,9 +63,8 @@ Settings { id: stopwatchState category: "Stopwatch" - property alias startTime: stopwatchPage.startTime property alias running: stopwatchPage.running - property alias oldDiff: stopwatchPage.oldDiff + property alias oldDiff: stopwatchPage.previousLapsTime } VisualItemModel { === modified file 'app/stopwatch/StopwatchPage.qml' --- app/stopwatch/StopwatchPage.qml 2015-09-02 13:15:50 +0000 +++ app/stopwatch/StopwatchPage.qml 2015-09-08 12:52:12 +0000 @@ -24,51 +24,43 @@ id: _stopwatchPage objectName: "stopwatchPage" - property date startTime: getUTCDate() - property date snapshot: startTime + + StopwatchFormatTime { + id: stopwatchFormatTime + } + + //property date startTime: getUTCDate() + //property date snapshot: startTime property bool running: false - property int timeDiff: snapshot - startTime - property int oldDiff: 0 + property int lapTime: 0 + property int previousLapsTime: 0 - property int totalTimeDiff: timeDiff + oldDiff + property int totalTime: lapTime + previousLapsTime Component.onCompleted: { console.log("[LOG]: Stopwatch Page Loaded") } - function getUTCDate() { - var localDate = new Date() - return new Date(localDate.getUTCFullYear(), - localDate.getUTCMonth(), - localDate.getUTCDate(), - localDate.getUTCHours(), - localDate.getUTCMinutes(), - localDate.getUTCSeconds(), - localDate.getUTCMilliseconds()) - } - function start() { - startTime = getUTCDate() - snapshot = startTime + if (lapTime === 0) { + lapHistory.startStopwatch(); + } running = true } function stop() { - oldDiff += timeDiff - startTime = getUTCDate() - snapshot = startTime running = false } function update() { - snapshot = getUTCDate() + lapTime = lapHistory.updateStopwatch(); } function clear() { - oldDiff = 0 - startTime = getUTCDate() - snapshot = startTime + running = false + lapTime = 0 + previousLapsTime = 0 lapHistory.clear() } @@ -86,7 +78,7 @@ id: stopwatch objectName: "stopwatch" - milliseconds: _stopwatchPage.totalTimeDiff + milliseconds: _stopwatchPage.totalTime anchors { top: parent.top @@ -109,9 +101,9 @@ Button { id: stopButton - width: oldDiff !== 0 || running ? (parent.width - parent.spacing) / 2 : parent.width + width: previousLapsTime !== 0 || running ? (parent.width - parent.spacing) / 2 : parent.width color: !_stopwatchPage.running ? UbuntuColors.green : UbuntuColors.red - text: _stopwatchPage.running ? i18n.tr("Stop") : (oldDiff === 0 ? i18n.tr("Start") : i18n.tr("Resume")) + text: _stopwatchPage.running ? i18n.tr("Stop") : (previousLapsTime === 0 ? i18n.tr("Start") : i18n.tr("Resume")) onClicked: { if (_stopwatchPage.running) { _stopwatchPage.stop() @@ -129,13 +121,13 @@ Button { id: lapButton text: _stopwatchPage.running ? i18n.tr("Lap") : i18n.tr("Clear") - width: oldDiff !== 0 || running ? (parent.width - parent.spacing) / 2 : 0 + width: previousLapsTime !== 0 || running ? (parent.width - parent.spacing) / 2 : 0 strokeColor: UbuntuColors.lightGrey - visible: oldDiff !== 0 || running + visible: previousLapsTime !== 0 || running onClicked: { if (_stopwatchPage.running) { _stopwatchPage.update() - lapHistory.addLap(_stopwatchPage.totalTimeDiff) + lapHistory.addLap(_stopwatchPage.totalTime) } else { _stopwatchPage.clear() } @@ -162,7 +154,7 @@ Loader { id: lapListViewLoader anchors.fill: parent - sourceComponent: !_stopwatchPage.running && _stopwatchPage.totalTimeDiff == 0 ? undefined : lapListViewComponent + sourceComponent: !_stopwatchPage.running && _stopwatchPage.totalTime == 0 ? undefined : lapListViewComponent } } === modified file 'backend/modules/Stopwatch/history.cpp' --- backend/modules/Stopwatch/history.cpp 2015-08-24 23:37:28 +0000 +++ backend/modules/Stopwatch/history.cpp 2015-09-08 12:52:12 +0000 @@ -31,6 +31,15 @@ m_settings(QStandardPaths::standardLocations(QStandardPaths::ConfigLocation).first() + "/com.ubuntu.clock/com.ubuntu.clock.conf", QSettings::IniFormat) { qDebug() << "[LOG] Loading laps from " << m_settings.fileName(); + QDateTime startTime = m_settings.value("Stopwatch/startDateTime").toDateTime(); + if(startTime.isValid()) + { + m_stopwatchStartDateTime = startTime; + } + else + { + startStopwatch(); + } } int LapHistory::rowCount(const QModelIndex &parent) const @@ -95,3 +104,15 @@ m_settings.setValue("Stopwatch/laps", QVariantList()); endResetModel(); } + +void LapHistory::startStopwatch() +{ + m_stopwatchStartDateTime = QDateTime::currentDateTimeUtc(); + m_settings.setValue("Stopwatch/startDateTime", m_stopwatchStartDateTime); +} + +int LapHistory::updateStopwatch() +{ + return m_stopwatchStartDateTime.msecsTo(QDateTime::currentDateTimeUtc()); +} + === modified file 'backend/modules/Stopwatch/history.h' --- backend/modules/Stopwatch/history.h 2015-08-24 23:37:28 +0000 +++ backend/modules/Stopwatch/history.h 2015-09-08 12:52:12 +0000 @@ -21,6 +21,7 @@ #include <QAbstractListModel> #include <QSettings> +#include <QDateTime> class LapHistory : public QAbstractListModel { @@ -48,6 +49,7 @@ QHash<int, QByteArray> roleNames() const override; public slots: + // Function to add a stopwatch lap void addLap(int timeDiff); @@ -57,8 +59,12 @@ // Function to clear all stopwatch laps void clear(); + void startStopwatch(); + int updateStopwatch(); + private: QSettings m_settings; + QDateTime m_stopwatchStartDateTime; }; #endif // HISTORY_H
-- Mailing list: https://launchpad.net/~ubuntu-touch-coreapps-reviewers Post to : ubuntu-touch-coreapps-reviewers@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps-reviewers More help : https://help.launchpad.net/ListHelp