mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-12 19:12:28 -04:00
QML activity interacts with backend.
Test QML activity changed for a simplified version of drbob's rsqml-models. It requests JSON documents from the libresapilocalserver and shows them raw. Updated Android documentation. Moved Android qmake section to the end of libretroshare.pro and openpgpsdk.pro to avoid static linking errors.
This commit is contained in:
parent
47944b30e6
commit
50fe3dd711
29 changed files with 886 additions and 128 deletions
30
retroshare-qml-app/src/qml/AppButton.qml
Normal file
30
retroshare-qml-app/src/qml/AppButton.qml
Normal file
|
@ -0,0 +1,30 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Layouts 1.1
|
||||
import "."
|
||||
|
||||
Rectangle {
|
||||
id: appButton
|
||||
property alias icon: appIcon.source
|
||||
|
||||
signal buttonClicked
|
||||
|
||||
width: parent.height
|
||||
height: parent.height
|
||||
color: "#00000000"
|
||||
|
||||
Image {
|
||||
id: appIcon
|
||||
anchors.centerIn: parent
|
||||
width: 25
|
||||
height: 25
|
||||
}
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
appButton.buttonClicked()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
37
retroshare-qml-app/src/qml/ApplicationBar.qml
Normal file
37
retroshare-qml-app/src/qml/ApplicationBar.qml
Normal file
|
@ -0,0 +1,37 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Layouts 1.1
|
||||
import "."
|
||||
|
||||
Rectangle {
|
||||
id: status
|
||||
anchors.fill: parent
|
||||
color: "#336699" //"#FF7733"
|
||||
height: 50
|
||||
|
||||
default property alias contents: placeholder.children
|
||||
|
||||
RowLayout {
|
||||
id: placeholder
|
||||
spacing: 0
|
||||
width: 200
|
||||
height: parent.height
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
|
||||
}
|
||||
|
||||
ContactBox {
|
||||
|
||||
width: 200
|
||||
height: parent.height
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
|
||||
icon: "icons/contacts-128.png"
|
||||
name: "Vade Retro"
|
||||
status: "Away"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
33
retroshare-qml-app/src/qml/ChannelGroupDelegate.qml
Normal file
33
retroshare-qml-app/src/qml/ChannelGroupDelegate.qml
Normal file
|
@ -0,0 +1,33 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
id: item
|
||||
width: parent.width
|
||||
height: 50
|
||||
|
||||
Column {
|
||||
Text { text: '<b>' + model.GroupName + '</b>' }
|
||||
Text { text: GroupId }
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
item.ListView.view.currentIndex = index
|
||||
channelMsgModel.updateEntries(model.GroupId)
|
||||
console.log("Clicked on Channel GroupId: " + model.GroupId)
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: "#AAAAAA"
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.bottom
|
||||
}
|
||||
}
|
||||
|
||||
|
42
retroshare-qml-app/src/qml/ChannelMsgDelegate.qml
Normal file
42
retroshare-qml-app/src/qml/ChannelMsgDelegate.qml
Normal file
|
@ -0,0 +1,42 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
id: msgDelegate
|
||||
|
||||
width: parent.width
|
||||
height: 150
|
||||
|
||||
Column {
|
||||
Text { text: '<b>MsgId:</b> ' + AuthorId }
|
||||
Text { text: '<b>AuthorId:</b> ' + AuthorId }
|
||||
Row {
|
||||
Text { text: '<b>Name:</b> ' + MsgName }
|
||||
Text { text: ' <b>PublishTs:</b> ' + PublishTs }
|
||||
}
|
||||
Text { text: '<b>Msg:</b> ' + Msg }
|
||||
Row {
|
||||
Text { text: '<b>NumberFiles:</b> ' + NumberFiles }
|
||||
Text { text: ' <b>TotalFileSize:</b> ' + TotalFileSize }
|
||||
}
|
||||
|
||||
Text { text: '<b>FileNames:</b> ' + FileNames }
|
||||
Text { text: '<b>FileSizes:</b> ' + FileSizes }
|
||||
Text { text: '<b>FileHashes:</b> ' + FileHashes }
|
||||
Row {
|
||||
Text { text: '<b>HaveVoted:</b> ' + HaveVoted }
|
||||
Text { text: ' <b>UpVotes:</b> ' + UpVotes }
|
||||
Text { text: ' <b>DownVotes:</b> ' + DownVotes }
|
||||
Text { text: ' <b>Comments:</b> ' + Comments }
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
item.ListView.view.currentIndex = index
|
||||
}
|
||||
}
|
||||
}
|
||||
|
61
retroshare-qml-app/src/qml/ContactBox.qml
Normal file
61
retroshare-qml-app/src/qml/ContactBox.qml
Normal file
|
@ -0,0 +1,61 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
|
||||
property alias icon: contactIcon.source
|
||||
property alias name: contactName.text
|
||||
property alias status: contactStatus.text
|
||||
|
||||
Rectangle {
|
||||
|
||||
anchors.fill: parent
|
||||
color: "#00000000"
|
||||
|
||||
Image {
|
||||
id: contactIcon
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
width: 40
|
||||
height: 40
|
||||
source: "icons/contacts-128.png"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
height: contactIcon.height
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: contactIcon.right
|
||||
color: parent.color
|
||||
|
||||
Text {
|
||||
id: contactName
|
||||
text: "Username"
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
anchors.bottom: contactStatus.top
|
||||
anchors.bottomMargin: 2
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font.pointSize: 14
|
||||
font.bold: false
|
||||
color: "#FFFFFF"
|
||||
}
|
||||
|
||||
Text {
|
||||
id: contactStatus
|
||||
text: "Hello world!"
|
||||
anchors.left: parent.right
|
||||
anchors.leftMargin: 10
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: 1
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font.pointSize: 10
|
||||
font.bold: false
|
||||
color: "#FFFFFF"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
41
retroshare-qml-app/src/qml/ForumMsgDelegate.qml
Normal file
41
retroshare-qml-app/src/qml/ForumMsgDelegate.qml
Normal file
|
@ -0,0 +1,41 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
id: msgDelegate
|
||||
|
||||
width: parent.width
|
||||
height: col.height
|
||||
|
||||
Column {
|
||||
id: col
|
||||
Text { text: '<b>MsgId:</b> ' + AuthorId }
|
||||
Text { text: '<b>AuthorId:</b> ' + AuthorId }
|
||||
Row {
|
||||
Text { text: '<b>Name:</b> ' + MsgName }
|
||||
Text { text: ' <b>PublishTs:</b> ' + PublishTs }
|
||||
}
|
||||
Text {
|
||||
wrapMode: Text.Wrap
|
||||
text: '<b>Msg:</b> ' + Msg
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
item.ListView.view.currentIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 2
|
||||
color: "#AAAAAA"
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.bottom
|
||||
}
|
||||
|
||||
}
|
||||
|
26
retroshare-qml-app/src/qml/GxsGroupDelegate.qml
Normal file
26
retroshare-qml-app/src/qml/GxsGroupDelegate.qml
Normal file
|
@ -0,0 +1,26 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
id: item
|
||||
property var msgModel: {}
|
||||
|
||||
width: parent.width
|
||||
height: 50
|
||||
|
||||
Column {
|
||||
Text { text: '<b>Name:</b> ' + model.GroupName }
|
||||
Text { text: '<b>Number:</b> ' + GroupId }
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
item.ListView.view.currentIndex = index
|
||||
item.msgModel.updateEntries(model.GroupId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
33
retroshare-qml-app/src/qml/GxsIdDelegate.qml
Normal file
33
retroshare-qml-app/src/qml/GxsIdDelegate.qml
Normal file
|
@ -0,0 +1,33 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
id: item
|
||||
width: parent.width
|
||||
height: 50
|
||||
|
||||
Column {
|
||||
Text { text: '<b>' + model.GroupName + '</b>' }
|
||||
Text { text: GroupId }
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
item.ListView.view.currentIndex = index
|
||||
//channelMsgModel.updateEntries(model.GroupId)
|
||||
//console.log("Clicked on Channel GroupId: " + model.GroupId)
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 1
|
||||
color: "#AAAAAA"
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.bottom
|
||||
}
|
||||
}
|
||||
|
||||
|
119
retroshare-qml-app/src/qml/GxsService.qml
Normal file
119
retroshare-qml-app/src/qml/GxsService.qml
Normal file
|
@ -0,0 +1,119 @@
|
|||
import QtQuick 2.2
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Controls 1.1
|
||||
import "."
|
||||
|
||||
|
||||
Item {
|
||||
id: gxsService
|
||||
|
||||
property alias icon: sideIcon.source
|
||||
property alias title: sideTitle.text
|
||||
|
||||
property alias groupDelegate: sideList.delegate
|
||||
property alias groupModel: sideList.model
|
||||
|
||||
property alias msgDelegate: mainList.delegate
|
||||
property alias msgModel: mainList.model
|
||||
|
||||
RowLayout {
|
||||
spacing: 0
|
||||
anchors.fill: parent
|
||||
|
||||
Rectangle {
|
||||
id: sideBar
|
||||
width: 200
|
||||
Layout.fillHeight: true
|
||||
|
||||
Rectangle {
|
||||
id: sideHeader
|
||||
width: parent.width
|
||||
height: 30
|
||||
|
||||
Text {
|
||||
id: sideTitle
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 10
|
||||
width: 20
|
||||
height: 20
|
||||
text: "Service"
|
||||
color: "#333333"
|
||||
}
|
||||
|
||||
Image {
|
||||
id: sideIcon
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 10
|
||||
width: 20
|
||||
height: 20
|
||||
source: "icons/contacts-128.png"
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: sideListBox
|
||||
width: parent.width
|
||||
|
||||
anchors.top: sideHeader.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
ListView {
|
||||
id: sideList
|
||||
anchors.fill: parent
|
||||
|
||||
delegate: GxsGroupDelegate {
|
||||
msgModel: mainList.model
|
||||
}
|
||||
|
||||
// section.
|
||||
section.property: "SubscribeStatus"
|
||||
section.criteria: ViewSection.FullString
|
||||
section.delegate: Rectangle {
|
||||
width: sideListBox.width
|
||||
height: childrenRect.height
|
||||
color: "blue"
|
||||
|
||||
Text {
|
||||
text: section
|
||||
font.bold: true
|
||||
font.pixelSize: 20
|
||||
}
|
||||
}
|
||||
|
||||
clip: true
|
||||
highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
|
||||
focus: true
|
||||
|
||||
onCurrentItemChanged: {
|
||||
console.log("SideBar Item Changed on " + gxsService.title)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
ListView {
|
||||
id: mainList
|
||||
anchors.fill: parent
|
||||
|
||||
clip: true
|
||||
highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
|
||||
focus: true
|
||||
onCurrentItemChanged: {
|
||||
console.log("item changed")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
5
retroshare-qml-app/src/qml/LibresapiLocalClientComm.qml
Normal file
5
retroshare-qml-app/src/qml/LibresapiLocalClientComm.qml
Normal file
|
@ -0,0 +1,5 @@
|
|||
import LibresapiLocalClientQml 1.0
|
||||
|
||||
LibresapiLocalClientComm {
|
||||
id: llc
|
||||
}
|
40
retroshare-qml-app/src/qml/PostedMsgDelegate.qml
Normal file
40
retroshare-qml-app/src/qml/PostedMsgDelegate.qml
Normal file
|
@ -0,0 +1,40 @@
|
|||
import QtQuick 2.2
|
||||
import "."
|
||||
|
||||
Item {
|
||||
id: msgDelegate
|
||||
|
||||
width: parent.width
|
||||
height: 150
|
||||
|
||||
Column {
|
||||
Text { text: '<b>MsgId:</b> ' + AuthorId }
|
||||
Text { text: '<b>AuthorId:</b> ' + AuthorId }
|
||||
Row {
|
||||
Text { text: '<b>Name:</b> ' + MsgName }
|
||||
Text { text: ' <b>PublishTs:</b> ' + PublishTs }
|
||||
}
|
||||
Text { text: '<b>Link:</b> ' + Link }
|
||||
Text { text: '<b>Notes:</b> ' + Notes }
|
||||
Row {
|
||||
Text { text: '<b>Hot:</b> ' + HotScore }
|
||||
Text { text: ' <b>Top:</b> ' + HotScore }
|
||||
Text { text: ' <b>New:</b> ' + HotScore }
|
||||
}
|
||||
Row {
|
||||
Text { text: '<b>HaveVoted:</b> ' + HaveVoted }
|
||||
Text { text: ' <b>UpVotes:</b> ' + UpVotes }
|
||||
Text { text: ' <b>DownVotes:</b> ' + DownVotes }
|
||||
Text { text: ' <b>Comments:</b> ' + Comments }
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: false
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
item.ListView.view.currentIndex = index
|
||||
}
|
||||
}
|
||||
}
|
||||
|
BIN
retroshare-qml-app/src/qml/icons/contacts-128.png
Executable file
BIN
retroshare-qml-app/src/qml/icons/contacts-128.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
BIN
retroshare-qml-app/src/qml/icons/email-128.png
Executable file
BIN
retroshare-qml-app/src/qml/icons/email-128.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
BIN
retroshare-qml-app/src/qml/icons/settings-4-128.png
Executable file
BIN
retroshare-qml-app/src/qml/icons/settings-4-128.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
retroshare-qml-app/src/qml/icons/star-2-128.png
Executable file
BIN
retroshare-qml-app/src/qml/icons/star-2-128.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
160
retroshare-qml-app/src/qml/main.qml
Normal file
160
retroshare-qml-app/src/qml/main.qml
Normal file
|
@ -0,0 +1,160 @@
|
|||
//import QtQuick 2.7 //2.2
|
||||
//import QtQuick.Layouts 1.0 //1.1
|
||||
//import QtQuick.Controls 2.0 //1.1
|
||||
import "."
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Controls 1.1 // millor fer servir 2.0 o més
|
||||
import LibresapiLocalClientQml 1.0
|
||||
|
||||
ApplicationWindow {
|
||||
visible: true
|
||||
width: 640
|
||||
height: 480
|
||||
title: qsTr("RSChat")
|
||||
|
||||
|
||||
/*
|
||||
LibresapiLocalClientComm{
|
||||
id: llc
|
||||
onGoodResponseReceived: gxss.title = msg
|
||||
|
||||
}*/
|
||||
onSceneGraphInitialized: llc.openConnection()
|
||||
|
||||
Rectangle {
|
||||
id: page
|
||||
width: 600; height: 400
|
||||
color: "#336699" // "#FFFFFF"
|
||||
|
||||
Rectangle {
|
||||
id: header
|
||||
width: parent.width
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
height: 50
|
||||
|
||||
ApplicationBar {
|
||||
id: status
|
||||
|
||||
AppButton {
|
||||
icon: "icons/contacts-128.png"
|
||||
onButtonClicked : {
|
||||
tabView.currentIndex = 0
|
||||
}
|
||||
}
|
||||
|
||||
AppButton {
|
||||
icon: "icons/settings-4-128.png"
|
||||
onButtonClicked : {
|
||||
tabView.currentIndex = 1
|
||||
}
|
||||
}
|
||||
|
||||
AppButton {
|
||||
icon: "icons/email-128.png"
|
||||
onButtonClicked : {
|
||||
tabView.currentIndex = 2
|
||||
}
|
||||
}
|
||||
|
||||
AppButton {
|
||||
icon: "icons/star-2-128.png"
|
||||
onButtonClicked : {
|
||||
tabView.currentIndex = 3
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TabView {
|
||||
id: tabView
|
||||
width: parent.width
|
||||
anchors.top: header.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.bottom: parent.bottom
|
||||
tabsVisible: false
|
||||
|
||||
Tab {
|
||||
id: gxsIds
|
||||
//onActiveChanged: llc.request("/identity/", "")
|
||||
|
||||
onVisibleChanged: llc.request("/identity/", "")
|
||||
|
||||
GxsService {
|
||||
id: gxss
|
||||
title: "Friends"
|
||||
// Button {
|
||||
// text: "buto"
|
||||
// anchors.left: gxss.right
|
||||
// onClicked: {
|
||||
// // gxss.title = "provaboba"
|
||||
// // gxss.title = llc.request("/identity/", "")
|
||||
// //llc.request("/identity/", "") // canviar per onVisibleChanged de Tab potser
|
||||
// }
|
||||
|
||||
// }
|
||||
Connections {
|
||||
target: llc
|
||||
onGoodResponseReceived: gxss.title = msg //console.log("Image has changed!")
|
||||
}
|
||||
//groupDelegate: GxsIdDelegate {}
|
||||
//groupModel: gxsIdModel
|
||||
}
|
||||
}
|
||||
|
||||
Tab {
|
||||
id: forum
|
||||
|
||||
GxsService {
|
||||
id: gxssforum
|
||||
title: "Forums"
|
||||
onVisibleChanged: llc.request("/control/locations/", "")
|
||||
Connections {
|
||||
target: llc
|
||||
onGoodResponseReceived: gxssforum.title = msg //console.log("Image has changed!")
|
||||
}
|
||||
// This one uses the default GxsGroupDelegate.
|
||||
// groupModel: forumGroupModel
|
||||
|
||||
// msgDelegate: ForumMsgDelegate {}
|
||||
// msgModel: forumMsgModel
|
||||
}
|
||||
}
|
||||
|
||||
Tab {
|
||||
id: channelLinks
|
||||
GxsService {
|
||||
title: "Channels"
|
||||
|
||||
// custom GroupDelegate.
|
||||
// groupDelegate: ChannelGroupDelegate {}
|
||||
// groupModel: channelGroupModel
|
||||
|
||||
// msgDelegate: ChannelMsgDelegate {}
|
||||
// msgModel: channelMsgModel
|
||||
}
|
||||
}
|
||||
|
||||
Tab {
|
||||
id: postedLinks
|
||||
|
||||
GxsService {
|
||||
title: "Posted"
|
||||
|
||||
// This one uses the default GxsGroupDelegate.
|
||||
// groupModel: postedGroupModel
|
||||
|
||||
// msgDelegate: PostedMsgDelegate {}
|
||||
// msgModel: postedMsgModel
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue