diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 1e5f90aa2..d40f8a3be 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -99,11 +99,11 @@ Application::Application(not_null launcher) , _fallbackProductionConfig( std::make_unique(MTP::Environment::Production)) , _domain(std::make_unique(cDataFile())) -, _notifications(std::make_unique()) , _langpack(std::make_unique()) , _langCloudManager(std::make_unique(langpack())) , _emojiKeywords(std::make_unique()) , _audio(std::make_unique()) +, _notifications(std::make_unique()) , _logo(Window::LoadLogo()) , _logoNoMargin(Window::LoadLogoNoMargin()) , _autoLockTimer([=] { checkAutoLock(); }) { diff --git a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.h b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.h index 025305745..ee4d9e132 100644 --- a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.h +++ b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.h @@ -31,6 +31,7 @@ protected: void doClearAllFast() override; void doClearFromHistory(not_null history) override; void doClearFromSession(not_null session) override; + QString accountNameSeparator() override; private: class Private; diff --git a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm index f499cc2b9..1a57be422 100644 --- a/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm +++ b/Telegram/SourceFiles/platform/mac/notifications_manager_mac.mm @@ -386,5 +386,9 @@ void Manager::doClearFromSession(not_null session) { _private->clearFromSession(session); } +QString Manager::accountNameSeparator() { + return QString::fromUtf8(" \xE2\x86\x92 "); +} + } // namespace Notifications } // namespace Platform diff --git a/Telegram/SourceFiles/window/notifications_manager.cpp b/Telegram/SourceFiles/window/notifications_manager.cpp index 87e859304..77fafa6cb 100644 --- a/Telegram/SourceFiles/window/notifications_manager.cpp +++ b/Telegram/SourceFiles/window/notifications_manager.cpp @@ -18,6 +18,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "lang/lang_keys.h" #include "data/data_session.h" #include "data/data_channel.h" +#include "data/data_user.h" #include "base/unixtime.h" #include "window/window_session_controller.h" #include "core/application.h" @@ -547,6 +548,18 @@ Manager::DisplayOptions Manager::GetNotificationOptions(HistoryItem *item) { return result; } +QString Manager::addTargetAccountName( + const QString &title, + not_null session) { + return (Core::App().domain().accounts().size() > 1) + ? (title + accountNameSeparator() + session->user()->name) + : title; +} + +QString Manager::accountNameSeparator() { + return QString::fromUtf8(" \xE2\x9E\x9C "); +} + void Manager::notificationActivated(NotificationId id) { onBeforeNotificationActivated(id); if (const auto session = system()->findSession(id.selfId)) { @@ -644,6 +657,7 @@ void NativeManager::doShowNotification( : (scheduled && peer->isSelf()) ? tr::lng_notification_reminder(tr::now) : peer->name; + const auto fullTitle = addTargetAccountName(title, &peer->session()); const auto subtitle = options.hideNameAndPhoto ? QString() : item->notificationHeader(); @@ -661,7 +675,7 @@ void NativeManager::doShowNotification( item->history()->peer, userpicView, item->id, - scheduled ? WrapFromScheduled(title) : title, + scheduled ? WrapFromScheduled(fullTitle) : fullTitle, subtitle, text, options.hideNameAndPhoto, diff --git a/Telegram/SourceFiles/window/notifications_manager.h b/Telegram/SourceFiles/window/notifications_manager.h index 22f00f1cc..4086ab55d 100644 --- a/Telegram/SourceFiles/window/notifications_manager.h +++ b/Telegram/SourceFiles/window/notifications_manager.h @@ -186,6 +186,10 @@ public: [[nodiscard]] static DisplayOptions GetNotificationOptions( HistoryItem *item); + [[nodiscard]] QString addTargetAccountName( + const QString &title, + not_null session); + virtual ~Manager() = default; protected: @@ -206,6 +210,7 @@ protected: } virtual void onAfterNotificationActivated(NotificationId id) { } + [[nodiscard]] virtual QString accountNameSeparator(); private: void openNotificationMessage( diff --git a/Telegram/SourceFiles/window/notifications_manager_default.cpp b/Telegram/SourceFiles/window/notifications_manager_default.cpp index ea6d829a7..c4b9117ca 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.cpp +++ b/Telegram/SourceFiles/window/notifications_manager_default.cpp @@ -812,16 +812,17 @@ void Notification::updateNotifyDisplay() { } p.setPen(st::dialogsNameFg); - if (options.hideNameAndPhoto) { - p.setFont(st::msgNameFont); - static QString notifyTitle = st::msgNameFont->elided(qsl("Telegram Desktop"), rectForName.width()); - p.drawText(rectForName.left(), rectForName.top() + st::msgNameFont->ascent, notifyTitle); - } else if (reminder) { - p.setFont(st::msgNameFont); - p.drawText(rectForName.left(), rectForName.top() + st::msgNameFont->ascent, tr::lng_notification_reminder(tr::now)); - } else { - _history->peer->nameText().drawElided(p, rectForName.left(), rectForName.top(), rectForName.width()); - } + Ui::Text::String titleText; + const auto title = options.hideNameAndPhoto + ? qsl("Telegram Desktop") + : reminder + ? tr::lng_notification_reminder(tr::now) + : _history->peer->nameText().toString(); + const auto fullTitle = manager()->addTargetAccountName( + title, + &_history->session()); + titleText.setText(st::msgNameStyle, fullTitle, Ui::NameTextOptions()); + titleText.drawElided(p, rectForName.left(), rectForName.top(), rectForName.width()); } _cache = App::pixmapFromImageInPlace(std::move(img)); diff --git a/Telegram/SourceFiles/window/notifications_manager_default.h b/Telegram/SourceFiles/window/notifications_manager_default.h index 10fb3426c..34307b586 100644 --- a/Telegram/SourceFiles/window/notifications_manager_default.h +++ b/Telegram/SourceFiles/window/notifications_manager_default.h @@ -152,7 +152,7 @@ protected: virtual void updateGeometry(int x, int y, int width, int height); protected: - not_null manager() const { + [[nodiscard]] not_null manager() const { return _manager; }