File indexing completed on 2024-05-12 04:46:01
0001 #include "recentfilesmodel.h" 0002 0003 #include <MauiKit3/FileBrowsing/fileloader.h> 0004 #include <MauiKit3/FileBrowsing/fmstatic.h> 0005 0006 #include <QFileSystemWatcher> 0007 #include <QDebug> 0008 0009 RecentFilesModel::RecentFilesModel(QObject *parent) : 0010 MauiList(parent) 0011 , m_loader(new FMH::FileLoader) 0012 , m_watcher(new QFileSystemWatcher(this)) 0013 { 0014 // connect(m_loader, &FMH::FileLoader::itemsReady, [&](FMH::MODEL_LIST items) 0015 // { 0016 // Q_EMIT preItemsAppended(items.size()); 0017 // this->m_list << items; 0018 // Q_EMIT postItemAppended(); 0019 // }); 0020 0021 connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, &RecentFilesModel::setList); 0022 } 0023 0024 0025 const FMH::MODEL_LIST &RecentFilesModel::items() const 0026 { 0027 return m_list; 0028 } 0029 0030 QUrl RecentFilesModel::url() const 0031 { 0032 return m_url; 0033 } 0034 0035 void RecentFilesModel::setUrl(QUrl url) 0036 { 0037 if (m_url == url) 0038 return; 0039 0040 m_url = url; 0041 if(!m_watcher->directories().isEmpty()) 0042 { 0043 m_watcher->removePaths(m_watcher->directories()); 0044 } 0045 m_watcher->addPath(m_url.toLocalFile()); 0046 Q_EMIT urlChanged(m_url); 0047 } 0048 0049 void RecentFilesModel::setFilters(QStringList filters) 0050 { 0051 if (m_filters == filters) 0052 return; 0053 0054 m_filters = filters; 0055 Q_EMIT filtersChanged(m_filters); 0056 } 0057 0058 void RecentFilesModel::setList() 0059 { 0060 if (!m_url.isLocalFile () || !m_url.isValid () || m_url.isEmpty ()) 0061 return; 0062 0063 // m_loader->informer = &FMH::getFileInfoModel; 0064 // m_loader->requestPath({m_url}, true, m_filters.isEmpty () ? QStringList () : m_filters, QDir::Files, 50); 0065 0066 QDir dir(m_url.toLocalFile ()); 0067 dir.setNameFilters (m_filters); 0068 dir.setFilter (QDir::Files); 0069 dir.setSorting (QDir::Time); 0070 int i = 0; 0071 0072 this->m_list.clear(); 0073 Q_EMIT this->preListChanged (); 0074 const auto urls = dir.entryInfoList (); 0075 for(const auto &url : urls) 0076 { 0077 if(i >= 6) 0078 break; 0079 qDebug() << "RECENT:" << url.filePath () << dir.path (); 0080 m_urls << QUrl::fromLocalFile (url.filePath ()).toString(); 0081 m_list << FMStatic::getFileInfoModel (QUrl::fromLocalFile (url.filePath ())); 0082 i++; 0083 } 0084 Q_EMIT postListChanged (); 0085 Q_EMIT urlsChanged(); 0086 } 0087 0088 0089 void RecentFilesModel::componentComplete() 0090 { 0091 connect(this, &RecentFilesModel::urlChanged, this, &RecentFilesModel::setList); 0092 connect(this, &RecentFilesModel::filtersChanged, this, &RecentFilesModel::setList); 0093 setList (); 0094 } 0095 0096 QStringList RecentFilesModel::urls() const 0097 { 0098 return m_urls; 0099 } 0100 0101 QStringList RecentFilesModel::filters() const 0102 { 0103 return m_filters; 0104 }