summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaroline Chao <caroline.chao@digia.com>2014-09-15 09:26:02 +0200
committerCaroline Chao <caroline.chao@digia.com>2014-09-16 14:51:50 +0200
commit63fbb1500f51dbcd1e19b9325b87d5bfc4d3b7b4 (patch)
tree113fe13b66857f492ab0f08544cdf35fd7ff4a78
parent7d4bc8c3e1c5c53f42e094e8196eff27a17d4a77 (diff)
Optimize getTimeRange function
Change-Id: Id020f490c4a8d7e75fbebdc5020ba86876c05256 Reviewed-by: Niels Weber <niels.weber@digia.com>
-rw-r--r--qml/components/TrackSwitcher.qml59
1 files changed, 42 insertions, 17 deletions
diff --git a/qml/components/TrackSwitcher.qml b/qml/components/TrackSwitcher.qml
index ac56262..a3cc76a 100644
--- a/qml/components/TrackSwitcher.qml
+++ b/qml/components/TrackSwitcher.qml
@@ -98,18 +98,23 @@ Rectangle {
onDayIdChanged: ModelsSingleton.timeListModel.tracksTodayModel = currentDayTracksModel
}
+ function setFirstEvent(time)
+ {
+ if (!Functions.isStartTimeAfterNow(firstEvent)) {
+ if (time < firstEvent || Functions.isStartTimeAfterNow(time))
+ firstEvent = time
+ } else {
+ if (time < firstEvent && Functions.isStartTimeAfterNow(time))
+ firstEvent = time
+ }
+ }
+
function getTimeRange(model)
{
var earliestTime = model.data(0, "start")
if (firstEvent === undefined)
firstEvent = earliestTime
- else if (!Functions.isStartTimeAfterNow(firstEvent)) {
- if (earliestTime < firstEvent || Functions.isStartTimeAfterNow(earliestTime))
- firstEvent = earliestTime
- } else {
- if (earliestTime < firstEvent && Functions.isStartTimeAfterNow(earliestTime))
- firstEvent = earliestTime
- }
+ setFirstEvent(earliestTime)
var latestTime = model.data(0, "end") // earliestTime
var time
@@ -119,24 +124,43 @@ Rectangle {
// Count here what is the first hour and last hour that needs to be shown in time listView
// for example 10.00 11.00 12.00 ... or 08.00 09.00 10.00
- for (var i = 0; i < model.rowCount(); i++) {
+ var modelCountAfterStart = model.rowCount() - 1;
+ var halfModelCount = Math.floor(modelCountAfterStart / 2)
+ var needOneMoreItem = halfModelCount * 2 !== modelCountAfterStart
+ for (var i = 1; i < halfModelCount; i++) {
- time = model.data(i, "start")
- if (!Functions.isStartTimeAfterNow(firstEvent)) {
- if (time < firstEvent || Functions.isStartTimeAfterNow(time))
- firstEvent = time
- } else {
- if (time < firstEvent && Functions.isStartTimeAfterNow(time))
- firstEvent = time
- }
+ var time1 = model.data(i, "start")
+ setFirstEvent(time1)
+ var time2 = model.data(i+1, "start")
+ setFirstEvent(time2)
+ time = time1 < time2 ? time1 : time2
timeHours = Functions.getHour(time)
earliestHours = Functions.getHour(earliestTime)
+ if (timeHours < earliestHours )
+ earliestTime = time
+
+ time1 = model.data(i, "end")
+ time2 = model.data(i+1, "end")
+ time = time1 < time2 ? time2 : time1
+ timeHours = Functions.getHour(time)
+ var timeMinutes = Functions.getMinutes(time)
+ if (timeMinutes > 0)
+ timeHours = timeHours + 1
+ latestHours = Functions.getHour(latestTime)
+ if (timeHours > latestHours)
+ latestTime = time
+ }
+ if (needOneMoreItem) {
+ time = model.data(model.rowCount() - 1, "start")
+ setFirstEvent(time)
+ timeHours = Functions.getHour(time)
+ earliestHours = Functions.getHour(earliestTime)
if (timeHours < earliestHours )
earliestTime = time
- time = model.data(i, "end")
+ time = model.data(model.rowCount() - 1, "end")
timeHours = Functions.getHour(time)
var timeMinutes = Functions.getMinutes(time)
if (timeMinutes > 0)
@@ -161,6 +185,7 @@ Rectangle {
date.setMinutes(0)
temp.push(date.toISOString())
}
+
return temp
}