status-desktop/storybook/pages/ContactDetailsPage.qml

212 lines
6.9 KiB
QML

import QtQml 2.15
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import SortFilterProxyModel 0.2
import StatusQ.Components 0.1
import StatusQ.Controls 0.1
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Core.Utils 0.1
import Storybook 1.0
import utils 1.0
import Models 1.0
import AppLayouts.Profile.helpers 1.0
import AppLayouts.Profile.stores 1.0
import QtTest 1.15
SplitView {
id: root
Pane {
SplitView.fillWidth: true
SplitView.fillHeight: true
contentItem: ColumnLayout {
clip: true
spacing: 5
Label {
Layout.fillWidth: true
text: "publicKey: " + contactDetails.publicKey
font.bold: true
}
Label {
Layout.fillWidth: true
text: "loading: " + contactDetails.loading
font.bold: true
}
Label {
Layout.fillWidth: true
text: "displayName: " + contactDetails.displayName
}
Label {
Layout.fillWidth: true
text: "ensName: " + contactDetails.ensName
}
Label {
Layout.fillWidth: true
text: "ensVerified: " + contactDetails.ensVerified
}
Label {
Layout.fillWidth: true
text: "localNickname: " + contactDetails.localNickname
}
Label {
Layout.fillWidth: true
text: "alias: " + contactDetails.alias
}
Label {
Layout.fillWidth: true
text: "icon: " + contactDetails.icon
}
Label {
Layout.fillWidth: true
text: "colorId: " + contactDetails.colorId
}
Label {
Layout.fillWidth: true
text: "colorHash: " + contactDetails.colorHash
}
Label {
Layout.fillWidth: true
text: "onlineStatus: " + contactDetails.onlineStatus
}
Label {
Layout.fillWidth: true
text: "isContact: " + contactDetails.isContact
}
Label {
Layout.fillWidth: true
text: "isCurrentUser: " + contactDetails.isCurrentUser
}
Label {
Layout.fillWidth: true
text: "isVerified: " + contactDetails.isVerified
}
Label {
Layout.fillWidth: true
text: "isUntrustworthy: " + contactDetails.isUntrustworthy
}
Label {
Layout.fillWidth: true
text: "isBlocked: " + contactDetails.isBlocked
}
Label {
Layout.fillWidth: true
text: "contactRequestState: " + contactDetails.contactRequestState
}
Label {
Layout.fillWidth: true
text: "incomingVerificationStatus: " + contactDetails.incomingVerificationStatus
}
Label {
Layout.fillWidth: true
text: "outgoingVerificationStatus: " + contactDetails.outgoingVerificationStatus
}
Pane {
contentItem: RowLayout {
ComboBox {
id: pubKeySelector
model: [...ModelUtils.modelToFlatArray(myContactsModel, "pubKey"), "myPubKey", "none"]
ModelChangeTracker {
id: modelChangeTracker
model: myContactsModel
onRevisionChanged: {
pubKeySelector.model = [...ModelUtils.modelToFlatArray(myContactsModel, "pubKey"), "myPubKey", "none"]
}
}
}
}
}
}
}
Pane {
SplitView.fillHeight: true
SplitView.preferredWidth: 500
contentItem: UsersModelEditor {
id: myContactsModelEditor
model: myContactsModel
onRemoveClicked: (index) => {
myContactsModel.remove(index, 1)
}
onRemoveAllClicked: () => {
myContactsModel.clear()
}
onAddClicked: () => {
myContactsModel.append(getNewUser(myContactsModel.count))
}
}
}
UsersModel {
id: myContactsModel
}
ContactsStore {
id: contactsStoreMock
readonly property string myPublicKey: "0x123"
readonly property UsersModel contactsModel: myContactsModel
function requestContactInfo(pubKey) {
myContactsModel.append({
pubKey: pubKey,
displayName: "displayName",
ensName: "ensName",
ensVerified: true,
localNickname: "localNickname",
alias: "alias",
icon: "icon",
colorId: 1,
colorHash: [],
onlineStatus: 1,
isContact: true,
isCurrentUser: false,
isVerified: true,
isUntrustworthy: false,
isBlocked: false,
contactRequestState: 3,
incomingVerificationStatus: 3,
outgoingVerificationStatus: 2,
defaaaultDisplayName: "defaultDisplayName",
optionalName: "optionalName",
lastUpdated: 1234567890,
lastUpdatedLocally: 1234567890,
thumbnailImage: "thumbnailImage",
largeImage: "largeImage",
isContactRequestReceived: false,
isContactRequestSent: false,
isSyncing: false,
removed: false,
trustStatus: 1,
bio: "bio"
})
}
}
ProfileStore {
id: profileStoreMock
readonly property string displayName: "myDisplayName"
readonly property string name: "myEnsName"
readonly property string username: "myUsername"
readonly property string icon: "myIcon"
readonly property int colorId: 1
readonly property var colorHash: {}
readonly property int currentUserStatus: 1
readonly property string defaultDisplayName: "myDefaultDisplayName"
readonly property string thumbnailImage: "myThumbnailImage"
readonly property string largeImage: "myLargeImage"
readonly property string bio: "myBio"
}
ContactDetails {
id: contactDetails
contactsStore: contactsStoreMock
profileStore: profileStoreMock
publicKey: pubKeySelector.currentText === "myPubKey" ? "0x123" : pubKeySelector.currentText
}
}
// category: Contacts