1/*
2 This file is part of the KDE project
3 SPDX-FileCopyrightText: 2008 Peter Penz <peter.penz@gmx.at>
4 SPDX-FileCopyrightText: 2008 George Goldberg <grundleborg@googlemail.com>
5 SPDX-FileCopyrightText: 2009 David Faure <faure@kde.org>
6
7 SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
8*/
9
10#ifndef KFILEITEMLISTPROPERTIES_H
11#define KFILEITEMLISTPROPERTIES_H
12
13#include "kiocore_export.h"
14
15#include <QList>
16#include <QSharedDataPointer>
17#include <QUrl>
18
19class KFileItemListPropertiesPrivate;
20class KFileItemList;
21
22/*!
23 * \class KFileItemListProperties
24 * \inmodule KIOCore
25 *
26 * \brief Provides information about the common properties of a group of
27 * KFileItem objects.
28 *
29 * Given a list of KFileItems, this class can determine (and cache) the common
30 * MIME type for all items, whether all items are directories, whether all items
31 * are readable, writable, etc.
32 * As soon as one file item does not support a specific capability (read, write etc.),
33 * it is marked as unsupported for all items.
34 *
35 * This class is implicitly shared, which means it can be used as a value and
36 * copied around at almost no cost.
37 */
38class KIOCORE_EXPORT KFileItemListProperties
39{
40public:
41 /*!
42 * Default constructor. Use setItems to specify the items.
43 */
44 KFileItemListProperties();
45
46 /*!
47 * Constructor that takes a KFileItemList and sets the capabilities
48 * supported by all the FileItems as true.
49 *
50 * \a items The list of items that are to have their supported
51 * capabilities checked.
52 */
53 KFileItemListProperties(const KFileItemList &items);
54
55 /*!
56 * Copy constructor
57 */
58 KFileItemListProperties(const KFileItemListProperties &);
59
60 virtual ~KFileItemListProperties();
61
62 KFileItemListProperties &operator=(const KFileItemListProperties &other);
63
64 /*!
65 * Sets the items that are to have their supported capabilities checked.
66 */
67 void setItems(const KFileItemList &items);
68
69 /*!
70 * Check if reading capability is supported
71 *
72 * Returns \c true if all the FileItems can be read, otherwise false.
73 */
74 bool supportsReading() const;
75
76 /*!
77 * Check if deleting capability is supported
78 *
79 * Returns \c true if all the FileItems can be deleted, otherwise false.
80 */
81 bool supportsDeleting() const;
82
83 /*!
84 * Check if writing capability is supported
85 * (file managers use this mostly for directories)
86 *
87 * Returns \c true if all the FileItems can be written to, otherwise false.
88 */
89 bool supportsWriting() const;
90
91 /*!
92 * Check if moving capability is supported
93 *
94 * Returns \c true if all the FileItems can be moved, otherwise false.
95 */
96 bool supportsMoving() const;
97
98 /*!
99 * Check if files are local
100 *
101 * Returns \c true if all the FileItems are local, otherwise there is one or more
102 * remote file, so false.
103 */
104 bool isLocal() const;
105
106 /*!
107 * List of fileitems passed to the constructor or to setItems().
108 */
109 KFileItemList items() const;
110
111 /*!
112 * List of urls, gathered from the fileitems
113 */
114 QList<QUrl> urlList() const;
115
116 /*!
117 * Returns \c true if all items are directories
118 */
119 bool isDirectory() const;
120
121 /*!
122 * Returns whether all items are files, as reported by KFileItem::isFile().
123 * \since 5.47
124 */
125 bool isFile() const;
126
127 /*!
128 * Returns the MIME type of all items, if they all have the same, otherwise an empty string
129 */
130 QString mimeType() const;
131
132 /*!
133 * Returns the MIME type group (e.g. "text") of all items, if they all have the same, otherwise an empty string
134 */
135 QString mimeGroup() const;
136
137private:
138 QSharedDataPointer<KFileItemListPropertiesPrivate> d;
139};
140
141#endif /* KFILEITEMLISTPROPERTIES_H */
142

source code of kio/src/core/kfileitemlistproperties.h