RetroShare/retroshare-qml-app/src/ContactDetails.qml

152 lines
3.3 KiB
QML
Raw Normal View History

/*
* RetroShare Android QML App
* Copyright (C) 2017 Gioacchino Mazzurco <gio@eigenlab.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.7
import QtQuick.Controls 2.0
import "." //Needed for ClipboardWrapper singleton
import "./components"
import "URI.js" as UriJs
Item
{
id: cntDt
property var md
property bool is_contact: cntDt.md.is_contact
AvatarOrColorHash
{
id: topFace
gxs_id: cntDt.md.gxs_id
anchors.top: parent.top
anchors.topMargin: 6
anchors.horizontalCenter: parent.horizontalCenter
}
Column
{
anchors.top: topFace.bottom
anchors.topMargin: 6
anchors.horizontalCenter: parent.horizontalCenter
spacing: 6
Row
{
height: 50
anchors.horizontalCenter: parent.horizontalCenter
spacing: 6
ColorHash
{
hash: cntDt.md.gxs_id
height: parent.height - 10
anchors.verticalCenter: parent.verticalCenter
}
Text
{
text: cntDt.md.name
anchors.verticalCenter: parent.verticalCenter
}
Image
{
source: cntDt.is_contact ?
"qrc:/icons/rating.svg" :
"qrc:/icons/rating-unrated.svg"
height: parent.height - 4
sourceSize.height: height
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
MouseArea
{
anchors.fill: parent
onClicked:
{
var jDt = JSON.stringify({gxs_id: cntDt.md.gxs_id})
if(cntDt.is_contact)
rsApi.request("/identity/remove_contact", jDt, tgCt)
else rsApi.request("/identity/add_contact", jDt, tgCt)
}
function tgCt() { cntDt.is_contact = !cntDt.is_contact }
}
}
}
Text
{
text: "<pre>"+cntDt.md.gxs_id+"</pre>"
anchors.horizontalCenter: parent.horizontalCenter
}
Text
{
visible: cntDt.md.pgp_linked
text: qsTr("Owned by: %1").arg(cntDt.md.pgp_id)
anchors.horizontalCenter: parent.horizontalCenter
}
}
Row
{
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
spacing: 6
Button
{
text: qsTr("Contact full link")
onClicked:
{
rsApi.request(
"/identity/export_key",
JSON.stringify({ gxs_id: cntDt.md.gxs_id }),
function(par)
{
var jD = JSON.parse(par.response).data
var contactUrl = (
"retroshare://" +
"identity?gxsid=" +
cntDt.md.gxs_id +
"&name=" +
UriJs.URI.encode(cntDt.md.name) +
"&groupdata=" +
UriJs.URI.encode(jD.radix) )
ClipboardWrapper.postToClipBoard(contactUrl)
linkCopiedPopup.itemName = cntDt.md.name
linkCopiedPopup.visible = true
platformGW.shareUrl(contactUrl);
}
)
}
}
Button
{
text: qsTr("Contact short link")
enabled: false
}
}
}