File indexing completed on 2024-04-28 07:45:15
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"