File indexing completed on 2024-04-28 16:54:27
0001 /* 0002 SPDX-FileCopyrightText: 2014 Marco Martin <mart@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KConfigGroup> 0010 #include <KConfigWatcher> 0011 #include <KPluginMetaData> 0012 #include <KSharedConfig> 0013 #include <QPointer> 0014 #include <QQuickView> 0015 0016 #include <KRunner/RunnerManager> 0017 #include <KWayland/Client/plasmashell.h> 0018 0019 #include <PlasmaQuick/Dialog> 0020 0021 namespace KDeclarative 0022 { 0023 class QmlObject; 0024 } 0025 0026 namespace KWayland 0027 { 0028 namespace Client 0029 { 0030 class PlasmaShell; 0031 class PlasmaShellSurface; 0032 } 0033 } 0034 0035 class ViewPrivate; 0036 0037 class View : public PlasmaQuick::Dialog 0038 { 0039 Q_OBJECT 0040 Q_CLASSINFO("D-Bus Interface", "org.kde.krunner.App") 0041 0042 Q_PROPERTY(bool pinned READ pinned WRITE setPinned NOTIFY pinnedChanged) 0043 Q_PROPERTY(bool helpEnabled READ helpEnabled NOTIFY helpEnabledChanged) 0044 0045 public: 0046 explicit View(QWindow *parent = nullptr); 0047 ~View() override; 0048 0049 void positionOnScreen(); 0050 0051 bool freeFloating() const; 0052 void setFreeFloating(bool floating); 0053 0054 bool pinned() const; 0055 void setPinned(bool pinned); 0056 0057 bool helpEnabled() 0058 { 0059 const static auto metaData = KPluginMetaData(QStringLiteral("kf5/krunner/helprunner")); 0060 const KConfigGroup grp = KSharedConfig::openConfig()->group("Plugins"); 0061 return metaData.isEnabled(grp); 0062 } 0063 0064 Q_SIGNALS: 0065 void pinnedChanged(); 0066 void helpEnabledChanged(); 0067 0068 protected: 0069 bool event(QEvent *event) override; 0070 void resizeEvent(QResizeEvent *event) override; 0071 void showEvent(QShowEvent *event) override; 0072 0073 public Q_SLOTS: 0074 void setVisible(bool visible); 0075 void display(); 0076 void toggleDisplay(); 0077 void displaySingleRunner(const QString &runnerName); 0078 void displayWithClipboardContents(); 0079 void query(const QString &term); 0080 void querySingleRunner(const QString &runnerName, const QString &term); 0081 void switchUser(); 0082 void displayConfiguration(); 0083 0084 protected Q_SLOTS: 0085 void screenGeometryChanged(); 0086 void resetScreenPos(); 0087 void loadConfig(); 0088 void objectIncubated(); 0089 void slotFocusWindowChanged(); 0090 0091 private: 0092 void writeHistory(); 0093 QPoint m_customPos; 0094 KDeclarative::QmlObject *m_qmlObj; 0095 KConfigGroup m_config; 0096 KConfigGroup m_stateData; 0097 KConfigWatcher::Ptr m_configWatcher; 0098 qreal m_offset; 0099 bool m_floating : 1; 0100 bool m_requestedVisible = false; 0101 bool m_pinned = false; 0102 bool m_requestedClipboardSelection = false; 0103 QStringList m_history; 0104 Plasma::RunnerManager *m_manager = nullptr; 0105 };