!31 add longdate and weekday format
From: @Venland Reviewed-by: @open-bot Signed-off-by: @open-bot
This commit is contained in:
commit
f5a4457e38
322
0001-feat-add-longdate-and-weekday-format.patch
Normal file
322
0001-feat-add-longdate-and-weekday-format.patch
Normal file
@ -0,0 +1,322 @@
|
||||
From bbfc2cb909ef6ebf5f5824cb65486ce2941df997 Mon Sep 17 00:00:00 2001
|
||||
From: liweigang <izmirvii@gmail.com>
|
||||
Date: Mon, 25 Mar 2024 14:03:15 +0800
|
||||
Subject: [PATCH] feat: add longdate and weekday format
|
||||
|
||||
Signed-off-by: liweigang <izmirvii@gmail.com>
|
||||
---
|
||||
plugins/datetime/datetimeplugin.cpp | 8 +-
|
||||
plugins/datetime/datetimewidget.cpp | 199 ++++++++++++++++++++++++++++
|
||||
plugins/datetime/datetimewidget.h | 17 ++-
|
||||
3 files changed, 218 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/plugins/datetime/datetimeplugin.cpp b/plugins/datetime/datetimeplugin.cpp
|
||||
index 93c4e89..feaf50f 100644
|
||||
--- a/plugins/datetime/datetimeplugin.cpp
|
||||
+++ b/plugins/datetime/datetimeplugin.cpp
|
||||
@@ -221,10 +221,10 @@ void DatetimePlugin::updateCurrentTimeString()
|
||||
{
|
||||
const QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||
|
||||
- if (m_centralWidget->is24HourFormat())
|
||||
- m_dateTipsLabel->setText(currentDateTime.date().toString(Qt::SystemLocaleLongDate) + currentDateTime.toString(" HH:mm:ss"));
|
||||
- else
|
||||
- m_dateTipsLabel->setText(currentDateTime.date().toString(Qt::SystemLocaleLongDate) + currentDateTime.toString(" hh:mm:ss A"));
|
||||
+ // 实时刷新日期,防止日期显示错误
|
||||
+ m_centralWidget->updateDateTimeString();
|
||||
+
|
||||
+ m_dateTipsLabel->setText(m_centralWidget->getDateTime());
|
||||
|
||||
const QString currentString = currentDateTime.toString("yyyy/MM/dd hh:mm");
|
||||
|
||||
diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp
|
||||
index 08bfbb3..4e0b252 100644
|
||||
--- a/plugins/datetime/datetimewidget.cpp
|
||||
+++ b/plugins/datetime/datetimewidget.cpp
|
||||
@@ -39,17 +39,29 @@ DWIDGET_USE_NAMESPACE
|
||||
DatetimeWidget::DatetimeWidget(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, m_24HourFormat(false)
|
||||
+ , m_longDateFormatType(0)
|
||||
+ , m_longTimeFormatType(0)
|
||||
, m_timeOffset(false)
|
||||
, m_timedateInter(new Timedate("com.deepin.daemon.Timedate", "/com/deepin/daemon/Timedate", QDBusConnection::sessionBus(), this))
|
||||
, m_shortDateFormat("yyyy-MM-dd")
|
||||
, m_shortTimeFormat("hh:mm")
|
||||
+ , m_longTimeFormat(" hh:mm:ss")
|
||||
+ , m_weekdayFormatType(0)
|
||||
{
|
||||
setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE);
|
||||
setShortDateFormat(m_timedateInter->shortDateFormat());
|
||||
setShortTimeFormat(m_timedateInter->shortTimeFormat());
|
||||
+ setLongDateFormat(m_timedateInter->longDateFormat());
|
||||
+ setWeekdayFormat(m_timedateInter->weekdayFormat());
|
||||
+ setLongTimeFormat(m_timedateInter->longTimeFormat());
|
||||
+ set24HourFormat(m_timedateInter->use24HourFormat());
|
||||
+ updateDateTimeString();
|
||||
|
||||
connect(m_timedateInter, &Timedate::ShortDateFormatChanged, this, &DatetimeWidget::setShortDateFormat);
|
||||
connect(m_timedateInter, &Timedate::ShortTimeFormatChanged, this, &DatetimeWidget::setShortTimeFormat);
|
||||
+ connect(m_timedateInter, &Timedate::LongDateFormatChanged, this, &DatetimeWidget::setLongDateFormat);
|
||||
+ connect(m_timedateInter, &Timedate::WeekdayFormatChanged, this, &DatetimeWidget::setWeekdayFormat);
|
||||
+ connect(m_timedateInter, &Timedate::LongTimeFormatChanged, this, &DatetimeWidget::setLongTimeFormat);
|
||||
//连接日期时间修改信号,更新日期时间插件的布局
|
||||
connect(m_timedateInter, &Timedate::TimeUpdate, this, [ = ]{
|
||||
if (isVisible()) {
|
||||
@@ -65,6 +77,7 @@ void DatetimeWidget::set24HourFormat(const bool value)
|
||||
}
|
||||
|
||||
m_24HourFormat = value;
|
||||
+ updateLongTimeFormat();
|
||||
update();
|
||||
|
||||
if (isVisible()) {
|
||||
@@ -115,6 +128,192 @@ void DatetimeWidget::setShortTimeFormat(int type)
|
||||
}
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * @brief DatetimeWidget::setLongDateFormat 根据类型设置长日期显示格式
|
||||
+ * @param type 自定义类型
|
||||
+ */
|
||||
+void DatetimeWidget::setLongDateFormat(int type)
|
||||
+{
|
||||
+ if (m_longDateFormatType == type)
|
||||
+ return;
|
||||
+
|
||||
+ m_longDateFormatType = type;
|
||||
+ updateDateTimeString();
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * @brief DatetimeWidget::setLongTimeFormat 根据类型设置长时间显示格式
|
||||
+ * @param type 自定义类型
|
||||
+ */
|
||||
+void DatetimeWidget::setLongTimeFormat(int type)
|
||||
+{
|
||||
+ if (m_longTimeFormatType == type)
|
||||
+ return;
|
||||
+
|
||||
+ m_longTimeFormatType = type;
|
||||
+ updateLongTimeFormat();
|
||||
+ updateDateTimeString();
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * @brief DatetimeWidget::setWeekdayFormat 根据类型设置周显示格式
|
||||
+ * @param type 自定义类型
|
||||
+ */
|
||||
+void DatetimeWidget::setWeekdayFormat(int type)
|
||||
+{
|
||||
+ if (m_weekdayFormatType == type)
|
||||
+ return;
|
||||
+
|
||||
+ m_weekdayFormatType = type;
|
||||
+ updateWeekdayFormat();
|
||||
+ updateDateTimeString();
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * @brief DatetimeWidget::updateWeekdayFormat 更新周的显示格式
|
||||
+ */
|
||||
+void DatetimeWidget::updateWeekdayFormat()
|
||||
+{
|
||||
+ const QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||
+ auto dayOfWeek = currentDateTime.date().dayOfWeek();
|
||||
+
|
||||
+ if (0 == m_weekdayFormatType) {
|
||||
+ switch (dayOfWeek) {
|
||||
+ case 1:
|
||||
+ m_weekFormat = tr("Monday"); //星期一
|
||||
+ break;
|
||||
+ case 2:
|
||||
+ m_weekFormat = tr("Tuesday"); //星期二
|
||||
+ break;
|
||||
+ case 3:
|
||||
+ m_weekFormat = tr("Wednesday"); //星期三
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ m_weekFormat = tr("Thursday"); //星期四
|
||||
+ break;
|
||||
+ case 5:
|
||||
+ m_weekFormat = tr("Friday"); //星期五
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ m_weekFormat = tr("Saturday"); //星期六
|
||||
+ break;
|
||||
+ case 7:
|
||||
+ m_weekFormat = tr("Sunday"); //星期天
|
||||
+ break;
|
||||
+ default:
|
||||
+ m_weekFormat = tr("Monday"); //星期一
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ switch (dayOfWeek) {
|
||||
+ case 1:
|
||||
+ m_weekFormat = tr("monday"); //周一
|
||||
+ break;
|
||||
+ case 2:
|
||||
+ m_weekFormat = tr("tuesday"); //周二
|
||||
+ break;
|
||||
+ case 3:
|
||||
+ m_weekFormat = tr("wednesday"); //周三
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ m_weekFormat = tr("thursday"); //周四
|
||||
+ break;
|
||||
+ case 5:
|
||||
+ m_weekFormat = tr("friday"); //周五
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ m_weekFormat = tr("saturday"); //周六
|
||||
+ break;
|
||||
+ case 7:
|
||||
+ m_weekFormat = tr("sunday"); //周天
|
||||
+ break;
|
||||
+ default:
|
||||
+ m_weekFormat = tr("monday"); //周一
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void DatetimeWidget::updateLongTimeFormat()
|
||||
+{
|
||||
+ if (m_24HourFormat) {
|
||||
+ switch (m_longTimeFormatType) {
|
||||
+ case 0: m_longTimeFormat = " h:mm:ss"; break;
|
||||
+ case 1: m_longTimeFormat = " hh:mm:ss"; break;
|
||||
+ default: m_longTimeFormat = " hh:mm:ss"; break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ switch (m_longTimeFormatType) {
|
||||
+ case 0: m_longTimeFormat = " h:mm:ss A"; break;
|
||||
+ case 1: m_longTimeFormat = " hh:mm:ss A"; break;
|
||||
+ default: m_longTimeFormat = " hh:mm:ss A"; break;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * @brief DatetimeWidget::updateWeekdayTimeString 更新任务栏时间标签的显示
|
||||
+ */
|
||||
+void DatetimeWidget::updateDateTimeString()
|
||||
+{
|
||||
+ QString longTimeFormat("");
|
||||
+ const QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||
+ int year = currentDateTime.date().year();
|
||||
+ int month = currentDateTime.date().month();
|
||||
+ int day = currentDateTime.date().day();
|
||||
+
|
||||
+ auto lang = QLocale::system().language();
|
||||
+ bool isZhLocale = lang == QLocale::Chinese || lang == QLocale::Tibetan || lang == QLocale::Uighur;
|
||||
+
|
||||
+ // 根据相应语言去显示对应的格式
|
||||
+ // 中文: 格式为xxxx年xx月xx日 星期x hh:mm:ss,如: 2024年3月25日 星期一 13:27:55
|
||||
+ // 英文: 格式为x x, xxxx, x hh:mm:ss,如 Mar 25, 2024, Monday 13:27:55
|
||||
+ // 其他语言: 按照国际当地长时间格式显示
|
||||
+ if (isZhLocale) {
|
||||
+ QString longTimeFormat = QString(tr("%1year%2month%3day")).arg(year).arg(month).arg(day);
|
||||
+
|
||||
+ // 实时更新周的日期显示
|
||||
+ updateWeekdayFormat();
|
||||
+
|
||||
+ switch (m_longDateFormatType) {
|
||||
+ case 0:
|
||||
+ m_dateTime = longTimeFormat + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ case 1:
|
||||
+ m_dateTime = longTimeFormat + QString(" ") + m_weekFormat + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ case 2:
|
||||
+ m_dateTime = m_weekFormat + QString(" ") + longTimeFormat + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ default:
|
||||
+ m_dateTime = longTimeFormat + QString(" ") + m_weekFormat + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ }
|
||||
+ } else if (lang == QLocale::English) {
|
||||
+ auto longDateString = currentDateTime.date().toString(Qt::SystemLocaleLongDate);
|
||||
+ auto week = longDateString.split(",").at(0);
|
||||
+ // 获取英文的日期格式字符串,-2是去掉","和" "
|
||||
+ auto longDateTimeFormat = longDateString.right(longDateString.size() - week.size() - 2);
|
||||
+
|
||||
+ switch (m_longDateFormatType) {
|
||||
+ case 0:
|
||||
+ m_dateTime = longDateTimeFormat + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ case 1:
|
||||
+ m_dateTime = longDateTimeFormat + QString(", ") + week + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ case 2:
|
||||
+ m_dateTime = week + QString(", ") + longDateTimeFormat + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ default:
|
||||
+ m_dateTime = longDateTimeFormat + QString(", ") + week + currentDateTime.toString(m_longTimeFormat);
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ m_dateTime = currentDateTime.date().toString(Qt::SystemLocaleLongDate) + currentDateTime.toString(m_longTimeFormat);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* @brief DatetimeWidget::curTimeSize 调整时间日期字体大小
|
||||
* @return 返回时间和日期绘制的区域大小
|
||||
diff --git a/plugins/datetime/datetimewidget.h b/plugins/datetime/datetimewidget.h
|
||||
index 42cba49..d6ab548 100644
|
||||
--- a/plugins/datetime/datetimewidget.h
|
||||
+++ b/plugins/datetime/datetimewidget.h
|
||||
@@ -33,10 +33,11 @@ class DatetimeWidget : public QWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
- explicit DatetimeWidget(QWidget *parent = 0);
|
||||
+ explicit DatetimeWidget(QWidget *parent = nullptr);
|
||||
|
||||
- bool is24HourFormat() const { return m_24HourFormat; }
|
||||
QSize sizeHint() const;
|
||||
+ inline bool is24HourFormat() const { return m_24HourFormat; }
|
||||
+ inline QString getDateTime() { return m_dateTime; }
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
@@ -47,22 +48,34 @@ signals:
|
||||
|
||||
public slots:
|
||||
void set24HourFormat(const bool value);
|
||||
+ void updateDateTimeString();
|
||||
|
||||
private Q_SLOTS:
|
||||
void setShortDateFormat(int type);
|
||||
void setShortTimeFormat(int type);
|
||||
+ void setLongDateFormat(int type);
|
||||
+ void setWeekdayFormat(int type);
|
||||
+ void setLongTimeFormat(int type);
|
||||
|
||||
private:
|
||||
QSize curTimeSize() const;
|
||||
+ void updateWeekdayFormat();
|
||||
+ void updateLongTimeFormat();
|
||||
|
||||
private:
|
||||
bool m_24HourFormat;
|
||||
+ int m_longDateFormatType;
|
||||
+ int m_longTimeFormatType;
|
||||
+ int m_weekdayFormatType;
|
||||
mutable QFont m_timeFont;
|
||||
mutable QFont m_dateFont;
|
||||
mutable int m_timeOffset;
|
||||
Timedate *m_timedateInter;
|
||||
QString m_shortDateFormat;
|
||||
QString m_shortTimeFormat;
|
||||
+ QString m_dateTime;
|
||||
+ QString m_weekFormat;
|
||||
+ QString m_longTimeFormat;
|
||||
};
|
||||
|
||||
#endif // DATETIMEWIDGET_H
|
||||
--
|
||||
2.33.1
|
||||
|
||||
@ -2,11 +2,12 @@
|
||||
|
||||
Name: dde-dock
|
||||
Version: 5.4.56.2
|
||||
Release: 3
|
||||
Release: 4
|
||||
Summary: Deepin desktop-environment - Dock module
|
||||
License: GPLv3
|
||||
URL: https://github.com/linuxdeepin/dde-dock
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
Patch0: 0001-feat-add-longdate-and-weekday-format.patch
|
||||
|
||||
BuildRequires: cmake
|
||||
BuildRequires: libarchive
|
||||
@ -90,6 +91,7 @@ sed -i 's|/usr/lib/dde-dock/plugins|%{_libdir}/dde-dock/plugins|' plugins/plugin
|
||||
sed -i 's|local/lib/dde-dock/plugins|local/%{_lib}/dde-dock/plugins|' plugins/plugin-guide/plugins-developer-guide.md
|
||||
|
||||
sed -i 's|lrelease|lrelease-qt5|' translate_generation.sh
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
export PATH=%{_qt5_bindir}:$PATH
|
||||
@ -120,6 +122,9 @@ export PATH=%{_qt5_bindir}:$PATH
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Mar 25 2024 liweigang <liweiganga@uniontech.com> - 5.4.56.2-4
|
||||
- feat: add longdate and weekday format
|
||||
|
||||
* Wed Feb 28 2024 liuzhilin <liuzhilin@uniontech.com> - 5.4.56.2-3
|
||||
- fix url in spec
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user