: QAbstractListModel(parent)
, _accountState(accountState)
{
+ if (_accountState) {
+ connect(_accountState, &AccountState::stateChanged,
+ this, &ActivityListModel::accountStateChanged);
+ _accountStateWasConnected = false;
+ }
}
QHash<int, QByteArray> ActivityListModel::roleNames() const
void ActivityListModel::setAccountState(AccountState *state)
{
+ if (_accountState == state) {
+ return;
+ }
+
_accountState = state;
Q_EMIT accountStateChanged();
+ if (_accountState) {
+ connect(_accountState, &AccountState::stateChanged,
+ this, &ActivityListModel::accountStateHasChanged);
+ _accountStateWasConnected = false;
+ }
}
void ActivityListModel::setCurrentItem(const int currentItem)
setHasSyncConflicts(conflictsFound);
}
+void ActivityListModel::accountStateHasChanged()
+{
+ if (!_accountState) {
+ return;
+ }
+
+ if (_accountStateWasConnected == _accountState->isConnected()) {
+ return;
+ }
+
+ if (!_accountState->isConnected()) {
+ _durationSinceDisconnection.start();
+ } else {
+ _durationSinceDisconnection.invalidate();
+ }
+
+ _accountStateWasConnected = _accountState->isConnected();
+}
+
void ActivityListModel::addErrorToActivityList(const Activity &activity, const ErrorType type)
{
qCDebug(lcActivity) << "Error successfully added to the notification list: " << type << activity._message << activity._subject << activity._syncResultStatus << activity._syncFileItemStatus;
private slots:
void addEntriesToActivityList(const OCC::ActivityList &activityList);
+ void accountStateHasChanged();
private:
static QVariantList convertLinksToMenuEntries(const Activity &activity);
bool _hasSyncConflicts = false;
+ bool _accountStateWasConnected = false;
+
+ QElapsedTimer _durationSinceDisconnection;
+
static constexpr quint32 MaxActionButtons = 3;
};
}