File indexing completed on 2024-12-08 04:34:09
0001 /* 0002 SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #include "bannermessagewidget.h" 0007 #include "ruqolawidgets_debug.h" 0008 #include <KLocalizedString> 0009 #include <QAction> 0010 #include <QDesktopServices> 0011 #include <QUrl> 0012 0013 BannerMessageWidget::BannerMessageWidget(QWidget *parent) 0014 : KMessageWidget(parent) 0015 { 0016 setVisible(false); 0017 setCloseButtonVisible(false); 0018 setMessageType(Information); 0019 setWordWrap(true); 0020 setPosition(KMessageWidget::Header); 0021 0022 auto readAction = new QAction(i18n("Mark as Read"), this); 0023 readAction->setObjectName(QStringLiteral("read_action")); 0024 connect(readAction, &QAction::triggered, this, &BannerMessageWidget::slotReadInfo); 0025 addAction(readAction); 0026 connect(this, &BannerMessageWidget::linkActivated, this, &BannerMessageWidget::slotOpenUrl); 0027 } 0028 0029 BannerMessageWidget::~BannerMessageWidget() = default; 0030 0031 void BannerMessageWidget::slotReadInfo() 0032 { 0033 if (mBannerInfos.isEmpty()) { 0034 qCWarning(RUQOLAWIDGETS_LOG) << "banner info is empty! It's a bug"; 0035 } else { 0036 const auto info = mBannerInfos.takeFirst(); 0037 0038 Q_EMIT infoWasRead(info.identifier); 0039 updateInfo(); 0040 } 0041 } 0042 0043 const QVector<BannerInfos::UnreadInformation> &BannerMessageWidget::bannerInfos() const 0044 { 0045 return mBannerInfos; 0046 } 0047 0048 void BannerMessageWidget::setBannerInfos(const QVector<BannerInfos::UnreadInformation> &newBannerInfo) 0049 { 0050 if (mBannerInfos != newBannerInfo) { 0051 mBannerInfos = newBannerInfo; 0052 updateInfo(); 0053 } 0054 } 0055 0056 void BannerMessageWidget::updateInfo() 0057 { 0058 if (mBannerInfos.isEmpty()) { 0059 animatedHide(); 0060 } else { 0061 const auto info = mBannerInfos.first(); 0062 setText(info.i18nMessage); 0063 animatedShow(); 0064 } 0065 } 0066 0067 void BannerMessageWidget::slotOpenUrl(const QString &url) 0068 { 0069 QDesktopServices::openUrl(QUrl(url)); 0070 } 0071 0072 #include "moc_bannermessagewidget.cpp"