File indexing completed on 2024-05-05 10:07:51
0001 /* 0002 * SPDX-FileCopyrightText: 2006 Peter Penz <peter.penz19@gmail.com> 0003 * 0004 * The code is based on kdelibs/kio/directorysizejob: 0005 * SPDX-FileCopyrightText: 2006 David Faure <faure@kde.org> 0006 * 0007 * SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include "applyviewpropsjob.h" 0011 0012 #include "views/viewproperties.h" 0013 #include <KIO/ListJob> 0014 0015 ApplyViewPropsJob::ApplyViewPropsJob(const QUrl &dir, const ViewProperties &viewProps) 0016 : KIO::Job() 0017 , m_viewProps(nullptr) 0018 , m_progress(0) 0019 , m_dir(dir) 0020 { 0021 m_viewProps = new ViewProperties(dir); 0022 m_viewProps->setViewMode(viewProps.viewMode()); 0023 m_viewProps->setPreviewsShown(viewProps.previewsShown()); 0024 m_viewProps->setHiddenFilesShown(viewProps.hiddenFilesShown()); 0025 m_viewProps->setSortRole(viewProps.sortRole()); 0026 m_viewProps->setSortOrder(viewProps.sortOrder()); 0027 0028 KIO::ListJob *listJob = KIO::listRecursive(dir, KIO::HideProgressInfo); 0029 connect(listJob, &KIO::ListJob::entries, this, &ApplyViewPropsJob::slotEntries); 0030 addSubjob(listJob); 0031 } 0032 0033 ApplyViewPropsJob::~ApplyViewPropsJob() 0034 { 0035 delete m_viewProps; // the properties are written by the destructor 0036 m_viewProps = nullptr; 0037 } 0038 0039 void ApplyViewPropsJob::slotEntries(KIO::Job *, const KIO::UDSEntryList &list) 0040 { 0041 for (const KIO::UDSEntry &entry : list) { 0042 const QString name = entry.stringValue(KIO::UDSEntry::UDS_NAME); 0043 if (name != QLatin1Char('.') && name != QLatin1String("..") && entry.isDir()) { 0044 ++m_progress; 0045 0046 QUrl url(m_dir); 0047 url = url.adjusted(QUrl::StripTrailingSlash); 0048 url.setPath(url.path() + QLatin1Char('/') + name); 0049 0050 Q_ASSERT(m_viewProps); 0051 0052 ViewProperties props(url); 0053 props.setDirProperties(*m_viewProps); 0054 } 0055 } 0056 } 0057 0058 void ApplyViewPropsJob::slotResult(KJob *job) 0059 { 0060 if (job->error()) { 0061 setError(job->error()); 0062 setErrorText(job->errorText()); 0063 } 0064 emitResult(); 0065 } 0066 0067 #include "moc_applyviewpropsjob.cpp"