From f7cc0e46254c075bd6a5861f3c64a0ba8ce627a0 Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Fri, 22 May 2020 13:10:14 +0800 Subject: [PATCH] fix:The dock calendar is dynamically displayed icon by current date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dock日历根据日期动态显示图标(task:18543) --- frame/item/appitem.cpp | 17 +++++++++ frame/item/appitem.h | 4 +++ frame/item/item.qrc | 51 ++++++++++++++++++++++++++ frame/item/resources/calendar_bg.svg | 35 ++++++++++++++++++ frame/item/resources/day1.svg | 15 ++++++++ frame/item/resources/day10.svg | 15 ++++++++ frame/item/resources/day11.svg | 15 ++++++++ frame/item/resources/day12.svg | 15 ++++++++ frame/item/resources/day13.svg | 15 ++++++++ frame/item/resources/day14.svg | 15 ++++++++ frame/item/resources/day15.svg | 15 ++++++++ frame/item/resources/day16.svg | 15 ++++++++ frame/item/resources/day17.svg | 15 ++++++++ frame/item/resources/day18.svg | 15 ++++++++ frame/item/resources/day19.svg | 15 ++++++++ frame/item/resources/day2.svg | 15 ++++++++ frame/item/resources/day20.svg | 15 ++++++++ frame/item/resources/day21.svg | 15 ++++++++ frame/item/resources/day22.svg | 15 ++++++++ frame/item/resources/day23.svg | 15 ++++++++ frame/item/resources/day24.svg | 15 ++++++++ frame/item/resources/day25.svg | 15 ++++++++ frame/item/resources/day26.svg | 15 ++++++++ frame/item/resources/day27.svg | 15 ++++++++ frame/item/resources/day28.svg | 15 ++++++++ frame/item/resources/day29.svg | 15 ++++++++ frame/item/resources/day3.svg | 15 ++++++++ frame/item/resources/day30.svg | 15 ++++++++ frame/item/resources/day31.svg | 15 ++++++++ frame/item/resources/day4.svg | 15 ++++++++ frame/item/resources/day5.svg | 15 ++++++++ frame/item/resources/day6.svg | 15 ++++++++ frame/item/resources/day7.svg | 15 ++++++++ frame/item/resources/day8.svg | 15 ++++++++ frame/item/resources/day9.svg | 15 ++++++++ frame/item/resources/month1.svg | 3 ++ frame/item/resources/month10.svg | 3 ++ frame/item/resources/month11.svg | 3 ++ frame/item/resources/month12.svg | 3 ++ frame/item/resources/month2.svg | 3 ++ frame/item/resources/month3.svg | 3 ++ frame/item/resources/month4.svg | 3 ++ frame/item/resources/month5.svg | 3 ++ frame/item/resources/month6.svg | 3 ++ frame/item/resources/month7.svg | 3 ++ frame/item/resources/month8.svg | 3 ++ frame/item/resources/month9.svg | 3 ++ frame/item/resources/week1.svg | 3 ++ frame/item/resources/week2.svg | 3 ++ frame/item/resources/week3.svg | 3 ++ frame/item/resources/week4.svg | 3 ++ frame/item/resources/week5.svg | 3 ++ frame/item/resources/week6.svg | 3 ++ frame/item/resources/week7.svg | 3 ++ frame/util/imageutil.cpp | 10 ++++++ frame/util/imageutil.h | 1 + frame/util/themeappicon.cpp | 53 ++++++++++++++++++++++++++++ 57 files changed, 693 insertions(+) create mode 100644 frame/item/resources/calendar_bg.svg create mode 100644 frame/item/resources/day1.svg create mode 100644 frame/item/resources/day10.svg create mode 100644 frame/item/resources/day11.svg create mode 100644 frame/item/resources/day12.svg create mode 100644 frame/item/resources/day13.svg create mode 100644 frame/item/resources/day14.svg create mode 100644 frame/item/resources/day15.svg create mode 100644 frame/item/resources/day16.svg create mode 100644 frame/item/resources/day17.svg create mode 100644 frame/item/resources/day18.svg create mode 100644 frame/item/resources/day19.svg create mode 100644 frame/item/resources/day2.svg create mode 100644 frame/item/resources/day20.svg create mode 100644 frame/item/resources/day21.svg create mode 100644 frame/item/resources/day22.svg create mode 100644 frame/item/resources/day23.svg create mode 100644 frame/item/resources/day24.svg create mode 100644 frame/item/resources/day25.svg create mode 100644 frame/item/resources/day26.svg create mode 100644 frame/item/resources/day27.svg create mode 100644 frame/item/resources/day28.svg create mode 100644 frame/item/resources/day29.svg create mode 100644 frame/item/resources/day3.svg create mode 100644 frame/item/resources/day30.svg create mode 100644 frame/item/resources/day31.svg create mode 100644 frame/item/resources/day4.svg create mode 100644 frame/item/resources/day5.svg create mode 100644 frame/item/resources/day6.svg create mode 100644 frame/item/resources/day7.svg create mode 100644 frame/item/resources/day8.svg create mode 100644 frame/item/resources/day9.svg create mode 100644 frame/item/resources/month1.svg create mode 100644 frame/item/resources/month10.svg create mode 100644 frame/item/resources/month11.svg create mode 100644 frame/item/resources/month12.svg create mode 100644 frame/item/resources/month2.svg create mode 100644 frame/item/resources/month3.svg create mode 100644 frame/item/resources/month4.svg create mode 100644 frame/item/resources/month5.svg create mode 100644 frame/item/resources/month6.svg create mode 100644 frame/item/resources/month7.svg create mode 100644 frame/item/resources/month8.svg create mode 100644 frame/item/resources/month9.svg create mode 100644 frame/item/resources/week1.svg create mode 100644 frame/item/resources/week2.svg create mode 100644 frame/item/resources/week3.svg create mode 100644 frame/item/resources/week4.svg create mode 100644 frame/item/resources/week5.svg create mode 100644 frame/item/resources/week6.svg create mode 100644 frame/item/resources/week7.svg diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index a19c88a1e..38d9752bf 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -80,12 +80,14 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) m_dragging(false), m_retryTimes(0), + m_lastShowDay(0), m_lastclickTimes(0), m_appIcon(QPixmap()), m_updateIconGeometryTimer(new QTimer(this)), m_retryObtainIconTimer(new QTimer(this)), + m_refershIconTimer(new QTimer(this)), m_smallWatcher(new QFutureWatcher(this)), m_largeWatcher(new QFutureWatcher(this)) @@ -114,6 +116,9 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) m_retryObtainIconTimer->setInterval(500); m_retryObtainIconTimer->setSingleShot(true); + m_refershIconTimer->setInterval(1000); + m_refershIconTimer->setSingleShot(false); + connect(m_itemEntryInter, &DockEntryInter::IsActiveChanged, this, &AppItem::activeChanged); connect(m_itemEntryInter, &DockEntryInter::IsActiveChanged, this, static_cast(&AppItem::update)); connect(m_itemEntryInter, &DockEntryInter::WindowInfosChanged, this, &AppItem::updateWindowInfos, Qt::QueuedConnection); @@ -128,6 +133,14 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) connect(GSettingsByApp(), &QGSettings::changed, this, &AppItem::onGSettingsChanged); connect(GSettingsByDockApp(), &QGSettings::changed, this, &AppItem::onGSettingsChanged); connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &AppItem::onThemeTypeChanged); + + connect(m_refershIconTimer, &QTimer::timeout, this, [=](){ + m_curDate = QDate::currentDate(); + if(m_curDate.day() != m_lastShowDay){ + m_lastShowDay = m_curDate.day(); + refershIcon(); + } + }); } AppItem::~AppItem() @@ -595,6 +608,10 @@ void AppItem::refershIcon() else m_appIcon = ThemeAppIcon::getIcon(icon, iconSize * 0.8, devicePixelRatioF()); + if(!m_refershIconTimer->isActive()&&m_itemEntryInter->icon() == "dde-calendar"){ + m_refershIconTimer->start(); + } + if (m_appIcon.isNull()) { if (m_retryTimes < 5) { m_retryTimes++; diff --git a/frame/item/appitem.h b/frame/item/appitem.h index 1f8081dc7..d5078d6ba 100644 --- a/frame/item/appitem.h +++ b/frame/item/appitem.h @@ -113,6 +113,7 @@ private: bool m_dragging; bool m_active; int m_retryTimes; + int m_lastShowDay; unsigned long m_lastclickTimes; WindowInfoMap m_windowInfos; @@ -125,6 +126,9 @@ private: QTimer *m_updateIconGeometryTimer; QTimer *m_retryObtainIconTimer; + QTimer *m_refershIconTimer; + + QDate m_curDate; QFutureWatcher *m_smallWatcher; QFutureWatcher *m_largeWatcher; diff --git a/frame/item/item.qrc b/frame/item/item.qrc index 4384a0de0..213d454ef 100644 --- a/frame/item/item.qrc +++ b/frame/item/item.qrc @@ -6,6 +6,7 @@ resources/indicator_active_ver.svg resources/indicator_dark_ver.svg resources/indicator_active.svg + resources/calendar_bg.svg resources/arrow-up.svg @@ -16,5 +17,55 @@ resources/close_round_hover.svg resources/close_round_press.svg resources/close_round_normal.svg + resources/day1.svg + resources/day2.svg + resources/day3.svg + resources/day4.svg + resources/day5.svg + resources/day6.svg + resources/day7.svg + resources/day8.svg + resources/day9.svg + resources/day10.svg + resources/day11.svg + resources/day12.svg + resources/day13.svg + resources/day14.svg + resources/day15.svg + resources/day16.svg + resources/day17.svg + resources/day18.svg + resources/day19.svg + resources/day20.svg + resources/day21.svg + resources/day22.svg + resources/day23.svg + resources/day24.svg + resources/day25.svg + resources/day26.svg + resources/day27.svg + resources/day28.svg + resources/day29.svg + resources/day30.svg + resources/day31.svg + resources/month1.svg + resources/month2.svg + resources/month3.svg + resources/month4.svg + resources/month5.svg + resources/month6.svg + resources/month7.svg + resources/month8.svg + resources/month9.svg + resources/month10.svg + resources/month11.svg + resources/month12.svg + resources/week1.svg + resources/week2.svg + resources/week3.svg + resources/week4.svg + resources/week5.svg + resources/week6.svg + resources/week7.svg diff --git a/frame/item/resources/calendar_bg.svg b/frame/item/resources/calendar_bg.svg new file mode 100644 index 000000000..53489c8d2 --- /dev/null +++ b/frame/item/resources/calendar_bg.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day1.svg b/frame/item/resources/day1.svg new file mode 100644 index 000000000..b60c27e76 --- /dev/null +++ b/frame/item/resources/day1.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day10.svg b/frame/item/resources/day10.svg new file mode 100644 index 000000000..a97b3b12f --- /dev/null +++ b/frame/item/resources/day10.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day11.svg b/frame/item/resources/day11.svg new file mode 100644 index 000000000..3c7351852 --- /dev/null +++ b/frame/item/resources/day11.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day12.svg b/frame/item/resources/day12.svg new file mode 100644 index 000000000..83a432df2 --- /dev/null +++ b/frame/item/resources/day12.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day13.svg b/frame/item/resources/day13.svg new file mode 100644 index 000000000..3fe899b76 --- /dev/null +++ b/frame/item/resources/day13.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day14.svg b/frame/item/resources/day14.svg new file mode 100644 index 000000000..f0323b648 --- /dev/null +++ b/frame/item/resources/day14.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day15.svg b/frame/item/resources/day15.svg new file mode 100644 index 000000000..3927af0cd --- /dev/null +++ b/frame/item/resources/day15.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day16.svg b/frame/item/resources/day16.svg new file mode 100644 index 000000000..a669ec8a3 --- /dev/null +++ b/frame/item/resources/day16.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day17.svg b/frame/item/resources/day17.svg new file mode 100644 index 000000000..c011e79c9 --- /dev/null +++ b/frame/item/resources/day17.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day18.svg b/frame/item/resources/day18.svg new file mode 100644 index 000000000..fadb3d7b4 --- /dev/null +++ b/frame/item/resources/day18.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day19.svg b/frame/item/resources/day19.svg new file mode 100644 index 000000000..a6447dfdc --- /dev/null +++ b/frame/item/resources/day19.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day2.svg b/frame/item/resources/day2.svg new file mode 100644 index 000000000..ed78676d9 --- /dev/null +++ b/frame/item/resources/day2.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day20.svg b/frame/item/resources/day20.svg new file mode 100644 index 000000000..0be8f5078 --- /dev/null +++ b/frame/item/resources/day20.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day21.svg b/frame/item/resources/day21.svg new file mode 100644 index 000000000..77d554749 --- /dev/null +++ b/frame/item/resources/day21.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day22.svg b/frame/item/resources/day22.svg new file mode 100644 index 000000000..29201bdb7 --- /dev/null +++ b/frame/item/resources/day22.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day23.svg b/frame/item/resources/day23.svg new file mode 100644 index 000000000..84936acba --- /dev/null +++ b/frame/item/resources/day23.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day24.svg b/frame/item/resources/day24.svg new file mode 100644 index 000000000..8c2ce01df --- /dev/null +++ b/frame/item/resources/day24.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day25.svg b/frame/item/resources/day25.svg new file mode 100644 index 000000000..3796a347b --- /dev/null +++ b/frame/item/resources/day25.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day26.svg b/frame/item/resources/day26.svg new file mode 100644 index 000000000..a51a51dd6 --- /dev/null +++ b/frame/item/resources/day26.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day27.svg b/frame/item/resources/day27.svg new file mode 100644 index 000000000..52e4af0a6 --- /dev/null +++ b/frame/item/resources/day27.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day28.svg b/frame/item/resources/day28.svg new file mode 100644 index 000000000..58f06c719 --- /dev/null +++ b/frame/item/resources/day28.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day29.svg b/frame/item/resources/day29.svg new file mode 100644 index 000000000..026699807 --- /dev/null +++ b/frame/item/resources/day29.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day3.svg b/frame/item/resources/day3.svg new file mode 100644 index 000000000..44425a678 --- /dev/null +++ b/frame/item/resources/day3.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day30.svg b/frame/item/resources/day30.svg new file mode 100644 index 000000000..0bb5a1a49 --- /dev/null +++ b/frame/item/resources/day30.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day31.svg b/frame/item/resources/day31.svg new file mode 100644 index 000000000..e5d510fe4 --- /dev/null +++ b/frame/item/resources/day31.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day4.svg b/frame/item/resources/day4.svg new file mode 100644 index 000000000..386308eec --- /dev/null +++ b/frame/item/resources/day4.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day5.svg b/frame/item/resources/day5.svg new file mode 100644 index 000000000..820b375da --- /dev/null +++ b/frame/item/resources/day5.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day6.svg b/frame/item/resources/day6.svg new file mode 100644 index 000000000..2000e9e5b --- /dev/null +++ b/frame/item/resources/day6.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day7.svg b/frame/item/resources/day7.svg new file mode 100644 index 000000000..4db4cae55 --- /dev/null +++ b/frame/item/resources/day7.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day8.svg b/frame/item/resources/day8.svg new file mode 100644 index 000000000..9da28e0e7 --- /dev/null +++ b/frame/item/resources/day8.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/day9.svg b/frame/item/resources/day9.svg new file mode 100644 index 000000000..88f39b1c0 --- /dev/null +++ b/frame/item/resources/day9.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/frame/item/resources/month1.svg b/frame/item/resources/month1.svg new file mode 100644 index 000000000..0b4b7ed1e --- /dev/null +++ b/frame/item/resources/month1.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month10.svg b/frame/item/resources/month10.svg new file mode 100644 index 000000000..f7562eeb4 --- /dev/null +++ b/frame/item/resources/month10.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month11.svg b/frame/item/resources/month11.svg new file mode 100644 index 000000000..e1f0f4de6 --- /dev/null +++ b/frame/item/resources/month11.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month12.svg b/frame/item/resources/month12.svg new file mode 100644 index 000000000..8d9540222 --- /dev/null +++ b/frame/item/resources/month12.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month2.svg b/frame/item/resources/month2.svg new file mode 100644 index 000000000..a3a94c725 --- /dev/null +++ b/frame/item/resources/month2.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month3.svg b/frame/item/resources/month3.svg new file mode 100644 index 000000000..4150e7d02 --- /dev/null +++ b/frame/item/resources/month3.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month4.svg b/frame/item/resources/month4.svg new file mode 100644 index 000000000..210440802 --- /dev/null +++ b/frame/item/resources/month4.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month5.svg b/frame/item/resources/month5.svg new file mode 100644 index 000000000..50429ecf1 --- /dev/null +++ b/frame/item/resources/month5.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month6.svg b/frame/item/resources/month6.svg new file mode 100644 index 000000000..e84bb4bc7 --- /dev/null +++ b/frame/item/resources/month6.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month7.svg b/frame/item/resources/month7.svg new file mode 100644 index 000000000..273869c80 --- /dev/null +++ b/frame/item/resources/month7.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month8.svg b/frame/item/resources/month8.svg new file mode 100644 index 000000000..d681b03a3 --- /dev/null +++ b/frame/item/resources/month8.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/month9.svg b/frame/item/resources/month9.svg new file mode 100644 index 000000000..131096c08 --- /dev/null +++ b/frame/item/resources/month9.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week1.svg b/frame/item/resources/week1.svg new file mode 100644 index 000000000..eb12a35f0 --- /dev/null +++ b/frame/item/resources/week1.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week2.svg b/frame/item/resources/week2.svg new file mode 100644 index 000000000..1bdb92599 --- /dev/null +++ b/frame/item/resources/week2.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week3.svg b/frame/item/resources/week3.svg new file mode 100644 index 000000000..2bf6a0b3d --- /dev/null +++ b/frame/item/resources/week3.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week4.svg b/frame/item/resources/week4.svg new file mode 100644 index 000000000..5df30a705 --- /dev/null +++ b/frame/item/resources/week4.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week5.svg b/frame/item/resources/week5.svg new file mode 100644 index 000000000..8d8af30ea --- /dev/null +++ b/frame/item/resources/week5.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week6.svg b/frame/item/resources/week6.svg new file mode 100644 index 000000000..86cc488af --- /dev/null +++ b/frame/item/resources/week6.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/item/resources/week7.svg b/frame/item/resources/week7.svg new file mode 100644 index 000000000..8f3a620fc --- /dev/null +++ b/frame/item/resources/week7.svg @@ -0,0 +1,3 @@ + + + diff --git a/frame/util/imageutil.cpp b/frame/util/imageutil.cpp index dfce183f4..cd5e8b7a9 100644 --- a/frame/util/imageutil.cpp +++ b/frame/util/imageutil.cpp @@ -46,3 +46,13 @@ const QPixmap ImageUtil::loadSvg(const QString &iconName, const QString &localPa return pixmap; } + +const QPixmap ImageUtil::loadSvg(const QString &iconName, const QSize size, const qreal ratio) +{ + QIcon icon = QIcon::fromTheme(iconName); + if (!icon.isNull()) { + QPixmap pixmap = icon.pixmap(size*ratio); + pixmap.setDevicePixelRatio(ratio); + return pixmap; + } +} diff --git a/frame/util/imageutil.h b/frame/util/imageutil.h index 6497f7e62..ec986808c 100644 --- a/frame/util/imageutil.h +++ b/frame/util/imageutil.h @@ -29,6 +29,7 @@ class ImageUtil { public: static const QPixmap loadSvg(const QString &iconName, const QString &localPath, const int size, const qreal ratio); + static const QPixmap loadSvg(const QString &iconName, const QSize size, const qreal ratio); }; #endif // IMAGEUTIL_H diff --git a/frame/util/themeappicon.cpp b/frame/util/themeappicon.cpp index e091f2786..c01f6778e 100644 --- a/frame/util/themeappicon.cpp +++ b/frame/util/themeappicon.cpp @@ -27,6 +27,11 @@ #include #include #include +#include +#include +#include + +#include "../frame/util/imageutil.h" ThemeAppIcon::ThemeAppIcon(QObject *parent) : QObject(parent) { @@ -45,6 +50,54 @@ const QPixmap ThemeAppIcon::getIcon(const QString iconName, const int size, cons QIcon icon; // 把size改为小于size的最大偶数 :) const int s = int(size * ratio) & ~1; + const float iconZoom = size /64.0*0.8; + + if(iconName == "dde-calendar"){ + QDate const date(QDate::currentDate()); + + auto pixday = ImageUtil::loadSvg(":/indicator/resources/calendar_bg.svg","",size,ratio); + auto calendar = new QWidget() ; + calendar->setFixedSize(s,s); + + calendar->setAutoFillBackground(true); + QPalette palette = calendar->palette(); + palette.setBrush(QPalette::Window, + QBrush(QPixmap(":/indicator/resources/calendar_bg.svg").scaled( + calendar->size(), + Qt::IgnoreAspectRatio, + Qt::SmoothTransformation))); + calendar->setPalette(palette); + + QVBoxLayout *layout = new QVBoxLayout; + layout->setSpacing(0); + auto month = new QLabel(); + month->setPixmap( ImageUtil::loadSvg(QString(":/icons/resources/month%1.svg").arg(date.month()),QSize(36,16)*iconZoom,ratio)); + month->setFixedHeight(month->pixmap()->height()); + month->setAlignment(Qt::AlignCenter); + month->setFixedWidth(s-5*iconZoom); + layout->addWidget(month,Qt::AlignVCenter); + + auto day = new QLabel(); + day->setPixmap( ImageUtil::loadSvg(QString(":/icons/resources/day%1.svg").arg(date.day()),QSize(32,30)*iconZoom,ratio)); + day->setAlignment(Qt::AlignCenter); + day->setFixedHeight(day->pixmap()->height()); + day->raise(); + layout->addWidget(day,Qt::AlignVCenter); + + auto week = new QLabel(); + week->setPixmap( ImageUtil::loadSvg(QString(":/icons/resources/week%1.svg").arg(date.dayOfWeek()),QSize(26,13)*iconZoom,ratio)); + week->setFixedHeight(week->pixmap()->height()); + week->setAlignment(Qt::AlignCenter); + week->setFixedWidth(s+5*iconZoom); + layout->addWidget(week,Qt::AlignVCenter); + layout->setSpacing(0); + layout->setContentsMargins(0,10*iconZoom,0,10*iconZoom); + calendar->setLayout(layout); + pixmap = calendar->grab(calendar->rect()); + + return pixmap; + } + do {