From 064cd7e44f52690fc4e0f0fc3d7dc46680b8bc58 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sat, 23 Jul 2016 19:49:34 +0300 Subject: [PATCH] add ability do not translate strings in DateTime formatter option X-AW-Translate, ApiVer 2 --- .../awesomewidgets/awdatetimeformatter.cpp | 31 +++++++++++++++++- sources/awesomewidgets/awdatetimeformatter.h | 8 +++++ sources/awesomewidgets/awdatetimeformatter.ui | 32 ++++++++++++++++++- sources/test/testdatetimeformatter.cpp | 2 ++ sources/version.h.in | 2 +- 5 files changed, 72 insertions(+), 3 deletions(-) diff --git a/sources/awesomewidgets/awdatetimeformatter.cpp b/sources/awesomewidgets/awdatetimeformatter.cpp index 65fcffc..c413516 100644 --- a/sources/awesomewidgets/awdatetimeformatter.cpp +++ b/sources/awesomewidgets/awdatetimeformatter.cpp @@ -54,7 +54,7 @@ QString AWDateTimeFormatter::convert(const QVariant &_value) const { qCDebug(LOG_LIB) << "Convert value" << _value; - return _value.toDateTime().toString(m_format); + return m_locale.toString(_value.toDateTime(), m_format); } @@ -67,6 +67,7 @@ AWDateTimeFormatter *AWDateTimeFormatter::copy(const QString _fileName, = new AWDateTimeFormatter(static_cast(parent()), _fileName); AWAbstractFormatter::copyDefaults(item); item->setFormat(format()); + item->setTranslateString(translateString()); item->setNumber(_number); return item; @@ -79,6 +80,12 @@ QString AWDateTimeFormatter::format() const } +bool AWDateTimeFormatter::translateString() const +{ + return m_translate; +} + + void AWDateTimeFormatter::setFormat(const QString _format) { qCDebug(LOG_LIB) << "Set format" << _format; @@ -87,6 +94,15 @@ void AWDateTimeFormatter::setFormat(const QString _format) } +void AWDateTimeFormatter::setTranslateString(const bool _translate) +{ + qCDebug(LOG_LIB) << "Set translate string" << _translate; + + m_translate = _translate; + initLocale(); +} + + void AWDateTimeFormatter::readConfiguration() { AWAbstractFormatter::readConfiguration(); @@ -95,6 +111,8 @@ void AWDateTimeFormatter::readConfiguration() settings.beginGroup(QString("Desktop Entry")); setFormat(settings.value(QString("X-AW-Format"), format()).toString()); + setTranslateString( + settings.value(QString("X-AW-Translate"), translateString()).toBool()); settings.endGroup(); bumpApi(AWEFAPI); @@ -109,6 +127,8 @@ int AWDateTimeFormatter::showConfiguration(const QVariant args) ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText(QString("DateTime")); ui->lineEdit_format->setText(format()); + ui->checkBox_translate->setCheckState(translateString() ? Qt::Checked + : Qt::Unchecked); int ret = exec(); if (ret != 1) @@ -117,6 +137,7 @@ int AWDateTimeFormatter::showConfiguration(const QVariant args) setComment(ui->lineEdit_comment->text()); setStrType(ui->label_typeValue->text()); setFormat(ui->lineEdit_format->text()); + setTranslateString(ui->checkBox_translate->checkState() == Qt::Checked); writeConfiguration(); return ret; @@ -132,16 +153,24 @@ void AWDateTimeFormatter::writeConfiguration() const settings.beginGroup(QString("Desktop Entry")); settings.setValue(QString("X-AW-Format"), format()); + settings.setValue(QString("X-AW-Translate"), translateString()); settings.endGroup(); settings.sync(); } +void AWDateTimeFormatter::initLocale() +{ + m_locale = m_translate ? QLocale::system() : QLocale::c(); +} + + void AWDateTimeFormatter::translate() { ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); ui->label_format->setText(i18n("Format")); + ui->checkBox_translate->setText(i18n("Transalte strings")); } diff --git a/sources/awesomewidgets/awdatetimeformatter.h b/sources/awesomewidgets/awdatetimeformatter.h index 30f328b..0cdf153 100644 --- a/sources/awesomewidgets/awdatetimeformatter.h +++ b/sources/awesomewidgets/awdatetimeformatter.h @@ -19,6 +19,7 @@ #define AWDATETIMEFORMATTER_H #include "awabstractformatter.h" +#include namespace Ui @@ -30,6 +31,8 @@ class AWDateTimeFormatter : public AWAbstractFormatter { Q_OBJECT Q_PROPERTY(QString format READ format WRITE setFormat) + Q_PROPERTY( + bool translateString READ translateString WRITE setTranslateString) public: explicit AWDateTimeFormatter(QWidget *parent, @@ -39,7 +42,9 @@ public: AWDateTimeFormatter *copy(const QString _fileName, const int _number); // properties QString format() const; + bool translateString() const; void setFormat(const QString _format); + void setTranslateString(const bool _translate); public slots: void readConfiguration(); @@ -48,9 +53,12 @@ public slots: private: Ui::AWDateTimeFormatter *ui = nullptr; + void initLocale(); void translate(); // properties + QLocale m_locale; QString m_format = QString(); + bool m_translate = true; }; diff --git a/sources/awesomewidgets/awdatetimeformatter.ui b/sources/awesomewidgets/awdatetimeformatter.ui index f0f80dc..b761f1d 100644 --- a/sources/awesomewidgets/awdatetimeformatter.ui +++ b/sources/awesomewidgets/awdatetimeformatter.ui @@ -7,7 +7,7 @@ 0 0 420 - 157 + 185 @@ -104,6 +104,36 @@ + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Translate strings + + + + + diff --git a/sources/test/testdatetimeformatter.cpp b/sources/test/testdatetimeformatter.cpp index 41a1554..c97b570 100644 --- a/sources/test/testdatetimeformatter.cpp +++ b/sources/test/testdatetimeformatter.cpp @@ -56,10 +56,12 @@ void TestAWDateTimeFormatter::test_conversion() void TestAWDateTimeFormatter::test_copy() { + formatter->setTranslateString(false); AWDateTimeFormatter *newFormatter = formatter->copy(QString("/dev/null"), 1); QCOMPARE(newFormatter->format(), formatter->format()); + QCOMPARE(newFormatter->translateString(), formatter->translateString()); QCOMPARE(newFormatter->number(), 1); delete newFormatter; diff --git a/sources/version.h.in b/sources/version.h.in index 518de5a..b52da4d 100644 --- a/sources/version.h.in +++ b/sources/version.h.in @@ -35,7 +35,7 @@ // extweather api version #define AWEWAPI 3 // formatter api version -#define AWEFAPI 1 +#define AWEFAPI 2 // network requests timeout, ms #define REQUEST_TIMEOUT 3000 // available time keys