diff options
Diffstat (limited to 'src/core/ksharedconfig.h')
| -rw-r--r-- | src/core/ksharedconfig.h | 88 | 
1 files changed, 88 insertions, 0 deletions
| diff --git a/src/core/ksharedconfig.h b/src/core/ksharedconfig.h new file mode 100644 index 00000000..42f7440e --- /dev/null +++ b/src/core/ksharedconfig.h @@ -0,0 +1,88 @@ +/* +  This file is part of the KDE libraries +  Copyright (c) 1999 Preston Brown <pbrown@kde.org> +  Copyright (C) 1997-1999 Matthias Kalle Dalheimer (kalle@kde.org) + +  This library is free software; you can redistribute it and/or +  modify it under the terms of the GNU Library General Public +  License as published by the Free Software Foundation; either +  version 2 of the License, or (at your option) any later version. + +  This library is distributed in the hope that it will be useful, +  but WITHOUT ANY WARRANTY; without even the implied warranty of +  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +  Library General Public License for more details. + +  You should have received a copy of the GNU Library General Public License +  along with this library; see the file COPYING.LIB.  If not, write to +  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +  Boston, MA 02110-1301, USA. +*/ + +#ifndef KSHAREDCONFIG_H +#define KSHAREDCONFIG_H + +#include <kconfig.h> +#include <QExplicitlySharedDataPointer> + +/** + * \class KSharedConfig ksharedconfig.h <KSharedConfig> + * + * KConfig variant using shared memory + * + * KSharedConfig provides a reference counted, shared memory variant + * of KConfig.  This allows you to use manipulate the same configuration + * files from different places in your code without worrying about + * accidentally overwriting changes. + * + * Note that, as with most of kdelibs, this is @b NOT threadsafe. + */ +class KCONFIGCORE_EXPORT KSharedConfig : public KConfig, public QSharedData //krazy:exclude=dpointer (only for refcounting) +{ +public: +  typedef QExplicitlySharedDataPointer<KSharedConfig> Ptr; + +public: +    /** +     * Creates a KSharedConfig object to manipulate a configuration file +     * +     * If an absolute path is specified for @p fileName, that file will be used +     * as the store for the configuration settings.  If a non-absolute path +     * is provided, the file will be looked for in the standard directory +     * specified by resourceType.  If no path is provided, a default +     * configuration file will be used based on the name of the main +     * application component. +     * +     * @p mode determines whether the user or global settings will be allowed +     * to influence the values returned by this object.  See KConfig::OpenFlags for +     * more details. +     * +     * @param fileName     the configuration file to open. If empty, it will be determined +     *                     automatically (from --config on the command line, otherwise +     *                     from the application name + "rc") +     * @param mode         how global settings should affect the configuration +     *                     options exposed by this KConfig object +     * @param resourceType The standard directory to look for the configuration +     *                     file in (see KStandardDirs) +     * +     * @sa KConfig +     */ +    static KSharedConfig::Ptr openConfig(const QString& fileName = QString(), +                                         OpenFlags mode = FullConfig, +                                         QStandardPaths::StandardLocation type = QStandardPaths::GenericConfigLocation); + +    virtual ~KSharedConfig(); + +private: +    Q_DISABLE_COPY(KSharedConfig) +    virtual KConfigGroup groupImpl(const QByteArray& aGroup); +    virtual const KConfigGroup groupImpl(const QByteArray& aGroup) const; + +    KSharedConfig(const QString& file, OpenFlags mode, +                  QStandardPaths::StandardLocation resourceType); + +}; + +typedef KSharedConfig::Ptr KSharedConfigPtr; + +#endif // multiple inclusion guard | 
