feat: make profile look like the design

Improve left tab menu
Move settings to right panel instead of advanced
Create MyProfile container
Improve Contacts and Security
This commit is contained in:
Jonathan Rainville 2020-07-21 17:03:22 -04:00 committed by Iuri Matias
parent d4d532691e
commit 7f7a6cbc97
33 changed files with 697 additions and 610 deletions

View File

@ -1,40 +1,37 @@
import QtQuick 2.13
import QtQuick.Layouts 1.13
import "../../../imports"
import "../../../shared"
import "./LeftTab"
ColumnLayout {
Item {
property alias currentTab: profileMenu.profileCurrentIndex
id: profileInfoContainer
spacing: 0
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: parent.top
anchors.topMargin: 0
anchors.bottom: parent.bottom
anchors.bottomMargin: 0
RowLayout {
id: profileHeader
height: 240
Layout.fillWidth: true
Profile {
username: profileModel.profile.username
identicon: profileModel.profile.identicon
pubkey: profileModel.profile.id
}
StyledText {
id: title
text: qsTr("Profile")
anchors.top: parent.top
anchors.topMargin: Style.current.padding
anchors.horizontalCenter: parent.horizontalCenter
font.weight: Font.Bold
font.pixelSize: 17
}
RowLayout {
height: profileMenu.btnheight * 10
Layout.fillHeight: true
Layout.fillWidth: true
Menu {
id: profileMenu
}
Menu {
id: profileMenu
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
anchors.left: parent.left
anchors.leftMargin: Style.current.smallPadding
anchors.top: title.bottom
anchors.topMargin: Style.current.bigPadding
anchors.bottom: parent.bottom
}
}
/*##^##
Designer {
D{i:0;autoSize:true;formeditorColor:"#ffffff";height:600;width:340}
}
##^##*/

View File

@ -3,315 +3,37 @@ import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../../imports"
import "../../../../shared"
import "./components"
import "./constants.js" as ProfileConstants
Rectangle {
property alias profileCurrentIndex: profileScreenButtons.currentIndex
ScrollView {
property int profileCurrentIndex: ProfileConstants.PROFILE
readonly property int btnheight: 42
readonly property int w: 340
id: profileTabBar
color: Style.current.transparent
height: parent.height
Layout.fillHeight: true
Layout.fillWidth: true
id: profileMenu
TabBar {
id: profileScreenButtons
width: profileTabBar.w
height: parent.height
anchors.bottom: parent.bottom
anchors.bottomMargin: 0
currentIndex: 0
spacing: 0
background: Rectangle {
color: "#00000000"
}
Column {
anchors.fill: parent
spacing: 8
TabButton {
id: ensTabButton
width: profileTabBar.w
height: 0 //profileTabBar.btnheight
visible: false
text: ""
anchors.top: parent.top
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element1
//% "ENS usernames"
text: qsTrId("ens-usernames")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 0 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: contactsTabButton
width: profileTabBar.w
height: profileTabBar.btnheight
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: ensTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element2
//% "Contacts"
text: qsTrId("contacts")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 1 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: privacyTabButton
width: profileTabBar.w
height: profileTabBar.btnheight
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: contactsTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element3
//% "Privacy and security"
text: qsTrId("privacy-and-security")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 2 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: devicesTabButton
width: profileTabBar.w
height: profileTabBar.btnheight
visible: true
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: privacyTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
//% "Devices"
text: qsTrId("devices")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 3 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: syncTabButton
width: profileTabBar.w
height: 0 //profileTabBar.btnheight
visible: false
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: devicesTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element4
//% "Sync settings"
text: qsTrId("sync-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 3 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: languageTabButton
width: profileTabBar.w
height: 0 //profileTabBar.btnheight
visible: false
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: syncTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element5
//% "Language settings"
text: qsTrId("language-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 4 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: notificationsTabButton
width: profileTabBar.w
height: 0 //profileTabBar.btnheight
visible: false
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: languageTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element6
//% "Notifications settings"
text: qsTrId("notifications-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 5 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: advancedTabButton
width: profileTabBar.w
height: profileTabBar.btnheight
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: notificationsTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element7
//% "Advanced settings"
text: qsTrId("advanced-settings")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 6 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: helpTabButton
width: profileTabBar.w
height: 0 //profileTabBar.btnheight
text: ""
visible: false
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: advancedTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element8
//% "Need help?"
text: qsTrId("need-help")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 7 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: aboutTabButton
width: profileTabBar.w
height: profileTabBar.btnheight
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: helpTabButton.bottom
anchors.topMargin: 0
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element9
//% "About"
text: qsTrId("about-app")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 8 ? Font.Bold : Font.Medium
font.pixelSize: 14
}
}
TabButton {
id: signoutTabButton
width: profileTabBar.w
height: profileTabBar.btnheight
text: ""
anchors.left: parent.left
anchors.leftMargin: 0
anchors.bottom: parent.bottom
anchors.bottomMargin: 20
background: Rectangle {
color: Style.current.transparent
}
StyledText {
id: element10
//% "Sign out"
text: qsTrId("sign-out")
anchors.left: parent.left
anchors.leftMargin: 72
anchors.verticalCenter: parent.verticalCenter
font.weight: profileScreenButtons.currentIndex === 9 ? Font.Bold : Font.Medium
font.pixelSize: 14
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: {
// profileModel.logout();
Qt.quit();
}
Repeater {
model: ProfileConstants.menuButtons
delegate: MenuButton {
text: modelData .text
source: "../../../img/" + modelData .filename
active: profileMenu.profileCurrentIndex === modelData.id
Layout.fillWidth: true
onClicked: function () {
profileMenu.profileCurrentIndex = modelData.id
}
}
}
}
}
/*##^##
Designer {
D{i:0;formeditorColor:"#ffffff";height:500;width:340}
}
##^##*/

View File

@ -1,76 +0,0 @@
import QtQuick 2.13
import QtQuick.Layouts 1.13
import QtGraphicalEffects 1.13
import "../../../../imports"
import "../../../../shared"
Rectangle {
property string username: "Jotaro Kujo"
property string identicon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAhklEQVR4nOzWwQ1AQBgFYUQvelKHMtShJ9VwFyvrsExe5jvKXiYv+WPoQhhCYwiNITSG0MSEjLUPt3097r7P09L/8f4qZhFDaAyhqboIT76+TiUxixhCYwhN9b/WW6Xr1ErMIobQGEJjCI0hNIbQGEJjCI0haiRmEUNoDKExhMYQmjMAAP//B2kXcP2uDV8AAAAASUVORK5CYII="
property string pubkey: "0x04d8c07dd137bd1b73a6f51df148b4f77ddaa11209d36e43d8344c0a7d6db1cad6085f27cfb75dd3ae21d86ceffebe4cf8a35b9ce8d26baa19dc264efe6d8f221b"
id: profileHeaderContent
height: parent.height
Layout.fillWidth: true
color: Style.current.transparent
Item {
id: profileImgNameContainer
width: profileHeaderContent.width
height: profileHeaderContent.height
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
Image {
id: profileImg
source: identicon
width: 80
height: 80
fillMode: Image.PreserveAspectCrop
anchors.horizontalCenter: parent.horizontalCenter
mipmap: true
smooth: false
antialiasing: true
property bool rounded: true
property bool adapt: false
y: 78
layer.enabled: rounded
layer.effect: OpacityMask {
maskSource: Item {
width: profileImg.width
height: profileImg.height
Rectangle {
anchors.centerIn: parent
width: profileImg.adapt ? profileImg.width : Math.min(profileImg.width, profileImg.height)
height: profileImg.adapt ? profileImg.height : width
radius: Math.min(width, height)
}
}
}
}
StyledText {
id: profileName
text: username
anchors.top: profileImg.bottom
anchors.topMargin: 10
anchors.horizontalCenterOffset: 0
anchors.horizontalCenter: parent.horizontalCenter
font.weight: Font.Medium
font.pixelSize: 20
}
StyledText {
id: pubkeyText
text: pubkey
font.family: Style.current.fontHexRegular.name
width: 208
elide: Text.ElideMiddle
anchors.top: profileName.bottom
anchors.topMargin: 10
anchors.horizontalCenterOffset: 0
anchors.horizontalCenter: parent.horizontalCenter
font.weight: Font.Medium
font.pixelSize: 20
}
}
}

View File

@ -0,0 +1,57 @@
import QtQuick 2.13
import "../../../../../imports"
import "../../../../../shared"
Rectangle {
property bool hovered: false
property bool active: false
property url source: "../../../../img/add_watch_only.svg"
property string text: "My Profile"
property var onClicked: function () {}
id: menuButton
color: hovered || active ? Style.current.secondaryBackground : Style.current.transparent
border.width: 0
height: 48
width: parent.width
radius: Style.current.radius
SVGImage {
id: iconImage
source: menuButton.source
height: 22
anchors.left: parent.left
anchors.leftMargin: Style.current.padding
anchors.verticalCenter: parent.verticalCenter
fillMode: Image.PreserveAspectFit
}
StyledText {
text: menuButton.text
anchors.left: iconImage.right
anchors.leftMargin: Style.current.padding
anchors.verticalCenter: parent.verticalCenter
}
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
hoverEnabled: true
onEntered: {
menuButton.hovered = true
}
onExited: {
menuButton.hovered = false
}
onClicked: function () {
menuButton.onClicked()
}
}
}
/*##^##
Designer {
D{i:0;formeditorColor:"#ffffff";height:48;width:300}
}
##^##*/

View File

@ -0,0 +1,67 @@
var PROFILE = 0
var CONTACTS = 1
var ENS = 2
var PRIVACY_AND_SECURITY = 3
var APPEARANCE = 4
var SOUND = 5
var LANGUAGE = 6
var NOTIFICATIONS = 7
var SYNC_SETTINGS = 8
var DEVICES_SETTINGS = 9
var ADVANCED = 10
var NEED_HELP = 11
var ABOUT = 12
var menuButtons = [{
"id": PROFILE,
"text": qsTr("My Profile"),
"filename": "myProfile.svg"
}, {
"id": CONTACTS,
"text": qsTr("Contacts"),
"filename": "profileActive.svg"
}, {
"id": ENS,
"text": qsTr("ENS usernames"),
"filename": "atSign.svg"
}, {
"id": PRIVACY_AND_SECURITY,
"text": qsTr("Privacy and security"),
"filename": "lock.svg"
}, {
"id": APPEARANCE,
"text": qsTr("Appearance"),
"filename": "sun.svg"
}, {
"id": SOUND,
"text": qsTr("Sound"),
"filename": "sound.svg"
}, {
"id": LANGUAGE,
"text": qsTr("Language"),
"filename": "globe.svg"
}, {
"id": NOTIFICATIONS,
"text": qsTr("Notifications"),
"filename": "bell.svg"
}, {
"id": SYNC_SETTINGS,
"text": qsTr("Sync settings"),
"filename": "phone.svg"
}, {
"id": DEVICES_SETTINGS,
"text": qsTr("Devices settings"),
"filename": "phone.svg"
}, {
"id": ADVANCED,
"text": qsTr("Advanced"),
"filename": "slider.svg"
}, {
"id": NEED_HELP,
"text": qsTr("Need help?"),
"filename": "question.svg"
}, {
"id": ABOUT,
"text": qsTr("About"),
"filename": "info.svg"
}]

View File

@ -7,6 +7,7 @@ import "./Sections"
SplitView {
property var appSettings
property int contentMargin: 120
id: profileView
Layout.fillHeight: true
@ -36,20 +37,28 @@ SplitView {
anchors.leftMargin: 0
currentIndex: leftTab.currentTab
EnsContainer {}
// This list needs to match LeftTab/constants.js
// Would be better if we could make them match automatically
MyProfileContainer {}
ContactsContainer {}
EnsContainer {}
PrivacyContainer {}
DevicesContainer {}
AppearanceContainer {}
SyncContainer {}
SoundsContainer {}
LanguageContainer {}
NotificationsContainer {}
SyncContainer {}
DevicesContainer {}
AdvancedContainer {
appSettings: profileView.appSettings
}
@ -57,8 +66,6 @@ SplitView {
HelpContainer {}
AboutContainer {}
SignoutContainer {}
}
}

View File

@ -3,7 +3,6 @@ import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../../imports"
import "../../../../shared"
import "./Data/locales.js" as Locales_JSON
Item {
property var appSettings
@ -26,84 +25,9 @@ Item {
font.pixelSize: 20
}
RowLayout {
// TODO move this to a new panel once we have the appearance panel
property bool isDarkTheme: {
const isDarkTheme = profileModel.profile.appearance === 1
if (isDarkTheme) {
Style.changeTheme('dark')
} else {
Style.changeTheme('light')
}
return isDarkTheme
}
id: themeSetting
anchors.top: title.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
//% "Theme (Light - Dark)"
text: qsTrId("theme-(light---dark)")
}
Switch {
checked: themeSetting.isDarkTheme
onToggled: function() {
profileModel.changeTheme(themeSetting.isDarkTheme ? 0 : 1)
}
}
}
RowLayout {
property bool isCompactMode: appSettings.compactMode
id: compactModeSetting
anchors.top: themeSetting.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
//% "Chat Compact Mode"
text: qsTrId("chat-compact-mode")
}
Switch {
checked: compactModeSetting.isCompactMode
onToggled: function() {
appSettings.compactMode = !compactModeSetting.isCompactMode
}
}
}
RowLayout {
property string currentLocale: appSettings.locale
id: languageSetting
anchors.top: compactModeSetting.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
text: qsTr("Language")
}
Select {
selectedText: languageSetting.currentLocale
anchors.right: undefined
anchors.left: undefined
width: 100
Layout.leftMargin: Style.current.padding
selectOptions: Locales_JSON.locales.map(locale => {
return {
text: locale,
onClicked: function () {
profileModel.changeLocale(locale)
appSettings.locale = locale
}
}
})
}
}
RowLayout {
id: walletTabSettings
anchors.top: languageSetting.bottom
anchors.top: title.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
@ -166,32 +90,10 @@ Item {
text: qsTrId("under-development")
}
}
RowLayout {
id: displayImageSettings
anchors.top: nodeTabSettings.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
//% "Display images in chat automatically"
text: qsTrId("display-images-in-chat-automatically")
}
Switch {
checked: appSettings.displayChatImages
onCheckedChanged: function(value) {
advancedContainer.appSettings.displayChatImages = this.checked
}
}
StyledText {
//% "under development"
text: qsTrId("under-development")
}
}
RowLayout {
id: networkTabSettings
anchors.top: displayImageSettings.bottom
anchors.top: nodeTabSettings.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24

View File

@ -0,0 +1,68 @@
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../../imports"
import "../../../../shared"
Item {
id: appearanceContainer
Layout.fillHeight: true
Layout.fillWidth: true
StyledText {
id: title
text: qsTr("Appearance setting")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
anchors.topMargin: 24
font.weight: Font.Bold
font.pixelSize: 20
}
RowLayout {
property bool isDarkTheme: {
const isDarkTheme = profileModel.profile.appearance === 1
if (isDarkTheme) {
Style.changeTheme('dark')
} else {
Style.changeTheme('light')
}
return isDarkTheme
}
id: themeSetting
anchors.top: title.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
//% "Theme (Light - Dark)"
text: qsTrId("theme-(light---dark)")
}
Switch {
checked: themeSetting.isDarkTheme
onToggled: function() {
profileModel.changeTheme(themeSetting.isDarkTheme ? 0 : 1)
}
}
}
RowLayout {
property bool isCompactMode: appSettings.compactMode
id: compactModeSetting
anchors.top: themeSetting.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
//% "Chat Compact Mode"
text: qsTrId("chat-compact-mode")
}
Switch {
checked: compactModeSetting.isCompactMode
onToggled: function() {
appSettings.compactMode = !compactModeSetting.isCompactMode
}
}
}
}

View File

@ -23,7 +23,6 @@ Rectangle {
Identicon {
id: accountImage
anchors.left: parent.left
anchors.leftMargin: Style.current.padding
anchors.verticalCenter: parent.verticalCenter
source: identicon
}

View File

@ -12,10 +12,10 @@ ListView {
property var contacts: ContactsData {}
property var selectable: true
property alias selectedContact: contactGroup.checkedButton
property string searchString: ""
property string lowerCaseSearchString: searchString.toLowerCase()
anchors.topMargin: 48
anchors.top: element2.bottom
anchors.fill: parent
width: parent.width
model: contacts
delegate: Contact {
@ -25,6 +25,9 @@ ListView {
isContact: model.isContact
selectable: contactList.selectable
profileClick: profilePopup.openPopup.bind(profilePopup)
visible: searchString === "" ||
model.name.toLowerCase().includes(lowerCaseSearchString) ||
model.address.toLowerCase().includes(lowerCaseSearchString)
}
ProfilePopup {

View File

@ -3,36 +3,103 @@ import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../../imports"
import "../../../../shared"
import "../../Chat/components"
import "./Contacts"
Item {
id: contactsContainer
width: 200
height: 200
Layout.fillHeight: true
Layout.fillWidth: true
StyledText {
id: element2
//% "Contacts"
text: qsTrId("contacts")
anchors.left: parent.left
anchors.leftMargin: 24
Item {
anchors.top: parent.top
anchors.topMargin: 24
font.weight: Font.Bold
font.pixelSize: 20
}
anchors.topMargin: 32
anchors.right: parent.right
anchors.rightMargin: contentMargin
anchors.left: parent.left
anchors.leftMargin: contentMargin
anchors.bottom: parent.bottom
ContactList {
id: contactListView
contacts: profileModel.contactList
selectable: false
SearchBox {
id: searchBox
}
Item {
id: addNewContact
anchors.top: searchBox.bottom
anchors.topMargin: Style.current.bigPadding
width: parent.width
height: addButton.height
AddButton {
id: addButton
clickable: false
anchors.verticalCenter: parent.verticalCenter
}
StyledText {
id: usernameText
text: qsTr("Add new contact")
color: Style.current.blue
anchors.left: addButton.right
anchors.leftMargin: Style.current.padding
anchors.verticalCenter: addButton.verticalCenter
font.pixelSize: 15
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
// TODO implement adding a contact
console.log('Add a contact')
}
}
}
ContactList {
id: contactListView
anchors.top: addNewContact.bottom
anchors.topMargin: Style.current.bigPadding
anchors.bottom: parent.bottom
contacts: profileModel.contactList
selectable: false
searchString: searchBox.text
}
Item {
id: element
visible: profileModel.contactList.rowCount() === 0
anchors.fill: parent
StyledText {
id: noFriendsText
text: qsTr("You dont have any contacts yet")
anchors.verticalCenterOffset: -Style.current.bigPadding
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 15
color: Style.current.darkGrey
}
StyledButton {
anchors.horizontalCenter: noFriendsText.horizontalCenter
anchors.top: noFriendsText.bottom
anchors.topMargin: Style.current.bigPadding
label: qsTr("Invite firends")
onClicked: function () {
inviteFriendsPopup.open()
}
}
InviteFriendsPopup {
id: inviteFriendsPopup
}
}
}
}
/*##^##
Designer {
D{i:0;width:600}
D{i:0;autoSize:true;formeditorColor:"#ffffff";formeditorZoom:0.6600000262260437;height:480;width:600}
}
##^##*/

View File

@ -163,8 +163,8 @@ Item {
anchors.top: deviceListLbl.bottom
anchors.topMargin: Style.current.padding
spacing: 5
anchors.right: syncContainer.right
anchors.left: syncContainer.left
anchors.right: parent.right
anchors.left: parent.left
delegate: Item {
height: childrenRect.height
SVGImage {

View File

@ -24,15 +24,16 @@ Item {
font.pixelSize: 20
}
StyledText {
anchors.centerIn: parent
text: Utils.linkifyAndXSS(link)
onLinkActivated: Qt.openUrlExternally(link)
// FIXME the link doesn't exist
// StyledText {
// anchors.centerIn: parent
// text: Utils.linkifyAndXSS(link)
// onLinkActivated: Qt.openUrlExternally(link)
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton // we don't want to eat clicks on the Text
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}
}
// MouseArea {
// anchors.fill: parent
// acceptedButtons: Qt.NoButton // we don't want to eat clicks on the Text
// cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
// }
// }
}

View File

@ -3,16 +3,15 @@ import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../../imports"
import "../../../../shared"
import "./Data/locales.js" as Locales_JSON
Item {
id: languageContainer
width: 200
height: 200
Layout.fillHeight: true
Layout.fillWidth: true
StyledText {
id: element5
id: title
//% "Language settings"
text: qsTrId("language-settings")
anchors.left: parent.left
@ -22,4 +21,32 @@ Item {
font.weight: Font.Bold
font.pixelSize: 20
}
RowLayout {
property string currentLocale: appSettings.locale
id: languageSetting
anchors.top: title.bottom
anchors.topMargin: 20
anchors.left: parent.left
anchors.leftMargin: 24
StyledText {
text: qsTr("Language")
}
Select {
selectedText: languageSetting.currentLocale
anchors.right: undefined
anchors.left: undefined
width: 100
Layout.leftMargin: Style.current.padding
selectOptions: Locales_JSON.locales.map(locale => {
return {
text: locale,
onClicked: function () {
profileModel.changeLocale(locale)
appSettings.locale = locale
}
}
})
}
}
}

View File

@ -0,0 +1,117 @@
import QtQuick 2.13
import QtQuick.Layouts 1.13
import QtGraphicalEffects 1.13
import "../../../../imports"
import "../../../../shared"
Item {
property string username: "Jotaro Kujo"
property string identicon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAhklEQVR4nOzWwQ1AQBgFYUQvelKHMtShJ9VwFyvrsExe5jvKXiYv+WPoQhhCYwiNITSG0MSEjLUPt3097r7P09L/8f4qZhFDaAyhqboIT76+TiUxixhCYwhN9b/WW6Xr1ErMIobQGEJjCI0hNIbQGEJjCI0haiRmEUNoDKExhMYQmjMAAP//B2kXcP2uDV8AAAAASUVORK5CYII="
property string pubkey: "0x04d8c07dd137bd1b73a6f51df148b4f77ddaa11209d36e43d8344c0a7d6db1cad6085f27cfb75dd3ae21d86ceffebe4cf8a35b9ce8d26baa19dc264efe6d8f221b"
property string address: "0x13Ed66d9Ffcd4dC1fB86B9414b8c60677E5Ae1cE"
id: profileHeaderContent
height: parent.height
Layout.fillWidth: true
Item {
id: profileImgNameContainer
anchors.top: parent.top
anchors.topMargin: 64
anchors.right: parent.right
anchors.rightMargin: contentMargin
anchors.left: parent.left
anchors.leftMargin: contentMargin
height: this.childrenRect.height
Rectangle {
id: profileImg
width: identiconImage.width
height: identiconImage.height
border.width: 1
border.color: Style.current.border
radius: 50
Image {
id: identiconImage
width: 44
height: 44
fillMode: Image.PreserveAspectFit
source: identicon
mipmap: true
smooth: false
antialiasing: true
}
}
StyledText {
id: profileName
text: username
anchors.left: profileImg.right
anchors.leftMargin: 8
anchors.top: profileImg.top
font.weight: Font.Medium
font.pixelSize: 15
}
StyledText {
id: pubkeyText
text: address
anchors.bottom: profileImg.bottom
anchors.left: profileName.left
font.family: Style.current.fontHexRegular.name
elide: Text.ElideMiddle
width: 140
font.pixelSize: 15
color: Style.current.darkGrey
}
SVGImage {
source: "../../../img/qr-code-icon.svg"
width: 18
height: 18
anchors.right: parent.right
MouseArea {
cursorShape: Qt.PointingHandCursor
onClicked: {
console.log('QR code ples')
}
}
}
Separator {
id: lineSeparator
anchors.top: profileImg.bottom
anchors.topMargin: 36
}
}
Column {
anchors.right: profileImgNameContainer.right
anchors.left: profileImgNameContainer.left
spacing: Style.current.bigPadding
anchors.top: profileImgNameContainer.bottom
anchors.topMargin: Style.current.smallPadding
TextWithLabel {
label: qsTr("Chat key")
text: pubkey.substring(0, 13) + "..." + pubkey.substring(pubkey.length - 13)
textToCopy: pubkey
}
TextWithLabel {
label: qsTr("Share Profile URL")
text: `https://join.status.im/u/${pubkey.substring(0, 5)}...${pubkey.substring(pubkey.length - 5)}`
textToCopy: `https://join.status.im/u/${pubkey}`
}
}
}
/*##^##
Designer {
D{i:0;formeditorColor:"#ffffff"}
}
##^##*/

View File

@ -1,61 +1,113 @@
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import QtGraphicalEffects 1.13
import "../../../../imports"
import "../../../../shared"
Item {
id: privacyContainer
width: 200
height: 200
Layout.fillHeight: true
Layout.fillWidth: true
StyledText {
id: element3
//% "Privacy and security settings"
text: qsTrId("privacy-and-security-settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
anchors.topMargin: 24
font.weight: Font.Bold
font.pixelSize: 20
}
StyledText {
id: labelSecurity
//% "Security"
text: qsTrId("security")
font.pixelSize: 13
font.weight: Font.Medium
color: Style.current.darkGrey
anchors.left: parent.left
anchors.leftMargin: Style.current.bigPadding
anchors.top: element3.bottom
anchors.topMargin: Style.current.smallPadding
}
Item {
anchors.top: labelSecurity.bottom
anchors.topMargin: Style.current.padding
anchors.left: parent.left
anchors.leftMargin: Style.current.bigPadding
height: children[0].height
width: children[0].width
StyledText {
//% "Backup Seed Phrase"
text: qsTrId("backup-seed-phrase")
font.pixelSize: 14
}
MouseArea {
anchors.fill: parent
onClicked: backupSeedModal.open()
cursorShape: Qt.PointingHandCursor
}
}
id: profileImgNameContainer
anchors.top: parent.top
anchors.topMargin: 46
anchors.right: parent.right
anchors.rightMargin: contentMargin
anchors.left: parent.left
anchors.leftMargin: contentMargin
anchors.bottom: parent.bottom
BackupSeedModal{
id: backupSeedModal
StyledText {
id: labelSecurity
//% "Security"
text: qsTrId("security")
font.pixelSize: 15
color: Style.current.darkGrey
}
Item {
id: backupSeedPhrase
anchors.top: labelSecurity.bottom
anchors.topMargin: Style.current.padding
height: backupText.height
width: parent.width
StyledText {
id: backupText
//% "Backup Seed Phrase"
text: qsTrId("backup-seed-phrase")
font.pixelSize: 15
}
SVGImage {
id: caret
anchors.right: parent.right
anchors.rightMargin: 0
anchors.verticalCenter: backupText.verticalCenter
source: "../../../img/caret.svg"
width: 13
height: 7
rotation: -90
}
ColorOverlay {
anchors.fill: caret
source: caret
color: Style.current.darkGrey
rotation: -90
}
MouseArea {
anchors.fill: parent
onClicked: backupSeedModal.open()
cursorShape: Qt.PointingHandCursor
}
}
BackupSeedModal {
id: backupSeedModal
}
Separator {
id: separator
anchors.top: backupSeedPhrase.bottom
anchors.topMargin: Style.current.bigPadding
}
StyledText {
id: labelPrivacy
text: qsTr("Privacy")
font.pixelSize: 15
color: Style.current.darkGrey
anchors.top: separator.bottom
anchors.topMargin: Style.current.smallPadding
}
RowLayout {
id: displayImageSettings
anchors.top: labelPrivacy.bottom
anchors.topMargin: Style.current.padding
StyledText {
//% "Display images in chat automatically"
text: qsTrId("display-images-in-chat-automatically")
}
Switch {
checked: appSettings.displayChatImages
onCheckedChanged: function (value) {
appSettings.displayChatImages = this.checked
}
}
StyledText {
//% "under development"
text: qsTrId("under-development")
}
}
}
}
/*##^##
Designer {
D{i:0;autoSize:true;formeditorColor:"#ffffff";height:480;width:640}
}
##^##*/

View File

@ -0,0 +1,24 @@
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../../imports"
import "../../../../shared"
Item {
id: soundsContainer
width: 200
height: 200
Layout.fillHeight: true
Layout.fillWidth: true
StyledText {
id: element5
text: qsTr("Sounds settings")
anchors.left: parent.left
anchors.leftMargin: 24
anchors.top: parent.top
anchors.topMargin: 24
font.weight: Font.Bold
font.pixelSize: 20
}
}

View File

@ -155,7 +155,7 @@ Item {
Action {
//% "Set Currency"
text: qsTrId("set-currency")
icon.source: "../../img/set_currency.svg"
icon.source: "../../img/globe.svg"
onTriggered: {
setCurrencyModal.open()
}

3
ui/app/img/atSign.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20C10.4142 20 10.75 19.6642 10.75 19.25C10.75 18.8358 10.4142 18.5 10 18.5C5.30558 18.5 1.5 14.6944 1.5 10C1.5 5.30558 5.30558 1.5 10 1.5C14.6944 1.5 18.5 5.30558 18.5 10V12.375C18.5 13.4105 17.6605 14.25 16.625 14.25C15.5895 14.25 14.75 13.4105 14.75 12.375V6C14.75 5.58579 14.4142 5.25 14 5.25C13.5858 5.25 13.25 5.58579 13.25 6C13.25 6.1176 13.107 6.17946 13.0171 6.10367C12.1792 5.39741 11.1144 5 10 5C7.23858 5 5 7.23858 5 10C5 12.7614 7.23858 15 10 15C11.031 15 12.0194 14.6599 12.8251 14.0497C13.1255 13.8223 13.6002 13.9204 13.8081 14.2346C14.4121 15.1477 15.4482 15.75 16.625 15.75C18.489 15.75 20 14.239 20 12.375V10C20 4.47715 15.5228 0 10 0ZM13.25 10C13.25 12.1716 11.6716 13.5 10 13.5C8.067 13.5 6.5 11.933 6.5 10C6.5 8.067 8.067 6.5 10 6.5C11.6716 6.5 13.25 7.82843 13.25 10Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 1015 B

3
ui/app/img/bell.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="18" height="21" viewBox="0 0 18 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.2815 17C11.9452 17 11.7036 17.3279 11.7349 17.6628C11.7449 17.7703 11.7504 17.8827 11.7504 18C11.7504 19.3889 10.5441 20.75 9.00041 20.75C7.45677 20.75 6.25041 19.3889 6.25041 18C6.25041 17.8827 6.25591 17.7703 6.26596 17.6628C6.29725 17.3279 6.05564 17 5.71934 17H2.52151C0.785229 17 -0.126317 14.9394 1.04163 13.6547L2.21849 12.3601C2.72921 11.7983 3.06949 11.1028 3.19958 10.3548L4.31505 3.94085C4.71121 1.66293 6.6883 0 9.00041 0C11.3125 0 13.2896 1.66293 13.6858 3.94085L14.8012 10.3548C14.9313 11.1028 15.2716 11.7983 15.7823 12.3601L16.9592 13.6547C18.1271 14.9394 17.2156 17 15.4793 17H12.2815ZM8.03273 17.0283L8.03176 17.0293L8.03951 17.0214L8.04195 17.0188C8.04319 17.0175 8.04382 17.0168 8.04389 17.0167C8.04428 17.0163 8.04393 17.0167 8.04389 17.0167L8.04195 17.0188C8.05295 17.0073 8.06855 17 8.08446 17H9.91637C9.93228 17 9.94735 17.0068 9.95835 17.0183C9.96125 17.0217 9.96836 17.0302 9.97854 17.0438C10.0015 17.0744 10.0394 17.13 10.0796 17.2104C10.1587 17.3687 10.2504 17.6296 10.2504 18C10.2504 18.6111 9.66591 19.25 9.00041 19.25C8.33491 19.25 7.75041 18.6111 7.75041 18C7.75041 17.6296 7.84209 17.3687 7.92123 17.2104C7.96142 17.13 7.9993 17.0744 8.02229 17.0438C8.03246 17.0302 8.03906 17.0222 8.04195 17.0188L8.03951 17.0214L8.03766 17.0233L8.03454 17.0265L8.03273 17.0283ZM2.15154 14.6637L3.3284 13.3691C4.03064 12.5967 4.49853 11.6403 4.6774 10.6118L5.79286 4.19786C6.06407 2.63842 7.41757 1.5 9.00041 1.5C10.5833 1.5 11.9368 2.63842 12.208 4.19786L13.3234 10.6118C13.5023 11.6403 13.9702 12.5967 14.6724 13.3691L15.8493 14.6637C16.1413 14.9849 15.9134 15.5 15.4793 15.5H2.52151C2.08744 15.5 1.85956 14.9849 2.15154 14.6637Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

5
ui/app/img/info.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.25 8C7.25 7.58579 7.58579 7.25 8 7.25H10.5C10.9142 7.25 11.25 7.58579 11.25 8V15.5C11.25 15.9142 10.9142 16.25 10.5 16.25C10.0858 16.25 9.75 15.9142 9.75 15.5V8.75H8C7.58579 8.75 7.25 8.41421 7.25 8Z" fill="#4360DF"/>
<path d="M10 5.75C10.6904 5.75 11.25 5.19036 11.25 4.5C11.25 3.80964 10.6904 3.25 10 3.25C9.30964 3.25 8.75 3.80964 8.75 4.5C8.75 5.19036 9.30964 5.75 10 5.75Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 10C0 15.5228 4.47715 20 10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10ZM1.5 10C1.5 14.6944 5.30558 18.5 10 18.5C14.6944 18.5 18.5 14.6944 18.5 10C18.5 5.30558 14.6944 1.5 10 1.5C5.30558 1.5 1.5 5.30558 1.5 10Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 829 B

4
ui/app/img/lock.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="16" height="20" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.0157 14.1319C7.15033 14.2491 7.25 14.4092 7.25 14.5877V16C7.25 16.4142 7.58579 16.75 8 16.75C8.41421 16.75 8.75 16.4142 8.75 16V14.5877C8.75 14.4092 8.84967 14.2491 8.9843 14.1319C9.30027 13.8569 9.5 13.4518 9.5 13C9.5 12.1716 8.82843 11.5 8 11.5C7.17157 11.5 6.5 12.1716 6.5 13C6.5 13.4518 6.69973 13.8569 7.0157 14.1319Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.50099 8.03082C3.77502 7.99672 4 7.77614 4 7.5V4C4 1.79086 5.79086 0 8 0C10.2091 0 12 1.79086 12 4V7.5C12 7.77614 12.225 7.99672 12.499 8.03082C14.4726 8.27643 16 9.95985 16 12V16C16 18.2091 14.2091 20 12 20H4C1.79086 20 0 18.2091 0 16V12C0 9.95985 1.52736 8.27643 3.50099 8.03082ZM1.5 12C1.5 10.6193 2.61929 9.5 4 9.5H12C13.3807 9.5 14.5 10.6193 14.5 12V16C14.5 17.3807 13.3807 18.5 12 18.5H4C2.61929 18.5 1.5 17.3807 1.5 16V12ZM6 8C5.72386 8 5.5 7.77614 5.5 7.5V4C5.5 2.61929 6.61929 1.5 8 1.5C9.38071 1.5 10.5 2.61929 10.5 4V7.5C10.5 7.77614 10.2761 8 10 8H6Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

5
ui/app/img/myProfile.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.75 8C14.75 10.0711 13.0711 11.75 11 11.75C8.92893 11.75 7.25 10.0711 7.25 8C7.25 5.92893 8.92893 4.25 11 4.25C13.0711 4.25 14.75 5.92893 14.75 8ZM13.25 8C13.25 9.24264 12.2426 10.25 11 10.25C9.75736 10.25 8.75 9.24264 8.75 8C8.75 6.75736 9.75736 5.75 11 5.75C12.2426 5.75 13.25 6.75736 13.25 8Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 11C22 17.0751 17.0751 22 11 22C4.92487 22 0 17.0751 0 11C0 4.92487 4.92487 0 11 0C17.0751 0 22 4.92487 22 11ZM20.5 11C20.5 16.2467 16.2467 20.5 11 20.5C5.75329 20.5 1.5 16.2467 1.5 11C1.5 5.75329 5.75329 1.5 11 1.5C16.2467 1.5 20.5 5.75329 20.5 11Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.99199 15.3857L5.98744 15.39C5.68505 15.6731 5.6694 16.1477 5.95248 16.4501C6.23544 16.7523 6.70978 16.7681 7.01218 16.4854L7.01129 16.4862L7.02005 16.4783C7.02921 16.4702 7.04496 16.4563 7.06705 16.4376C7.11126 16.4002 7.18068 16.3436 7.27353 16.274C7.45962 16.1346 7.73733 15.9451 8.09253 15.7549C8.80556 15.3731 9.80846 15 11 15C12.1915 15 13.1944 15.3731 13.9075 15.7549C14.2627 15.9451 14.5404 16.1346 14.7265 16.274C14.8193 16.3436 14.8887 16.4002 14.933 16.4376C14.955 16.4563 14.9708 16.4702 14.98 16.4783L14.9887 16.4862C15.2911 16.7685 15.7647 16.7522 16.0475 16.4501C16.3306 16.1477 16.3149 15.6731 16.0126 15.39L16.0117 15.3892L16.0106 15.3882L16.008 15.3857L16.0008 15.3791L15.9782 15.3588C15.9597 15.3422 15.9341 15.3198 15.9016 15.2923C15.8367 15.2374 15.7442 15.1623 15.6259 15.0736C15.3897 14.8967 15.0482 14.6642 14.6156 14.4326C13.753 13.9707 12.5059 13.5 11 13.5C9.49414 13.5 8.24704 13.9707 7.38442 14.4326C6.95179 14.6642 6.61027 14.8967 6.37408 15.0736C6.25578 15.1623 6.1633 15.2374 6.0984 15.2923C6.06593 15.3198 6.04031 15.3422 6.02176 15.3588L5.99924 15.3791L5.99199 15.3857L5.98937 15.3882L5.98832 15.3892L5.99199 15.3857Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

4
ui/app/img/phone.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="14" height="20" viewBox="0 0 14 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 16.5C7.82843 16.5 8.5 15.8284 8.5 15C8.5 14.1716 7.82843 13.5 7 13.5C6.17157 13.5 5.5 14.1716 5.5 15C5.5 15.8284 6.17157 16.5 7 16.5Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 4C0 1.79086 1.79086 0 4 0H10C12.2091 0 14 1.79086 14 4V16C14 18.2091 12.2091 20 10 20H4C1.79086 20 0 18.2091 0 16V4ZM1.5 4C1.5 2.61929 2.61929 1.5 4 1.5H10C11.3807 1.5 12.5 2.61929 12.5 4V16C12.5 17.3807 11.3807 18.5 10 18.5H4C2.61929 18.5 1.5 17.3807 1.5 16V4Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 599 B

5
ui/app/img/question.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.25 7C6.25 4.92579 7.92579 3.25 10 3.25C12.0742 3.25 13.75 4.92579 13.75 7C13.75 7.7486 13.3603 8.37716 12.9449 8.84255C12.5214 9.3171 11.9927 9.71085 11.5401 10.0028C11.0428 10.3237 10.75 10.8155 10.75 11.2971V12C10.75 12.4142 10.4142 12.75 10 12.75C9.58579 12.75 9.25 12.4142 9.25 12V11.2971C9.25 10.2007 9.89813 9.27715 10.7269 8.74244C11.124 8.48621 11.5285 8.17685 11.8258 7.84374C12.1313 7.50148 12.25 7.21784 12.25 7C12.25 5.75421 11.2458 4.75 10 4.75C8.75421 4.75 7.75 5.75421 7.75 7C7.75 7.41421 7.41421 7.75 7 7.75C6.58579 7.75 6.25 7.41421 6.25 7Z" fill="#4360DF"/>
<path d="M10 16.75C10.6904 16.75 11.25 16.1904 11.25 15.5C11.25 14.8096 10.6904 14.25 10 14.25C9.30964 14.25 8.75 14.8096 8.75 15.5C8.75 16.1904 9.30964 16.75 10 16.75Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 10C0 15.5228 4.47715 20 10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10ZM1.5 10C1.5 14.6944 5.30558 18.5 10 18.5C14.6944 18.5 18.5 14.6944 18.5 10C18.5 5.30558 14.6944 1.5 10 1.5C5.30558 1.5 1.5 5.30558 1.5 10Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

4
ui/app/img/slider.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.30767 16.25C8.15286 16.25 8.00809 16.3229 7.9069 16.44C7.08172 17.3954 5.86147 18 4.5 18C2.01472 18 0 15.9853 0 13.5C0 11.0147 2.01472 9 4.5 9C5.86147 9 7.08172 9.60461 7.9069 10.56C8.00809 10.6771 8.15286 10.75 8.30767 10.75H17C18.5188 10.75 19.75 11.9812 19.75 13.5C19.75 15.0188 18.5188 16.25 17 16.25H8.30767ZM7.5 13.5C7.5 15.1569 6.15685 16.5 4.5 16.5C2.84315 16.5 1.5 15.1569 1.5 13.5C1.5 11.8431 2.84315 10.5 4.5 10.5C6.15685 10.5 7.5 11.8431 7.5 13.5ZM9.4888 14.75C9.15606 14.75 8.91639 14.4299 8.96034 14.1C8.9865 13.9038 9 13.7035 9 13.5C9 13.2965 8.9865 13.0962 8.96034 12.9C8.91639 12.5701 9.15606 12.25 9.4888 12.25H17C17.6904 12.25 18.25 12.8096 18.25 13.5C18.25 14.1904 17.6904 14.75 17 14.75H9.4888Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20 4.5C20 6.98528 17.9853 9 15.5 9C14.1385 9 12.9183 8.39539 12.0931 7.44002C11.9919 7.32286 11.8471 7.25 11.6923 7.25H3C1.48122 7.25 0.25 6.01878 0.25 4.5C0.25 2.98122 1.48122 1.75 3 1.75H11.6923C11.8471 1.75 11.9919 1.67714 12.0931 1.55998C12.9183 0.604614 14.1385 0 15.5 0C17.9853 0 20 2.01472 20 4.5ZM18.5 4.5C18.5 6.15685 17.1569 7.5 15.5 7.5C13.8431 7.5 12.5 6.15685 12.5 4.5C12.5 2.84315 13.8431 1.5 15.5 1.5C17.1569 1.5 18.5 2.84315 18.5 4.5ZM10.5112 3.25C10.8439 3.25 11.0836 3.57013 11.0397 3.89995C11.0135 4.09625 11 4.29655 11 4.5C11 4.70345 11.0135 4.90375 11.0397 5.10005C11.0836 5.42987 10.8439 5.75 10.5112 5.75H3C2.30964 5.75 1.75 5.19036 1.75 4.5C1.75 3.80964 2.30964 3.25 3 3.25H10.5112Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

3
ui/app/img/sound.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="18" height="20" viewBox="0 0 18 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.25 7.01296C5.24983 7.00364 5.24983 6.99434 5.25 6.98507V5.5036C5.25 3.69128 6.54609 2.13829 8.32918 1.81409L14.5081 0.690659C16.1961 0.383738 17.75 1.68056 17.75 3.3963V4.98674C17.7502 4.99609 17.7502 5.00543 17.75 5.01473V14.3603C17.75 15.6711 16.8247 16.7998 15.5393 17.0569L14.4929 17.2662C12.8152 17.6017 11.25 16.3185 11.25 14.6076C11.25 13.3153 12.1622 12.2026 13.4295 11.9491L15.2451 11.586C15.8294 11.4691 16.25 10.9561 16.25 10.3603V6.49764C16.25 6.18569 15.9675 5.9499 15.6606 6.00571L7.16056 7.55116C6.92281 7.59439 6.75 7.80145 6.75 8.0431V16.3603C6.75 17.6711 5.82474 18.7998 4.53932 19.0569L3.49286 19.2662C1.81522 19.6017 0.25 18.3185 0.25 16.6076C0.25 15.3153 1.1622 14.2026 2.42946 13.9491L4.24514 13.586C4.82942 13.4691 5.25 12.9561 5.25 12.3603V7.01296ZM14.7764 2.16646C15.5437 2.02695 16.25 2.61642 16.25 3.3963V3.95665C16.25 4.1983 16.0772 4.40536 15.8394 4.44859L7.33797 5.99431C7.03182 6.04997 6.75 5.81478 6.75 5.5036C6.75 4.41621 7.52765 3.48442 8.59751 3.2899L14.7764 2.16646ZM15.5393 13.0569C15.8778 12.9892 16.25 13.2196 16.25 13.5648V14.3603C16.25 14.9561 15.8294 15.4691 15.2451 15.586L14.1987 15.7953C13.4492 15.9452 12.75 15.3719 12.75 14.6076C12.75 14.0303 13.1575 13.5332 13.7236 13.42L15.5393 13.0569ZM4.53932 15.0569C4.87784 14.9892 5.25 15.2196 5.25 15.5648V16.3603C5.25 16.9561 4.82943 17.4691 4.24515 17.586L3.19869 17.7953C2.44923 17.9452 1.75 17.3719 1.75 16.6076C1.75 16.0303 2.15751 15.5332 2.72363 15.42L4.53932 15.0569Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

11
ui/app/img/sun.svg Normal file
View File

@ -0,0 +1,11 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 16.25C10.4142 16.25 10.75 16.5858 10.75 17V19C10.75 19.4142 10.4142 19.75 10 19.75C9.58579 19.75 9.25 19.4142 9.25 19V17C9.25 16.5858 9.58579 16.25 10 16.25Z" fill="#4360DF"/>
<path d="M0.25 10C0.25 9.58579 0.585786 9.25 1 9.25H3C3.41421 9.25 3.75 9.58579 3.75 10C3.75 10.4142 3.41421 10.75 3 10.75H1C0.585786 10.75 0.25 10.4142 0.25 10Z" fill="#4360DF"/>
<path d="M16.25 10C16.25 9.58579 16.5858 9.25 17 9.25H19C19.4142 9.25 19.75 9.58579 19.75 10C19.75 10.4142 19.4142 10.75 19 10.75H17C16.5858 10.75 16.25 10.4142 16.25 10Z" fill="#4360DF"/>
<path d="M10.75 1C10.75 0.585787 10.4142 0.25 10 0.25C9.58579 0.25 9.25 0.585787 9.25 1V3C9.25 3.41421 9.58579 3.75 10 3.75C10.4142 3.75 10.75 3.41421 10.75 3V1Z" fill="#4360DF"/>
<path d="M4.16656 3.10566C3.87367 2.81276 3.39879 2.81276 3.1059 3.10566C2.81301 3.39855 2.81301 3.87342 3.1059 4.16632L4.52011 5.58053C4.81301 5.87342 5.28788 5.87342 5.58077 5.58053C5.87367 5.28764 5.87367 4.81276 5.58077 4.51987L4.16656 3.10566Z" fill="#4360DF"/>
<path d="M14.4194 14.4194C14.7123 14.1265 15.1871 14.1265 15.48 14.4194L16.8943 15.8336C17.1871 16.1265 17.1871 16.6014 16.8943 16.8943C16.6014 17.1871 16.1265 17.1871 15.8336 16.8943L14.4194 15.48C14.1265 15.1871 14.1265 14.7123 14.4194 14.4194Z" fill="#4360DF"/>
<path d="M16.8941 4.16632C17.187 3.87342 17.187 3.39855 16.8941 3.10566C16.6012 2.81276 16.1263 2.81276 15.8334 3.10566L14.4192 4.51987C14.1263 4.81276 14.1263 5.28764 14.4192 5.58053C14.7121 5.87342 15.187 5.87342 15.4799 5.58053L16.8941 4.16632Z" fill="#4360DF"/>
<path d="M5.58062 14.4194C5.87352 14.7123 5.87352 15.1871 5.58062 15.48L4.16641 16.8943C3.87352 17.1871 3.39864 17.1871 3.10575 16.8943C2.81286 16.6014 2.81286 16.1265 3.10575 15.8336L4.51996 14.4194C4.81286 14.1265 5.28773 14.1265 5.58062 14.4194Z" fill="#4360DF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 6.25C7.92893 6.25 6.25 7.92893 6.25 10C6.25 12.0711 7.92893 13.75 10 13.75C12.0711 13.75 13.75 12.0711 13.75 10C13.75 7.92893 12.0711 6.25 10 6.25ZM7.75 10C7.75 8.75736 8.75736 7.75 10 7.75C11.2426 7.75 12.25 8.75736 12.25 10C12.25 11.2426 11.2426 12.25 10 12.25C8.75736 12.25 7.75 11.2426 7.75 10Z" fill="#4360DF"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -135,7 +135,12 @@ DISTFILES += \
app/AppLayouts/Chat/components/EmojiPopup.qml \
app/AppLayouts/Chat/components/EmojiReaction.qml \
app/AppLayouts/Chat/components/InviteFriendsPopup.qml \
app/AppLayouts/Profile/LeftTab/Constants.js \
app/AppLayouts/Profile/LeftTab/components/MenuButton.qml \
app/AppLayouts/Chat/data/EmojiReactions.qml \
app/AppLayouts/Profile/Sections/AppearanceContainer.qml \
app/AppLayouts/Profile/Sections/MyProfileContainer.qml \
app/AppLayouts/Profile/Sections/SoundsContainer.qml \
app/AppLayouts/Wallet/components/HeaderButton.qml \
app/AppLayouts/Profile/Sections/Data/locales.js \
fonts/InterStatus/InterStatus-Black.otf \

View File

@ -9,6 +9,7 @@ Rectangle {
property int iconWidth: 14
property int iconHeight: 14
property alias icon: imgIcon
property bool clickable: true
id: btnAddContainer
width: 36
@ -69,6 +70,7 @@ Rectangle {
MouseArea {
id: mouseArea
visible: btnAddContainer.clickable
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
cursorShape: Qt.PointingHandCursor
@ -77,4 +79,4 @@ Rectangle {
btnAddContainer.clicked()
}
}
}
}

View File

@ -10,5 +10,4 @@ Image {
width: 0
height: 0
}
}
}

View File

@ -7,38 +7,38 @@ Item {
property string text: "My Text"
property string label: "My Label"
property string fontFamily: Style.current.fontRegular.name
readonly property int labelMargin: 7
property string textToCopy: ""
id: inputBox
height: textItem.height + inputLabel.height + labelMargin
anchors.right: parent.right
anchors.left: parent.left
id: infoText
height: this.childrenRect.height
width: parent.width
StyledText {
id: inputLabel
text: inputBox.label
text: infoText.label
font.weight: Font.Medium
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: parent.top
anchors.topMargin: 0
font.pixelSize: 13
color: Style.current.darkGrey
}
StyledTextEdit {
id: textItem
text: inputBox.text
text: infoText.text
font.family: fontFamily
selectByMouse: true
readOnly: true
font.weight: Font.Medium
anchors.left: parent.left
anchors.leftMargin: 0
anchors.top: inputLabel.bottom
anchors.topMargin: inputBox.labelMargin
anchors.topMargin: 7
font.pixelSize: 15
}
CopyToClipBoardButton {
visible: !!infoText.textToCopy
anchors.verticalCenter: textItem.verticalCenter
anchors.left: textItem.right
anchors.leftMargin: Style.current.smallPadding
textToCopy: infoText.textToCopy
}
}
/*##^##