File indexing completed on 2024-05-05 17:33:03
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QUrl> 0010 0011 #include <QQuickView> 0012 0013 class AbstractResource; 0014 class Category; 0015 class KStatusNotifierItem; 0016 class QWindow; 0017 class QQmlApplicationEngine; 0018 class CachedNetworkAccessManagerFactory; 0019 class TransactionsJob; 0020 0021 class DiscoverObject : public QObject 0022 { 0023 Q_OBJECT 0024 Q_PROPERTY(CompactMode compactMode READ compactMode WRITE setCompactMode NOTIFY compactModeChanged) 0025 Q_PROPERTY(bool isRoot READ isRoot CONSTANT) 0026 Q_PROPERTY(QRect initialGeometry READ initialGeometry CONSTANT) 0027 0028 public: 0029 enum CompactMode { 0030 Auto, 0031 Compact, 0032 Full, 0033 }; 0034 Q_ENUM(CompactMode) 0035 0036 explicit DiscoverObject(CompactMode mode, const QVariantMap &initialProperties); 0037 ~DiscoverObject() override; 0038 0039 QStringList modes() const; 0040 0041 CompactMode compactMode() const 0042 { 0043 return m_mode; 0044 } 0045 void setCompactMode(CompactMode mode); 0046 0047 bool eventFilter(QObject *object, QEvent *event) override; 0048 0049 Q_SCRIPTABLE static QString iconName(const QIcon &icon); 0050 0051 void loadTest(const QUrl &url); 0052 0053 static bool isRoot(); 0054 QQuickWindow *rootObject() const; 0055 void showError(const QString &msg); 0056 Q_INVOKABLE void copyTextToClipboard(const QString text); 0057 QRect initialGeometry() const; 0058 0059 QString describeSources() const; 0060 Q_SCRIPTABLE void restore(); 0061 0062 public Q_SLOTS: 0063 void openApplication(const QUrl &app); 0064 void openMimeType(const QString &mime); 0065 void openCategory(const QString &category); 0066 void openMode(const QString &mode); 0067 void openLocalPackage(const QUrl &localfile); 0068 0069 void reboot(); 0070 void rebootNow(); 0071 0072 private Q_SLOTS: 0073 void switchApplicationLanguage(); 0074 0075 Q_SIGNALS: 0076 void openSearch(const QString &search); 0077 void openApplicationInternal(AbstractResource *app); 0078 void listMimeInternal(const QString &mime); 0079 void listCategoryInternal(Category *cat); 0080 0081 void compactModeChanged(DiscoverObject::CompactMode compactMode); 0082 void unableToFind(const QString &resid); 0083 void openErrorPage(const QString &errorMessage, const QString &errorExplanation, const QString &buttonText, const QString &buttonIcon, const QString &buttonURL); 0084 0085 private: 0086 void showLoadingPage(); 0087 void integrateObject(QObject *object); 0088 bool quitWhenIdle(); 0089 void reconsiderQuit(); 0090 QQmlApplicationEngine *engine() const 0091 { 0092 return m_engine; 0093 } 0094 0095 QQmlApplicationEngine *const m_engine; 0096 0097 CompactMode m_mode; 0098 QScopedPointer<CachedNetworkAccessManagerFactory> m_networkAccessManagerFactory; 0099 KStatusNotifierItem *m_sni = nullptr; 0100 };