diff --git a/plasma/package/contents/ui/main.qml b/plasma/package/contents/ui/main.qml --- a/plasma/package/contents/ui/main.qml +++ b/plasma/package/contents/ui/main.qml @@ -35,6 +35,8 @@ Plasmoid.icon: vaultsModelActions.hasError ? "plasmavault_error" : "plasmavault"; + Plasmoid.status: vaultsModelActions.count > 0 ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.PassiveStatus + Plasmoid.onExpandedChanged: { plasmoid.nativeInterface.vaultsModel.reloadDevices(); } diff --git a/plasma/vaultsmodel.h b/plasma/vaultsmodel.h --- a/plasma/vaultsmodel.h +++ b/plasma/vaultsmodel.h @@ -33,6 +33,7 @@ Q_PROPERTY(bool isBusy READ isBusy NOTIFY isBusyChanged) Q_PROPERTY(bool hasError READ hasError NOTIFY hasErrorChanged) + Q_PROPERTY(int count READ count NOTIFY countChanged) public: explicit VaultsModel(QObject *parent = nullptr); @@ -88,10 +89,12 @@ bool isBusy() const; bool hasError() const; + int count() const; Q_SIGNALS: void isBusyChanged(bool isBusy); void hasErrorChanged(bool hasError); + void countChanged(int count); private: class Private; diff --git a/plasma/vaultsmodel.cpp b/plasma/vaultsmodel.cpp --- a/plasma/vaultsmodel.cpp +++ b/plasma/vaultsmodel.cpp @@ -100,6 +100,10 @@ q->endResetModel(); + if (vaultKeys.size() > 0) { + emit q->countChanged(vaultKeys.size()); + } + emit q->isBusyChanged(busyVaults.count() != 0); emit q->hasErrorChanged(errorVaults.count() != 0); }); @@ -127,6 +131,7 @@ vaults[device] = vaultInfo; vaultKeys << device; q->endInsertRows(); + emit q->countChanged(vaultKeys.size()); } @@ -141,6 +146,7 @@ vaultKeys.removeAt(row); vaults.remove(device); q->endRemoveRows(); + emit q->countChanged(vaultKeys.size()); } @@ -397,6 +403,11 @@ +int VaultsModel::count() const +{ + return d->vaultKeys.size(); +} + SortedVaultsModelProxy::SortedVaultsModelProxy(QObject *parent)