ActivityItem.qml 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import QtQml 2.15
  2. import QtQuick 2.15
  3. import QtQuick.Controls 2.15
  4. import QtQuick.Layouts 1.15
  5. import Style 1.0
  6. import com.nextcloud.desktopclient 1.0
  7. MouseArea {
  8. id: root
  9. property Flickable flickable
  10. property bool isFileActivityList: false
  11. property bool isChatActivity: model.objectType === "chat" || model.objectType === "room" || model.objectType === "call"
  12. property bool isTalkReplyPossible: model.conversationToken !== ""
  13. signal fileActivityButtonClicked(string absolutePath)
  14. enabled: (model.path !== "" || model.link !== "" || model.isCurrentUserFileActivity === true)
  15. hoverEnabled: true
  16. height: childrenRect.height
  17. ToolTip.visible: containsMouse && !activityContent.childHovered && model.displayLocation !== ""
  18. ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval
  19. ToolTip.text: qsTr("In %1").arg(model.displayLocation)
  20. Accessible.role: Accessible.ListItem
  21. Accessible.name: (model.path !== "" && model.displayPath !== "") ? qsTr("Open %1 locally").arg(model.displayPath) : model.message
  22. Accessible.onPressAction: root.clicked()
  23. Rectangle {
  24. id: activityHover
  25. anchors.fill: parent
  26. color: (parent.containsMouse ? Style.lightHover : "transparent")
  27. }
  28. ColumnLayout {
  29. anchors.left: root.left
  30. anchors.right: root.right
  31. anchors.rightMargin: 10
  32. anchors.leftMargin: 10
  33. spacing: 0
  34. ActivityItemContent {
  35. id: activityContent
  36. Layout.fillWidth: true
  37. showDismissButton: model.links.length > 0 && model.linksForActionButtons.length === 0
  38. activityData: model
  39. Layout.preferredHeight: Style.trayWindowHeaderHeight
  40. onShareButtonClicked: Systray.openShareDialog(model.displayPath, model.absolutePath)
  41. onDismissButtonClicked: activityModel.slotTriggerDismiss(model.index)
  42. }
  43. ActivityItemActions {
  44. id: activityActions
  45. visible: !root.isFileActivityList && model.linksForActionButtons.length > 0
  46. Layout.preferredHeight: Style.trayWindowHeaderHeight * 0.85
  47. Layout.fillWidth: true
  48. Layout.leftMargin: 40
  49. Layout.bottomMargin: model.links.length > 1 ? 5 : 0
  50. Layout.topMargin: isTalkReplyPossible? 48 : 0
  51. displayActions: model.displayActions
  52. objectType: model.objectType
  53. linksForActionButtons: model.linksForActionButtons
  54. linksContextMenu: model.linksContextMenu
  55. moreActionsButtonColor: activityHover.color
  56. maxActionButtons: activityModel.maxActionButtons
  57. flickable: root.flickable
  58. onTriggerAction: activityModel.slotTriggerAction(model.index, actionIndex)
  59. }
  60. }
  61. }