]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/applyviewpropsjob.cpp
Merge branch 'work/zakharafoniam/useful-groups' of https://invent.kde.org/zakharafoni...
[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 m_viewProps->setGroupRole(viewProps.groupRole());
28 m_viewProps->setGroupOrder(viewProps.groupOrder());
29
30 KIO::ListJob *listJob = KIO::listRecursive(dir, KIO::HideProgressInfo);
31 connect(listJob, &KIO::ListJob::entries, this, &ApplyViewPropsJob::slotEntries);
32 addSubjob(listJob);
33 }
34
35 ApplyViewPropsJob::~ApplyViewPropsJob()
36 {
37 delete m_viewProps; // the properties are written by the destructor
38 m_viewProps = nullptr;
39 }
40
41 void ApplyViewPropsJob::slotEntries(KIO::Job *, const KIO::UDSEntryList &list)
42 {
43 for (const KIO::UDSEntry &entry : list) {
44 const QString name = entry.stringValue(KIO::UDSEntry::UDS_NAME);
45 if (name != QLatin1Char('.') && name != QLatin1String("..") && entry.isDir()) {
46 ++m_progress;
47
48 QUrl url(m_dir);
49 url = url.adjusted(QUrl::StripTrailingSlash);
50 url.setPath(url.path() + QLatin1Char('/') + name);
51
52 Q_ASSERT(m_viewProps);
53
54 ViewProperties props(url);
55 props.setDirProperties(*m_viewProps);
56 }
57 }
58 }
59
60 void ApplyViewPropsJob::slotResult(KJob *job)
61 {
62 if (job->error()) {
63 setError(job->error());
64 setErrorText(job->errorText());
65 }
66 emitResult();
67 }
68
69 #include "moc_applyviewpropsjob.cpp"