roles[PointInTimeRole] = "dateTime";
roles[DisplayActions] = "displayActions";
roles[ShowFileDetailsRole] = "showFileDetails";
+ roles[ShareableRole] = "isShareable";
+ roles[DismissableRole] = "isDismissable";
roles[IsCurrentUserFileActivityRole] = "isCurrentUserFileActivity";
roles[IsCurrentUserFileActivityRole] = "isCurrentUserFileActivity";
roles[ThumbnailRole] = "thumbnail";
_displayActions &&
a._fileAction != "file_deleted" &&
a._syncFileItemStatus != SyncFileItem::FileIgnored;
+ case DismissableRole:
+ // Do not allow dismissal of things requiring user input regarding syncing
+ return !a._links.isEmpty() &&
+ a._syncFileItemStatus != SyncFileItem::FileNameClash &&
+ a._syncFileItemStatus != SyncFileItem::Conflict &&
+ a._syncFileItemStatus != SyncFileItem::FileNameInvalid;
case IsCurrentUserFileActivityRole:
return a._isCurrentUserFileActivity;
case ThumbnailRole: {
if (action._verb == "WEB") {
Utility::openBrowser(QUrl(action._link));
return;
+ } else if (action._verb == "FIX_CONFLICT_LOCALLY" &&
+ activity._type == Activity::SyncFileItemType &&
+ (activity._syncFileItemStatus == SyncFileItem::Conflict || activity._syncFileItemStatus == SyncFileItem::FileNameClash)) {
+ slotTriggerDefaultAction(activityIndex);
+ return;
}
emit sendNotificationRequest(activity._accName, action._link, action._verb, activityIndex);
{
QVariantList customList;
- if (activity._links.size() == 1) {
- return customList;
- }
-
if (static_cast<quint32>(activity._links.size()) > maxActionButtons()) {
customList << ActivityListModel::convertLinkToActionButton(activity._links.first());
return customList;
activity._accName = folderInstance->accountState()->account()->displayName();
activity._folder = folderAlias;
+ if (status == SyncFileItem::Conflict || status == SyncFileItem::FileNameClash) {
+ ActivityLink buttonActivityLink;
+ buttonActivityLink._label = tr("Resolve conflict");
+ buttonActivityLink._link = activity._link.toString();
+ buttonActivityLink._verb = "FIX_CONFLICT_LOCALLY";
+ buttonActivityLink._primary = true;
+
+ activity._links = {buttonActivityLink};
+ }
+
// Error notifications don't have ids by themselves so we will create one for it
activity._id = -static_cast<int>(qHash(activity._subject + activity._message));
// add 'protocol error' to activity list
if (item->_status == SyncFileItem::Status::FileNameInvalid) {
showDesktopNotification(item->_file, activity._subject, activity._id);
+ } else if (item->_status == SyncFileItem::Conflict || item->_status == SyncFileItem::FileNameClash) {
+ ActivityLink buttonActivityLink;
+ buttonActivityLink._label = tr("Resolve conflict");
+ buttonActivityLink._link = activity._link.toString();
+ buttonActivityLink._verb = "FIX_CONFLICT_LOCALLY";
+ buttonActivityLink._primary = true;
+
+ activity._links = {buttonActivityLink};
}
_activityModel->addErrorToActivityList(activity);
}