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 }