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