Skip to content
Snippets Groups Projects
MessageDelegate.qml 5.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • Item {
    	// Workaround to have an assignable global property
    	Item {
    		id: model
    		property var data;
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    		property bool isReply: false
    
    	
    	property alias modelData: model.data
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    	property alias isReply: model.isReply
    
    
    	height: chooser.childrenRect.height
    
    	property real implicitWidth: (chooser.child && chooser.child.implicitWidth) ? chooser.child.implicitWidth : width
    
    
    	DelegateChooser {
    		id: chooser
    		//role: "type" //< not supported in our custom implementation, have to use roleValue
    		roleValue: model.data.type
    		anchors.fill: parent
    
    
    		DelegateChoice {
    			roleValue: MtxEvent.UnknownMessage
    			Placeholder { text: "Unretrieved event" }
    		}
    
    		DelegateChoice {
    			roleValue: MtxEvent.TextMessage
    			TextMessage {}
    
    		DelegateChoice {
    			roleValue: MtxEvent.NoticeMessage
    			NoticeMessage {}
    
    		DelegateChoice {
    			roleValue: MtxEvent.EmoteMessage
    
    			NoticeMessage {
    
    				formatted: TimelineManager.escapeEmoji(modelData.userName) + " " + model.data.formattedBody
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				color: TimelineManager.userColor(modelData.userId, colors.window)
    
    		DelegateChoice {
    			roleValue: MtxEvent.ImageMessage
    			ImageMessage {}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.Sticker
    			ImageMessage {}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.FileMessage
    			FileMessage {}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.VideoMessage
    			PlayableMediaMessage {}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.AudioMessage
    			PlayableMediaMessage {}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.Redacted
    			Pill {
    				text: qsTr("redacted")
    			}
    		}
    
    		DelegateChoice {
    			roleValue: MtxEvent.Redaction
    			Pill {
    				text: qsTr("redacted")
    			}
    		}
    
    		DelegateChoice {
    			roleValue: MtxEvent.Encryption
    			Pill {
    				text: qsTr("Encryption enabled")
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.Name
    			NoticeMessage {
    
    				text: model.data.roomName ? qsTr("room name changed to: %1").arg(model.data.roomName) : qsTr("removed room name")
    
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.Topic
    			NoticeMessage {
    
    				text: model.data.roomTopic ? qsTr("topic changed to: %1").arg(model.data.roomTopic) : qsTr("removed topic")
    
    		DelegateChoice {
    			roleValue: MtxEvent.RoomCreate
    			NoticeMessage {
    				text: qsTr("%1 created and configured room: %2").arg(model.data.userName).arg(model.data.roomId)
    			}
    		}
    
    trilene's avatar
    trilene committed
    		DelegateChoice {
    			roleValue: MtxEvent.CallInvite
    			NoticeMessage {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				text: switch(model.data.callType) {
    					case "voice": return qsTr("%1 placed a voice call.").arg(model.data.userName)
    					case "video": return qsTr("%1 placed a video call.").arg(model.data.userName)
    					default: return qsTr("%1 placed a call.").arg(model.data.userName)
    				}
    
    trilene's avatar
    trilene committed
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.CallAnswer
    			NoticeMessage {
    				text: qsTr("%1 answered the call.").arg(model.data.userName)
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.CallHangUp
    			NoticeMessage {
    				text: qsTr("%1 ended the call.").arg(model.data.userName)
    			}
    		}
    
    		DelegateChoice {
    			roleValue: MtxEvent.CallCandidates
    			NoticeMessage {
    				text: qsTr("Negotiating call...")
    			}
    		}
    
    		DelegateChoice {
    			// TODO: make a more complex formatter for the power levels.
    			roleValue: MtxEvent.PowerLevels
    			NoticeMessage {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				text: TimelineManager.timeline.formatPowerLevelEvent(model.data.id)
    
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.RoomJoinRules
    			NoticeMessage {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				text: TimelineManager.timeline.formatJoinRuleEvent(model.data.id)
    
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.RoomHistoryVisibility
    			NoticeMessage {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				text: TimelineManager.timeline.formatHistoryVisibilityEvent(model.data.id)
    
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.RoomGuestAccess
    			NoticeMessage {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				text: TimelineManager.timeline.formatGuestAccessEvent(model.data.id)
    
    		DelegateChoice {
    			roleValue: MtxEvent.Member
    			NoticeMessage {
    
    Nicolas Werner's avatar
    Nicolas Werner committed
    				text: TimelineManager.timeline.formatMemberEvent(model.data.id);
    
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationRequest
    			NoticeMessage {
    				text: "KeyVerificationRequest";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationStart
    			NoticeMessage {
    				text: "KeyVerificationStart";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationReady
    			NoticeMessage {
    				text: "KeyVerificationReady";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationCancel
    			NoticeMessage {
    				text: "KeyVerificationCancel";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationKey
    			NoticeMessage {
    				text: "KeyVerificationKey";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationMac
    			NoticeMessage {
    				text: "KeyVerificationMac";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationDone
    			NoticeMessage {
    				text: "KeyVerificationDone";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationDone
    			NoticeMessage {
    				text: "KeyVerificationDone";
    			}
    		}
    		DelegateChoice {
    			roleValue: MtxEvent.KeyVerificationAccept
    			NoticeMessage {
    				text: "KeyVerificationAccept";
    			}
    		}
    
    		DelegateChoice {
    			Placeholder {}