File indexing completed on 2024-05-12 04:46:01
0001 #include "dirinfo.h" 0002 0003 #if (defined Q_OS_LINUX || defined Q_OS_FREEBSD) && !defined Q_OS_ANDROID 0004 #include <KIO/DirectorySizeJob> 0005 #include <KIO/FileSystemFreeSpaceJob> 0006 #endif 0007 0008 #include <QDebug> 0009 #include <MauiKit3/FileBrowsing/fmstatic.h> 0010 0011 DirInfo::DirInfo(QObject *parent) : QObject(parent) 0012 { 0013 #if (defined Q_OS_LINUX || defined Q_OS_FREEBSD) && !defined Q_OS_ANDROID 0014 auto m_free = KIO::fileSystemFreeSpace (QUrl("file:///")); 0015 connect(m_free, &KIO::FileSystemFreeSpaceJob::result, [this, m_free](KJob *, KIO::filesize_t size, KIO::filesize_t available) 0016 { 0017 qDebug() << "got dir size info FREEE" << size << available; 0018 0019 m_totalSpace = size; 0020 m_avaliableSpace = available; 0021 0022 Q_EMIT this->avaliableSpaceChanged(m_avaliableSpace); 0023 Q_EMIT this->totalSpaceChanged(m_totalSpace); 0024 0025 m_free->deleteLater(); 0026 0027 }); 0028 #endif 0029 } 0030 0031 QUrl DirInfo::url() const 0032 { 0033 return m_url; 0034 } 0035 0036 quint64 DirInfo::size() const 0037 { 0038 return m_size; 0039 } 0040 0041 quint64 DirInfo::dirCount() const 0042 { 0043 return m_dirCount; 0044 } 0045 0046 quint64 DirInfo::filesCount() const 0047 { 0048 return m_filesCount; 0049 } 0050 0051 QString DirInfo::sizeString() const 0052 { 0053 QLocale m_locale; 0054 return m_locale.formattedDataSize(m_size); 0055 } 0056 0057 quint64 DirInfo::avaliableSpace() const 0058 { 0059 return m_avaliableSpace; 0060 } 0061 0062 quint64 DirInfo::totalSpace() const 0063 { 0064 return m_totalSpace; 0065 } 0066 0067 QString DirInfo::avaliableSpaceString() const 0068 { 0069 QLocale m_locale; 0070 return m_locale.formattedDataSize(m_avaliableSpace); 0071 } 0072 0073 QString DirInfo::totalSpaceString() const 0074 { 0075 QLocale m_locale; 0076 return m_locale.formattedDataSize(m_totalSpace); 0077 } 0078 0079 void DirInfo::setUrl(QUrl url) 0080 { 0081 if (m_url == url) 0082 return; 0083 0084 m_url = url; 0085 this->getSize(); 0086 Q_EMIT urlChanged(m_url); 0087 } 0088 0089 void DirInfo::getSize() 0090 { 0091 if(!m_url.isValid() || m_url.isEmpty() || !m_url.isLocalFile()) 0092 return; 0093 qDebug() << "Askign for dir size" << m_url; 0094 0095 #if (defined Q_OS_LINUX || defined Q_OS_FREEBSD) && !defined Q_OS_ANDROID 0096 auto m_job = KIO::directorySize(m_url); 0097 0098 // connect(m_job, &KIO::DirectorySizeJob::percent, [this, m_job](KJob *, unsigned long percent) 0099 // { 0100 // qDebug() << "got dir size info percent" << percent; 0101 // }); 0102 0103 // connect(m_job, &KIO::DirectorySizeJob::processedSize, [this, m_job](KJob *, qulonglong size) 0104 // { 0105 // qDebug() << "got dir size info processed size" << size; 0106 // }); 0107 0108 connect(m_job, &KIO::DirectorySizeJob::result, [this, m_job](KJob *) 0109 { 0110 qDebug() << "got dir size info" << m_job->totalSize(); 0111 m_size = m_job->totalSize(); 0112 m_filesCount = m_job->totalFiles(); 0113 m_dirCount = m_job->totalSubdirs(); 0114 0115 Q_EMIT this->sizeChanged(m_size); 0116 Q_EMIT this->filesCountChanged(m_filesCount); 0117 Q_EMIT this->dirsCountChanged(m_dirCount); 0118 0119 }); 0120 0121 #endif 0122 } 0123