diff --git a/ui/StatusQ/sandbox/controls/ListItems.qml b/ui/StatusQ/sandbox/controls/ListItems.qml
index 8e6ee0e075..8cbe855636 100644
--- a/ui/StatusQ/sandbox/controls/ListItems.qml
+++ b/ui/StatusQ/sandbox/controls/ListItems.qml
@@ -351,7 +351,7 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
nickName: "This is an example"
userName: "annabelle"
chatKey: "0x043a7ed0e8752236a4688563652fd0296453cef00a5dcddbe252dc74f72cc1caa97a2b65e4a1a52d9c30a84c9966beaaaf6b333d659cbdd2e486b443ed1012cf04"
- trustIndicator: StatusMemberListItem.TrustedType.Verified
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Verified
isMutualContact: true
image.source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAlklEQVR4nOzW0QmDQBAG4SSkl7SUQlJGCrElq9F3QdjjVhh/5nv3cFhY9vUIYQiNITSG0BhCExPynn1gWf9bx498P7/
nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2ImYgiNITTlTdG1nUZ5a92VITQxITFiJmIIjSE0htAYQrMHAAD//+wwFVpz+yqXAAAAAElFTkSuQmCC"
@@ -362,7 +362,7 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
StatusMemberListItem {
nickName: "carmen.eth"
isOnline: false
- trustIndicator: StatusMemberListItem.TrustedType.Untrustworthy
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
}
StatusMemberListItem {
diff --git a/ui/StatusQ/sandbox/demoapp/ChatChannelView.qml b/ui/StatusQ/sandbox/demoapp/ChatChannelView.qml
index 25f41203cd..1ac163a0df 100644
--- a/ui/StatusQ/sandbox/demoapp/ChatChannelView.qml
+++ b/ui/StatusQ/sandbox/demoapp/ChatChannelView.qml
@@ -41,7 +41,8 @@ ListView {
}
messageText: model.message
hasMention: model.hasMention
- contactType: model.contactType
+ isMutualContact: model.isMutualContact
+ trustIndicator: model.trustIndicator
isPinned: model.isPinned
pinnedBy: model.pinnedBy
hasExpired: model.hasExpired
diff --git a/ui/StatusQ/sandbox/demoapp/data/Models.qml b/ui/StatusQ/sandbox/demoapp/data/Models.qml
index 2ee36abae5..09689de93a 100644
--- a/ui/StatusQ/sandbox/demoapp/data/Models.qml
+++ b/ui/StatusQ/sandbox/demoapp/data/Models.qml
@@ -497,7 +497,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2ImYgiNITTlTdG1nUZ5a92VITQxITFiJmIIjSE0htAYQrMHAAD//+wwFVpz+yqXAAAAAElFTkSuQmCC"
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f5789"
- contactType: 2
+ isMutualContact: true
+ trustIndicator: StatusContactVerificationIcons.TrustedType.None
hasMention: false
editMode: false
isReply: false
@@ -525,7 +526,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2ImYgiNITTlTdG1nUZ5a92VITQxITFiJmIIjSE0htAYQrMHAAD//+wwFVpz+yqXAAAAAElFTkSuQmCC"
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f2333"
- contactType: 3
+ isMutualContact: true
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Verified
hasMention: false
editMode: false
isReply: false
@@ -552,7 +554,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAkUlEQVR4nOzYwQmDQBQG4SSkl3SQyizDyuzAavTi0cPK8sPwM9/Rw8rw4KH7eZUwhMYQGkNoDKGpCfmmDl63/bh7vvx/78T7aiZiCI0hNMMbJL2FZs+vmYghNIbQTG+cp9smtf1qJmIIjSEKqZmIITSG0Azfa6W/qfxDvBhCY4hCaiZiCI0hNIbQGEJzBgAA///3pSBjX42sYAAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f2333"
- contactType: 3
+ isMutualContact: true
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Verified
hasMention: false
editMode: false
isReply: false
@@ -579,7 +582,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f6789"
- contactType: 4
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: false
editMode: false
isReply: false
@@ -607,7 +611,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: true
+ trustIndicator: StatusContactVerificationIcons.TrustedType.None
hasMention: false
editMode: false
isReply: false
@@ -635,7 +640,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: false
editMode: false
isReply: false
@@ -663,7 +669,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: true
editMode: false
isReply: false
@@ -692,7 +699,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: false
editMode: false
isReply: true
@@ -721,7 +729,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: false
editMode: false
isReply: true
@@ -750,7 +759,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: false
editMode: false
isReply: true
@@ -779,7 +789,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
hasMention: false
editMode: false
isReply: true
@@ -807,7 +818,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: false
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Verified
hasMention: false
editMode: false
isReply: false
@@ -834,7 +846,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: true
+ trustIndicator: StatusContactVerificationIcons.TrustedType.None
hasMention: false
editMode: false
isReply: false
@@ -861,7 +874,8 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
profileImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDKExhKZ4a9Uq3TZviZmIITSG0DRvlqcbqVbrlouZiCE0htD4h0hjCI0hNN5aNIbQGKKPxEzEEBpDaAyhMYTmDAAA//+gYCErzmCpCQAAAABJRU5ErkJggg=="
isIdenticon: true
chatKey: "0x04d1bed19c523299cbd07ddec7b8949ad7dd923819a68e0b733c9c0bc38cde276bd256f098e755f8f028395c2c91f438a22adaff6caded060b7cc0ef3f470f1234"
- contactType: 0
+ isMutualContact: true
+ trustIndicator: StatusContactVerificationIcons.TrustedType.None
hasMention: false
editMode: false
isReply: false
@@ -883,7 +897,7 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
nickName: "This is an example"
userName: "annabelle"
chatKey: "0x043a7ed0e8752236a4688563652fd0296453cef00a5dcddbe252dc74f72cc1caa97a2b65e4a1a52d9c30a84c9966beaaaf6b333d659cbdd2e486b443ed1012cf04"
- trustIndicator: StatusMemberListItem.TrustedType.Verified
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Verified
isMutualContact: true
isOnline: true
source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAlklEQVR4nOzW0QmDQBAG4SSkl7SUQlJGCrElq9F3QdjjVhh/5nv3cFhY9vUIYQiNITSG0BhCExPynn1gWf9bx498P7/
@@ -894,7 +908,7 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
nickName: "carmen.eth"
userName: ""
chatKey: ""
- trustIndicator: StatusMemberListItem.TrustedType.Untrustworthy
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
isMutualContact: false
isOnline: false
source: ""
@@ -904,7 +918,7 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
nickName: "This girl I know from work"
userName: "annabelle"
chatKey: ""
- trustIndicator: StatusMemberListItem.TrustedType.None
+ trustIndicator: StatusContactVerificationIcons.TrustedType.None
isMutualContact: false
isOnline: true
source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAiElEQVR4nOzXUQpAQBRGYWQvLNAyLJDV8C5qpiGnv/M9al5Ot27X0IUwhMYQGkNoDKGJCRlLH67bftx9X+ap/+P9VcxEDK
@@ -915,7 +929,7 @@ CExPynn1gWf9bx498P7/nzPcxEzGExhBdJGYihtAYQlO+tUZvqrPbqeudo5iJGEJjCE15a3VtodH3q2I
nickName: "Mark Cuban"
userName: "annabelle"
chatKey: "0x043a7ed0e8752236a4688563652fd0296453cef00a5dcddbe252dc74f72cc1caa97a2b65e4a1a52d9c30a84c9966beaaaf6b333d659cbdd2e486b443ed1012cf04"
- trustIndicator: StatusMemberListItem.TrustedType.Untrustworthy
+ trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
isMutualContact: true
isOnline: false
source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAlklEQVR4nOzW0QmDQBAG4SSkl7SUQlJGCrElq9F3QdjjVhh/5nv3cFhY9vUIYQiNITSG0BhCExPynn1gWf9bx498P7/
diff --git a/ui/StatusQ/src/StatusQ/Components/StatusContactVerificationIcons.qml b/ui/StatusQ/src/StatusQ/Components/StatusContactVerificationIcons.qml
new file mode 100644
index 0000000000..2541853120
--- /dev/null
+++ b/ui/StatusQ/src/StatusQ/Components/StatusContactVerificationIcons.qml
@@ -0,0 +1,79 @@
+import QtQuick 2.0
+
+import StatusQ.Core 0.1
+import StatusQ.Core.Theme 0.1
+
+Row {
+ id: root
+
+ property bool isMutualContact: false
+ property var trustIndicator: StatusContactVerificationIcons.TrustedType.None
+
+ property StatusIconSettings mutualConnectionIcon: StatusIconSettings {
+ name: "tiny/tiny-contact"
+ color: Theme.palette.indirectColor1
+ width: dummyImage.width
+ height: dummyImage.height
+ background: StatusIconBackgroundSettings {
+ width: 10
+ height: 10
+ color: Theme.palette.primaryColor1
+ }
+ // Only used to get implicit width and height from the actual image
+ property Image dummyImage: Image {
+ source: mutualConnectionIcon.name ? "../../assets/img/icons/" + mutualConnectionIcon.name + ".svg": ""
+ visible: false
+ }
+ }
+
+ property StatusIconSettings trustContactIcon: StatusIconSettings {
+ // None and Untrustworthy types, same aspect (Icon will not be visible in case of None type):
+ name: root.trustIndicator === StatusContactVerificationIcons.TrustedType.Verified ? "tiny/tiny-checkmark" : "tiny/subtract"
+ color: Theme.palette.indirectColor1
+ width: dummyImage.width
+ height: dummyImage.height
+ background: StatusIconBackgroundSettings {
+ width: 10
+ height: 10
+ color: root.trustIndicator === StatusContactVerificationIcons.TrustedType.Verified ? Theme.palette.primaryColor1 : Theme.palette.dangerColor1
+ }
+ // Only used to get implicit width and height from the actual image
+ property Image dummyImage: Image {
+ source: trustContactIcon.name ? "../../assets/img/icons/" + trustContactIcon.name + ".svg": ""
+ visible: false
+ }
+ }
+
+ enum TrustedType {
+ None, //0
+ Verified, //1
+ Untrustworthy //2
+ }
+
+ spacing: 4
+ visible: root.isMutualContact || (root.trustIndicator !== StatusContactVerificationIcons.TrustedType.None)
+
+ StatusRoundIcon {
+ visible: root.isMutualContact
+ icon.name: root.mutualConnectionIcon.name
+ icon.width: root.mutualConnectionIcon.width
+ icon.height: root.mutualConnectionIcon.height
+ icon.rotation: root.mutualConnectionIcon.rotation
+ icon.color: root.mutualConnectionIcon.color
+ icon.background.color: root.mutualConnectionIcon.background.color
+ icon.background.width: root.mutualConnectionIcon.background.width
+ icon.background.height: root.mutualConnectionIcon.background.height
+ }
+
+ StatusRoundIcon {
+ visible: root.trustIndicator !== StatusContactVerificationIcons.TrustedType.None
+ icon.name: root.trustContactIcon.name
+ icon.width: root.trustContactIcon.width
+ icon.height: root.trustContactIcon.height
+ icon.rotation: root.trustContactIcon.rotation
+ icon.color: root.trustContactIcon.color
+ icon.background.color: root.trustContactIcon.background.color
+ icon.background.width: root.trustContactIcon.background.width
+ icon.background.height: root.trustContactIcon.background.height
+ }
+ }
diff --git a/ui/StatusQ/src/StatusQ/Components/StatusListItem.qml b/ui/StatusQ/src/StatusQ/Components/StatusListItem.qml
index f5358ef0a4..5788b66c9e 100644
--- a/ui/StatusQ/src/StatusQ/Components/StatusListItem.qml
+++ b/ui/StatusQ/src/StatusQ/Components/StatusListItem.qml
@@ -13,8 +13,6 @@ Rectangle {
property string titleId: ""
property string title: ""
property string titleAsideText: ""
- property bool titleIcon1Visible
- property bool titleIcon2Visible
property string subTitle: ""
property string tertiaryTitle: ""
property string label: ""
@@ -52,38 +50,13 @@ Rectangle {
height: 40
isIdenticon: false
}
- property StatusIconSettings titleIcon1: StatusIconSettings {
- width: dummyImage.width
- height: dummyImage.height
- background: StatusIconBackgroundSettings {
- width: 10
- height: 10
- }
- // Only used to get implicit width and height from the actual image
- property Image dummyImage: Image {
- source: titleIcon1.name ? "../../assets/img/icons/" + titleIcon1.name + ".svg": ""
- visible: false
- }
- }
- property StatusIconSettings titleIcon2: StatusIconSettings {
- width: dummyImage.width
- height: dummyImage.height
- background: StatusIconBackgroundSettings {
- width: 10
- height: 10
- }
- // Only used to get implicit width and height from the actual image
- property Image dummyImage: Image {
- source: titleIcon2.name ? "../../assets/img/icons/" + titleIcon2.name + ".svg": ""
- visible: false
- }
- }
property alias sensor: sensor
property alias badge: statusListItemBadge
property alias statusListItemIcon: iconOrImage
property alias statusListItemTitle: statusListItemTitle
property alias statusListItemTitleAside: statusListItemTitleAsideText
+ property alias statusListItemTitleIcons: titleIconsRow
property alias statusListItemTitleArea: statusListItemTitleArea
property alias statusListItemSubTitle: statusListItemSubTitle
property alias statusListItemTertiaryTitle: statusListItemTertiaryTitle
@@ -154,9 +127,17 @@ Rectangle {
Item {
id: statusListItemTitleArea
+
+ function getStatusListItemTitleAnchorsRight() {
+ let isIconsRowVisible = false
+ if(titleIconsRow.item) {
+ isIconsRowVisible = true//titleIconsRow.item.visible
+ }
+ return !statusListItem.titleAsideText && !isIconsRowVisible ? statusListItemTitleArea.right : undefined
+ }
+
anchors.left: iconOrImage.active ? iconOrImage.right : parent.left
- anchors.right: statusListItemLabel.visible ?
- statusListItemLabel.left : statusListItemComponentsSlot.left
+ anchors.right: statusListItemLabel.visible ? statusListItemLabel.left : statusListItemComponentsSlot.left
anchors.leftMargin: statusListItem.leftPadding
anchors.rightMargin: statusListItem.rightPadding
anchors.verticalCenter: parent.verticalCenter
@@ -169,8 +150,7 @@ Rectangle {
height: visible ? contentHeight : 0
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
anchors.left: parent.left
- anchors.right: !statusListItem.titleAsideText && !statusListItem.titleIcon1Visible && !statusListItem.titleIcon2Visible
- ? parent.right : undefined
+ anchors.right: !statusListItem.titleAsideText && !titleIconsRow.sourceComponent ? parent.right : undefined
color: {
if (!statusListItem.enabled) {
return Theme.palette.baseColor1
@@ -208,37 +188,12 @@ Rectangle {
visible: !!statusListItem.titleAsideText
}
- Row {
+ Loader {
id: titleIconsRow
- spacing: 4
anchors.left: !statusListItem.titleAsideText ? statusListItemTitle.right : statusListItemTitleAsideText.right
anchors.verticalCenter: statusListItemTitle.verticalCenter
- anchors.leftMargin: titleIconsRow.spacing
-
- StatusRoundIcon {
- visible: statusListItem.titleIcon1Visible
- icon.name: statusListItem.titleIcon1.name
- icon.width: statusListItem.titleIcon1.width
- icon.height: statusListItem.titleIcon1.height
- icon.rotation: statusListItem.titleIcon1.rotation
- icon.color: statusListItem.titleIcon1.color
- icon.background.color: statusListItem.titleIcon1.background.color
- icon.background.width: statusListItem.titleIcon1.background.width
- icon.background.height: statusListItem.titleIcon1.background.height
- }
-
- StatusRoundIcon {
- visible: statusListItem.titleIcon2Visible
- icon.name: statusListItem.titleIcon2.name
- icon.width: statusListItem.titleIcon2.width
- icon.height: statusListItem.titleIcon2.height
- icon.rotation: statusListItem.titleIcon2.rotation
- icon.color: statusListItem.titleIcon2.color
- icon.background.color: statusListItem.titleIcon2.background.color
- icon.background.width: statusListItem.titleIcon2.background.width
- icon.background.height: statusListItem.titleIcon2.background.height
- }
- }
+ anchors.leftMargin: 4
+ }
StatusBaseText {
id: statusListItemSubTitle
@@ -284,7 +239,6 @@ Rectangle {
visible: !!statusListItem.label
}
-
Row {
id: statusListItemComponentsSlot
anchors.right: parent.right
diff --git a/ui/StatusQ/src/StatusQ/Components/StatusMemberListItem.qml b/ui/StatusQ/src/StatusQ/Components/StatusMemberListItem.qml
index 8111ba410c..38e9f01b3d 100644
--- a/ui/StatusQ/src/StatusQ/Components/StatusMemberListItem.qml
+++ b/ui/StatusQ/src/StatusQ/Components/StatusMemberListItem.qml
@@ -10,15 +10,9 @@ StatusListItem {
property string userName: ""
property string chatKey: ""
property bool isMutualContact: false
- property var trustIndicator: StatusMemberListItem.TrustedType.None
+ property var trustIndicator: StatusContactVerificationIcons.TrustedType.None
property bool isOnline: false
- enum TrustedType {
- None, //0
- Verified, //1
- Untrustworthy //2
- }
-
// Subtitle composition:
function composeSubtitile() {
var compose = ""
@@ -42,8 +36,10 @@ StatusListItem {
// root object settings:
title: root.nickName
- titleIcon1Visible: root.isMutualContact
- titleIcon2Visible: root.trustIndicator !== StatusMemberListItem.TrustedType.None
+ statusListItemTitleIcons.sourceComponent: StatusContactVerificationIcons {
+ isMutualContact: root.isMutualContact
+ trustIndicator: root.trustIndicator
+ }
subTitle: composeSubtitile()
statusListItemSubTitle.font.pixelSize: 10
icon.isLetterIdenticon: !root.image.source.toString()
@@ -51,7 +47,7 @@ StatusListItem {
statusListItemIcon.badge.color: root.isOnline ? Theme.palette.successColor1 : Theme.palette.baseColor1
color: sensor.containsMouse ? Theme.palette.baseColor2 : Theme.palette.baseColor4
- // Default sizes/positions by design
+ // Default sizes / positions by design
implicitWidth: 256
implicitHeight: Math.max(56, statusListItemTitleArea.height + leftPadding)
leftPadding: 8
@@ -64,13 +60,4 @@ StatusListItem {
statusListItemIcon.badge.border.width: 2
statusListItemIcon.badge.implicitHeight: 12 // 8 px + 2 px * 2 borders
statusListItemIcon.badge.implicitWidth: 12 // 8 px + 2 px * 2 borders
-
- // Trusted type icons definition:
- titleIcon1.name: "tiny/tiny-contact"
- titleIcon1.color: Theme.palette.indirectColor1
- titleIcon1.background.color: Theme.palette.primaryColor1
- // None and Untrustworthy types, same aspect (Icon will not be visible in case of None type):
- titleIcon2.name: trustIndicator === StatusMemberListItem.TrustedType.Verified ? "tiny/tiny-checkmark" : "tiny/subtract"
- titleIcon2.color: Theme.palette.indirectColor1
- titleIcon2.background.color: trustIndicator === StatusMemberListItem.TrustedType.Verified ? Theme.palette.primaryColor1 : Theme.palette.dangerColor1
}
diff --git a/ui/StatusQ/src/StatusQ/Components/StatusMessage.qml b/ui/StatusQ/src/StatusQ/Components/StatusMessage.qml
index a8be9dc870..c9ba376950 100644
--- a/ui/StatusQ/src/StatusQ/Components/StatusMessage.qml
+++ b/ui/StatusQ/src/StatusQ/Components/StatusMessage.qml
@@ -21,14 +21,6 @@ Rectangle {
Invitation = 7
}
- enum ContactType {
- STANDARD = 0,
- RENAME = 1,
- CONTACT = 2,
- VERIFIED = 3,
- UNTRUSTWORTHY = 4
- }
-
property alias messageHeader: messageHeader
property alias quickActions:quickActionsPanel.quickActions
property alias statusChatInput: editComponent.inputComponent
@@ -108,11 +100,8 @@ Rectangle {
displayName: messageDetails.displayName
secondaryName: messageDetails.secondaryName
tertiaryDetail: messageDetails.chatID
- icon1.name: messageDetails.contactType === StatusMessage.ContactType.CONTACT ? "tiny/tiny-contact" : ""
- icon2.name: messageDetails.contactType === StatusMessage.ContactType.VERIFIED ? "tiny/tiny-checkmark" :
- messageDetails.contactType === StatusMessage.ContactType.UNTRUSTWORTHY ? "tiny/subtract": ""
- icon2.background.color: messageDetails.contactType === StatusMessage.ContactType.UNTRUSTWORTHY ? Theme.palette.dangerColor1 : Theme.palette.primaryColor1
- icon2.color: Theme.palette.indirectColor1
+ isMutualContact: messageDetails.isMutualContact
+ trustIndicator: messageDetails.trustIndicator
resendText: statusMessage.resendText
showResendButton: messageDetails.hasExpired && messageDetails.amISender
onClicked: statusMessage.senderNameClicked()
diff --git a/ui/StatusQ/src/StatusQ/Components/StatusMessageDetails.qml b/ui/StatusQ/src/StatusQ/Components/StatusMessageDetails.qml
index a53c257424..0dca0d2bf6 100644
--- a/ui/StatusQ/src/StatusQ/Components/StatusMessageDetails.qml
+++ b/ui/StatusQ/src/StatusQ/Components/StatusMessageDetails.qml
@@ -17,12 +17,13 @@ QtObject {
property string messageText: ""
property int contentType: 0
property string messageContent: ""
- property int contactType: 0
+ property bool isMutualContact: false
+ property var trustIndicator: StatusContactVerificationIcons.TrustedType.None
property bool hasMention: false
property bool isPinned: false
property string pinnedBy: ""
property bool hasExpired: false
- property string timestamp: ""
+ property string timestamp: ""
}
diff --git a/ui/StatusQ/src/StatusQ/Components/private/statusMessage/StatusMessageHeader.qml b/ui/StatusQ/src/StatusQ/Components/private/statusMessage/StatusMessageHeader.qml
index 8ecd5235f5..76c573f263 100644
--- a/ui/StatusQ/src/StatusQ/Components/private/statusMessage/StatusMessageHeader.qml
+++ b/ui/StatusQ/src/StatusQ/Components/private/statusMessage/StatusMessageHeader.qml
@@ -19,38 +19,8 @@ Item {
property string tertiaryDetail: ""
property string resendText: ""
property bool showResendButton: false
- property StatusIconSettings icon1: StatusIconSettings {
- width: dummyImage.width
- height: dummyImage.height
- rotation: 0
- color: Theme.palette.indirectColor1
- background: StatusIconBackgroundSettings {
- width: 10
- height: 10
- color: Theme.palette.primaryColor1
- }
- // only used to get implicit width and height from the actual image
- property Image dummyImage: Image {
- source: icon1.name ? "../../../../assets/img/icons/" + icon1.name + ".svg": ""
- visible: false
- }
- }
- property StatusIconSettings icon2: StatusIconSettings {
- width: dummyImage.width
- height: dummyImage.height
- rotation: 0
- color: Theme.palette.primaryColor1
- background: StatusIconBackgroundSettings {
- width: 10
- height: 10
- color: Theme.palette.indirectColor1
- }
- // only used to get implicit width and height from the actual image
- property Image dummyImage: Image {
- source: icon2.name ? "../../../../assets/img/icons/" + icon2.name + ".svg": ""
- visible: false
- }
- }
+ property bool isMutualContact: false
+ property var trustIndicator: StatusContactVerificationIcons.TrustedType.None
signal clicked()
signal resendClicked()
@@ -83,28 +53,10 @@ Item {
}
}
Layout.alignment: Qt.AlignBottom
- }
- StatusRoundIcon {
- icon.background.width: icon1.background.width
- icon.background.height: icon1.background.height
- icon.background.color: icon1.background.color
- icon.width: icon1.width
- icon.height: icon1.height
- icon.name: icon1.name
- icon.rotation: icon1.rotation
- icon.color: icon1.color
- visible: !!icon.name
- }
- StatusRoundIcon {
- icon.background.width: icon2.background.width
- icon.background.height: icon2.background.height
- icon.background.color: icon2.background.color
- icon.width: icon2.width
- icon.height: icon2.height
- icon.name: icon2.name
- icon.rotation: icon2.rotation
- icon.color: icon2.color
- visible: !!icon.name
+ }
+ StatusContactVerificationIcons {
+ isMutualContact: statusMessageHeader.isMutualContact
+ trustIndicator: statusMessageHeader.trustIndicator
}
StatusBaseText {
id: secondaryDisplayName
diff --git a/ui/StatusQ/src/StatusQ/Components/qmldir b/ui/StatusQ/src/StatusQ/Components/qmldir
index e220f4b466..dfcf6b68c3 100644
--- a/ui/StatusQ/src/StatusQ/Components/qmldir
+++ b/ui/StatusQ/src/StatusQ/Components/qmldir
@@ -10,6 +10,7 @@ StatusChatListCategoryItem 0.1 StatusChatListCategoryItem.qml
StatusChatListAndCategories 0.1 StatusChatListAndCategories.qml
StatusChatToolBar 0.1 StatusChatToolBar.qml
StatusContactRequestsIndicatorListItem 0.1 StatusContactRequestsIndicatorListItem.qml
+StatusContactVerificationIcons 0.1 StatusContactVerificationIcons.qml
StatusDescriptionListItem 0.1 StatusDescriptionListItem.qml
StatusLetterIdenticon 0.1 StatusLetterIdenticon.qml
StatusListItem 0.1 StatusListItem.qml
diff --git a/ui/StatusQ/statusq.qrc b/ui/StatusQ/statusq.qrc
index f8cb7bc7fe..e549085d92 100644
--- a/ui/StatusQ/statusq.qrc
+++ b/ui/StatusQ/statusq.qrc
@@ -323,5 +323,6 @@
src/StatusQ/Components/StatusTagSelector.qml
src/StatusQ/Components/StatusToastMessage.qml
src/StatusQ/Components/StatusWizardStepper.qml
+ src/StatusQ/Components/StatusContactVerificationIcons.qml