]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/applyviewpropsjob.cpp
Merge branch 'master' into kf6
[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
14 ApplyViewPropsJob::ApplyViewPropsJob(const QUrl &dir, const ViewProperties &viewProps)
15 : KIO::Job()
16 , m_viewProps(nullptr)
17 , m_progress(0)
18 , m_dir(dir)
19 {
20 m_viewProps = new ViewProperties(dir);
21 m_viewProps->setViewMode(viewProps.viewMode());
22 m_viewProps->setPreviewsShown(viewProps.previewsShown());
23 m_viewProps->setHiddenFilesShown(viewProps.hiddenFilesShown());
24 m_viewProps->setSortRole(viewProps.sortRole());
25 m_viewProps->setSortOrder(viewProps.sortOrder());
26
27 KIO::ListJob *listJob = KIO::listRecursive(dir, KIO::HideProgressInfo);
28 connect(listJob, &KIO::ListJob::entries, this, &ApplyViewPropsJob::slotEntries);
29 addSubjob(listJob);
30 }
31
32 ApplyViewPropsJob::~ApplyViewPropsJob()
33 {
34 delete m_viewProps; // the properties are written by the destructor
35 m_viewProps = nullptr;
36 }
37
38 void ApplyViewPropsJob::slotEntries(KIO::Job *, const KIO::UDSEntryList &list)
39 {
40 for (const KIO::UDSEntry &entry : list) {
41 const QString name = entry.stringValue(KIO::UDSEntry::UDS_NAME);
42 if (name != QLatin1Char('.') && name != QLatin1String("..") && entry.isDir()) {
43 ++m_progress;
44
45 QUrl url(m_dir);
46 url = url.adjusted(QUrl::StripTrailingSlash);
47 url.setPath(url.path() + '/' + name);
48
49 Q_ASSERT(m_viewProps);
50
51 ViewProperties props(url);
52 props.setDirProperties(*m_viewProps);
53 }
54 }
55 }
56
57 void ApplyViewPropsJob::slotResult(KJob *job)
58 {
59 if (job->error()) {
60 setError(job->error());
61 setErrorText(job->errorText());
62 }
63 emitResult();
64 }
65
66 #include "moc_applyviewpropsjob.cpp"