/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: rekols * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DBUSADAPTORS_H #define DBUSADAPTORS_H #include #include #include "org_deepin_dde_inputdevice1_keyboard.h" using Keyboard = org::deepin::dde::inputdevice1::Keyboard1; class QGSettings; class DBusAdaptors : public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.deepin.dde.Dock1.KeyboardLayout") // Q_CLASSINFO("D-Bus Introspection", "" // " \n" // " \n" // " " // " " // " " // " \n" // "") public: explicit DBusAdaptors(QObject *parent = nullptr); ~DBusAdaptors(); public: Q_PROPERTY(QString layout READ layout WRITE setLayout NOTIFY layoutChanged) QString layout() const; void setLayout(const QString &str); Keyboard *getCurrentKeyboard(); public slots: void onClicked(int button, int x, int y); signals: void layoutChanged(QString text); private slots: void onCurrentLayoutChanged(const QString & value); void onUserLayoutListChanged(const QStringList & value); void initAllLayoutList(); void refreshMenu(); void refreshMenuSelection(); void handleActionTriggered(QAction *action); private slots: void onGSettingsChanged(const QString &key); private: QString duplicateCheck(const QString &kb); private: Keyboard *m_keyboard; QMenu *m_menu; QAction *m_addLayoutAction; QString m_currentLayoutRaw; QString m_currentLayout; QStringList m_userLayoutList; KeyboardLayoutList m_allLayoutList; const QGSettings *m_gsettings; }; #endif