]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/applyviewpropsjob.cpp
430b511216b4dd91bfce0294e674b4d161a866da
[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,
15 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,
30 this, &ApplyViewPropsJob::slotEntries);
31 addSubjob(listJob);
32 }
33
34 ApplyViewPropsJob::~ApplyViewPropsJob()
35 {
36 delete m_viewProps; // the properties are written by the destructor
37 m_viewProps = nullptr;
38 }
39
40 void ApplyViewPropsJob::slotEntries(KIO::Job*, const KIO::UDSEntryList& list)
41 {
42 for (const KIO::UDSEntry& entry : list) {
43 const QString name = entry.stringValue(KIO::UDSEntry::UDS_NAME);
44 if (name != QLatin1Char('.') && name != QLatin1String("..") && entry.isDir()) {
45 ++m_progress;
46
47 QUrl url(m_dir);
48 url = url.adjusted(QUrl::StripTrailingSlash);
49 url.setPath(url.path() + '/' + name);
50
51 Q_ASSERT(m_viewProps);
52
53 ViewProperties props(url);
54 props.setDirProperties(*m_viewProps);
55 }
56 }
57 }
58
59 void ApplyViewPropsJob::slotResult(KJob* job)
60 {
61 if (job->error()) {
62 setError(job->error());
63 setErrorText(job->errorText());
64 }
65 emitResult();
66 }
67