1 | // -*- c++ -*- |
2 | /* |
3 | This file is part of the KDE libraries |
4 | SPDX-FileCopyrightText: 2001 Waldo Bastian <bastian@kde.org> |
5 | |
6 | SPDX-License-Identifier: LGPL-2.0-only |
7 | */ |
8 | |
9 | #ifndef KIO_WORKER_CONFIG_H |
10 | #define KIO_WORKER_CONFIG_H |
11 | |
12 | #include "metadata.h" |
13 | #include <QObject> |
14 | |
15 | #include <memory> |
16 | |
17 | namespace KIO |
18 | { |
19 | class WorkerConfigPrivate; |
20 | /** |
21 | * This class manages the configuration for KIO workers based on protocol |
22 | * and host. The Scheduler makes use of this class to configure the worker |
23 | * whenever it has to connect to a new host. |
24 | * |
25 | * You only need to use this class if you want to override specific |
26 | * configuration items of an KIO worker when the worker is used by |
27 | * your application. |
28 | * |
29 | * Normally KIO workers are being configured by "kio_<protocol>rc" |
30 | * configuration files. Groups defined in such files are treated as host |
31 | * or domain specification. Configuration items defined in a group are |
32 | * only applied when the worker is connecting with a host that matches with |
33 | * the host and/or domain specified by the group. |
34 | */ |
35 | class WorkerConfig : public QObject |
36 | { |
37 | Q_OBJECT |
38 | |
39 | public: |
40 | static WorkerConfig *self(); |
41 | ~WorkerConfig() override; |
42 | /** |
43 | * Configure workers of type @p protocol by setting @p key to @p value. |
44 | * If @p host is specified the configuration only applies when dealing |
45 | * with @p host. |
46 | * |
47 | * Changes made to the worker configuration only apply to workers |
48 | * used by the current process. |
49 | */ |
50 | void setConfigData(const QString &protocol, const QString &host, const QString &key, const QString &value); |
51 | |
52 | /** |
53 | * Configure workers of type @p protocol with @p config. |
54 | * If @p host is specified the configuration only applies when dealing |
55 | * with @p host. |
56 | * |
57 | * Changes made to the worker configuration only apply to workers |
58 | * used by the current process. |
59 | */ |
60 | void setConfigData(const QString &protocol, const QString &host, const MetaData &config); |
61 | |
62 | /** |
63 | * Query worker configuration for workers of type @p protocol when |
64 | * dealing with @p host. |
65 | */ |
66 | MetaData configData(const QString &protocol, const QString &host); |
67 | |
68 | /** |
69 | * Query a specific configuration key for workers of type @p protocol when |
70 | * dealing with @p host. |
71 | */ |
72 | QString configData(const QString &protocol, const QString &host, const QString &key); |
73 | |
74 | /** |
75 | * Undo any changes made by calls to setConfigData. |
76 | */ |
77 | void reset(); |
78 | |
79 | Q_SIGNALS: |
80 | /** |
81 | * This signal is raised when a worker of type @p protocol deals |
82 | * with @p host for the first time. |
83 | * |
84 | * Your application can use this signal to make some last minute |
85 | * configuration changes with setConfigData based on the |
86 | * host. |
87 | */ |
88 | void configNeeded(const QString &protocol, const QString &host); |
89 | |
90 | protected: |
91 | WorkerConfig(); |
92 | |
93 | private: |
94 | std::unique_ptr<WorkerConfigPrivate> const d; |
95 | friend class WorkerConfigSingleton; |
96 | }; |
97 | } |
98 | |
99 | #endif |
100 | |