File indexing completed on 2024-12-08 04:33:08
0001 /* 0002 SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "bannerinfo.h" 0010 #include "libruqolacore_export.h" 0011 #include <QDebug> 0012 #include <QVector> 0013 0014 class LIBRUQOLACORE_EXPORT BannerInfos 0015 { 0016 public: 0017 struct UnreadInformation { 0018 QString identifier; 0019 QString i18nMessage; 0020 [[nodiscard]] bool operator==(const UnreadInformation &other) const 0021 { 0022 return identifier == other.identifier && i18nMessage == other.i18nMessage; 0023 } 0024 [[nodiscard]] bool operator!=(const UnreadInformation &other) const 0025 { 0026 return !operator==(other); 0027 } 0028 }; 0029 0030 BannerInfos(); 0031 ~BannerInfos(); 0032 0033 [[nodiscard]] const QVector<BannerInfo> &banners() const; 0034 void setBanners(const QVector<BannerInfo> &newBanners); 0035 0036 void parseBannerInfos(const QJsonObject &object); 0037 0038 void clear(); 0039 0040 void updateBannerReadInfo(const QString &name, bool readStatus); 0041 0042 [[nodiscard]] int count() const; 0043 0044 [[nodiscard]] bool isEmpty() const; 0045 0046 [[nodiscard]] BannerInfo at(int index) const; 0047 0048 [[nodiscard]] QVector<BannerInfos::UnreadInformation> bannerUnreadInformations() const; 0049 0050 private: 0051 [[nodiscard]] LIBRUQOLACORE_NO_EXPORT QString generateText(const BannerInfo &info) const; 0052 QVector<BannerInfo> mBanners; 0053 }; 0054 0055 Q_DECLARE_METATYPE(BannerInfos) 0056 Q_DECLARE_METATYPE(BannerInfos::UnreadInformation) 0057 Q_DECLARE_TYPEINFO(BannerInfos::UnreadInformation, Q_RELOCATABLE_TYPE); 0058 LIBRUQOLACORE_EXPORT QDebug operator<<(QDebug d, const BannerInfos &t);