/* SPDX-FileCopyrightText: 2014 Daniel Vrátil SPDX-FileCopyrightText: 2020 Andrey Butirsky SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include #include "debug.h" class OrgKdeKeyboardLayoutsInterface; class LayoutNames; class KeyboardLayout : public QObject { Q_OBJECT Q_PROPERTY(uint layout MEMBER mLayout WRITE setLayout NOTIFY layoutChanged) Q_PROPERTY(const QVector &layoutsList READ getLayoutsList NOTIFY layoutsListChanged) public: explicit KeyboardLayout(QObject *parent = nullptr); ~KeyboardLayout() override; Q_SIGNALS: void layoutChanged(); void layoutsListChanged(); protected: Q_INVOKABLE void switchToNextLayout(); Q_INVOKABLE void switchToPreviousLayout(); private: void setLayout(uint index); const QVector &getLayoutsList() const { return mLayoutsList; } enum DBusData { Layout, LayoutsList }; template void requestDBusData(QDBusPendingReply pendingReply, T &out, void (KeyboardLayout::*notify)()); template void requestDBusData(); uint mLayout; QVector mLayoutsList; OrgKdeKeyboardLayoutsInterface *mIface; };