diff --git a/applets/kicker/plugin/appsmodel.h b/applets/kicker/plugin/appsmodel.h --- a/applets/kicker/plugin/appsmodel.h +++ b/applets/kicker/plugin/appsmodel.h @@ -24,15 +24,20 @@ #include "abstractmodel.h" #include "appentry.h" +#include + #include class AppGroupEntry; class QTimer; -class AppsModel : public AbstractModel +class AppsModel : public AbstractModel, public QQmlParserStatus { Q_OBJECT + Q_INTERFACES(QQmlParserStatus) + + Q_PROPERTY(bool autoPopulate READ autoPopulate WRITE setAutoPopulate NOTIFY autoPopulateChanged) Q_PROPERTY(bool paginate READ paginate WRITE setPaginate NOTIFY paginateChanged) Q_PROPERTY(int pageSize READ pageSize WRITE setPageSize NOTIFY pageSizeChanged) @@ -60,6 +65,9 @@ Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override; + bool autoPopulate() const; + void setAutoPopulate(bool populate); + Q_INVOKABLE AbstractModel *modelForRow(int row) override; Q_INVOKABLE int rowForModel(AbstractModel *model) override; @@ -93,8 +101,12 @@ void entryChanged(AbstractEntry *entry) override; + void classBegin() override; + void componentComplete() override; + Q_SIGNALS: void cleared() const; + void autoPopulateChanged() const; void paginateChanged() const; void pageSizeChanged() const; void flatChanged() const; @@ -111,6 +123,8 @@ protected: void refreshInternal(); + bool m_complete; + bool m_paginate; int m_pageSize; @@ -129,6 +143,8 @@ void processServiceGroup(KServiceGroup::Ptr group); void sortEntries(); + bool m_autoPopulate; + QString m_description; QString m_entryPath; bool m_staticEntryList; diff --git a/applets/kicker/plugin/appsmodel.cpp b/applets/kicker/plugin/appsmodel.cpp --- a/applets/kicker/plugin/appsmodel.cpp +++ b/applets/kicker/plugin/appsmodel.cpp @@ -33,13 +33,15 @@ AppsModel::AppsModel(const QString &entryPath, bool paginate, int pageSize, bool flat, bool sorted, bool separators, QObject *parent) : AbstractModel(parent) +, m_complete(false) , m_paginate(paginate) , m_pageSize(pageSize) , m_deleteEntriesOnDestruction(true) , m_separatorCount(0) , m_showSeparators(separators) , m_showTopLevelItems(false) , m_appletInterface(nullptr) +, m_autoPopulate(true) , m_description(i18n("Applications")) , m_entryPath(entryPath) , m_staticEntryList(false) @@ -55,13 +57,15 @@ AppsModel::AppsModel(const QList entryList, bool deleteEntriesOnDestruction, QObject *parent) : AbstractModel(parent) +, m_complete(false) , m_paginate(false) , m_pageSize(24) , m_deleteEntriesOnDestruction(deleteEntriesOnDestruction) , m_separatorCount(0) , m_showSeparators(false) , m_showTopLevelItems(false) , m_appletInterface(nullptr) +, m_autoPopulate(true) , m_description(i18n("Applications")) , m_entryPath(QString()) , m_staticEntryList(true) @@ -97,6 +101,20 @@ } } +bool AppsModel::autoPopulate() const +{ + return m_autoPopulate; +} + +void AppsModel::setAutoPopulate(bool populate) +{ + if (m_autoPopulate != populate) { + m_autoPopulate = populate; + + emit autoPopulateChanged(); + } +} + QString AppsModel::description() const { return m_description; @@ -419,6 +437,10 @@ void AppsModel::refresh() { + if (m_complete) { + return; + } + if (m_staticEntryList) { return; } @@ -691,3 +713,17 @@ emit dataChanged(idx, idx); } } + +void AppsModel::classBegin() +{ + +} + +void AppsModel::componentComplete() +{ + m_complete = true; + + if (m_autoPopulate) { + refresh(); + } +} diff --git a/applets/kicker/plugin/rootmodel.h b/applets/kicker/plugin/rootmodel.h --- a/applets/kicker/plugin/rootmodel.h +++ b/applets/kicker/plugin/rootmodel.h @@ -22,8 +22,6 @@ #include "appsmodel.h" -#include - class KAStatsFavoritesModel; class RecentContactsModel; class RecentUsageModel; @@ -49,12 +47,9 @@ QPointer m_childModel; }; -class RootModel : public AppsModel, public QQmlParserStatus +class RootModel : public AppsModel { Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - - Q_PROPERTY(bool autoPopulate READ autoPopulate WRITE setAutoPopulate NOTIFY autoPopulateChanged) Q_PROPERTY(QObject* systemFavoritesModel READ systemFavoritesModel NOTIFY systemFavoritesModelChanged) Q_PROPERTY(bool showAllApps READ showAllApps WRITE setShowAllApps NOTIFY showAllAppsChanged) @@ -72,9 +67,6 @@ Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override; - bool autoPopulate() const; - void setAutoPopulate(bool populate); - bool showAllApps() const; void setShowAllApps(bool show); @@ -96,13 +88,9 @@ AbstractModel* favoritesModel() override; AbstractModel* systemFavoritesModel(); - void classBegin() override; - void componentComplete() override; - Q_SIGNALS: void refreshed() const; void systemFavoritesModelChanged() const; - void autoPopulateChanged() const; void showAllAppsChanged() const; void showRecentAppsChanged() const; void showRecentDocsChanged() const; @@ -115,13 +103,9 @@ void refresh() override; private: - bool m_complete; - KAStatsFavoritesModel *m_favorites; SystemModel *m_systemModel; - bool m_autoPopulate; - bool m_showAllApps; bool m_showRecentApps; bool m_showRecentDocs; diff --git a/applets/kicker/plugin/rootmodel.cpp b/applets/kicker/plugin/rootmodel.cpp --- a/applets/kicker/plugin/rootmodel.cpp +++ b/applets/kicker/plugin/rootmodel.cpp @@ -63,10 +63,8 @@ } RootModel::RootModel(QObject *parent) : AppsModel(QString(), parent) -, m_complete(false) , m_favorites(new KAStatsFavoritesModel(this)) , m_systemModel(nullptr) -, m_autoPopulate(true) , m_showAllApps(false) , m_showRecentApps(true) , m_showRecentDocs(true) @@ -145,20 +143,6 @@ return AppsModel::trigger(row, actionId, argument); } -bool RootModel::autoPopulate() const -{ - return m_autoPopulate; -} - -void RootModel::setAutoPopulate(bool populate) -{ - if (m_autoPopulate != populate) { - m_autoPopulate = populate; - - emit autoPopulateChanged(); - } -} - bool RootModel::showAllApps() const { return m_showAllApps; @@ -269,19 +253,6 @@ return nullptr; } -void RootModel::classBegin() -{ -} - -void RootModel::componentComplete() -{ - m_complete = true; - - if (m_autoPopulate) { - refresh(); - } -} - void RootModel::refresh() { if (!m_complete) { diff --git a/applets/kickoff/package/contents/ui/FullRepresentation.qml b/applets/kickoff/package/contents/ui/FullRepresentation.qml --- a/applets/kickoff/package/contents/ui/FullRepresentation.qml +++ b/applets/kickoff/package/contents/ui/FullRepresentation.qml @@ -68,6 +68,8 @@ Kicker.AppsModel { id: rootModel + autoPopulate: false + appletInterface: plasmoid appNameFormat: plasmoid.configuration.showAppsByName ? 0 : 1