1 | /* This file is part of the KDE project |
2 | Copyright (C) 2010 Dawit Alemayehu <adawit@kde.org> |
3 | |
4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public |
6 | License as published by the Free Software Foundation; either |
7 | version 2 of the License, or (at your option) any later version. |
8 | |
9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. |
13 | |
14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
17 | Boston, MA 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef KPARTS_FILEINFOEXTENSION_H |
21 | #define KPARTS_FILEINFOEXTENSION_H |
22 | |
23 | #include <QtCore/QObject> |
24 | |
25 | #include <kfileitem.h> |
26 | #include <kparts/kparts_export.h> |
27 | |
28 | class KFileItemList; |
29 | class FileInfoExtensionPrivate; |
30 | |
31 | namespace KParts |
32 | { |
33 | |
34 | class ReadOnlyPart; |
35 | |
36 | /** |
37 | * @short an extension for obtaining file information from the part. |
38 | * |
39 | * This extension provides information about file and directory resources |
40 | * that are present in the part the implements it. |
41 | * |
42 | * The main purpose of for this extension is to provide information about |
43 | * files and directories located on remote servers so that download managers |
44 | * such as kget can easily retrieve these resources. |
45 | * |
46 | * @since 4.6 |
47 | */ |
48 | class KPARTS_EXPORT FileInfoExtension : public QObject |
49 | { |
50 | Q_OBJECT |
51 | |
52 | public: |
53 | |
54 | /** |
55 | * Supported file information retrieval modes. |
56 | */ |
57 | enum QueryMode { |
58 | None = 0x00, /*!< Querying for file information is NOT possible */ |
59 | AllItems = 0x01, /*!< Retrieve or can retrieve file information for all items.*/ |
60 | SelectedItems = 0x02 /*!< Retrieve or can retrieve file information for selected items.*/ |
61 | }; |
62 | |
63 | Q_DECLARE_FLAGS(QueryModes, QueryMode) |
64 | |
65 | /*! Constructor */ |
66 | FileInfoExtension(KParts::ReadOnlyPart* parent); |
67 | |
68 | /*! Destructor */ |
69 | virtual ~FileInfoExtension(); |
70 | |
71 | /** |
72 | * Queries @p obj for a child object which inherits from this class. |
73 | */ |
74 | static FileInfoExtension *childObject( QObject *obj ); |
75 | |
76 | /** |
77 | * Returns true if any of the items in the current view of the part that |
78 | * implements this extension are selected. |
79 | * |
80 | * By default this function returns false. |
81 | */ |
82 | virtual bool hasSelection() const; |
83 | |
84 | /** |
85 | * Returns the file information retrieve modes supported by the part |
86 | * that implements this extension. |
87 | * |
88 | * By default this function returns None. |
89 | */ |
90 | virtual QueryModes supportedQueryModes() const; |
91 | |
92 | /** |
93 | * Returns a information for files that match the specified query @p mode. |
94 | * |
95 | * If the mode specified by @p mode is not supported or cannot be |
96 | * handled, then an empty list is returned. |
97 | */ |
98 | virtual KFileItemList queryFor(QueryMode mode) const = 0; |
99 | |
100 | private: |
101 | FileInfoExtensionPrivate* const d; |
102 | }; |
103 | |
104 | } |
105 | |
106 | Q_DECLARE_OPERATORS_FOR_FLAGS(KParts::FileInfoExtension::QueryModes) |
107 | |
108 | #endif /* KPARTS_FILEINFOEXTENSION_H */ |
109 | |