File indexing completed on 2024-04-21 03:56:25

0001 /*
0002     SPDX-FileCopyrightText: 2016 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "downloadlinkinfo.h"
0008 #include <KFormat>
0009 #include <QMimeDatabase>
0010 
0011 class DownloadLinkInfoPrivate : public QSharedData
0012 {
0013 public:
0014     QString name;
0015     QString priceAmount;
0016     QString distributionType;
0017     QString descriptionLink;
0018     int id = 0;
0019     bool isDownloadtypeLink = true;
0020     quint64 size = 0;
0021     QString mimeType;
0022     QString icon;
0023 };
0024 
0025 DownloadLinkInfo::DownloadLinkInfo(const KNSCore::Entry::DownloadLinkInformation &data)
0026     : d(new DownloadLinkInfoPrivate)
0027 {
0028     d->name = data.name;
0029     d->priceAmount = data.priceAmount;
0030     d->distributionType = data.distributionType;
0031     d->descriptionLink = data.descriptionLink;
0032     d->id = data.id;
0033     d->isDownloadtypeLink = data.isDownloadtypeLink;
0034     d->size = data.size;
0035     QMimeDatabase db;
0036     for (QString string : data.tags) {
0037         if (string.startsWith(QStringLiteral("data##mimetype="))) {
0038             d->mimeType = string.split(QStringLiteral("=")).last();
0039         }
0040     }
0041     d->icon = db.mimeTypeForName(d->mimeType).iconName();
0042     if (d->icon.isEmpty()) {
0043         d->icon = db.mimeTypeForName(d->mimeType).genericIconName();
0044     }
0045     if (d->icon.isEmpty()) {
0046         d->icon = QStringLiteral("download");
0047     }
0048 }
0049 
0050 DownloadLinkInfo::DownloadLinkInfo(const DownloadLinkInfo &) = default;
0051 DownloadLinkInfo &DownloadLinkInfo::operator=(const DownloadLinkInfo &) = default;
0052 DownloadLinkInfo::~DownloadLinkInfo() = default;
0053 
0054 QString DownloadLinkInfo::name() const
0055 {
0056     return d->name;
0057 }
0058 
0059 QString DownloadLinkInfo::priceAmount() const
0060 {
0061     return d->priceAmount;
0062 }
0063 
0064 QString DownloadLinkInfo::distributionType() const
0065 {
0066     return d->distributionType;
0067 }
0068 
0069 QString DownloadLinkInfo::descriptionLink() const
0070 {
0071     return d->descriptionLink;
0072 }
0073 
0074 int DownloadLinkInfo::id() const
0075 {
0076     return d->id;
0077 }
0078 
0079 bool DownloadLinkInfo::isDownloadtypeLink() const
0080 {
0081     return d->isDownloadtypeLink;
0082 }
0083 
0084 quint64 DownloadLinkInfo::size() const
0085 {
0086     return d->size;
0087 }
0088 
0089 QString DownloadLinkInfo::formattedSize() const
0090 {
0091     static const KFormat formatter;
0092     if (d->size == 0) {
0093         return QString();
0094     }
0095     return formatter.formatByteSize(d->size * 1000);
0096 }
0097 
0098 QString DownloadLinkInfo::icon() const
0099 {
0100     return d->icon;
0101 }
0102 
0103 #include "moc_downloadlinkinfo.cpp"