on xenial help sign in
Moved time formatter to utils. Added StrFTimeFormatter
commit8f6afefab19ac66ab15464e3d1d15bbc84a2d0a4 authorNick Dedekind <nicholas.dedekind@gmail.com> dateWed 23 Oct 2013, 15:22 (13 years ago) parentb778dca
9 files changed+58−8
plugins/Unity/Indicators/CMakeLists.txt−1 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+26−1 plugins/Unity/Indicators/timeformatter.h → plugins/Utils/timeformatter.h+14−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/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 ubuntuwindow.cpp
2021 unitymenumodelpaths.cpp
2122 plugin.cpp
plugins/Utils/plugin.cpp+3
@@ -28,6 +28,7 @@
2828#include "applicationpaths.h"
2929#include "qlimitproxymodelqml.h"
3030#include "qsortfilterproxymodelqml.h"
31+#include "timeformatter.h"
3132#include "ubuntuwindow.h"
3233#include "unitymenumodelpaths.h"
3334
@@ -46,6 +47,8 @@ void UtilsPlugin::registerTypes(const char *uri)
4647 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
4748 qmlRegisterExtendedType<QQuickWindow, UbuntuWindow>(uri, 0, 1, "Window");
4849 qmlRegisterSingletonType<ApplicationPaths>(uri, 0, 1, "ApplicationPaths", applicationsPathsSingleton);
50+ qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
51+ qmlRegisterType<StrFTimeFormatter>(uri, 0, 1, "StrFTimeFormatter");
4952}
5053
5154void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
plugins/Unity/Indicators/timeformatter.cpp → plugins/Utils/timeformatter.cpprenamed+26−1
@@ -167,6 +167,31 @@ 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+StrFTimeFormatter::StrFTimeFormatter(QObject* parent)
180+: TimeFormatter(parent)
181+{
182+}
183+
184+QString StrFTimeFormatter::formatTime() const
185+{
186+ time_t rawtime;
187+ struct tm * timeinfo;
188+ char buffer [80];
189+
190+ rawtime = time();
191+ timeinfo = localtime (&rawtime);
192+
193+ QByteArray formatBytes = format().toUtf8();
194+
195+ strftime (buffer, 80, formatBytes.constData(), timeinfo);
196+ return QString(buffer);
197+}
plugins/Unity/Indicators/timeformatter.h → plugins/Utils/timeformatter.hrenamed+14−3
@@ -19,10 +19,9 @@
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+class TimeFormatter : public QObject
2625{
2726 Q_OBJECT
2827 Q_PROPERTY(QString format READ format WRITE setFormat NOTIFY formatChanged)
@@ -31,7 +30,7 @@ class UNITYINDICATORS_EXPORT TimeFormatter : public QObject
3130
3231public:
3332 TimeFormatter(QObject *parent = 0);
34− ~TimeFormatter();
33+ virtual ~TimeFormatter();
3534
3635 QString format() const;
3736 QString timeString() const;
@@ -47,8 +46,20 @@ Q_SIGNALS:
4746 void timeStringChanged(const QString &timeString);
4847 void timeChanged(qint64 time);
4948
49+protected:
50+ virtual QString formatTime() const;
51+
5052private:
5153 struct TimeFormatterPrivate *priv;
5254};
5355
56+class StrFTimeFormatter : public TimeFormatter
57+{
58+public:
59+ StrFTimeFormatter(QObject *parent = 0);
60+
61+protected:
62+ virtual QString formatTime() const;
63+};
64+
5465#endif
tests/plugins/Unity/Indicators/CMakeLists.txt−1
@@ -30,5 +30,4 @@ run_tests(
3030 indicatorsmodeltest
3131 menucontentactivatortest
3232 rootactionstatetest
33− timeformattertest
3433 )
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+ StrFTimeFormatter 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)