RetroShare/retroshare-qml-app/src/GxsIdentityDelegate.qml
Gioacchino Mazzurco 7b070e482d Qml app improved trusted nodes exchange
AddTrustedNode.qml support for plain certificate and node link import/export
Move clipboard wrapper to it's own singleton ClipboardWrapper.qml with
  improved clipboard API
2017-04-20 21:47:51 +02:00

182 lines
4.1 KiB
QML

/*
* 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 "URI.js" as UriJs
Item
{
height: 40
width: parent.width
MouseArea
{
anchors.fill: parent
onClicked:
{
console.log("Contacts view onclicked:", model.name,
model.gxs_id)
contactsView.searching = false
if(model.own) contactsView.own_gxs_id = model.gxs_id
else
{
var jsonData = { "own_gxs_hex": contactsView.own_gxs_id,
"remote_gxs_hex": model.gxs_id }
rsApi.request("/chat/initiate_distant_chat",
JSON.stringify(jsonData),
contactsView.startChatCallback)
}
}
Rectangle
{
id: colorHash
height: parent.height - 4
width: height
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 2
color: "white"
property int childHeight : height/2
Image
{
source: "qrc:/icons/edit-image-face-detect.png"
anchors.fill: parent
}
Rectangle
{
color: '#' + model.gxs_id.substring(1, 9)
height: parent.childHeight
width: height
anchors.top: parent.top
anchors.left: parent.left
}
Rectangle
{
color: '#' + model.gxs_id.substring(9, 17)
height: parent.childHeight
width: height
anchors.top: parent.top
anchors.right: parent.right
}
Rectangle
{
color: '#' + model.gxs_id.substring(17, 25)
height: parent.childHeight
width: height
anchors.bottom: parent.bottom
anchors.left: parent.left
}
Rectangle
{
color: '#' + model.gxs_id.slice(-8)
height: parent.childHeight
width: height
anchors.bottom: parent.bottom
anchors.right: parent.right
}
MouseArea
{
anchors.fill: parent
onPressAndHold:
{
fingerPrintDialog.nick = model.name
fingerPrintDialog.gxs_id = model.gxs_id
fingerPrintDialog.visible = true
}
}
}
Text
{
id: nickText
color: model.own ? "blue" : "black"
text: model.name
anchors.left: colorHash.right
anchors.leftMargin: 5
anchors.verticalCenter: parent.verticalCenter
}
Row
{
anchors.right: parent.right
anchors.rightMargin: 10
anchors.verticalCenter: parent.verticalCenter
height: parent.height - 10
Image
{
source: "qrc:/icons/document-share.png"
height: parent.height
width: height
MouseArea
{
anchors.fill: parent
onClicked:
{
rsApi.request(
"/identity/export_key",
JSON.stringify({ gxs_id: model.gxs_id }),
function(par)
{
var jD = JSON.parse(par.response).data
ClipboardWrapper.postToClipBoard(
"retroshare://" +
"identity?gxsid=" +
model.gxs_id +
"&name=" +
UriJs.URI.encode(model.name) +
"&groupdata=" +
UriJs.URI.encode(jD.radix))
linkCopiedPopup.itemName = model.name
linkCopiedPopup.visible = true
}
)
}
}
}
Rectangle
{
visible: model.unread_count > 0
color: "cornflowerblue"
antialiasing: true
border.color: "blue"
border.width: 1
height: parent.height
radius: height/2
width: height
Text
{
color: "white"
font.bold: true
text: model.unread_count > 0 ? model.unread_count : ''
anchors.centerIn: parent
}
}
}
}
}