diff options
author | Caroline Chao <caroline.chao@digia.com> | 2014-02-20 16:10:27 +0100 |
---|---|---|
committer | Caroline Chao <caroline.chao@digia.com> | 2014-02-27 13:49:01 +0100 |
commit | 2117732be5762810e58fbf6cf576440f1b3a8166 (patch) | |
tree | 0859a4c8d0b3ca4c32b9013b1e7260a36673a1a7 | |
parent | 249b65d84e09c11676199a48da8ac0e8533a55e2 (diff) |
Update date time handling
Limit strings manipulation by using Date instead. Use system
locale to retrieve date and time formats to display.
Change-Id: Ib9b3be727546a031bcb9c8f231fa77091bdc7587
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
-rw-r--r-- | qml/js/utils.js | 44 | ||||
-rw-r--r-- | qml/pages/LongTermDayItem.qml | 1 | ||||
-rw-r--r-- | qml/pages/OneDayZoomItem.qml | 1 | ||||
-rw-r--r-- | src/daymodel.cpp | 26 | ||||
-rw-r--r-- | src/daymodel.h | 12 |
5 files changed, 41 insertions, 43 deletions
diff --git a/qml/js/utils.js b/qml/js/utils.js index b419f0e..1ae2cfb 100644 --- a/qml/js/utils.js +++ b/qml/js/utils.js @@ -39,6 +39,7 @@ ****************************************************************************/ .pragma library +.import QtQml 2.2 as QtQml // LongTermPage utils @@ -87,17 +88,17 @@ function isNegative(val) // OneDayPage utils function getFromTime(index, dayModel) { - var timerange = dayModel.getDayDetails(index, 'timeRange') - var pattern_time = /(.*) - .*/ - var time = timerange.replace(pattern_time, "$1") - return time + var fromDate = dayModel.getDayDetails(index, 'from') + var fromTime = Qt.formatTime(new Date(fromDate), Qt.locale().timeFormat(QtQml.Locale.ShortFormat)) + fromTime = fromTime.replace(/(:00) /, "") // save some space if display like 11:00 am + return fromTime } function getToTime(index, dayModel) { - var timerange = dayModel.getDayDetails(index, 'timeRange') - var pattern_time = /.* - (.*)/ - var time = timerange.replace(pattern_time, "$1") - return time + var toDate = dayModel.getDayDetails(index, 'to') + var toTime = Qt.formatTime(new Date(toDate), Qt.locale().timeFormat(QtQml.Locale.ShortFormat)) + toTime = toTime.replace(/(:00) /, "") // save some space if display like 11:00 am + return toTime } function getMaxMinTemp(dayModel) { @@ -166,10 +167,7 @@ function updateDayModel(dayModel, item) { var windIconUrl = getWindSymbolUrl(item.windSpeed, item.windDirectionDeg) var weatherUrl = extractSymbolUrl(item.symbolcode) - var day = Qt.formatDate(new Date(dayModel.date), "dddd") - var timeRange = getTimeRange(item) - - dayModel.addRow(day, weatherUrl, timeRange, item.temperature, item.windSpeed, windIconUrl, item.rain, item.period) + dayModel.addRow(weatherUrl, item.from, item.to, item.temperature, item.windSpeed, windIconUrl, item.rain, item.period) } function getItemDate(item) @@ -180,14 +178,6 @@ function getItemDate(item) return date } -function getTimeRange(item) -{ - var fromDateTime = parseDateTime(item.from) - var toDateTime = parseDateTime(item.to) - var timeRange = fromDateTime[1] + " - " + toDateTime[1] - return timeRange -} - function parseDateTime(dt) { var pattern_date = /(.*)T.*/ @@ -229,18 +219,24 @@ function extractSymbolUrl(code) function getDay(index, dayModel) { - var day = dayModel.getDayDetails(index, "day") - return day + var dayDate = new Date(dayModel.date) + return Qt.locale().dayName(dayDate.getDay()) } function getShortDate(date) { - return date.substr(8, 2) + "." + date.substr(5, 2) // dd.MM + var d = new Date(date) + var formatWithYear = Qt.locale().dateFormat(QtQml.Locale.ShortFormat) + var formatWithoutYear = formatWithYear.replace(/[y]{1,4}/, "") + formatWithoutYear = formatWithoutYear.replace(/^\W/, "") + formatWithoutYear = formatWithoutYear.replace(/\W$/, "") + return Qt.formatDate(d, formatWithoutYear) } function getLongDate(date) { - return date.substr(8, 2) + "." + date.substr(5, 2) + "." + date.substr(0, 4) // dd.MM.yyyy + var d = new Date(date) + return Qt.formatDate(d, Qt.locale().dateFormat(QtQml.Locale.ShortFormat)) } function getRain(index, dayModel) diff --git a/qml/pages/LongTermDayItem.qml b/qml/pages/LongTermDayItem.qml index f96be07..bfbcfd9 100644 --- a/qml/pages/LongTermDayItem.qml +++ b/qml/pages/LongTermDayItem.qml @@ -72,6 +72,7 @@ Rectangle { text: Utils.getDay(0, dayModel).substr(0, 3) font.weight: Font.DemiBold Layout.alignment: Qt.AlignBaseline + font.capitalization: Font.Capitalize } TouchLabel { Layout.preferredWidth: expectedTextWidth("00/00") diff --git a/qml/pages/OneDayZoomItem.qml b/qml/pages/OneDayZoomItem.qml index 96da59a..f1dff3b 100644 --- a/qml/pages/OneDayZoomItem.qml +++ b/qml/pages/OneDayZoomItem.qml @@ -66,6 +66,7 @@ GridLayout { text : Utils.getDay(root.slider.value, root.model) font.weight: Font.Bold Layout.alignment: Qt.AlignBaseline + font.capitalization: Font.Capitalize } TouchLabel { text: Utils.getLongDate(root.model.date) diff --git a/src/daymodel.cpp b/src/daymodel.cpp index 9d55861..3473fa1 100644 --- a/src/daymodel.cpp +++ b/src/daymodel.cpp @@ -54,12 +54,12 @@ DayModel::DayModel() QVariant DayModel::data(const QModelIndex &index, int role) const { - if (role == DayRole) - return m_data.at(index.row()).day; + if (role == FromRole) + return m_data.at(index.row()).from; if (role == WeatherUrlRole) return m_data.at(index.row()).weatherUrl; - if (role == TimeRangeRole) - return m_data.at(index.row()).timeRange; + if (role == ToRole) + return m_data.at(index.row()).to; if (role == TemperatureRole) return m_data.at(index.row()).temperature; if (role == WindSpeedRole) @@ -74,9 +74,9 @@ QVariant DayModel::data(const QModelIndex &index, int role) const QHash<int, QByteArray> DayModel::roleNames() const { QHash<int, QByteArray> rn; - rn[DayRole] = "day"; + rn[FromRole] = "from"; rn[WeatherUrlRole] = "weatherUrl"; - rn[TimeRangeRole] = "timeRange"; + rn[ToRole] = "to"; rn[TemperatureRole] = "temperature"; rn[WindSpeedRole] = "windSpeed"; rn[WindUrlRole] = "windUrl"; @@ -91,15 +91,15 @@ void DayModel::clear() m_data.clear(); } -void DayModel::addRow(QString day, QString weatherUrl, QString timeRange, QString temperature, QString windSpeed, QString windUrl, QString rain) { +void DayModel::addRow(QString weatherUrl, QString from, QString to, QString temperature, QString windSpeed, QString windUrl, QString rain) { QStringList m_images; DayModelStructure temp; - temp.day = day; + temp.from = from; temp.weatherUrl = weatherUrl; m_images.append(weatherUrl); QString largeWeatherIconUrl = weatherUrl; m_images.append(largeWeatherIconUrl.replace("b100", "b200")); - temp.timeRange = timeRange; + temp.to = to; temp.temperature = temperature; temp.windSpeed = windSpeed; temp.windUrl = windUrl; @@ -137,12 +137,12 @@ QString DayModel::getDayDetails(int index, QString prop) const index = 0; if (index < m_data.count()) { DayModelStructure temp = m_data.at(index); - if (prop == "day") - return temp.day; + if (prop == "from") + return temp.from; if (prop == "weatherUrl") return temp.weatherUrl; - if (prop == "timeRange") - return temp.timeRange; + if (prop == "to") + return temp.to; if (prop == "temperature") return temp.temperature; if (prop == "windSpeed") diff --git a/src/daymodel.h b/src/daymodel.h index 5448236..2edeeb3 100644 --- a/src/daymodel.h +++ b/src/daymodel.h @@ -61,9 +61,9 @@ class DayModel : public QObject public: struct DayModelStructure { - QString day; + QString from; QString weatherUrl; - QString timeRange; + QString to; QString temperature; QString windSpeed; QString windUrl; @@ -71,9 +71,9 @@ public: }; enum { - DayRole = Qt::UserRole + 1, - WeatherUrlRole = Qt::UserRole + 2, - TimeRangeRole = Qt::UserRole + 3, + WeatherUrlRole = Qt::UserRole + 1, + FromRole = Qt::UserRole + 2, + ToRole = Qt::UserRole + 3, TemperatureRole = Qt::UserRole + 4, WindSpeedRole = Qt::UserRole + 5, WindUrlRole = Qt::UserRole + 6, @@ -93,7 +93,7 @@ public: QVariant data(const QModelIndex &index, int role) const; QHash<int, QByteArray> roleNames() const; - Q_INVOKABLE void addRow(QString day, QString weatherUrl, QString timeRange, QString temperature, QString windSpeed, QString windUrl, QString rain); + Q_INVOKABLE void addRow(QString weatherUrl, QString from, QString to, QString temperature, QString windSpeed, QString windUrl, QString rain); Q_INVOKABLE QString getDayDetails(int index, QString prop) const; Q_INVOKABLE int periodCount() const { return m_data.count(); } |