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