File indexing completed on 2024-05-12 04:45:57
0001 #include "tagsmodel.h" 0002 0003 #include <MauiKit3/FileBrowsing/fmstatic.h> 0004 #include <MauiKit3/FileBrowsing/tagging.h> 0005 0006 #include <KI18n/KLocalizedString> 0007 0008 TagsModel::TagsModel(QObject *parent) : MauiList(parent) 0009 { 0010 m_quickPlaces << QVariantMap{{"icon", "love"}, {"path", "tags:///fav"}, {"label", i18n("Favorites")}}; 0011 m_quickPlaces << QVariantMap{{"icon", "folder-download"}, {"path", FMStatic::DownloadsPath}, {"label", i18n("Downloads")}}; 0012 m_quickPlaces << QVariantMap{{"icon", "folder-videos"}, {"path", FMStatic::VideosPath}, {"label", i18n("Videos")}}; 0013 // m_quickPlaces << QVariantMap{{"icon", "org.gnome.Screenshot-symbolic"}, {"path", screenshotsPath().toString()}, {"label", i18n("Screenshots")}}; 0014 m_quickPlaces << QVariantMap{{"icon", "view-list-icons"}, {"path", "collection:///"}, {"label", i18n("Collection")}}; 0015 0016 connect(Tagging::getInstance(), &Tagging::tagged, [this](QVariantMap tag) { 0017 Q_EMIT this->preItemAppended(); 0018 auto item = FMH::toModel(tag); 0019 0020 item[FMH::MODEL_KEY::PATH] = "tags:///"+item[FMH::MODEL_KEY::TAG]; 0021 item[FMH::MODEL_KEY::TYPE] = i18n("Tags"); 0022 this->list << item; 0023 Q_EMIT this->postItemAppended(); 0024 }); 0025 } 0026 0027 void TagsModel::componentComplete() 0028 { 0029 this->setList(); 0030 } 0031 0032 QVariantList TagsModel::quickPlaces() const 0033 { 0034 return m_quickPlaces; 0035 } 0036 0037 const FMH::MODEL_LIST &TagsModel::items() const 0038 { 0039 return this->list; 0040 } 0041 0042 void TagsModel::setList() 0043 { 0044 Q_EMIT this->preListChanged(); 0045 this->list << this->tags(); 0046 Q_EMIT this->postListChanged(); 0047 Q_EMIT countChanged(); 0048 } 0049 0050 FMH::MODEL_LIST TagsModel::tags() 0051 { 0052 FMH::MODEL_LIST res; 0053 const auto tags = Tagging::getInstance()->getUrlsTags(true); 0054 0055 return std::accumulate(tags.constBegin(), tags.constEnd(), res, [this](FMH::MODEL_LIST &list, const QVariant &item) { 0056 auto tag = FMH::toModel(item.toMap()); 0057 // packPreviewImages(tag); 0058 tag[FMH::MODEL_KEY::PATH] = "tags:///"+tag[FMH::MODEL_KEY::TAG]; 0059 tag[FMH::MODEL_KEY::TYPE] = i18n("Tags"); 0060 list << tag; 0061 return list; 0062 }); 0063 } 0064 0065 void TagsModel::packPreviewImages(FMH::MODEL &tag) 0066 { 0067 const auto urls = Tagging::getInstance()->getTagUrls(tag[FMH::MODEL_KEY::TAG], {}, true, 4, "video"); 0068 tag[FMH::MODEL_KEY::PREVIEW] = QUrl::toStringList(urls).join(","); 0069 } 0070