|
@@ -18,6 +18,7 @@
|
|
|
#include <QWidget>
|
|
#include <QWidget>
|
|
|
#include <QJsonObject>
|
|
#include <QJsonObject>
|
|
|
#include <QJsonDocument>
|
|
#include <QJsonDocument>
|
|
|
|
|
+#include <qloggingcategory.h>
|
|
|
|
|
|
|
|
#include "account.h"
|
|
#include "account.h"
|
|
|
#include "accountstate.h"
|
|
#include "accountstate.h"
|
|
@@ -39,7 +40,13 @@ namespace OCC {
|
|
|
|
|
|
|
|
Q_LOGGING_CATEGORY(lcActivity, "nextcloud.gui.activity", QtInfoMsg)
|
|
Q_LOGGING_CATEGORY(lcActivity, "nextcloud.gui.activity", QtInfoMsg)
|
|
|
|
|
|
|
|
-ActivityListModel::ActivityListModel(AccountState *accountState, QObject *parent)
|
|
|
|
|
|
|
+ActivityListModel::ActivityListModel(QObject *parent)
|
|
|
|
|
+ : QAbstractListModel(parent)
|
|
|
|
|
+{
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+ActivityListModel::ActivityListModel(AccountState *accountState,
|
|
|
|
|
+ QObject *parent)
|
|
|
: QAbstractListModel(parent)
|
|
: QAbstractListModel(parent)
|
|
|
, _accountState(accountState)
|
|
, _accountState(accountState)
|
|
|
{
|
|
{
|
|
@@ -60,9 +67,40 @@ QHash<int, QByteArray> ActivityListModel::roleNames() const
|
|
|
roles[ActionTextColorRole] = "activityTextTitleColor";
|
|
roles[ActionTextColorRole] = "activityTextTitleColor";
|
|
|
roles[ObjectTypeRole] = "objectType";
|
|
roles[ObjectTypeRole] = "objectType";
|
|
|
roles[PointInTimeRole] = "dateTime";
|
|
roles[PointInTimeRole] = "dateTime";
|
|
|
|
|
+ roles[DisplayActions] = "displayActions";
|
|
|
return roles;
|
|
return roles;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void ActivityListModel::setAccountState(AccountState *state)
|
|
|
|
|
+{
|
|
|
|
|
+ _accountState = state;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void ActivityListModel::setCurrentlyFetching(bool value)
|
|
|
|
|
+{
|
|
|
|
|
+ _currentlyFetching = value;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+bool ActivityListModel::currentlyFetching() const
|
|
|
|
|
+{
|
|
|
|
|
+ return _currentlyFetching;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void ActivityListModel::setDoneFetching(bool value)
|
|
|
|
|
+{
|
|
|
|
|
+ _doneFetching = value;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void ActivityListModel::setHideOldActivities(bool value)
|
|
|
|
|
+{
|
|
|
|
|
+ _hideOldActivities = value;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void ActivityListModel::setDisplayActions(bool value)
|
|
|
|
|
+{
|
|
|
|
|
+ _displayActions = value;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
QVariant ActivityListModel::data(const QModelIndex &index, int role) const
|
|
QVariant ActivityListModel::data(const QModelIndex &index, int role) const
|
|
|
{
|
|
{
|
|
|
Activity a;
|
|
Activity a;
|
|
@@ -222,6 +260,8 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const
|
|
|
return a._id == -1 ? "" : Utility::timeAgoInWords(a._dateTime.toLocalTime());
|
|
return a._id == -1 ? "" : Utility::timeAgoInWords(a._dateTime.toLocalTime());
|
|
|
case AccountConnectedRole:
|
|
case AccountConnectedRole:
|
|
|
return (ast && ast->isConnected());
|
|
return (ast && ast->isConnected());
|
|
|
|
|
+ case DisplayActions:
|
|
|
|
|
+ return _displayActions;
|
|
|
default:
|
|
default:
|
|
|
return QVariant();
|
|
return QVariant();
|
|
|
}
|
|
}
|
|
@@ -253,7 +293,7 @@ void ActivityListModel::startFetchJob()
|
|
|
}
|
|
}
|
|
|
auto *job = new JsonApiJob(_accountState->account(), QLatin1String("ocs/v2.php/apps/activity/api/v2/activity"), this);
|
|
auto *job = new JsonApiJob(_accountState->account(), QLatin1String("ocs/v2.php/apps/activity/api/v2/activity"), this);
|
|
|
QObject::connect(job, &JsonApiJob::jsonReceived,
|
|
QObject::connect(job, &JsonApiJob::jsonReceived,
|
|
|
- this, &ActivityListModel::slotActivitiesReceived);
|
|
|
|
|
|
|
+ this, &ActivityListModel::activitiesReceived);
|
|
|
|
|
|
|
|
QUrlQuery params;
|
|
QUrlQuery params;
|
|
|
params.addQueryItem(QLatin1String("since"), QString::number(_currentItem));
|
|
params.addQueryItem(QLatin1String("since"), QString::number(_currentItem));
|
|
@@ -265,7 +305,7 @@ void ActivityListModel::startFetchJob()
|
|
|
job->start();
|
|
job->start();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void ActivityListModel::slotActivitiesReceived(const QJsonDocument &json, int statusCode)
|
|
|
|
|
|
|
+void ActivityListModel::activitiesReceived(const QJsonDocument &json, int statusCode)
|
|
|
{
|
|
{
|
|
|
auto activities = json.object().value("ocs").toObject().value("data").toArray();
|
|
auto activities = json.object().value("ocs").toObject().value("data").toArray();
|
|
|
|
|
|
|
@@ -304,9 +344,8 @@ void ActivityListModel::slotActivitiesReceived(const QJsonDocument &json, int st
|
|
|
_currentItem = list.last()._id;
|
|
_currentItem = list.last()._id;
|
|
|
|
|
|
|
|
_totalActivitiesFetched++;
|
|
_totalActivitiesFetched++;
|
|
|
- if(_totalActivitiesFetched == _maxActivities ||
|
|
|
|
|
- a._dateTime < oldestDate) {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ if (_totalActivitiesFetched == _maxActivities
|
|
|
|
|
+ || (_hideOldActivities && a._dateTime < oldestDate)) {
|
|
|
_showMoreActivitiesAvailableEntry = true;
|
|
_showMoreActivitiesAvailableEntry = true;
|
|
|
_doneFetching = true;
|
|
_doneFetching = true;
|
|
|
break;
|
|
break;
|
|
@@ -496,6 +535,11 @@ void ActivityListModel::triggerAction(int activityIndex, int actionIndex)
|
|
|
emit sendNotificationRequest(activity._accName, action._link, action._verb, activityIndex);
|
|
emit sendNotificationRequest(activity._accName, action._link, action._verb, activityIndex);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+AccountState *ActivityListModel::accountState() const
|
|
|
|
|
+{
|
|
|
|
|
+ return _accountState;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void ActivityListModel::combineActivityLists()
|
|
void ActivityListModel::combineActivityLists()
|
|
|
{
|
|
{
|
|
|
ActivityList resultList;
|
|
ActivityList resultList;
|