kde-workspace/khotkeys/libkhotkeysprivate/settings.h
Ivailo Monev 271625da07 khotkeys: drop gesture support
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2022-09-21 05:00:30 +03:00

203 lines
4.1 KiB
C++

/****************************************************************************
KHotKeys
Copyright (C) 1999-2001 Lubos Lunak <l.lunak@kde.org>
Distributed under the terms of the GNU General Public License version 2.
****************************************************************************/
#ifndef _SETTINGS_H_
#define _SETTINGS_H_
#include "actions/actions.h"
#include "action_data/action_data_group.h"
#include <kshortcut.h>
class KConfig;
namespace KHotKeys
{
class ActionDataGroup;
/**
* How to handle imports.
*/
enum ImportType
{
ImportNone, //!< no import is done
ImportAsk, //!< if already imported before, ask (called from GUI)
ImportSilent //!< if already imported before, ignore (called from the update script)
};
enum ActionState
{
Retain, //!< Keep the current state
Enabled, //!< Enable all actions
Disabled //!< Disable all actions
};
/**
* Handles KHotKeys Settings.
*
* Settings are saved to the khotkeysrc file.
*/
class KDE_EXPORT Settings
{
Q_DISABLE_COPY( Settings )
public:
Settings();
~Settings();
/**
* Get the system group.
*/
ActionDataGroup *get_system_group(ActionDataGroup::system_group_t group_id);
/**
* Read the settings.
*
* \param include_disabled_P Load disabled shortcuts?
*/
bool reread_settings(bool include_disabled = true);
/**
* Update the settings.
*
* Checks if updates are available and imports them if not yet done.
*/
bool update();
/**
* Write the settings.
*/
void write();
/**
* Export settings to @a config.
*
* @param id use id for the exported file.
* @param state state to use for exported actions
*/
void exportTo(
ActionDataBase *what,
KConfigBase &config,
const QString &id,
ActionState state,
bool allowMerging);
/**
* Import settings from \a cfg_P.
*/
bool import(KConfig& cfg_P, ImportType ask, ActionState state);
bool importFrom(
ActionDataGroup *parent,
KConfigBase const &config,
ImportType ask,
ActionState state);
/**
* Get all actions
*/
ActionDataGroup *actions();
const ActionDataGroup *actions() const;
/**
* Take the actions.
*
* \note Ownership is transfered to you. Subsequent calls to action() will
* return 0
*/
ActionDataGroup *takeActions();
/**
* Set the actions.
*
* \note Ownership is taken. The current action list will be deleted. If
* \@a actions is NULL the method will create a new ActionDataGroup
*/
void setActions( ActionDataGroup *actions );
/**
* @name KHotkeys Daemon
*/
//@{
/**
* Disable the daemon.
*/
void disableDaemon();
/**
* Enable the daemon.
*/
void enableDaemon();
/**
* Is the daemon disabled?
*/
bool isDaemonDisabled() const;
//@}
/**
* Load the default settings
*/
bool loadDefaults();
/**
* Check if the given config file is a valid khotkeys file
*/
bool isConfigFileValid(KConfigBase const &config, ImportType ask);
protected:
/**
* Read settings from \a cfg_P.
*
* @param root the group to import to
* @param config config object to read from
* @param include_disabled should we read disabled actions?
* @param state enable, disable or keep the actions enabled state
*/
bool read_settings(
ActionDataGroup *root,
KConfigBase const &config,
bool include_disabled,
ActionState state);
/**
* Make sure all System Groups exists
*/
void validate();
private:
// Reset all values. No defaults are loaded
void reinitialize();
/**
* TODO
*/
ActionDataGroup* m_actions;
/**
* KHotKeys daemon disabled?
*/
bool daemon_disabled;
/**
* List of id's for all imported files.
*/
QStringList already_imported;
friend class SettingsWriter;
};
} // namespace KHotKeys
#endif