File indexing completed on 2024-05-12 05:37:14
0001 /* 0002 SPDX-FileCopyrightText: 2014 Daniel Vrátil <dvratil@redhat.com> 0003 SPDX-FileCopyrightText: 2020 Andrey Butirsky <butirsky@gmail.com> 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QDBusReply> 0010 0011 #include "debug.h" 0012 0013 class OrgKdeKeyboardLayoutsInterface; 0014 class LayoutNames; 0015 0016 class KeyboardLayout : public QObject 0017 { 0018 Q_OBJECT 0019 0020 Q_PROPERTY(uint layout MEMBER mLayout WRITE setLayout NOTIFY layoutChanged) 0021 0022 Q_PROPERTY(const QList<LayoutNames> &layoutsList READ getLayoutsList NOTIFY layoutsListChanged) 0023 0024 public: 0025 explicit KeyboardLayout(QObject *parent = nullptr); 0026 ~KeyboardLayout() override; 0027 0028 Q_SIGNALS: 0029 void layoutChanged(); 0030 void layoutsListChanged(); 0031 0032 protected: 0033 Q_INVOKABLE void switchToNextLayout(); 0034 Q_INVOKABLE void switchToPreviousLayout(); 0035 0036 private: 0037 void setLayout(uint index); 0038 const QList<LayoutNames> &getLayoutsList() const 0039 { 0040 return mLayoutsList; 0041 } 0042 0043 enum DBusData { Layout, LayoutsList }; 0044 0045 template<class T> 0046 void requestDBusData(QDBusPendingReply<T> pendingReply, T &out, void (KeyboardLayout::*notify)()); 0047 template<DBusData> 0048 void requestDBusData(); 0049 0050 uint mLayout = 0; 0051 QList<LayoutNames> mLayoutsList; 0052 OrgKdeKeyboardLayoutsInterface *mIface; 0053 };