File indexing completed on 2024-05-05 05:29:12
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 #define DISCOVER_BASE_URL "qrc:/qt/qml/org/kde/discover/qml" 0022 0023 class DiscoverObject : public QObject 0024 { 0025 Q_OBJECT 0026 Q_PROPERTY(bool isRoot READ isRoot CONSTANT) 0027 Q_PROPERTY(QRect initialGeometry READ initialGeometry CONSTANT) 0028 Q_PROPERTY(QQuickWindow *mainWindow READ mainWindow CONSTANT) 0029 0030 public: 0031 explicit DiscoverObject(const QVariantMap &initialProperties); 0032 ~DiscoverObject() override; 0033 0034 QStringList modes() const; 0035 0036 bool eventFilter(QObject *object, QEvent *event) override; 0037 0038 Q_SCRIPTABLE static QString iconName(const QIcon &icon); 0039 0040 void loadTest(const QUrl &url); 0041 0042 static bool isRoot(); 0043 QQuickWindow *mainWindow() const; 0044 void showError(const QString &msg); 0045 Q_INVOKABLE void copyTextToClipboard(const QString text); 0046 QRect initialGeometry() const; 0047 0048 QString describeSources() const; 0049 Q_SCRIPTABLE void restore(); 0050 0051 public Q_SLOTS: 0052 void openApplication(const QUrl &app); 0053 void openMimeType(const QString &mime); 0054 void openCategory(const QString &category); 0055 void openMode(const QString &mode); 0056 void openLocalPackage(const QUrl &localfile); 0057 0058 void reboot(); 0059 void rebootNow(); 0060 0061 private Q_SLOTS: 0062 void switchApplicationLanguage(); 0063 0064 Q_SIGNALS: 0065 void openSearch(const QString &search); 0066 void openApplicationInternal(AbstractResource *app); 0067 void listMimeInternal(const QString &mime); 0068 void listCategoryInternal(Category *cat); 0069 0070 void unableToFind(const QString &resid); 0071 void openErrorPage(const QString &errorMessage, const QString &errorExplanation, const QString &buttonText, const QString &buttonIcon, const QString &buttonURL); 0072 0073 private: 0074 void showLoadingPage(); 0075 void initMainWindow(QQuickWindow *mainWindow); 0076 bool quitWhenIdle(); 0077 void reconsiderQuit(); 0078 QQmlApplicationEngine *engine() const 0079 { 0080 return m_engine; 0081 } 0082 0083 QQmlApplicationEngine *const m_engine; 0084 std::unique_ptr<QQuickWindow> m_mainWindow; 0085 0086 QScopedPointer<CachedNetworkAccessManagerFactory> m_networkAccessManagerFactory; 0087 KStatusNotifierItem *m_sni = nullptr; 0088 };