Update to Qt 5.8.0

Simplified android buinding and updated documentation
Removed a bunch of unused qml files
This commit is contained in:
Gioacchino Mazzurco 2017-03-15 23:11:50 +01:00
parent 2630ed4573
commit 5a219b4d10
19 changed files with 81 additions and 665 deletions

View File

@ -3,14 +3,28 @@ Compile Retroshare for Android
== Introduction
Compiling an application for Android is not as easy as one would imagine, expecially one like RetroShare that has a big codebase and is not well documented. This document is aimed to empower the reader so she can hopefully succed or at least have a significant help in compiling her own RetroShare APK package installable on Android.
Compiling an application for Android is not as easy as one would imagine,
expecially one like RetroShare that has a big codebase and is not well
documented.
This document is aimed to empower the reader so she can hopefully succed or at
least have a significant help in compiling her own RetroShare APK package
installable on Android.
== Preparing The Environement
First of all setup your Qt for Android development environement following the guide on the link:http://doc.qt.io/qt-5/androidgs.html[Qt for android web site].
At this point you should have Android SDK, Android NDK, and Qt for Android working fine, and you should be capable of executing on an Android emulator or on your Android phone Qt for Android examples.
First of all setup your Qt for Android development environement following the
guide on the link:http://doc.qt.io/qt-5/androidgs.html[Qt for android web site].
At this point you should have Android SDK, Android NDK, and Qt for Android
working fine, and you should be capable of executing on an Android emulator or
on your Android phone Qt for Android examples.
But RetroShare is not as simple to compile as those examples. In particular, the Android NDK precompiled toolchain is limited and doesn't support the full C++ specification, and it is missing some part that is needed to build RetroShare. The good news is that Android NDK ships all the necessary to build a custom toolchain that is suitable to build RetroShare. In order to build the toolchain with needed library RetroShare provides the +android-prepare-toolchain.sh+ script; before you execute it you should define some variables the script cannot determine in an easy and reliable manner by itself in your terminal.
But RetroShare is not as simple to compile as those examples. The good news is
that Android NDK ships all the necessary to build a custom toolchain that is
suitable to build RetroShare.
In order to build the toolchain with needed library RetroShare provides the
+android-prepare-toolchain.sh+ script; before you execute it you should define
some variables the script cannot determine in an easy and reliable manner by
itself in your terminal.
[source,bash]
-------------------------------------------------------------------------------
@ -27,56 +41,56 @@ export ANDROID_NDK_ARCH="arm"
## The Android API level the Android device you want to target
export ANDROID_PLATFORM_VER="19"
## The number of core that yout host CPU have (just to speed up compilation) set it to 1 if unsure
## The number of core that yout host CPU have (just to speed up compilation) set
## it to 1 if unsure
export HOST_NUM_CPU=1
./android-prepare-toolchain.sh
-------------------------------------------------------------------------------
Now is time for the bad news: as of today Qt assumes you use the NDK precompiled toolchain and doesn't have an option to use the custom toolchain you just generated, so you need to tweak Qt internals a little to make usage of the custom toolchain. First of all you need to determine your Qt for Android installation path -in my case it is +/opt/Qt5.7.0/+ - then find the +mkspecs+ directory -in my case it is +/opt/Qt5.7.0/5.7/android_armv7/mkspecs+ - and then modify qmake configuration for the android target according to your toolchain, in my case I have done it with the following commands (in the same shell I used before, to take advantage of the already set variables):
WARNING: This may need a slight modification if you have a different Qt version.
[source,bash]
-------------------------------------------------------------------------------
export QT_PATH="/opt/Qt5.7.0/"
export QT_MAJOR_VERSION="5.7"
cd ${QT_PATH}/${QT_MAJOR_VERSION}/android_armv7/mkspecs
sudo --preserve-env -s
cp -r android-g++ android-g++-backup
cd android-g++
sed -i "s|^NDK_TOOLCHAIN_PATH =.*|NDK_TOOLCHAIN_PATH = ${NDK_TOOLCHAIN_PATH}|" qmake.conf
-------------------------------------------------------------------------------
== Preparing Qt Creator
Now that your environement is set up you should configure Qt Creator for Android following the link:http://doc.qt.io/qtcreator/creator-developing-android.html[official guide]. At the end of this step your Qt Creator should recognize the Android compiler and the Qt for Android kit. As we use a custom toolchain one more step is needed.
Now that your environement is set up you should configure Qt Creator for Android
following the
link:http://doc.qt.io/qtcreator/creator-developing-android.html[official guide].
At the end of this step your Qt Creator should recognize the Android compiler
and the Qt for Android kit.
From the top menu click
_Tools -> Options... -> Build & Run -> Compilers -> Android GCC (arm-4.9) -> Clone_
Your Kit is now ready to use. Now you can open RetroShare as a Qt Creator
project and in the Projects left menu add the newly created kit if not already
present, so you can select it on the build type selection button down on the
left.
Now a new compiler (usually named +Clone of Android GCC (arm-4.9)+) should have appeared on your compilers list. Select that compiler and press the Browse button to look for your custom toolchain compiler. You should find it at +$NDK_TOOLCHAIN_PATH/bin/arm-linux-androideabi-gcc+. Select it, then press Apply.
As we use a custom toolchain one more step is needed +
Now go to the Kits tab, select +Android for armeabi-v7a (GCC 4.9, Qt 5.7.0)+ and press the Clone button. A new kit is created (usually named +Clone of Android for armeabi-v7a (GCC 4.9, Qt 5.7.0)+). Now select the new kit and change the compiler to the one you have just created.
_Qt Creator left pane -> Projects -> Build and Run -> Android SOMESTUFF kit ->
Build Environement -> Add
Your Kit is now ready to use. Now you can open RetroShare as a Qt Creator project and in the Projects left menu add the newly created kit if not already present, so you can select it on the build type selection button down on the left.
Variable: +NATIVE_LIBS_TOOLCHAIN_PATH+
Value: +Same value as NDK_TOOLCHAIN_PATH in Preparing The Environement step+
Some of RetroShare modules like +retroshare-gui+, +WebUI+ and +sqlcipher+ are not supported yet on Android so to be able to compile RetroShare without errors you will have to go to +
Some of RetroShare modules like +retroshare-gui+ and +WebUI+ are not available
on Android so to be able to compile RetroShare without errors you will have to
go to +
_Qt Creator left pane -> Projects -> Build and Run -> Android SOMESTUFF kit -> Build Steps -> qmake -> Additional arguments_
_Qt Creator left pane -> Projects -> Build and Run -> Android SOMESTUFF kit ->
Build Steps -> qmake -> Additional arguments_
and add the following configurations
[source,makefile]
-------------------------------------------------------------------------------
CONFIG+=no_retroshare_gui CONFIG+=no_retroshare_nogui CONFIG+=no_retroshare_plugins CONFIG+=retroshare_android_service CONFIG+=libresapilocalserver CONFIG+=no_libresapihttpserver CONFIG+=no_sqlcipher CONFIG+=retroshare_qml_app
CONFIG+=no_retroshare_gui CONFIG+=no_retroshare_nogui CONFIG+=no_retroshare_plugins CONFIG+=retroshare_android_service CONFIG+=libresapilocalserver CONFIG+=no_libresapihttpserver CONFIG+=retroshare_qml_app
-------------------------------------------------------------------------------
WARNING: SQLCipher is not supported yet on RetroShare for Android. This poses a major security concern, we are working to fix this ASAP.
WARNING: SQLCipher is not supported yet on RetroShare for Android. This poses a
major security concern, we are working to fix this ASAP.
WARNING: Some versions of QtCreator try to find the Android SDK in +/opt/android/sdk+. A workaround to this is to make a symbolic link there pointing to your SDK installation path, like +mkdir -p /opt/android/sdk && ln -s /home/user/android-sdk-linux /opt/android/sdk+
WARNING: Some versions of QtCreator try to find the Android SDK in
+/opt/android/sdk+. A workaround to this is to make a symbolic link there
pointing to your SDK installation path, like
+mkdir -p /opt/android/sdk && ln -s /home/user/android-sdk-linux
/opt/android/sdk+
== Quircks

View File

@ -906,15 +906,15 @@ android-g++ {
## Add this here and not in retroshare.pri because static library are very
## sensible to order in command line, has to be in the end of file for the
## same reason
LIBS += -L$$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/ -lssl
INCLUDEPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/libssl.a
LIBS += -L$$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/ -lssl
INCLUDEPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/libssl.a
LIBS += -L$$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/ -lcrypto
INCLUDEPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/libcrypto.a
LIBS += -L$$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/ -lcrypto
INCLUDEPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/libcrypto.a
HEADERS += util/androiddebug.h
}

View File

@ -126,14 +126,14 @@ android-g++ {
## Add this here and not in retroshare.pri because static library are very
## sensible to order in command line
LIBS += -L$$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/ -lssl
INCLUDEPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/libssl.a
LIBS += -L$$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/ -lssl
INCLUDEPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/libssl.a
LIBS += -L$$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/ -lcrypto
INCLUDEPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/libcrypto.a
LIBS += -L$$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/ -lcrypto
INCLUDEPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
DEPENDPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
PRE_TARGETDEPS += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/libcrypto.a
}

View File

@ -4,6 +4,6 @@
# as it contains information specific to your local configuration.
androidBuildToolsVersion=24.0.1
androidCompileSdkVersion=18
androidCompileSdkVersion=23
buildDir=.build
qt5AndroidDir=/opt/Qt5.7.0/5.7/android_armv7/src/android/java
qt5AndroidDir=/opt/Qt5.8.0/5.8/android_armv7/src/android/java

View File

@ -5,16 +5,6 @@
<file>qml/icons/settings-4-128.png</file>
<file>qml/icons/email-128.png</file>
<file>qml/icons/contacts-128.png</file>
<file>qml/PostedMsgDelegate.qml</file>
<file>qml/GxsService.qml</file>
<file>qml/GxsIdDelegate.qml</file>
<file>qml/GxsGroupDelegate.qml</file>
<file>qml/ForumMsgDelegate.qml</file>
<file>qml/ContactBox.qml</file>
<file>qml/ChannelMsgDelegate.qml</file>
<file>qml/ChannelGroupDelegate.qml</file>
<file>qml/ApplicationBar.qml</file>
<file>qml/AppButton.qml</file>
<file>qml/Locations.qml</file>
<file>qml/jsonpath.js</file>
<file>qml/JSONListModel.qml</file>

View File

@ -1,30 +0,0 @@
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()
}
}
}

View File

@ -1,37 +0,0 @@
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"
}
}

View File

@ -1,33 +0,0 @@
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
}
}

View File

@ -1,42 +0,0 @@
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
}
}
}

View File

@ -7,7 +7,11 @@ Item
id: chatView
property string chatId
function refreshData() { rsApi.request("/chat/messages/"+ chatId, "", function(par) { chatModel.json = par.response }) }
function refreshData()
{
rsApi.request( "/chat/messages/"+ chatId, "",
function(par) { chatModel.json = par.response } )
}
onFocusChanged: focus && refreshData()
@ -66,7 +70,8 @@ Item
onClicked:
{
var jsonData = {"chat_id":chatView.chatId, "msg":msgComposer.text}
rsApi.request("/chat/send_message", JSON.stringify(jsonData), function(par) { msgComposer.text = ""; console.log(msg) })
rsApi.request( "/chat/send_message", JSON.stringify(jsonData),
function(par) { msgComposer.text = ""; } )
}
}

View File

@ -1,61 +0,0 @@
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"
}
}
}
}

View File

@ -1,41 +0,0 @@
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
}
}

View File

@ -1,26 +0,0 @@
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)
}
}
}

View File

@ -1,33 +0,0 @@
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
}
}

View File

@ -1,119 +0,0 @@
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")
}
}
}
}
}

View File

@ -69,7 +69,8 @@ Item
{
locationView.password = password
console.log("locationView.sslid: ", locationView.sslid)
rsApi.request("/control/login/", JSON.stringify({id: locationView.sslid}))
rsApi.request( "/control/login/",
JSON.stringify({id: locationView.sslid}) )
locationView.attemptLogin = true
busyIndicator.running = true
attemptTimer.start()
@ -111,7 +112,8 @@ Item
{
// if Server requested password
var jsonPass = { password: locationView.password }
rsApi.request("/control/password/", JSON.stringify(jsonPass))
rsApi.request( "/control/password/",
JSON.stringify(jsonPass) )
locationView.attemptLogin = false
console.debug("RS core asked for password")
}

View File

@ -1,40 +0,0 @@
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
}
}
}

View File

@ -114,140 +114,4 @@ ApplicationWindow
}
}
}
/*
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
}
}
}
}
*/
}

View File

@ -83,16 +83,19 @@ unix {
}
android-g++ {
isEmpty(NATIVE_LIBS_TOOLCHAIN_PATH) {
NATIVE_LIBS_TOOLCHAIN_PATH = $$(NATIVE_LIBS_TOOLCHAIN_PATH)
}
CONFIG *= no_libresapihttpserver no_sqlcipher upnp_libupnp
CONFIG -= libresapihttpserver sqlcipher upnp_miniupnpc
QT *= androidextras
DEFINES *= "fopen64=fopen"
DEFINES *= "fseeko64=fseeko"
DEFINES *= "ftello64=ftello"
INCLUDEPATH += $$NDK_TOOLCHAIN_PATH/sysroot/usr/include
INCLUDEPATH += $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/include
LIBS *= -L$$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/
LIBS *= -lbz2 -lupnp -lixml -lthreadutil -lsqlite3
ANDROID_EXTRA_LIBS *= $$NDK_TOOLCHAIN_PATH/sysroot/usr/lib/libsqlite3.so
ANDROID_EXTRA_LIBS *= $$NATIVE_LIBS_TOOLCHAIN_PATH/sysroot/usr/lib/libsqlite3.so
# message(LIBS: $$LIBS)
# message(ANDROID_EXTRA_LIBS: $$ANDROID_EXTRA_LIBS)
# message(ANDROID_PLATFORM: $$ANDROID_PLATFORM)