Commit Graph

157 Commits

Author SHA1 Message Date
Gioacchino Mazzurco
db3dad3e23 Local API binary output support + qml image example 2017-05-18 21:57:24 +02:00
Gioacchino Mazzurco
e59366d0fd Qml app: made contact sorting case insensitive 2017-05-17 15:49:26 +02:00
Gioacchino Mazzurco
97a0e00089 Qml Better debugging for token manager 2017-05-17 15:34:29 +02:00
Gioacchino Mazzurco
c1c1d5ddb4 Qml app: fixed unread messages count displaying
Roles in models are not expected to change type, so they must be always
  defined and have the same type
2017-05-17 15:33:10 +02:00
Gioacchino Mazzurco
022c5459d4 Qml app: show contact details when avater clicked 2017-05-13 12:52:45 +02:00
Gioacchino Mazzurco
0b82b73131 Qml app: fixed import/export of plain certificate
Added TimedPopup that is a common use case so it is reusable without
  code duplication
2017-05-13 11:43:31 +02:00
Gioacchino Mazzurco
39646f32f0 qml app removed unused icon 2017-05-08 20:44:15 +02:00
Gioacchino Mazzurco
d0b881f5e0 Added view to show/edit contact details
Split ColorHash.qml in a new file so it is reusable
ContactSort.js preferred contacts goes before non preferred
Contacts.qml use proper id for listview
Contacts.qml removed fingerprint popup
GxsIdentityDelegate.qml simplified, move link generation to ContactDetails.qml
2017-05-08 20:35:15 +02:00
Gioacchino Mazzurco
a19f6a2cbc Some modifications from Android Studio update 2017-05-02 12:21:10 +02:00
Gioacchino Mazzurco
fcca44d1e6 Android qml app play notification sound 2017-05-02 12:20:27 +02:00
Gioacchino Mazzurco
3a3c4691ce Qml app is more aggressive in parsing links
Some app lile t3legram prepend other textxs when a message is copied, so
 if a retroshare link is passed via t3legram and the user do copy/paste
 on retroshare, retroshare get "some text + retroshare link", to avoid
 the link being forgot we parte pasted textx more aggressively
2017-04-20 23:53:45 +02:00
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
Gioacchino Mazzurco
5c1ad36d2b Qml app support contact link import/export 2017-04-20 16:05:15 +02:00
Gioacchino Mazzurco
17edf3c8de Fix compilation and some warnings 2017-04-19 23:46:30 +02:00
Gioacchino Mazzurco
30bb84c4a9 Save persistently that default identity is created
In 943a4213fb default identity creation
  burst has been solved but some times the duplication happens in
  sequent instances of the app, now te app store permanently if default
  identity has been created so this other kind of duplication is avoided
  too (hopefully)
2017-04-19 14:23:29 +02:00
Gioacchino Mazzurco
e83fec8d84 Avoid linking libretroshare in qml app and notify
Use QDir::homePath() instead of RsAccounts::ConfigDirectory() to
  determine libresapi socket path, this way statically linking to
  libretroshare is not needed and the android package size is reduced
  dramatically 20+MB -> 13MB

At same time this solves the socket path mismatch between retroshare
  android  service and the other android applications due to merge
2017-04-18 23:14:44 +02:00
Gioacchino Mazzurco
f04697d61d Qml app is not supposed to stop core on android 2017-04-18 13:30:28 +02:00
Gioacchino Mazzurco
871ea333fc Qml app allow registrer same callback
As I haven't investigated this enough yet, allow it happening but warn
  if it happens while debugging
2017-04-18 13:06:57 +02:00
Gioacchino Mazzurco
943a4213fb Qml app avoid multiple default identity creation burst 2017-04-18 13:05:07 +02:00
Gioacchino Mazzurco
2c4cbd529a Update to QtQuick 2.7
Since we already depends on Qt 5.7 for QtQuick Controls 2 there is no
  point in using older QtQuick version
2017-04-18 11:53:14 +02:00
Gioacchino Mazzurco
a1311c16c8 Use unique name for main
Qt Creator get confused if files with same name are present in the same
  project and when clickng on debug info open the same file, renaming
  main to avoid this
2017-04-18 11:53:14 +02:00
Gioacchino Mazzurco
987b5a1cdc QML app fix: crash closing, notification deadlock
The crash was introduced at 533dbef0c7

This has been particurarly tricky as lot of different parts contributed
  in causing unexpected behaviours

When the activity is created onNewIntent is not called and we have to
  get the intent data from C++ bu other means, but C++ code is running
  in a different thread so there is no guarantee that the intent data is
  reacheable yet on starting, so the C++ code has to wait for the intent
  data being ready, but paying attention to not cause a deadlock beetween
  the two thread (the android ui thread may be waiting for some
  operation performed by Qt)

Because of notification intent flags not properly set the activity was
  recreated also if it was already on top, this caused a nasty
  interaction between android ui thread and qt thread that derived in a
  deadlock, to avoid this lot of try/error has been made until the
  proper soup of manifest and intent flags has been found

At this point link handling, notification handling, and Activity closing
  should work as expected without any deadlock or crash
2017-04-18 11:53:14 +02:00
Gioacchino Mazzurco
d2598dd437 Implemented certificate link handling
Move content of qml directory to parent directory src
Message notification take care of plurar/singular
Fix compilation of service for non-android linux
AddTrustedNode.qml show node details for confirmation before adding
Added TrustedNodeDetails.qml to show nodes details
TrustedNodesView.qml show node details on click
Qml app added minimal infrastructure to delegate link handling
Removed unused icons
2017-04-13 16:47:27 +02:00
Gioacchino Mazzurco
5be6094214 Implement notifications on Android
Notify when there are unread messages
2017-04-12 19:28:48 +02:00
Gioacchino Mazzurco
49b0de6ac7 Abstract API token sys into a singleton component 2017-04-11 18:13:07 +02:00
Gioacchino Mazzurco
533dbef0c7 Implement Android intent handling in qml app
AndroidManifest.xml register activity as an handler for retroshare links
RetroShareQmlActivity...NativeCalls.cpp bring the intent data from java
  to C++ and then to QML
QMl mainWindow uses URI.js to parse the received uri
Create a singleton for qml engine so it is reachable from NativeCalls
2017-04-11 13:11:57 +02:00
Gioacchino Mazzurco
29a3d105c4 LibresapiLocalClient improve error handling 2017-04-10 15:00:14 +02:00
Gioacchino Mazzurco
c3ba5511d8 RsLoginPassView: don't show strong password tip if logging in 2017-04-10 14:54:20 +02:00
Gioacchino Mazzurco
6aa7143a24 Improve AndroidManifest.xml readability 2017-04-10 14:52:36 +02:00
Gioacchino Mazzurco
e06d92e939 Improve QML performances via extract_android_style
The App uses Quick Controls 2 so full style extraction and it's cost
  is not needed
2017-04-10 14:32:02 +02:00
Gioacchino Mazzurco
03ac2ed0a7 Broadcast receiver are now exported as per default
If android:exported is false brodcast receiver can receive intents only
  from the same application, in this case it doesn't make sense as
  BOOT_COMPLETED and MY_PACKAGE_REPLACED are triggered by the system
2017-04-10 13:30:11 +02:00
Gioacchino Mazzurco
bcbd5230eb android notification service stub, improve login
Added retroshare-android-notify-service a stub will handle notifications
  to android system, at the moment it only attempt autologin if default
  password is used
retroshare-android-service quit QCoreApplication gracefully
Android Studio update has changed some android build files
Create BusyOverlay.qml componet so it is reusable accross the qml app
Contacts.qml create a pseudonimous GXS identity as needed without
  prompting the user
RsLoginPassView.qml nicer look, on mobile phone password usage is not
  common so do not use password by default
QML app main view handle correctly +waiting_startup+ runstate
QML app main view use BusyOverlay as initial item
2017-04-07 18:26:08 +02:00
Gioacchino Mazzurco
70e91f7164 Improved login usability
Locations automatically fast forward to login skipping location
  selection if just one location is available
RsLoginPassView nicer look
2017-04-04 02:15:22 +02:00
Gioacchino Mazzurco
8e03fab8da Improve QML app Contacts view performances
Simplified sorting getting rid of complicated DelegateModel
Offload sorting work to another thread via WorkerScript
Get rid of polling and use token system instead
2017-04-03 21:51:03 +02:00
Gioacchino Mazzurco
7d9e89e3d2 ChatView.qml get rid of polling
Autoscroll to last message on update
2017-04-03 21:48:01 +02:00
Gioacchino Mazzurco
2786cec76a TrustedNodesView.qml got rid of polling 2017-04-03 21:35:42 +02:00
Gioacchino Mazzurco
620e5225f2 Support token system in Qml app to reduce polling
Main window keep track centrally of all valid tokens, a Timer coupled
  with it's own instance of LibresapiLocalClient refresh periodically
  valid tokens, registerToken and isTokenValid are offered to child
  components to operate without polling
Main window coreStateCheckTimer is stopped after login
2017-04-03 21:19:14 +02:00
Gioacchino Mazzurco
286783c72e LibresapiLocalClient fix delay on event coalescing
When the server reply to a burst of querys the socket readyRead() signal
  may be called only once, thus causing reply not being parsed until
  next event, and making the query queue grow with time and the user
  interface unusable, to fix this a the end of the read() slot if there
  is more data available in the socket read is called again to parse it
LibresapiLocalClient improved debugging that may be configured per
  instance in case of debug build
2017-04-03 21:09:12 +02:00
Gioacchino Mazzurco
6daa3f4f68 Export QT_DEBUG to QML context 2017-04-03 21:07:33 +02:00
Gioacchino Mazzurco
abe84a4f81 Improve Contacts: sorting, searching and unread
ChatHandler::handleUnreadMsgs(...) deprecate 'id' field
  in favour of 'chat_id'
IdentityHandler::handleWildcard(...) reduce sleep time from 500 to 50 ms
IdentityHandler::handleWildcard(...) expose 'is_contact' to JSON API
Split contacts list delegate into GxsIdentityDelegate.qml
Update to QtQuick.Controls 2.0 because 1.4 is not supported anymore and
  2.1 is not available yet in Qt 5.7.1
ChatView.qml mark messages as read
Set refreshTimer.triggeredOnStart=true to improve reponsiveness of views
Contacts.qml use a Popup that is available in Controls 2.0 instead of a
  castrated Dialog to display full fingerprint
TrustedNodesView.qml check if locations[*].is_online is an array before
  attempting calling reduce
main.qml added menuentry to shutdown de core
main.qml added menuantry to search contact
2017-03-24 12:02:13 +01:00
Gioacchino Mazzurco
34dc1fac37 Improved contact list id displaying
Now a color based representation is showed like an avatar for easier
verification, showing the full id is still possible longpressing the
colored representation
2017-03-21 14:47:34 +01:00
Gioacchino Mazzurco
17a41dc96a Multiple Qml app improvements
LibresapiLocalClient::request(...) return a meaningful value
ChatView.qml uses a TextField for message input
TrustedNodesView.qml improve aestetic
main.qml use stack based navigation and tool/menubar
2017-03-17 17:22:58 +01:00
Gioacchino Mazzurco
5a219b4d10 Update to Qt 5.8.0
Simplified android buinding and updated documentation
Removed a bunch of unused qml files
2017-03-15 23:11:50 +01:00
Gioacchino Mazzurco
1b032e0a4f qml-app: remove deprecated usage of LibresapiLocalClient in ChatView 2016-12-22 13:50:44 +01:00
Gioacchino Mazzurco
2c10e206b8 qml-app: Added button to deny friendship 2016-12-22 13:50:44 +01:00
Gio
6c6b437db1 qml-app: Fix responsiveness of ChatView
ChatHandler::handleMessages(...) tick() before repling so the raw
  message queue is processed
ChatHandler::handleLobbies(...) make sure tick() is called without
  previous mutex locking, putting the critical section inside a block
ChatView.qml remove unnecessary request to statetoken service that
  slowed down processing by half, increased chat message refresh time
  to reduce performance hit
2016-12-10 20:23:30 +01:00
Gio
1fa20e16c2 Added a dialog to create GXS Identities
Now the basic functionaliteis to chat are in place
ATM only pseudonymous identities are supported
Everything is still very buggy
2016-12-08 21:57:26 +01:00
Gio
c3aca0cf26 Implement a working Distant Chat prototype in Qml
Deprecate id field in JSON API as it may cause problems in Qml
Offer gxs_id field in JSON API as an id alternative
LibresapiLocalClient support callbacks now an instance may be shared for
  different tasks
Expose an instance of LibresapiLocalClient to Qml, type exposure is kept
  for retrocompatibility but deprecated
Qml app now has a tab that permit to exchange some message with selected
  distant peer
2016-12-08 15:56:23 +01:00
Gio
10ec1144eb Simplify QML to work better on both Desktop and Phone
- Set request method to GET by default in ApiLocalConnectionHandler to avoid
/peers request fail randomly
- Use TabView instead of SwipeView to not depend on Qt 5.7.0 (latest version)
- AddTrustedNode simplified layout to avoid unexpected behaviour on some phones
- Locations add sslid property to root Item to avoid unexpected behaviour when
multiple locations are available
- TrustedNodesView color connected friends with green and offline with grey
- Ignore kdevelop 4 files
2016-10-26 20:37:28 +02:00
Gio
80f5e3bd74 Add view to list trusted nodes 2016-09-27 14:05:14 +02:00
Gio
148c04e85e Trusted nodes adding now works
First connection happened!
2016-09-22 16:01:46 +02:00
Gio
cf1c49aa3a Advances on trusted node addings
ApiServerLocal trim method/path line to avoid white spaces parsing
ApiServerLocal add support for passing METHOD in request
AddTrustedNode.qml add ability to copy and paste keys
2016-09-22 12:48:08 +02:00
Gio
c12cfd60b8 Implemented login on Retroshare Android QML App
Login works fine but soon after retroshare-android-service crashes
probably when trying to determine local address (getLocalAddresses)
Added RsLoginPassView.qml generic login/pass/button view
retroshare-android-service can be build as a separate app on non-android systems
2016-09-16 12:04:49 +02:00
Gio
8d6d3d1894 Retroshare QML App: Implemesh some basic stuff
Implement location creation, selection and login
Implement people listing
Implement firends adding (not working yet)
Depend on androidextra qt module only if compiling for android
LibresapiLocalClient parse one line at time to avoid error if two
requests are sent rapidly one after another
LibresapiLocalClient socket path now is a parameter of openConnection()
to use it as qml type constructor without parameter must be useful
Added JSONListModel for JASON based MVC pattern
2016-09-15 13:07:13 +02:00
Gio
ad21d7202a Start RetroShare Android Service when needed
RetroShareQmlActivity checks if the service is running, and start it if
not
The service is restarted on package update
Remove non existents qml files from qrc
2016-09-05 02:12:00 +02:00
manu
50fe3dd711 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.
2016-09-04 15:01:44 +02:00
Gio
279551fe8d Retroshare android service now run and start at boot on android, the qml app is still disfunctional 2016-08-23 12:15:28 +02:00