summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaroline Chao <caroline.chao@digia.com>2014-02-20 16:10:27 +0100
committerCaroline Chao <caroline.chao@digia.com>2014-02-27 13:49:01 +0100
commit2117732be5762810e58fbf6cf576440f1b3a8166 (patch)
tree0859a4c8d0b3ca4c32b9013b1e7260a36673a1a7
parent249b65d84e09c11676199a48da8ac0e8533a55e2 (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.js44
-rw-r--r--qml/pages/LongTermDayItem.qml1
-rw-r--r--qml/pages/OneDayZoomItem.qml1
-rw-r--r--src/daymodel.cpp26
-rw-r--r--src/daymodel.h12
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(); }