From b126455c0dd697b7047eb892a5317a83e8219362 Mon Sep 17 00:00:00 2001 From: gjq Date: Thu, 22 Feb 2024 08:52:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8D=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E6=8F=92=E4=BB=B6=E5=90=AF=E5=8A=A8=E6=97=B6?= =?UTF-8?q?UI=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settings-manager.cpp | 7 ++- .../notification-ukcc-plugin.cpp | 45 ++++++++++++++----- .../notification-ukcc-plugin.h | 7 ++- 3 files changed, 46 insertions(+), 13 deletions(-) diff --git a/libukui-notification/notification-settings/settings-manager.cpp b/libukui-notification/notification-settings/settings-manager.cpp index a991777..246cdd8 100644 --- a/libukui-notification/notification-settings/settings-manager.cpp +++ b/libukui-notification/notification-settings/settings-manager.cpp @@ -159,9 +159,12 @@ void SettingsManagerPrivate::updateSettingsFile() QStringList SettingsManagerPrivate::getAppInfo() { + // 过滤掉不需要显示的应用 + UkuiSearch::ApplicationPropertyMap restrictions = { + {UkuiSearch::ApplicationProperty::DontDisplay, 0} + }; - return m_applicationInfo->getInfo(UkuiSearch::ApplicationProperties{}, - UkuiSearch::ApplicationPropertyMap{{UkuiSearch::ApplicationProperty::AutoStart, 0}}).keys(); + return m_applicationInfo->getInfo(UkuiSearch::ApplicationProperties{}, restrictions).keys(); } void SettingsManagerPrivate::initSettingsData(QJsonObject &data) diff --git a/notification-ukcc-plugin/notification-ukcc-plugin.cpp b/notification-ukcc-plugin/notification-ukcc-plugin.cpp index 3c60e45..b924233 100644 --- a/notification-ukcc-plugin/notification-ukcc-plugin.cpp +++ b/notification-ukcc-plugin/notification-ukcc-plugin.cpp @@ -23,9 +23,9 @@ #include #include #include -#include #include #include +#include #define THEME_QT_SCHEMA "org.ukui.style" @@ -459,18 +459,43 @@ void Notice::initNoticeStatus() void Notice::initListUI() { - UkuiNotification::ApplicationsSettingsMap appDataMap = UkuiNotification::ApplicationsSettings::self()->getAllApplicationsSettings(); - UkuiNotification::ApplicationsSettingsMap::const_iterator i = appDataMap.constBegin(); - while(i != appDataMap.constEnd()) { - initItemUi(i.key(), i.value()); - ++i; - } + const UkuiSearch::ApplicationProperties& properties = { + UkuiSearch::ApplicationProperty::LocalName, + UkuiSearch::ApplicationProperty::Icon + }; + + const UkuiSearch::ApplicationPropertyMap& restrictions = { + {UkuiSearch::ApplicationProperty::DontDisplay, 0} + }; + + const UkuiSearch::ApplicationInfoMap& appInfoMap = m_appInfo->getInfo(properties, restrictions); + + connect(this, &Notice::appDataInfo, this, [=](UkuiNotification::ApplicationsSettingsMap dataMap){ + UkuiNotification::ApplicationsSettingsMap appDataMap = dataMap; + UkuiNotification::ApplicationsSettingsMap::const_iterator i = appDataMap.constBegin(); + while(i != appDataMap.constEnd()) { + const QString& desktopPath = i.key(); + + if (!appInfoMap.contains(desktopPath)) { + qWarning() << "Can't find application info for: " << desktopPath; + continue; + } else { + initItemUi(desktopPath, appInfoMap[desktopPath], i.value()); + } + ++i; + } + }, Qt::QueuedConnection); + + QtConcurrent::run([=](){ + UkuiNotification::ApplicationsSettingsMap dataMap = UkuiNotification::ApplicationsSettings::self()->getAllApplicationsSettings(); + Q_EMIT appDataInfo(dataMap); + }); } -void Notice::initItemUi(const QString &desktopPath, UkuiNotification::SingleApplicationSettings *settings) +void Notice::initItemUi(const QString &desktopPath, const UkuiSearch::ApplicationPropertyMap& properties, UkuiNotification::SingleApplicationSettings *settings) { - QString localName = m_appInfo->getInfo(desktopPath, UkuiSearch::ApplicationProperty::LocalName).toString(); - QString iconName = m_appInfo->getInfo(desktopPath, UkuiSearch::ApplicationProperty::Icon).toString(); + QString localName = properties[UkuiSearch::ApplicationProperty::LocalName].toString(); + QString iconName = properties[UkuiSearch::ApplicationProperty::Icon].toString(); QString fileName = desktopPath.left(desktopPath.indexOf(QLatin1Char('.'))); QFrame *baseWidget = new QFrame(m_noticeAppFrame); diff --git a/notification-ukcc-plugin/notification-ukcc-plugin.h b/notification-ukcc-plugin/notification-ukcc-plugin.h index 1b4fa8f..b6df48e 100644 --- a/notification-ukcc-plugin/notification-ukcc-plugin.h +++ b/notification-ukcc-plugin/notification-ukcc-plugin.h @@ -66,9 +66,14 @@ public: void initConnection(); void initNoticeStatus(); void initListUI(); - void initItemUi(const QString &desktopPath, UkuiNotification::SingleApplicationSettings *settings); + void initItemUi(const QString &desktopPath, + const UkuiSearch::ApplicationPropertyMap& properties, + UkuiNotification::SingleApplicationSettings *settings); void setAppIcon(QLabel *iconlabel, const QString &icon); +Q_SIGNALS: + void appDataInfo(UkuiNotification::ApplicationsSettingsMap appDataMap); + private: void setHiddenNoticeApp(bool status); void setComBoxStatus(bool status);