File indexing completed on 2024-04-21 04:45:29

0001 #include "library.h"
0002 #include <QSettings>
0003 #include <QFileInfo>
0004 
0005 #include <MauiKit3/FileBrowsing/fmstatic.h>
0006 
0007 Library *Library::m_instance = nullptr;
0008 
0009 Library::Library(QObject *parent) : QObject(parent)
0010 {   
0011     static const auto defaultSources = QStringList({FMStatic::DesktopPath, FMStatic::DownloadsPath, FMStatic::DocumentsPath});
0012 
0013     QSettings settings;
0014     settings.beginGroup("Settings");
0015     m_sources = settings.value("Sources", defaultSources).toStringList();
0016     settings.endGroup();
0017 }
0018 
0019 Library *Library::instance()
0020 {
0021     if(m_instance)
0022     {
0023         return m_instance;
0024     }
0025 
0026     m_instance = new Library();
0027     return m_instance;
0028 }
0029 
0030 QVariantList Library::sourcesModel() const
0031 {
0032     QVariantList res;
0033     for (const auto &url : m_sources)
0034     {
0035         if(FMStatic::fileExists(url))
0036         {
0037             res << FMStatic::getFileInfo(url);
0038         }
0039     }
0040 
0041     return res;
0042 }
0043 
0044 QStringList Library::sources() const
0045 {
0046     return m_sources;
0047 }
0048 
0049 void Library::openFiles(QStringList files)
0050 {
0051     QList<QUrl> res;
0052     for(const auto &file : files)
0053     {
0054         const auto url = QUrl::fromUserInput(file);
0055         if(FMStatic::isDir(url))
0056         {
0057             continue;
0058         }else
0059         {
0060             if(FMStatic::checkFileType(FMStatic::FILTER_TYPE::DOCUMENT, FMStatic::getMime(url)))
0061             {
0062                 res << url;
0063             }
0064         }
0065     }
0066 
0067     Q_EMIT this->requestedFiles(res);
0068 }
0069 
0070 void Library::removeSource(const QString &url)
0071 {
0072     m_sources.removeOne(url);
0073 
0074     QSettings settings;
0075     settings.beginGroup("Settings");
0076     settings.setValue("Sources", m_sources);
0077     settings.endGroup();
0078 
0079     Q_EMIT this->sourcesChanged(m_sources);
0080 }
0081 
0082 void Library::addSources(const QStringList &urls)
0083 {
0084     m_sources << urls;
0085     m_sources.removeDuplicates();
0086 
0087     QSettings settings;
0088     settings.beginGroup("Settings");
0089     settings.setValue("Sources", m_sources);
0090     settings.endGroup();
0091 
0092     Q_EMIT this->sourcesChanged(m_sources);
0093 }
0094 
0095 bool Library::isPDF(const QString &url)
0096 {
0097   return FMStatic::getMime(url) == "application/pdf";
0098 }
0099 
0100 bool Library::isPlainText(const QString &url)
0101 {
0102     return FMStatic::checkFileType(FMStatic::FILTER_TYPE::TEXT, FMStatic::getMime(url));
0103 }
0104 
0105 bool Library::isEpub(const QString &url)
0106 {
0107 
0108     return url.endsWith(".epub", Qt::CaseSensitivity::CaseInsensitive);
0109 }
0110 
0111 bool Library::isCommicBook(const QString &url)
0112 {
0113     auto mime = FMStatic::getMime(url);
0114     return mime == "application/vnd.comicbook+zip" || mime == "application/vnd.comicbook+rar";
0115 }
0116 
0117 
0118 
0119 
0120