]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/applyviewpropsjob.cpp
GIT_SILENT Update Appstream for new release
[dolphin.git] / src / settings / applyviewpropsjob.cpp
1 /*
2 * SPDX-FileCopyrightText: 2006 Peter Penz <peter.penz19@gmail.com>
3 *
4 * The code is based on kdelibs/kio/directorysizejob:
5 * SPDX-FileCopyrightText: 2006 David Faure <faure@kde.org>
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10 #include "applyviewpropsjob.h"
11
12 #include "views/viewproperties.h"
13 #include <KIO/ListJob>
14
15 ApplyViewPropsJob::ApplyViewPropsJob(const QUrl &dir, const ViewProperties &viewProps)
16 : KIO::Job()
17 , m_viewProps(nullptr)
18 , m_progress(0)
19 , m_dir(dir)
20 {
21 m_viewProps = new ViewProperties(dir);
22 m_viewProps->setViewMode(viewProps.viewMode());
23 m_viewProps->setPreviewsShown(viewProps.previewsShown());
24 m_viewProps->setHiddenFilesShown(viewProps.hiddenFilesShown());
25 m_viewProps->setSortRole(viewProps.sortRole());
26 m_viewProps->setSortOrder(viewProps.sortOrder());
27
28 KIO::ListJob *listJob = KIO::listRecursive(dir, KIO::HideProgressInfo);
29 connect(listJob, &KIO::ListJob::entries, this, &ApplyViewPropsJob::slotEntries);
30 addSubjob(listJob);
31 }
32
33 ApplyViewPropsJob::~ApplyViewPropsJob()
34 {
35 delete m_viewProps; // the properties are written by the destructor
36 m_viewProps = nullptr;
37 }
38
39 void ApplyViewPropsJob::slotEntries(KIO::Job *, const KIO::UDSEntryList &list)
40 {
41 for (const KIO::UDSEntry &entry : list) {
42 const QString name = entry.stringValue(KIO::UDSEntry::UDS_NAME);
43 if (name != QLatin1Char('.') && name != QLatin1String("..") && entry.isDir()) {
44 ++m_progress;
45
46 QUrl url(m_dir);
47 url = url.adjusted(QUrl::StripTrailingSlash);
48 url.setPath(url.path() + QLatin1Char('/') + name);
49
50 Q_ASSERT(m_viewProps);
51
52 ViewProperties props(url);
53 props.setDirProperties(*m_viewProps);
54 }
55 }
56 }
57
58 void ApplyViewPropsJob::slotResult(KJob *job)
59 {
60 if (job->error()) {
61 setError(job->error());
62 setErrorText(job->errorText());
63 }
64 emitResult();
65 }
66
67 #include "moc_applyviewpropsjob.cpp"