on xenial help sign in
Merge
commit9d3992bf34d31f77b2dced5fbee2afb1d72ff673 authorAlbert Astals <albert.astals@canonical.com> dateWed 18 Dec 2013, 14:54 (13 years ago) parentc43037e9d637cd
11 files changed+67−11
plugins/Unity/Indicators/CMakeLists.txt−1 plugins/Unity/Indicators/Messaging/qml/SimpleTextMessage.qml+2−1 plugins/Unity/Indicators/Messaging/qml/SnapDecision.qml+2−2 plugins/Unity/Indicators/plugin.cpp−2 plugins/Utils/CMakeLists.txt+1 plugins/Utils/plugin.cpp+3 plugins/Unity/Indicators/timeformatter.cpp → plugins/Utils/timeformatter.cpp+30−1 plugins/Unity/Indicators/timeformatter.h → plugins/Utils/timeformatter.h+15−3 tests/plugins/Unity/Indicators/CMakeLists.txt−1 tests/plugins/Utils/CMakeLists.txt+1 tests/plugins/Unity/Indicators/timeformattertest.cpp → tests/plugins/Utils/timeformattertest.cpp+13
plugins/Unity/Indicators/CMakeLists.txt−1
@@ -36,7 +36,6 @@ set(IndicatorsQML_SOURCES
3636 unitymenumodelcache.cpp
3737 unitymenumodelstack.cpp
3838 visibleindicatorsmodel.cpp
39− timeformatter.cpp
4039)
4140add_definitions(-DUNITYINDICATORS_LIBRARY)
4241
plugins/Unity/Indicators/Messaging/qml/SimpleTextMessage.qml+2−1
@@ -21,6 +21,7 @@
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
2323import Unity.Indicators 0.1
24+import Utils 0.1 as Utils
2425
2526HeroMessage {
2627 id: __heroMessage
@@ -50,7 +51,7 @@ HeroMessage {
5051 opacity: 0.0
5152 enabled: false
5253
53− TimeFormatter {
54+ Utils.TimeFormatter {
5455 id: timeFormatter
5556 time: __heroMessage.time
5657 format: "hh:mm - MMM dd"
plugins/Unity/Indicators/Messaging/qml/SnapDecision.qml+2−2
@@ -20,8 +20,8 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import Unity.Indicators 0.1 as Indicators
2423import Unity.Indicators 0.1
24+import Utils 0.1 as Utils
2525
2626HeroMessage {
2727 id: snapDecision
@@ -59,7 +59,7 @@ HeroMessage {
5959 height: units.gu(4)
6060 opacity: 0.0
6161
62− TimeFormatter {
62+ Utils.TimeFormatter {
6363 id: timeFormatter
6464 time: snapDecision.time
6565 format: "hh:mm - MMM dd"
plugins/Unity/Indicators/plugin.cpp−2
@@ -33,7 +33,6 @@
3333#include "unitymenumodelcache.h"
3434#include "unitymenumodelstack.h"
3535#include "visibleindicatorsmodel.h"
36−#include "timeformatter.h"
3736
3837static QObject* menuModelCacheSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
3938 Q_UNUSED(engine);
@@ -52,7 +51,6 @@ void Indicators2Plugin::registerTypes(const char *uri)
5251 qmlRegisterType<RootActionState>(uri, 0, 1, "RootActionState");
5352 qmlRegisterType<ModelPrinter>(uri, 0, 1, "ModelPrinter");
5453 qmlRegisterType<VisibleIndicatorsModel>(uri, 0, 1, "VisibleIndicatorsModel");
55− qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
5654
5755 qmlRegisterSingletonType<UnityMenuModelCache>(uri, 0, 1, "UnityMenuModelCache", menuModelCacheSingleton);
5856
plugins/Utils/CMakeLists.txt+1
@@ -16,6 +16,7 @@ set(QMLPLUGIN_SRC
1616 mediaartcache.cpp
1717 qlimitproxymodelqml.cpp
1818 qsortfilterproxymodelqml.cpp
19+ timeformatter.cpp
1920 unitymenumodelpaths.cpp
2021 plugin.cpp
2122 )
plugins/Utils/plugin.cpp+3
@@ -30,6 +30,7 @@
3030#include "bottombarvisibilitycommunicatorshell.h"
3131#include "qlimitproxymodelqml.h"
3232#include "qsortfilterproxymodelqml.h"
33+#include "timeformatter.h"
3334#include "unitymenumodelpaths.h"
3435
3536static const char* BOTTOM_BAR_VISIBILITY_COMMUNICATOR_DBUS_PATH = "/BottomBarVisibilityCommunicator";
@@ -42,6 +43,8 @@ void UtilsPlugin::registerTypes(const char *uri)
4243 qmlRegisterType<QLimitProxyModelQML>(uri, 0, 1, "LimitProxyModel");
4344 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
4445 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
46+ qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
47+ qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
4548 qmlRegisterUncreatableType<BottomBarVisibilityCommunicatorShell>(uri, 0, 1, "BottomBarVisibilityCommunicatorShell", "Can't create BottomBarVisibilityCommunicatorShell");
4649}
4750
plugins/Unity/Indicators/timeformatter.cpp → plugins/Utils/timeformatter.cpprenamed+30−1
@@ -167,6 +167,35 @@ void TimeFormatter::setTime(qint64 time)
167167
168168void TimeFormatter::update()
169169{
170− priv->timeString = QDateTime::fromMSecsSinceEpoch(priv->time / 1000).toString(priv->format);
170+ priv->timeString = formatTime();
171171 Q_EMIT timeStringChanged(priv->timeString);
172172}
173+
174+QString TimeFormatter::formatTime() const
175+{
176+ return QDateTime::fromMSecsSinceEpoch(time() / 1000).toString(format());
177+}
178+
179+GDateTimeFormatter::GDateTimeFormatter(QObject* parent)
180+: TimeFormatter(parent)
181+{
182+}
183+
184+QString GDateTimeFormatter::formatTime() const
185+{
186+ gchar* time_string;
187+ GDateTime* datetime;
188+ QByteArray formatBytes = format().toUtf8();
189+
190+ datetime = g_date_time_new_from_unix_local(time());
191+ if (!datetime) {
192+ return "";
193+ }
194+
195+ time_string = g_date_time_format(datetime, formatBytes.constData());
196+ QString formattedTime(QString::fromUtf8(time_string));
197+
198+ g_free(time_string);
199+ g_date_time_unref(datetime);
200+ return formattedTime;
201+}
plugins/Unity/Indicators/timeformatter.h → plugins/Utils/timeformatter.hrenamed+15−3
@@ -19,10 +19,10 @@
1919#ifndef TIME_FORMATTER_H
2020#define TIME_FORMATTER_H
2121
22−#include "unityindicatorsglobal.h"
2322#include <QObject>
2423
25−class UNITYINDICATORS_EXPORT TimeFormatter : public QObject
24+// TODO - bug #1260728
25+class TimeFormatter : public QObject
2626{
2727 Q_OBJECT
2828 Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged)
@@ -31,7 +31,7 @@ class UNITYINDICATORS_EXPORT TimeFormatter : public QObject
3131
3232public:
3333 TimeFormatter(QObject *parent = 0);
34− ~TimeFormatter();
34+ virtual ~TimeFormatter();
3535
3636 QString format() const;
3737 QString timeString() const;
@@ -47,8 +47,20 @@ Q_SIGNALS:
4747 void timeStringChanged(const QString &timeString);
4848 void timeChanged(qint64 time);
4949
50+protected:
51+ virtual QString formatTime() const;
52+
5053private:
5154 struct TimeFormatterPrivate *priv;
5255};
5356
57+class GDateTimeFormatter : public TimeFormatter
58+{
59+public:
60+ GDateTimeFormatter(QObject *parent = 0);
61+
62+protected:
63+ virtual QString formatTime() const;
64+};
65+
5466#endif
tests/plugins/Unity/Indicators/CMakeLists.txt−1
@@ -40,4 +40,3 @@ indicator_test(indicatorsmodeltest ADDITIONAL_LIBS IndicatorsQml)
4040indicator_test(menucontentactivatortest ADDITIONAL_CPPS ${INDICATORS_DIR}/menucontentactivator.cpp)
4141indicator_test(unitymenumodelstacktest ADDITIONAL_CPPS ${TEST_DIR}/mocks/QMenuModel/unitymenumodel.cpp ${INDICATORS_DIR}/unitymenumodelstack.cpp)
4242indicator_test(rootactionstatetest ADDITIONAL_LIBS IndicatorsQml)
43−indicator_test(timeformattertest ADDITIONAL_LIBS IndicatorsQml)
tests/plugins/Utils/CMakeLists.txt+1
@@ -24,4 +24,5 @@ endmacro(run_tests)
2424run_tests(
2525 qlimitproxymodeltest
2626 qsortfilterproxymodeltest
27+ timeformattertest
2728 )
tests/plugins/Unity/Indicators/timeformattertest.cpp → tests/plugins/Utils/timeformattertest.cpprenamed+13
@@ -48,6 +48,19 @@ private Q_SLOTS:
4848
4949 QCOMPARE(formatter.timeString(), time.toString(format));
5050 }
51+
52+ void testFormatStrF()
53+ {
54+ const QString format = "%d-%m-%Y %I:%M%p";
55+
56+ QDateTime time = QDateTime::currentDateTime();
57+
58+ GDateTimeFormatter formatter;
59+ formatter.setTime(time.toMSecsSinceEpoch() / 1000); // strftime in seconds since epoc
60+ formatter.setFormat(format);
61+
62+ QCOMPARE(formatter.timeString(), time.toString("dd-MM-yyyy hh:mmAP"));
63+ }
5164};
5265
5366QTEST_GUILESS_MAIN(TimeFormatterTest)