File indexing completed on 2024-05-12 17:07:15

0001 /*
0002     SPDX-FileCopyrightText: 2010 Andriy Rysin <rysin@kde.org>
0003     SPDX-FileCopyrightText: 2021 Cyril Rossi <cyril.rossi@enioka.com>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "x11_helper.h"
0011 
0012 #include <QList>
0013 #include <QMap>
0014 #include <QPair>
0015 #include <QString>
0016 #include <QStringList>
0017 
0018 #include "keyboardsettings.h"
0019 
0020 /**
0021  * This class provides configuration options for keyboard module
0022  */
0023 class KeyboardConfig : public KeyboardSettingsBase
0024 {
0025 public:
0026     static const int NO_LOOPING; // = -1;
0027 
0028     enum SwitchingPolicy {
0029         SWITCH_POLICY_GLOBAL = 0,
0030         SWITCH_POLICY_DESKTOP = 1,
0031         SWITCH_POLICY_APPLICATION = 2,
0032         SWITCH_POLICY_WINDOW = 3,
0033     };
0034 
0035     QList<LayoutUnit> layouts;
0036 
0037     KeyboardConfig(QObject *parent);
0038 
0039     // Getter/setter for switchMode options with SwitchingPolicy enum type values
0040     SwitchingPolicy switchingPolicy() const;
0041     void setSwitchingPolicy(SwitchingPolicy switchingPolicy);
0042     SwitchingPolicy defaultSwitchingPolicyValue() const;
0043 
0044     bool layoutsSaveNeeded() const;
0045 
0046     // Initialize layouts list when activating 'Configure Layouts' option and there is none.
0047     QList<LayoutUnit> getDefaultLayouts() const;
0048     QList<LayoutUnit> getExtraLayouts() const;
0049 
0050     void setDefaults() override;
0051     void load();
0052     void save();
0053 
0054     static QString getSwitchingPolicyString(SwitchingPolicy switchingPolicy);
0055 
0056 private:
0057     QList<LayoutUnit> m_referenceLayouts;
0058     int m_referenceLayoutLoopCount;
0059 };