Compare commits
15 commits
Author | SHA1 | Date | |
---|---|---|---|
a2cea6464c | |||
3703c116aa | |||
0dc0ce7f35 | |||
b59513ab91 | |||
ec102d8d66 | |||
8391b028f4 | |||
3c1c97d489 | |||
2debd8f2ab | |||
17f25d6809 | |||
59fe1ea0df | |||
LubuWest | d43c18bb76 | ||
e58a1f69dc | |||
dfa4a2141b | |||
LubuWest | 48a70b8395 | ||
LubuWest | 5f8edccdfe |
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
CMakeLists.txt.user*
|
||||||
|
friendiqa.pro.user*
|
||||||
|
IJPSvd.json
|
11
BackgroundSync.patch
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- src/common/alarmlinux.cpp
|
||||||
|
+++ src/common/alarmlinux.cpp
|
||||||
|
@@ -67,7 +67,7 @@
|
||||||
|
stream << "Description=Run friendiqa background sync" << Qt::endl << Qt::endl;
|
||||||
|
stream << "[Service]" << Qt::endl;
|
||||||
|
stream << "Type=oneshot" << Qt::endl;
|
||||||
|
- stream << "ExecStart=/usr/bin/friendiqa -service" << Qt::endl;
|
||||||
|
+ stream << "ExecStart=flatpak run de.manic.friendiqa -service" << Qt::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString nameTimer ="friendiqa-sync.timer";
|
20
CHANGELOG.md
|
@ -1,3 +1,22 @@
|
||||||
|
## v0.6.9
|
||||||
|
|
||||||
|
* Separate window for new messages with more formatting options
|
||||||
|
* Replaced all Fontawesome icons with system icons
|
||||||
|
* Switch between OAuth2 and Basic Auth
|
||||||
|
* Background sync with systemd-timer and removal of system tray
|
||||||
|
|
||||||
|
## v0.6.8
|
||||||
|
|
||||||
|
* OAuth2 as signup method
|
||||||
|
* New translation: Dutch
|
||||||
|
|
||||||
|
## v0.6.7
|
||||||
|
|
||||||
|
* Upload multiple images for post and add image descriptions
|
||||||
|
* Block user
|
||||||
|
* Report user
|
||||||
|
* Create Calendar entry from post text
|
||||||
|
|
||||||
## v0.6.6
|
## v0.6.6
|
||||||
|
|
||||||
* Create event
|
* Create event
|
||||||
|
@ -20,7 +39,6 @@
|
||||||
* Removed permissions for new messages due to buggy Contacts API
|
* Removed permissions for new messages due to buggy Contacts API
|
||||||
* Sync all accounts in background (not only active)
|
* Sync all accounts in background (not only active)
|
||||||
|
|
||||||
|
|
||||||
## v0.6.3
|
## v0.6.3
|
||||||
|
|
||||||
* Dark theme
|
* Dark theme
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- source-linux/common/filesystem.cpp
|
--- source-linux/common/filesystem.cpp
|
||||||
+++ source-linux/common/filesystem.cpp
|
+++ source-linux/common/filesystem.cpp
|
||||||
@@ -178,7 +178,7 @@
|
@@ -165,7 +165,7 @@
|
||||||
QTextStream stream(&file);
|
QTextStream stream(&file);
|
||||||
stream << "[Desktop Entry]" << Qt::endl;
|
stream << "[Desktop Entry]" << Qt::endl;
|
||||||
stream << "Name=Friendiqa" << Qt::endl;
|
stream << "Name=Friendiqa" << Qt::endl;
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
--- source-linux/qml/friendiqa.qml
|
|
||||||
+++ source-linux/qml/friendiqa.qml
|
|
||||||
@@ -191,7 +191,7 @@
|
|
||||||
color: Material.backgroundColor
|
|
||||||
}
|
|
||||||
|
|
||||||
- header: ToolBar{
|
|
||||||
+ footer: ToolBar{
|
|
||||||
background: Rectangle{
|
|
||||||
anchors.fill: parent
|
|
||||||
color: Material.backgroundDimColor
|
|
|
@ -5,5 +5,4 @@ You have probably selected Friendica as your preferred social network because yo
|
||||||
|
|
||||||
Storing some pieces of user data on the device is necessary for some app features, other apps on your device may not access this data (keeping app’s own database storage protected from other apps is guaranteed by Android). The app has been programmed so that stored information contain any personal data (only login data and id number of last seen post will be transferred to servers). Photos from the albums and contact images are stored in a public directory on the device. Other apps may access these files and the Friendiqa needs access to this directory.
|
Storing some pieces of user data on the device is necessary for some app features, other apps on your device may not access this data (keeping app’s own database storage protected from other apps is guaranteed by Android). The app has been programmed so that stored information contain any personal data (only login data and id number of last seen post will be transferred to servers). Photos from the albums and contact images are stored in a public directory on the device. Other apps may access these files and the Friendiqa needs access to this directory.
|
||||||
To send images from the Android gallery the app needs access to picture databases on the device.
|
To send images from the Android gallery the app needs access to picture databases on the device.
|
||||||
This app don’t collect any usage statistics. In addition, no information is sent from your Smartphone to me as a developer or to a website associated with me.
|
This app doesn’t collect any usage statistics. In addition, no information is sent from your smartphone to me as a developer or to a website associated with me.
|
||||||
On first start, the website https://dir.friendica.social/servers/surprise is contacted and the selected server shown in the app.
|
|
||||||
|
|
23
README.md
|
@ -30,15 +30,14 @@ Currently supported:
|
||||||
* Attending for event posts
|
* Attending for event posts
|
||||||
* Update fetches new posts (up to last 50) since last in local DB
|
* Update fetches new posts (up to last 50) since last in local DB
|
||||||
* More shows older posts from local DB
|
* More shows older posts from local DB
|
||||||
* Create new Message with images or direct messages,smileys
|
* Create new Message with images or direct messages, smileys in new window
|
||||||
* Send image from Android gallery
|
* Send image(s) from Android gallery
|
||||||
* Send text or urls from other apps to Friendiqa
|
* Send text or urls from other apps to Friendiqa
|
||||||
* Native Android image dialog
|
* Native Android image dialog
|
||||||
|
|
||||||
ToDo:
|
ToDo:
|
||||||
|
|
||||||
* Videos and other binary data as attachment (sending, not supported in API)
|
* Videos and other binary data as attachment (sending, not supported in API)
|
||||||
* More than one attachment
|
|
||||||
* Attachments for Direct messages (currently not supported in API)
|
* Attachments for Direct messages (currently not supported in API)
|
||||||
|
|
||||||
# Friends
|
# Friends
|
||||||
|
@ -48,7 +47,7 @@ Currently supported:
|
||||||
* Tabs for own profiles, friends, other contacts and groups
|
* Tabs for own profiles, friends, other contacts and groups
|
||||||
* Show profile(s) of user and change profile picture
|
* Show profile(s) of user and change profile picture
|
||||||
* List of all known contacts with locally downloaded pictures
|
* List of all known contacts with locally downloaded pictures
|
||||||
* Follow or unfollow contacts
|
* Follow/unfollow or block/unblock contacts
|
||||||
* Search for new contacts according to topic
|
* Search for new contacts according to topic
|
||||||
* Show follow requests; approve, deny, ignore requests
|
* Show follow requests; approve, deny, ignore requests
|
||||||
* Additional information, last messages and other functionality shown in news tab
|
* Additional information, last messages and other functionality shown in news tab
|
||||||
|
@ -92,7 +91,7 @@ Currently supported:
|
||||||
|
|
||||||
ToDo
|
ToDo
|
||||||
|
|
||||||
* Create events (needs API)
|
* Show more details and attendance of events (needs API)
|
||||||
|
|
||||||
# Config/Accounts
|
# Config/Accounts
|
||||||
|
|
||||||
|
@ -102,17 +101,14 @@ Currently supported:
|
||||||
* Dark Mode
|
* Dark Mode
|
||||||
* View mode for news (conversation tree or timeline)
|
* View mode for news (conversation tree or timeline)
|
||||||
* Maximum news (deleted after use of Quit button)
|
* Maximum news (deleted after use of Quit button)
|
||||||
|
* Set default news tabs
|
||||||
* Sync home timeline, replies, DM, Events, friend requests; Notify yes/no
|
* Sync home timeline, replies, DM, Events, friend requests; Notify yes/no
|
||||||
* Hide #nsfw
|
* Hide #nsfw
|
||||||
|
* OAuth2 as authorization method
|
||||||
ToDo
|
|
||||||
|
|
||||||
* OAuth?
|
|
||||||
|
|
||||||
# Other
|
# Other
|
||||||
|
|
||||||
* on Linux: App stays in systemtray and syncs in background
|
* on Linux: syncs in background via systemd-timer
|
||||||
* Autostart minimized in systray possible
|
|
||||||
|
|
||||||
ToDo
|
ToDo
|
||||||
|
|
||||||
|
@ -122,8 +118,8 @@ ToDo
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
|
|
||||||
* German, Spanish, Italian, Hungarian
|
* German, Spanish, Italian, Hungarian, Dutch
|
||||||
* To contribute translations: Have a look at linux-sources/translations/friendiqa-de.ts and open it with an editor. It's an xml file. Change values and send me the file to thomasschmidt45 at gmx.net / do pull request.
|
* To contribute translations: <https://translate.codeberg.org/projects/friendiqa/friendiqa/>
|
||||||
|
|
||||||
# Install
|
# Install
|
||||||
|
|
||||||
|
@ -131,6 +127,7 @@ ToDo
|
||||||
* [Google Playstore](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa)
|
* [Google Playstore](https://play.google.com/store/apps/details?id=org.qtproject.friendiqa)
|
||||||
* Arch User Repository: <https://aur.archlinux.org/packages/friendiqa/>
|
* Arch User Repository: <https://aur.archlinux.org/packages/friendiqa/>
|
||||||
* Flatpak: <https://friendiqa.ma-nic.de/friendiqa.flatpakref>
|
* Flatpak: <https://friendiqa.ma-nic.de/friendiqa.flatpakref>
|
||||||
|
* Flatpak for Mobile Linux: <https://friendiqa.ma-nic.de/friendiqaMobile.flatpakref>
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
96
source-android/CMakeLists.txt
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
# TEMPLATE = app
|
||||||
|
# TARGET = friendiqa
|
||||||
|
# CONFIG += release
|
||||||
|
# QT += qml quick gui widgets sql webview dbus webengine
|
||||||
|
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.1.0)
|
||||||
|
|
||||||
|
project(friendiqa VERSION 0.6 LANGUAGES CXX)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
|
||||||
|
if(CMAKE_VERSION VERSION_LESS "3.7.0")
|
||||||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(Qt5 COMPONENTS Widgets Quick Sql DBus WebView REQUIRED)
|
||||||
|
|
||||||
|
#Webview Webengine
|
||||||
|
|
||||||
|
set(MOC_SOURCES common/uploadableimage.h
|
||||||
|
common/xhr.h
|
||||||
|
common/filesystem.h
|
||||||
|
common/remoteauthasyncimageprovider.h
|
||||||
|
common/updatenews.h
|
||||||
|
common/alarm.h)
|
||||||
|
|
||||||
|
set(SOURCES common/friendiqa.cpp
|
||||||
|
common/uploadableimage.cpp
|
||||||
|
common/xhr.cpp
|
||||||
|
common/filesystem.cpp
|
||||||
|
common/remoteauthasyncimageprovider.cpp
|
||||||
|
common/updatenews.cpp
|
||||||
|
common/alarmandroid.cpp)
|
||||||
|
|
||||||
|
include_directories(common)
|
||||||
|
|
||||||
|
add_executable(friendiqa ${SOURCES} ${MOC_SOURCES} application.qrc)
|
||||||
|
|
||||||
|
target_link_libraries(friendiqa Qt::Core)
|
||||||
|
target_link_libraries(friendiqa Qt::Widgets)
|
||||||
|
target_link_libraries(friendiqa Qt::Quick)
|
||||||
|
target_link_libraries(friendiqa Qt::Sql)
|
||||||
|
target_link_libraries(friendiqa Qt::WebView)
|
||||||
|
target_link_libraries(friendiqa Qt::DBus)
|
||||||
|
# target_link_libraries(friendiqa Qt::Webengine)
|
||||||
|
|
||||||
|
# qt5_use_modules(friendiqa Core Widgets Quick Sql DBus)
|
||||||
|
|
||||||
|
install(TARGETS friendiqa DESTINATION bin)
|
||||||
|
|
||||||
|
#RESOURCES = application.qrc
|
||||||
|
|
||||||
|
# OTHER_FILES += qml/friendiqa.qml \
|
||||||
|
# translations/*.ts \
|
||||||
|
# qml/*.qml
|
||||||
|
# qml/newsqml/*.qml
|
||||||
|
# qml/contactqml/*.qml
|
||||||
|
# qml/photoqml/*.qml
|
||||||
|
# qml/configqml/*.qml
|
||||||
|
# js/*.js
|
||||||
|
|
||||||
|
#TRANSLATIONS += translations/friendiqa-de.ts \
|
||||||
|
# translations/friendiqa-es.ts \
|
||||||
|
# translations/friendiqa-it.ts
|
||||||
|
# HEADERS += \
|
||||||
|
# common/uploadableimage.h \
|
||||||
|
# common/xhr.h \
|
||||||
|
# common/filesystem.h \
|
||||||
|
# common/remoteauthasyncimageprovider.h \
|
||||||
|
# common/updatenews.h \
|
||||||
|
# common/alarm.h
|
||||||
|
|
||||||
|
#DISTFILES += \
|
||||||
|
# qml/calendarqml/*.qml \
|
||||||
|
# translations/*.ts \
|
||||||
|
# translations/*.qm \
|
||||||
|
# qml/*.qml \
|
||||||
|
# qml/newsqml/*.qml \
|
||||||
|
# qml/contactqml/*.qml \
|
||||||
|
# qml/photoqml/*.qml \
|
||||||
|
# qml/configqml/*.qml \
|
||||||
|
# js/*.js \
|
||||||
|
|
||||||
|
|
||||||
|
# target.path=/usr/bin
|
||||||
|
# desktop.path = /usr/share/applications
|
||||||
|
# desktop.files = images/de.ma-nic.Friendiqa.desktop
|
||||||
|
# icon.path = /usr/share/icons/hicolor/scalable/apps
|
||||||
|
# icon.files = images/Friendiqa.svg
|
||||||
|
# INSTALLS+=target desktop icon
|
|
@ -1,14 +1,6 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<manifest package="org.qtproject.friendiqa" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="0.6.6" android:versionCode="32" android:installLocation="auto">
|
<manifest package="org.qtproject.friendiqa" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="0.6.8" android:versionCode="34" android:installLocation="auto">
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30"/>
|
<!--<uses-sdk android:minSdkVersion="24" android:targetSdkVersion="33"/> -->
|
||||||
|
|
||||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
|
||||||
Remove the comment if you do not require these default permissions. -->
|
|
||||||
<!-- %%INSERT_PERMISSIONS -->
|
|
||||||
|
|
||||||
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
|
|
||||||
Remove the comment if you do not require these default features. -->
|
|
||||||
<!-- %%INSERT_FEATURES android:requestLegacyExternalStorage="true" -->
|
|
||||||
|
|
||||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||||
|
|
||||||
|
@ -22,7 +14,7 @@
|
||||||
android:logo="@drawable/friendiqa">
|
android:logo="@drawable/friendiqa">
|
||||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
|
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
|
||||||
android:name="androidnative.friendiqa.FriendiqaActivity"
|
android:name="androidnative.friendiqa.FriendiqaActivity"
|
||||||
android:label="Friendiqa" android:screenOrientation="unspecified" android:launchMode="singleTask" android:taskAffinity="">
|
android:label="Friendiqa" android:screenOrientation="unspecified" android:launchMode="singleTask" android:taskAffinity="" android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
|
@ -96,7 +88,7 @@
|
||||||
* minimal - useful for Quick Controls 2 apps, it is much faster than "full"
|
* minimal - useful for Quick Controls 2 apps, it is much faster than "full"
|
||||||
* none - useful for apps that don't use any of the above Qt modules
|
* none - useful for apps that don't use any of the above Qt modules
|
||||||
-->
|
-->
|
||||||
<meta-data android:name="android.app.extract_android_style" android:value="default"/>
|
<meta-data android:name="android.app.extract_android_style" android:value="minimal"/>
|
||||||
<!-- extract android style -->
|
<!-- extract android style -->
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
@ -138,4 +130,11 @@
|
||||||
</application>
|
</application>
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -6,7 +6,7 @@ buildscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.5.2'
|
classpath "com.android.tools.build:gradle:4.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ dependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile 'androidx.appcompat:appcompat:1.1.0'
|
compile 'androidx.appcompat:appcompat:1.4.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
@ -44,8 +44,14 @@ android {
|
||||||
|
|
||||||
compileSdkVersion androidCompileSdkVersion.toInteger()
|
compileSdkVersion androidCompileSdkVersion.toInteger()
|
||||||
|
|
||||||
buildToolsVersion '28.0.3'
|
buildToolsVersion '31.0.0'
|
||||||
|
compileSdkVersion 33
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdkVersion 26
|
||||||
|
targetSdkVersion 31
|
||||||
|
resConfigs "en"
|
||||||
|
}
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main {
|
main {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
|
@ -67,10 +73,6 @@ android {
|
||||||
aaptOptions {
|
aaptOptions {
|
||||||
noCompress 'rcc'
|
noCompress 'rcc'
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
resConfigs "en"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
apply from: "androidnative.gradle"
|
apply from: "androidnative.gradle"
|
||||||
setAndroidNativePath("/../androidnative.pri");
|
setAndroidNativePath("/../androidnative.pri");
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
# androidBuildToolsVersion=25.0.3
|
|
||||||
# androidCompileSdkVersion=26
|
|
||||||
buildDir=.build
|
buildDir=.build
|
||||||
# qt5AndroidDir=/home/pankraz/Qt/5.11.1/android_armv7/src/android/java
|
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
android.enforceUniquePackageName=false
|
android.enforceUniquePackageName=false
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
|
@ -10,15 +10,15 @@ import org.qtproject.qt5.android.QtNative;
|
||||||
//import androidnative.friendiqa.FriendiqaQtService;
|
//import androidnative.friendiqa.FriendiqaQtService;
|
||||||
|
|
||||||
public class FriendiqaService extends JobService{
|
public class FriendiqaService extends JobService{
|
||||||
private static String TAG = "AndroidNative";
|
private static String TAG = "FriendiqaService";
|
||||||
//Log.e(TAG,"Service");
|
//Log.e(TAG,"Service");
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onStartJob(JobParameters params) {
|
public boolean onStartJob(JobParameters params) {
|
||||||
//Log.d(TAG,"Friendiqa JobService");
|
Log.d(TAG,"Friendiqa JobService");
|
||||||
Context context = this.getApplicationContext();
|
Context context = this.getApplicationContext();
|
||||||
AndroidNativeService fs = new AndroidNativeService();
|
AndroidNativeService fs = new AndroidNativeService();
|
||||||
fs.startQtService(context);
|
fs.startQtService(context);
|
||||||
jobFinished(params,false);
|
jobFinished(params,false);
|
||||||
//Intent serviceIntent = new Intent(this, AndroidNativeService.class);
|
//Intent serviceIntent = new Intent(this, AndroidNativeService.class);
|
||||||
|
|
|
@ -16,7 +16,7 @@ public class FriendiqaStopService extends JobService{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onStartJob(JobParameters params) {
|
public boolean onStartJob(JobParameters params) {
|
||||||
//Log.d(TAG,"Friendiqa JobServiceStop");
|
Log.d(TAG,"Friendiqa JobServiceStop");
|
||||||
Context context = this.getApplicationContext();
|
Context context = this.getApplicationContext();
|
||||||
AndroidNativeService fs = new AndroidNativeService();
|
AndroidNativeService fs = new AndroidNativeService();
|
||||||
fs.stopQtService(context);
|
fs.stopQtService(context);
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
import QtQuick 2.2
|
|
||||||
import QtQuick.Window 2.1
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import "./theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
objectName: "ComponentPage";
|
|
||||||
|
|
||||||
property var pages: [
|
|
||||||
{
|
|
||||||
name: "Image Picker",
|
|
||||||
demo: "imagePicker/ImagePickerDemo.qml",
|
|
||||||
description: "Pick photo via Java language binding"
|
|
||||||
},{
|
|
||||||
name: "Toast",
|
|
||||||
demo: "toast/ToastDemo.qml",
|
|
||||||
description: "Toast Demonstration"
|
|
||||||
},{
|
|
||||||
name: "Notification",
|
|
||||||
demo: "notification/NotificationDemo.qml",
|
|
||||||
description: "Demonstrate how to use SystemDispatcher to send notification"
|
|
||||||
},{
|
|
||||||
name: "Information",
|
|
||||||
demo: "info/InfoDemo.qml",
|
|
||||||
description: "Android System Information"
|
|
||||||
},{
|
|
||||||
name: "Status Bar",
|
|
||||||
demo: "statusbar/StatusBarDemo.qml",
|
|
||||||
description: "Config Status Bar"
|
|
||||||
}
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
actionBar: ActionBar {
|
|
||||||
id : actionBar
|
|
||||||
iconSource: A.drawable("ic_menu",Constants.black87)
|
|
||||||
title: "AndroidNative Component List"
|
|
||||||
showIcon: false
|
|
||||||
actionButtonEnabled: false
|
|
||||||
}
|
|
||||||
|
|
||||||
VisualDataModel {
|
|
||||||
id: visualDataModel
|
|
||||||
delegate: ListItem {
|
|
||||||
title: modelData.name
|
|
||||||
subtitle: modelData.description
|
|
||||||
onClicked: {
|
|
||||||
present(Qt.resolvedUrl(modelData.demo));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
model: pages;
|
|
||||||
}
|
|
||||||
|
|
||||||
ListView {
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
model : visualDataModel
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
AndroidNative Example Program
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Prerequisites
|
|
||||||
-------------
|
|
||||||
|
|
||||||
* Qt Android SDK >= 5.6
|
|
||||||
* Android SDK
|
|
||||||
|
|
||||||
Check this article for how to setup Qt and Android SDK:
|
|
||||||
|
|
||||||
[Getting Started with Qt for Android](http://qt-project.org/doc/qt-5/androidgs.html)
|
|
||||||
|
|
||||||
Build Instruction
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
1. Run `qpm install` to get required packages
|
|
||||||
1. Open androidnativeexample.pro by Qt Creator
|
|
||||||
1. Press the "Projects" tab. Make sure the "Android for xxx" kit has been selected
|
|
||||||
1. Plug a Android device to your computer
|
|
||||||
1. Press "Build" -> "Run"
|
|
||||||
1. The program will be deployed to your device. It is so easy!
|
|
||||||
|
|
||||||
![Screenshot](https://raw.githubusercontent.com/benlau/androidnative.pri/master/docs/screenshots/example1.png)
|
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
|
||||||
<manifest package="androidnative.example" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
|
||||||
<application android:hardwareAccelerated="true"
|
|
||||||
android:name="org.qtproject.qt5.android.bindings.QtApplication"
|
|
||||||
android:theme="@style/AppTheme"
|
|
||||||
android:label="Android Native Example" android:icon="@drawable/icon">
|
|
||||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation"
|
|
||||||
android:name="androidnative.example.ExampleActivity"
|
|
||||||
android:label="Android Native Example"
|
|
||||||
android:screenOrientation="portrait"
|
|
||||||
android:theme="@style/AppTheme"
|
|
||||||
android:launchMode="singleTop">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
</intent-filter>
|
|
||||||
<meta-data android:name="android.app.lib_name" android:value="androidnativeexample"/>
|
|
||||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
|
||||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
|
||||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
|
||||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
|
||||||
<!-- Deploy Qt libs as part of package -->
|
|
||||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
|
|
||||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
|
||||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
|
||||||
<!-- Run with local libs -->
|
|
||||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
|
|
||||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
|
||||||
<meta-data android:name="android.app.load_local_libs" android:value="plugins/platforms/android/libqtforandroid.so:lib/libQt5QuickParticles.so"/>
|
|
||||||
<meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidAccessibility.jar:jar/QtAndroid-bundled.jar:jar/QtAndroidAccessibility-bundled.jar"/>
|
|
||||||
<meta-data android:name="android.app.static_init_classes" android:value=""/>
|
|
||||||
<!-- Messages maps -->
|
|
||||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
|
||||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
|
||||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
|
||||||
<!-- Messages maps -->
|
|
||||||
|
|
||||||
<!-- Splash screen -->
|
|
||||||
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
|
|
||||||
<!-- Splash screen -->
|
|
||||||
</activity>
|
|
||||||
</application>
|
|
||||||
<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="21"/>
|
|
||||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
|
||||||
|
|
||||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
|
||||||
Remove the comment if you do not require these default permissions. -->
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
|
|
||||||
Remove the comment if you do not require these default features. -->
|
|
||||||
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
|
|
||||||
|
|
||||||
</manifest>
|
|
|
@ -1,34 +0,0 @@
|
||||||
|
|
||||||
// Obtain androidPackageSourceDir
|
|
||||||
// androidPackageSourceDir is the absolute path of the folder containing build.gradle and AndroidManifests.xml
|
|
||||||
// This code also works with androiddeployqt.
|
|
||||||
|
|
||||||
import groovy.json.JsonSlurper
|
|
||||||
|
|
||||||
String getAndroidPackageSourceDir() {
|
|
||||||
String res = System.getProperty("user.dir");
|
|
||||||
|
|
||||||
FileTree tree = fileTree(dir: res + "/..").include("android*deployment-settings.json");
|
|
||||||
|
|
||||||
if (tree.getFiles().size() > 0) {
|
|
||||||
def inputFile = tree.getFiles().toArray()[0];
|
|
||||||
def InputJSON = new JsonSlurper().parseText(inputFile.text);
|
|
||||||
res = InputJSON["android-package-source-directory"]
|
|
||||||
} else {
|
|
||||||
println("android*deployment-settings.json not found. Set androidPackageSourceDir to user.dir");
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
String setAndroidNativePath(String path) {
|
|
||||||
String androidPackageSourceDir = getAndroidPackageSourceDir();
|
|
||||||
String androidNativePath = androidPackageSourceDir + path + "/java/src";
|
|
||||||
LinkedHashSet hash = android.sourceSets.main.java.srcDirs;
|
|
||||||
hash.add(androidNativePath);
|
|
||||||
android.sourceSets.main.java.srcDirs = hash;
|
|
||||||
}
|
|
||||||
|
|
||||||
ext {
|
|
||||||
setAndroidNativePath = this.&setAndroidNativePath;
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:1.3.0'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
jcenter()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
/*******************************************************
|
|
||||||
* The following variables:
|
|
||||||
* - androidBuildToolsVersion,
|
|
||||||
* - androidCompileSdkVersion
|
|
||||||
* - qt5AndroidDir - holds the path to qt android files
|
|
||||||
* needed to build any Qt application
|
|
||||||
* on Android.
|
|
||||||
*
|
|
||||||
* are defined in gradle.properties file. This file is
|
|
||||||
* updated by QtCreator and androiddeployqt tools.
|
|
||||||
* Changing them manually might break the compilation!
|
|
||||||
*******************************************************/
|
|
||||||
|
|
||||||
compileSdkVersion androidCompileSdkVersion.toInteger()
|
|
||||||
|
|
||||||
buildToolsVersion androidBuildToolsVersion
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main {
|
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
|
||||||
java.srcDirs = [qt5AndroidDir + '/src', 'src', 'java']
|
|
||||||
aidl.srcDirs = [qt5AndroidDir + '/src', 'src', 'aidl']
|
|
||||||
res.srcDirs = [qt5AndroidDir + '/res', 'res']
|
|
||||||
resources.srcDirs = ['src']
|
|
||||||
renderscript.srcDirs = ['src']
|
|
||||||
assets.srcDirs = ['assets']
|
|
||||||
jniLibs.srcDirs = ['libs']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
lintOptions {
|
|
||||||
abortOnError false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
apply from: "androidnative.gradle"
|
|
||||||
setAndroidNativePath("/../../..");
|
|
|
@ -1,9 +0,0 @@
|
||||||
## This file is automatically generated by QtCreator.
|
|
||||||
#
|
|
||||||
# This file must *NOT* be checked into Version Control Systems,
|
|
||||||
# as it contains information specific to your local configuration.
|
|
||||||
|
|
||||||
androidBuildToolsVersion=25.0.3
|
|
||||||
androidCompileSdkVersion=25
|
|
||||||
buildDir=.build
|
|
||||||
qt5AndroidDir=/home/pankraz/Qt/5.9.1/android_armv7/src/android/java
|
|
|
@ -1,6 +0,0 @@
|
||||||
#Thu Feb 16 01:04:18 HKT 2017
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
|
||||||
distributionPath=wrapper/dists
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip
|
|
|
@ -1,160 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
##
|
|
||||||
## Gradle start up script for UN*X
|
|
||||||
##
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD="maximum"
|
|
||||||
|
|
||||||
warn ( ) {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
die ( ) {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
case "`uname`" in
|
|
||||||
CYGWIN* )
|
|
||||||
cygwin=true
|
|
||||||
;;
|
|
||||||
Darwin* )
|
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
PRG="$0"
|
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
|
||||||
ls=`ls -ld "$PRG"`
|
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
|
||||||
PRG="$link"
|
|
||||||
else
|
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >/dev/null
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
|
||||||
else
|
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
|
||||||
fi
|
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
JAVACMD="java"
|
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
|
||||||
if [ $? -eq 0 ] ; then
|
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
ulimit -n $MAX_FD
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin, switch paths to Windows format before running java
|
|
||||||
if $cygwin ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=$((i+1))
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
(0) set -- ;;
|
|
||||||
(1) set -- "$args0" ;;
|
|
||||||
(2) set -- "$args0" "$args1" ;;
|
|
||||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
|
||||||
function splitJvmOpts() {
|
|
||||||
JVM_OPTS=("$@")
|
|
||||||
}
|
|
||||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
|
||||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
|
||||||
|
|
||||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
|
|
@ -1,90 +0,0 @@
|
||||||
@if "%DEBUG%" == "" @echo off
|
|
||||||
@rem ##########################################################################
|
|
||||||
@rem
|
|
||||||
@rem Gradle startup script for Windows
|
|
||||||
@rem
|
|
||||||
@rem ##########################################################################
|
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS=
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
|
||||||
set APP_BASE_NAME=%~n0
|
|
||||||
set APP_HOME=%DIRNAME%
|
|
||||||
|
|
||||||
@rem Find java.exe
|
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windowz variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
goto execute
|
|
||||||
|
|
||||||
:4NT_args
|
|
||||||
@rem Get arguments from the 4NT Shell from JP Software
|
|
||||||
set CMD_LINE_ARGS=%$
|
|
||||||
|
|
||||||
:execute
|
|
||||||
@rem Setup the command line
|
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
|
||||||
|
|
||||||
:end
|
|
||||||
@rem End local scope for the variables with windows NT shell
|
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
|
||||||
|
|
||||||
:fail
|
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
|
||||||
rem the _cmd.exe /c_ return code!
|
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
|
||||||
exit /b 1
|
|
||||||
|
|
||||||
:mainEnd
|
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
|
||||||
|
|
||||||
:omega
|
|
|
@ -1,6 +0,0 @@
|
||||||
## This file is automatically generated by QtCreator.
|
|
||||||
#
|
|
||||||
# This file must *NOT* be checked into Version Control Systems,
|
|
||||||
# as it contains information specific to your local configuration.
|
|
||||||
|
|
||||||
sdk.dir=/home/pankraz/android-sdk_alt
|
|
Before Width: | Height: | Size: 4.5 KiB |
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<item>
|
|
||||||
<shape android:shape="rectangle" >
|
|
||||||
<solid android:color="#FFFFFFFF"/>
|
|
||||||
</shape>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<bitmap android:src="@drawable/icon"
|
|
||||||
android:gravity="center" />
|
|
||||||
</item>
|
|
||||||
</layer-list>
|
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
|
|
||||||
<item name="android:windowBackground">@drawable/splash</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
|
|
@ -1,25 +0,0 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
|
||||||
<resources>
|
|
||||||
<array name="qt_sources">
|
|
||||||
<item>https://download.qt-project.org/ministro/android/qt5/qt-5.4</item>
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<!-- The following is handled automatically by the deployment tool. It should
|
|
||||||
not be edited manually. -->
|
|
||||||
|
|
||||||
<array name="bundled_libs">
|
|
||||||
<!-- %%INSERT_EXTRA_LIBS%% -->
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<array name="qt_libs">
|
|
||||||
<!-- %%INSERT_QT_LIBS%% -->
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<array name="bundled_in_lib">
|
|
||||||
<!-- %%INSERT_BUNDLED_IN_LIB%% -->
|
|
||||||
</array>
|
|
||||||
<array name="bundled_in_assets">
|
|
||||||
<!-- %%INSERT_BUNDLED_IN_ASSETS%% -->
|
|
||||||
</array>
|
|
||||||
|
|
||||||
</resources>
|
|
|
@ -1,16 +0,0 @@
|
||||||
package androidnative.example;
|
|
||||||
|
|
||||||
import androidnative.AndroidNativeActivity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by benlau on 8/3/2017.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class ExampleActivity extends AndroidNativeActivity {
|
|
||||||
public ExampleActivity() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
QT_ANDROID_THEMES = new String[] {""};
|
|
||||||
QT_ANDROID_DEFAULT_THEME = "";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,96 +0,0 @@
|
||||||
package androidnative.example;
|
|
||||||
import androidnative.SystemDispatcher;
|
|
||||||
import android.app.Notification;
|
|
||||||
import android.app.NotificationManager;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.os.Handler;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.view.View;
|
|
||||||
import android.content.Context;
|
|
||||||
import java.util.Map;
|
|
||||||
import org.qtproject.qt5.android.QtNative;
|
|
||||||
|
|
||||||
public class ExampleService {
|
|
||||||
|
|
||||||
static {
|
|
||||||
|
|
||||||
SystemDispatcher.addListener(new SystemDispatcher.Listener() {
|
|
||||||
|
|
||||||
NotificationManager m_notificationManager;
|
|
||||||
Notification.Builder m_builder;
|
|
||||||
|
|
||||||
private void notificationManagerNotify(Map data) {
|
|
||||||
|
|
||||||
final Activity activity = QtNative.activity();
|
|
||||||
final Map messageData = data;
|
|
||||||
|
|
||||||
Runnable runnable = new Runnable () {
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
String title = (String) messageData.get("title");
|
|
||||||
|
|
||||||
String message = (String) messageData.get("message");
|
|
||||||
|
|
||||||
if (m_notificationManager == null) {
|
|
||||||
m_notificationManager = (NotificationManager) activity.getSystemService(Context.NOTIFICATION_SERVICE);
|
|
||||||
m_builder = new Notification.Builder(activity);
|
|
||||||
|
|
||||||
// Small Icon is a must to make notification works.
|
|
||||||
// And that is why you need to inherit QtActivity
|
|
||||||
m_builder.setSmallIcon(R.drawable.icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_builder.setContentTitle(title);
|
|
||||||
m_builder.setContentText(message);
|
|
||||||
m_notificationManager.notify(1, m_builder.build());
|
|
||||||
|
|
||||||
// Test function. Remove it later.
|
|
||||||
SystemDispatcher.dispatch("Notifier.notifyFinished");
|
|
||||||
} catch (Exception e) {
|
|
||||||
Log.d("",e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
activity.runOnUiThread(runnable);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void hapticFeedbackPerform(Map data) {
|
|
||||||
|
|
||||||
final Activity activity = QtNative.activity();
|
|
||||||
final Map messageData = data;
|
|
||||||
Runnable runnable = new Runnable () {
|
|
||||||
public void run() {
|
|
||||||
int feedbackConstant = (Integer) messageData.get("feedbackConstant");
|
|
||||||
int flags = (Integer) messageData.get("flags");
|
|
||||||
|
|
||||||
Log.d("",String.format("hapticFeedbackPerform(%d,%d)",feedbackConstant,flags));
|
|
||||||
|
|
||||||
View rootView = activity.getWindow().getDecorView().getRootView();
|
|
||||||
rootView.performHapticFeedback(feedbackConstant, flags);
|
|
||||||
|
|
||||||
// Test function. Remove it later.
|
|
||||||
SystemDispatcher.dispatch("hapticFeedbackPerformFinished");
|
|
||||||
};
|
|
||||||
};
|
|
||||||
activity.runOnUiThread(runnable);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onDispatched(String name , Map data) {
|
|
||||||
|
|
||||||
if (name.equals("Notifier.notify")) {
|
|
||||||
notificationManagerNotify(data);
|
|
||||||
return;
|
|
||||||
} else if (name.equals("hapticFeedbackPerform")) {
|
|
||||||
hapticFeedbackPerform(data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
TEMPLATE = app
|
|
||||||
|
|
||||||
QT += qml quick
|
|
||||||
|
|
||||||
SOURCES += main.cpp \
|
|
||||||
debugwrapper.cpp
|
|
||||||
|
|
||||||
RESOURCES += qml.qrc
|
|
||||||
|
|
||||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
|
||||||
QML_IMPORT_PATH += ../..
|
|
||||||
|
|
||||||
android {
|
|
||||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
|
|
||||||
}
|
|
||||||
|
|
||||||
# include(vendor/vendor.pri)
|
|
||||||
# Default rules for deployment.
|
|
||||||
include(deployment.pri)
|
|
||||||
include(../../androidnative.pri)
|
|
||||||
include(../../../../../../quickandroid/quickandroid.pri)
|
|
||||||
|
|
||||||
DISTFILES += \
|
|
||||||
android-sources/AndroidManifest.xml \
|
|
||||||
android-sources/src/quickandroid/example/ExampleService.java \
|
|
||||||
README.md \
|
|
||||||
android-sources/gradle/wrapper/gradle-wrapper.jar \
|
|
||||||
android-sources/gradlew \
|
|
||||||
android-sources/res/values/libs.xml \
|
|
||||||
android-sources/build.gradle \
|
|
||||||
android-sources/gradle/wrapper/gradle-wrapper.properties \
|
|
||||||
android-sources/gradlew.bat \
|
|
||||||
android-sources/settings.gradle \
|
|
||||||
android-sources/src/androidnative/example/ExampleService.java
|
|
||||||
|
|
||||||
HEADERS += \
|
|
||||||
../../README.md \
|
|
||||||
debugwrapper.h
|
|
|
@ -1,392 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE QtCreatorProject>
|
|
||||||
<!-- Written by QtCreator 4.4.0, 2017-10-23T22:04:08. -->
|
|
||||||
<qtcreator>
|
|
||||||
<data>
|
|
||||||
<variable>EnvironmentId</variable>
|
|
||||||
<value type="QByteArray">{8825bc46-5cad-4a59-be78-bf9eeaa7217a}</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
|
||||||
<value type="int">0</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
|
||||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
|
||||||
<value type="QString" key="language">Cpp</value>
|
|
||||||
<valuemap type="QVariantMap" key="value">
|
|
||||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
|
||||||
<value type="QString" key="language">QmlJS</value>
|
|
||||||
<valuemap type="QVariantMap" key="value">
|
|
||||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
|
||||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
|
||||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
|
||||||
<valuemap type="QVariantMap"/>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Android</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{8e3757e7-5698-4d0f-9f13-55359b1a832e}</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/pankraz/build/debug</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
|
||||||
<value type="QString">-w</value>
|
|
||||||
<value type="QString">-r</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Anwendungsdaten kopieren</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
|
||||||
<value type="QString" key="BuildTargetSdk">android-25</value>
|
|
||||||
<value type="QString" key="KeystoreLocation"></value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android-APK erstellen</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.AndroidDeployQtStep.DeployQtAction">2</value>
|
|
||||||
<value type="bool" key="UseGradle">true</value>
|
|
||||||
<value type="bool" key="VerboseOutput">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
|
||||||
<value type="QString">-w</value>
|
|
||||||
<value type="QString">-r</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/pankraz/ownCloud/clientsync/Friendiqa/v0.005/source-android/androidnative.pri/examples/build-androidnativeexample-Android-Release</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
|
||||||
<value type="QString">-w</value>
|
|
||||||
<value type="QString">-r</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Anwendungsdaten kopieren</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
|
||||||
<value type="QString" key="BuildTargetSdk">android-25</value>
|
|
||||||
<value type="QString" key="KeystoreLocation"></value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android-APK erstellen</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.AndroidDeployQtStep.DeployQtAction">2</value>
|
|
||||||
<value type="bool" key="UseGradle">true</value>
|
|
||||||
<value type="bool" key="VerboseOutput">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
|
||||||
<value type="QString">-w</value>
|
|
||||||
<value type="QString">-r</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/pankraz/ownCloud/clientsync/Friendiqa/v0.005/source-android/androidnative.pri/examples/build-androidnativeexample-Android-Profile</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
|
||||||
<value type="QString">-w</value>
|
|
||||||
<value type="QString">-r</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Anwendungsdaten kopieren</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
|
||||||
<value type="QString" key="BuildTargetSdk">android-25</value>
|
|
||||||
<value type="QString" key="KeystoreLocation"></value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android-APK erstellen</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.AndroidDeployQtStep.DeployQtAction">2</value>
|
|
||||||
<value type="bool" key="UseGradle">true</value>
|
|
||||||
<value type="bool" key="VerboseOutput">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
|
|
||||||
<value type="QString">-w</value>
|
|
||||||
<value type="QString">-r</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
|
||||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment auf Android-Gerät</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidDeployQtStep</value>
|
|
||||||
<value type="bool" key="UninstallPreviousPackage">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment auf Android-Gerät</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deployment auf Android-Gerät</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidDeployConfiguration2</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings">
|
|
||||||
<value type="QString" key="AndroidDeviceSerialNumber">CB5A22HSB9</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
|
||||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
|
||||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
|
||||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
|
||||||
<value type="int">0</value>
|
|
||||||
<value type="int">1</value>
|
|
||||||
<value type="int">2</value>
|
|
||||||
<value type="int">3</value>
|
|
||||||
<value type="int">4</value>
|
|
||||||
<value type="int">5</value>
|
|
||||||
<value type="int">6</value>
|
|
||||||
<value type="int">7</value>
|
|
||||||
<value type="int">8</value>
|
|
||||||
<value type="int">9</value>
|
|
||||||
<value type="int">10</value>
|
|
||||||
<value type="int">11</value>
|
|
||||||
<value type="int">12</value>
|
|
||||||
<value type="int">13</value>
|
|
||||||
<value type="int">14</value>
|
|
||||||
</valuelist>
|
|
||||||
<valuelist type="QVariantList" key="Android.AmStartArgsKey"/>
|
|
||||||
<valuelist type="QVariantList" key="Android.PostFinishShellCmdListKey"/>
|
|
||||||
<valuelist type="QVariantList" key="Android.PreStartShellCmdListKey"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">androidnativeexample</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidRunConfiguration:/home/pankraz/ownCloud/clientsync/Friendiqa/v0.005/source-android/androidnative.pri/examples/androidnativeexample/androidnativeexample.pro</value>
|
|
||||||
<value type="QString" key="QMakeProjectManager.QmakeAndroidRunConfiguration.ProFile">androidnativeexample.pro</value>
|
|
||||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
|
||||||
<value type="int">1</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
|
||||||
<value type="int">18</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>Version</variable>
|
|
||||||
<value type="int">18</value>
|
|
||||||
</data>
|
|
||||||
</qtcreator>
|
|
|
@ -1,17 +0,0 @@
|
||||||
#include "debugwrapper.h"
|
|
||||||
#include "AndroidNative/debug.h"
|
|
||||||
|
|
||||||
DebugWrapper::DebugWrapper(QObject *parent) : QObject(parent)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
long DebugWrapper::getNativeHeapSize() const
|
|
||||||
{
|
|
||||||
return AndroidNative::Debug::getNativeHeapSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
long DebugWrapper::getNativeHeapAllocatedSize() const
|
|
||||||
{
|
|
||||||
return AndroidNative::Debug::getNativeHeapAllocatedSize();
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
#ifndef DEBUGWRAPPER_H
|
|
||||||
#define DEBUGWRAPPER_H
|
|
||||||
|
|
||||||
#include <QObject>
|
|
||||||
|
|
||||||
class DebugWrapper : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
public:
|
|
||||||
explicit DebugWrapper(QObject *parent = 0);
|
|
||||||
|
|
||||||
signals:
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
long getNativeHeapSize() const;
|
|
||||||
|
|
||||||
long getNativeHeapAllocatedSize() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // DEBUGWRAPPER_H
|
|
|
@ -1,27 +0,0 @@
|
||||||
android-no-sdk {
|
|
||||||
target.path = /data/user/qt
|
|
||||||
export(target.path)
|
|
||||||
INSTALLS += target
|
|
||||||
} else:android {
|
|
||||||
x86 {
|
|
||||||
target.path = /libs/x86
|
|
||||||
} else: armeabi-v7a {
|
|
||||||
target.path = /libs/armeabi-v7a
|
|
||||||
} else {
|
|
||||||
target.path = /libs/armeabi
|
|
||||||
}
|
|
||||||
export(target.path)
|
|
||||||
INSTALLS += target
|
|
||||||
} else:unix {
|
|
||||||
isEmpty(target.path) {
|
|
||||||
qnx {
|
|
||||||
target.path = /tmp/$${TARGET}/bin
|
|
||||||
} else {
|
|
||||||
target.path = /opt/$${TARGET}/bin
|
|
||||||
}
|
|
||||||
export(target.path)
|
|
||||||
}
|
|
||||||
INSTALLS += target
|
|
||||||
}
|
|
||||||
|
|
||||||
export(INSTALLS)
|
|
|
@ -1,38 +0,0 @@
|
||||||
import QtQuick 2.0
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import "../theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
actionBar: ActionBar {
|
|
||||||
id: actionBar
|
|
||||||
upEnabled: true
|
|
||||||
title: qsTr("Dialog Demo")
|
|
||||||
showTitle: true
|
|
||||||
|
|
||||||
onActionButtonClicked: back();
|
|
||||||
z: 10
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Button {
|
|
||||||
id: label
|
|
||||||
text : "Press to launch dialog"
|
|
||||||
anchors.centerIn: parent
|
|
||||||
onClicked: {
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Dialog {
|
|
||||||
id: dialog
|
|
||||||
anchors.centerIn: parent
|
|
||||||
title: "Dialog"
|
|
||||||
Text {
|
|
||||||
text: "Demo"
|
|
||||||
}
|
|
||||||
z: 20
|
|
||||||
|
|
||||||
acceptButtonText: "OK"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
import QtQuick 2.0
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import AndroidNative 1.0 as AN
|
|
||||||
import "../theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
id: demo
|
|
||||||
actionBar: ActionBar {
|
|
||||||
title: "Image Picker Demo"
|
|
||||||
onActionButtonClicked: back();
|
|
||||||
}
|
|
||||||
|
|
||||||
AN.ImagePicker {
|
|
||||||
id: imagePicker;
|
|
||||||
multiple : true
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: Constants.black100
|
|
||||||
|
|
||||||
Image {
|
|
||||||
id: image
|
|
||||||
anchors.fill: parent
|
|
||||||
source: imagePicker.imageUrl
|
|
||||||
fillMode: Image.PreserveAspectFit
|
|
||||||
visible: imagePicker.imageUrls.length <= 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Grid {
|
|
||||||
columns: 3
|
|
||||||
spacing: 0
|
|
||||||
visible: !image.visible
|
|
||||||
|
|
||||||
Repeater {
|
|
||||||
model: imagePicker.imageUrls
|
|
||||||
delegate: Image {
|
|
||||||
width: demo.width / 3
|
|
||||||
height: width / 4 * 3
|
|
||||||
source: modelData
|
|
||||||
asynchronous: true
|
|
||||||
fillMode: Image.PreserveAspectCrop
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.rightMargin: 16 * A.dp
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.bottomMargin: 32 * A.dp
|
|
||||||
|
|
||||||
spacing: 16 * A.dp
|
|
||||||
|
|
||||||
FloatingActionButton {
|
|
||||||
iconSource: A.drawable("ic_camera",Constants.black87);
|
|
||||||
size: Constants.small
|
|
||||||
backgroundColor: Constants.white100
|
|
||||||
onClicked: {
|
|
||||||
imagePicker.takePhoto();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FloatingActionButton {
|
|
||||||
iconSource: A.drawable("ic_image",Constants.black87);
|
|
||||||
size: Constants.small
|
|
||||||
backgroundColor: Constants.white100
|
|
||||||
onClicked: {
|
|
||||||
imagePicker.pickImage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
import QtQuick 2.0
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import "../theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
id: page
|
|
||||||
actionBar: ActionBar {
|
|
||||||
id: actionBar
|
|
||||||
upEnabled: true
|
|
||||||
title: qsTr("Information")
|
|
||||||
showTitle: true
|
|
||||||
|
|
||||||
onActionButtonClicked: back();
|
|
||||||
z: 10
|
|
||||||
}
|
|
||||||
|
|
||||||
VisualItemModel {
|
|
||||||
id: itemModel
|
|
||||||
|
|
||||||
ListItem {
|
|
||||||
title: "Environment.DIRECTORY_DCIM"
|
|
||||||
subtitle: Environment.DIRECTORY_DCIM
|
|
||||||
interactive: false
|
|
||||||
width: page.width
|
|
||||||
}
|
|
||||||
|
|
||||||
ListItem {
|
|
||||||
title: "Debug.getNativeHeapSize"
|
|
||||||
subtitle: (Debug.getNativeHeapSize() / 1024 / 1024).toFixed(2) + "MB";
|
|
||||||
interactive: false
|
|
||||||
width: page.width
|
|
||||||
}
|
|
||||||
|
|
||||||
ListItem {
|
|
||||||
title: "Debug.getNativeHeapAllocatedSize"
|
|
||||||
subtitle: (Debug.getNativeHeapAllocatedSize() / 1024 / 1024).toFixed(2) + "MB";
|
|
||||||
interactive: false
|
|
||||||
width: page.width
|
|
||||||
}
|
|
||||||
|
|
||||||
ListItem {
|
|
||||||
title: "QThread.idealThreadCount"
|
|
||||||
subtitle: Misc.idealThreadCount;
|
|
||||||
interactive: false
|
|
||||||
width: page.width
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ListView {
|
|
||||||
anchors.fill: parent
|
|
||||||
model: itemModel
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
#include <QtCore>
|
|
||||||
#include <QGuiApplication>
|
|
||||||
#include <QQmlApplicationEngine>
|
|
||||||
#include <QQuickView>
|
|
||||||
#include <QQmlContext>
|
|
||||||
#include <QSettings>
|
|
||||||
//#include "qadrawableprovider.h"
|
|
||||||
#include "AndroidNative/systemdispatcher.h"
|
|
||||||
#include "AndroidNative/environment.h"
|
|
||||||
#include "AndroidNative/debug.h"
|
|
||||||
#include "AndroidNative/mediascannerconnection.h"
|
|
||||||
#include "debugwrapper.h"
|
|
||||||
|
|
||||||
using namespace AndroidNative;
|
|
||||||
|
|
||||||
#ifdef Q_OS_ANDROID
|
|
||||||
#include <QtAndroidExtras/QAndroidJniObject>
|
|
||||||
#include <QtAndroidExtras/QAndroidJniEnvironment>
|
|
||||||
|
|
||||||
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) {
|
|
||||||
Q_UNUSED(vm);
|
|
||||||
qDebug("NativeInterface::JNI_OnLoad()");
|
|
||||||
|
|
||||||
// It must call this function within JNI_OnLoad to enable System Dispatcher
|
|
||||||
SystemDispatcher::registerNatives();
|
|
||||||
return JNI_VERSION_1_6;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
|
|
||||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QGuiApplication app(argc, argv);
|
|
||||||
app.setApplicationName("Android Native Example");
|
|
||||||
app.setOrganizationDomain("com.github.benlau.androidnative");
|
|
||||||
|
|
||||||
QSettings settings;
|
|
||||||
|
|
||||||
settings.setValue("firstTimeLoading", false);
|
|
||||||
settings.sync();
|
|
||||||
|
|
||||||
QVariantMap env;
|
|
||||||
env["DIRECTORY_DCIM"] = Environment::getExternalStoragePublicDirectory(Environment::DIRECTORY_DCIM);
|
|
||||||
|
|
||||||
QVariantMap misc;
|
|
||||||
misc["idealThreadCount"] = QThread::idealThreadCount();
|
|
||||||
|
|
||||||
MediaScannerConnection::scanFile("");
|
|
||||||
|
|
||||||
SystemDispatcher::instance()->loadClass("androidnative.example.ExampleService");
|
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
|
||||||
|
|
||||||
/* QuickAndroid Initialization */
|
|
||||||
engine.addImportPath("qrc:///"); // Add QuickAndroid into the import path
|
|
||||||
engine.rootContext()->setContextProperty("Environment", env);
|
|
||||||
engine.rootContext()->setContextProperty("Misc", misc);
|
|
||||||
engine.rootContext()->setContextProperty("Debug", new DebugWrapper(&engine));
|
|
||||||
|
|
||||||
/* End of QuickAndroid Initialization */
|
|
||||||
|
|
||||||
// Extra features:
|
|
||||||
//QADrawableProvider* provider = new QADrawableProvider();
|
|
||||||
//provider->setBasePath("qrc://res");
|
|
||||||
//engine.addImageProvider("drawable",provider);
|
|
||||||
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
|
|
||||||
|
|
||||||
return app.exec();
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
import QtQuick 2.2
|
|
||||||
import QtQuick.Window 2.2
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import "./theme"
|
|
||||||
|
|
||||||
Window {
|
|
||||||
id: window;
|
|
||||||
width: 480
|
|
||||||
height: 640
|
|
||||||
|
|
||||||
color: "#FFFFFF"
|
|
||||||
|
|
||||||
visible: false;
|
|
||||||
|
|
||||||
/* Fast Splash Screen Setup Instruction
|
|
||||||
|
|
||||||
1. Create a custom theme (apptheme.qml) and set windowBackground to @drawable/splash.xml (Your splash screen drawable)
|
|
||||||
|
|
||||||
2. Within AndroidManifest.xml, set android.app.splash_screen_drawable to @drawable/splash.xml
|
|
||||||
|
|
||||||
<!-- Splash screen -->
|
|
||||||
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
|
|
||||||
<!-- Splash screen -->
|
|
||||||
|
|
||||||
That will show a splash screen while Qt is loading. However, screen flicker will happen when your Window
|
|
||||||
item is shown. To prevent screen flicker completely, you could setup your main.qml accoroding to step 3.
|
|
||||||
|
|
||||||
3. In your main.qml (the one with Window component)
|
|
||||||
|
|
||||||
3.1. Set Window.color to a color which is similar to splash screen / Theme.windowBackground
|
|
||||||
|
|
||||||
3.2. Set visible of Window to false until your content is loaded. (Keep Android splash screen while loading)
|
|
||||||
|
|
||||||
3.3. Use an asynchronous Loader for your content. Set opacity to 0.
|
|
||||||
|
|
||||||
3.4. Once everything is ready, set Window.visible to true and perform a fade-in animation on Loader
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
Loader {
|
|
||||||
id: loader
|
|
||||||
parent: null
|
|
||||||
width: window.width
|
|
||||||
height: window.height
|
|
||||||
asynchronous: true
|
|
||||||
opacity: 0
|
|
||||||
focus: true;
|
|
||||||
|
|
||||||
sourceComponent: PageStack {
|
|
||||||
id: stack
|
|
||||||
objectName: "PageStack";
|
|
||||||
initialPage: Components {
|
|
||||||
|
|
||||||
onPresented: {
|
|
||||||
window.visible = true;
|
|
||||||
A.setTimeout(function() {
|
|
||||||
loader.parent = window.contentItem;
|
|
||||||
loader.opacity = 1;
|
|
||||||
}, 34);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Behavior on opacity {
|
|
||||||
NumberAnimation {
|
|
||||||
duration: 200
|
|
||||||
easing.type: Easing.OutQuad;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
ThemeManager.currentTheme = AppTheme
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
import QtQuick 2.2
|
|
||||||
import QtQuick.Window 2.1
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import AndroidNative 1.0 as AN
|
|
||||||
import "../theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
|
|
||||||
actionBar: ActionBar {
|
|
||||||
id : actionBar
|
|
||||||
title: "Notification"
|
|
||||||
z: 10
|
|
||||||
upEnabled: true
|
|
||||||
onActionButtonClicked: back();
|
|
||||||
}
|
|
||||||
|
|
||||||
Button {
|
|
||||||
id: label
|
|
||||||
text : "Press to send notification"
|
|
||||||
anchors.centerIn: parent
|
|
||||||
onClicked: {
|
|
||||||
AN.SystemDispatcher.dispatch("Notifier.notify",{
|
|
||||||
title: "Quick Android Example",
|
|
||||||
message: "Hello!"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
<RCC>
|
|
||||||
<qresource prefix="/">
|
|
||||||
<file>main.qml</file>
|
|
||||||
<file>res/drawable-hdpi/icon.png</file>
|
|
||||||
<file>Components.qml</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_menu.png</file>
|
|
||||||
<file>dialog/DialogDemo.qml</file>
|
|
||||||
<file>notification/NotificationDemo.qml</file>
|
|
||||||
<file>theme/AppTheme.qml</file>
|
|
||||||
<file>theme/qmldir</file>
|
|
||||||
<file>res/drawable-hdpi/ic_android_black_48dp.png</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_android_black_48dp.png</file>
|
|
||||||
<file>res/drawable-mdpi/ic_android_black_48dp.png</file>
|
|
||||||
<file>res/drawable-xhdpi/ic_android_black_48dp.png</file>
|
|
||||||
<file>res/drawable-xxxhdpi/ic_android_black_48dp.png</file>
|
|
||||||
<file>res/drawable-hdpi/ic_done_black_24dp.png</file>
|
|
||||||
<file>res/drawable-mdpi/ic_done_black_24dp.png</file>
|
|
||||||
<file>res/drawable-xhdpi/ic_done_black_24dp.png</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_done_black_24dp.png</file>
|
|
||||||
<file>res/drawable-xxxhdpi/ic_done_black_24dp.png</file>
|
|
||||||
<file>theme/ActionBarBackground.qml</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_keyboard_backspace.png</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_arrow_back.png</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_image.png</file>
|
|
||||||
<file>res/drawable-xxhdpi/ic_camera.png</file>
|
|
||||||
<file>imagePicker/ImagePickerDemo.qml</file>
|
|
||||||
<file>info/InfoDemo.qml</file>
|
|
||||||
<file>toast/ToastDemo.qml</file>
|
|
||||||
<file>statusbar/StatusBarDemo.qml</file>
|
|
||||||
</qresource>
|
|
||||||
</RCC>
|
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"name": "",
|
|
||||||
"description": "",
|
|
||||||
"dependencies": [
|
|
||||||
"com.github.benlau.quickandroid@0.1.7"
|
|
||||||
],
|
|
||||||
"license": "NONE",
|
|
||||||
"pri_filename": "",
|
|
||||||
"webpage": ""
|
|
||||||
}
|
|
Before Width: | Height: | Size: 519 B |
Before Width: | Height: | Size: 177 B |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 343 B |
Before Width: | Height: | Size: 130 B |
Before Width: | Height: | Size: 641 B |
Before Width: | Height: | Size: 188 B |
Before Width: | Height: | Size: 975 B |
Before Width: | Height: | Size: 287 B |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 227 B |
Before Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 267 B |
Before Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 277 B |
|
@ -1,47 +0,0 @@
|
||||||
import QtQuick 2.2
|
|
||||||
import QtQuick.Window 2.1
|
|
||||||
import QtQuick.Controls 2.1 as QQC2
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import AndroidNative 1.0 as AN
|
|
||||||
import "../theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
|
|
||||||
actionBar: ActionBar {
|
|
||||||
id : actionBar
|
|
||||||
title: "Status Bar"
|
|
||||||
z: 10
|
|
||||||
upEnabled: true
|
|
||||||
onActionButtonClicked: back();
|
|
||||||
}
|
|
||||||
|
|
||||||
Column {
|
|
||||||
anchors.centerIn: parent
|
|
||||||
|
|
||||||
QQC2.Switch {
|
|
||||||
text: "Translucent Status Bar"
|
|
||||||
checked: false
|
|
||||||
|
|
||||||
onCheckedChanged: {
|
|
||||||
AN.SystemDispatcher.dispatch("androidnative.Util.setTranslucentStatusBar", {value: checked});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QQC2.Switch {
|
|
||||||
text: "Status Bar Visible"
|
|
||||||
checked: true
|
|
||||||
|
|
||||||
onCheckedChanged: {
|
|
||||||
AN.SystemDispatcher.dispatch("androidnative.Util.setFullScreen", {value: checked});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
AN.SystemDispatcher.loadClass("androidnative.Util");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
import QtQuick 2.0
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
|
|
||||||
Item {
|
|
||||||
|
|
||||||
MaterialShadow {
|
|
||||||
asynchronous: true
|
|
||||||
anchors.fill: parent
|
|
||||||
depth: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
color: "#cddc39" // Lime 500
|
|
||||||
anchors.fill: parent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
import QtQuick 2.0
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
pragma Singleton
|
|
||||||
|
|
||||||
Theme {
|
|
||||||
mediumText.textSize: 18 * A.dp
|
|
||||||
smallText.textSize : 14 * A.dp
|
|
||||||
|
|
||||||
colorPrimary: "#cddc39" // Lime 500
|
|
||||||
textColorPrimary: Constants.black87
|
|
||||||
windowBackground: "#eeeeee";
|
|
||||||
|
|
||||||
// The default icon of ActionBar is a "back" image
|
|
||||||
actionBar.iconSource: A.drawable("ic_arrow_back",Constants.black87)
|
|
||||||
|
|
||||||
// Background with shadow
|
|
||||||
actionBar.background: ActionBarBackground {
|
|
||||||
}
|
|
||||||
|
|
||||||
// actionBar.title.textSize is not allowed in QML. You should declare your own TextMaterial and assign directly.
|
|
||||||
// or modify text , smallText , mediumText and largetText
|
|
||||||
actionBar.title : customTextMaterial1;
|
|
||||||
actionBar.iconSourceSize: Qt.size(24 * A.dp , 24 * A.dp)
|
|
||||||
|
|
||||||
// Custom Style object.
|
|
||||||
TextMaterial {
|
|
||||||
id : customTextMaterial1
|
|
||||||
textSize: 18 * A.dp
|
|
||||||
textColor : Constants.black87
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
module theme
|
|
||||||
singleton AppTheme 0.1 AppTheme.qml
|
|
|
@ -1,33 +0,0 @@
|
||||||
import QtQuick 2.2
|
|
||||||
import QtQuick.Window 2.1
|
|
||||||
import QuickAndroid 0.1
|
|
||||||
import QuickAndroid.Styles 0.1
|
|
||||||
import AndroidNative 1.0 as AN
|
|
||||||
import "../theme"
|
|
||||||
|
|
||||||
Page {
|
|
||||||
|
|
||||||
actionBar: ActionBar {
|
|
||||||
id : actionBar
|
|
||||||
title: "Toast"
|
|
||||||
z: 10
|
|
||||||
upEnabled: true
|
|
||||||
onActionButtonClicked: back();
|
|
||||||
}
|
|
||||||
|
|
||||||
AN.Toast {
|
|
||||||
id: toast
|
|
||||||
text: "Toast"
|
|
||||||
longDuration: true
|
|
||||||
}
|
|
||||||
|
|
||||||
Button {
|
|
||||||
id: label
|
|
||||||
text : "Press to show toast"
|
|
||||||
anchors.centerIn: parent
|
|
||||||
onClicked: {
|
|
||||||
toast.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -10,6 +10,7 @@ import android.content.Context;
|
||||||
import android.Manifest.permission;
|
import android.Manifest.permission;
|
||||||
import androidx.core.app.ActivityCompat;
|
import androidx.core.app.ActivityCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidnative.AndroidNativeService;
|
||||||
|
|
||||||
/** An alternative Activity class for Qt applicaiton.
|
/** An alternative Activity class for Qt applicaiton.
|
||||||
|
|
||||||
|
@ -18,7 +19,8 @@ import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
public class AndroidNativeActivity extends org.qtproject.qt5.android.bindings.QtActivity {
|
public class AndroidNativeActivity extends org.qtproject.qt5.android.bindings.QtActivity {
|
||||||
public static final int MY_PERMISSIONS_REQUEST_READ_STORAGE = 0x245285a8;
|
public static final int MY_PERMISSIONS_REQUEST_READ_STORAGE = 0x245285a8;
|
||||||
|
public static final int MY_PERMISSIONS_REQUEST_POST_NOTIFICATIONS = 0x245285a9;
|
||||||
|
private static final String TAG = "AndroidNativeActivity";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
|
@ -29,6 +31,11 @@ public class AndroidNativeActivity extends org.qtproject.qt5.android.bindings.Qt
|
||||||
|
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AndroidNativeService fs = new AndroidNativeService();
|
||||||
|
fs.startQtService(this);
|
||||||
//if (ContextCompat.checkSelfPermission(this,android.Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {
|
//if (ContextCompat.checkSelfPermission(this,android.Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {
|
||||||
|
|
||||||
// Permission is not granted
|
// Permission is not granted
|
||||||
|
@ -75,19 +82,29 @@ public class AndroidNativeActivity extends org.qtproject.qt5.android.bindings.Qt
|
||||||
|
|
||||||
|
|
||||||
@Override public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
|
@Override public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
|
||||||
|
Log.d(TAG,"onRequestPermissionsResult");
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case MY_PERMISSIONS_REQUEST_READ_STORAGE: {
|
case MY_PERMISSIONS_REQUEST_READ_STORAGE: {
|
||||||
// If request is cancelled, the result arrays are empty.
|
// If request is cancelled, the result arrays are empty.
|
||||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
Map message = new HashMap();
|
Map message = new HashMap();
|
||||||
message.put("multiple",false);
|
message.put("multiple",false);
|
||||||
SystemDispatcher.dispatch("androidnative.ImagePicker.pickImage",message);
|
SystemDispatcher.dispatch("androidnative.ImagePicker.pickImage",message);
|
||||||
} else {
|
} else {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
case MY_PERMISSIONS_REQUEST_POST_NOTIFICATIONS: {
|
||||||
|
// If request is cancelled, the result arrays are empty.
|
||||||
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
Map message = new HashMap();
|
||||||
|
message.put("multiple",false);
|
||||||
|
SystemDispatcher.dispatch("androidnative.Util.setPostNotification",message);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,14 +20,14 @@ public class AndroidNativeService extends QtService
|
||||||
private static String TAG = "AndroidNative";
|
private static String TAG = "AndroidNative";
|
||||||
|
|
||||||
public void startQtService(Context ctx) {
|
public void startQtService(Context ctx) {
|
||||||
//Log.d(TAG, "QtActivity active "+String.valueOf(QtNative.activity()!=null));
|
Log.d(TAG, "QtActivity active "+String.valueOf(QtNative.activity()!=null));
|
||||||
if (QtNative.activity()==null){
|
if (QtNative.activity()==null){
|
||||||
//Log.d(TAG,"Friendiqasync Stop existing QtService");
|
Log.d(TAG,"Friendiqasync Stop existing QtService");
|
||||||
ctx.stopService(new Intent(ctx, AndroidNativeService.class));
|
ctx.stopService(new Intent(ctx, AndroidNativeService.class));
|
||||||
|
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
//Log.d(TAG,"Friendiqasync startForegroundService");
|
Log.d(TAG,"Friendiqasync startForegroundService");
|
||||||
ctx.startForegroundService(new Intent(ctx, AndroidNativeService.class));
|
ctx.startForegroundService(new Intent(ctx, AndroidNativeService.class));
|
||||||
} else {
|
} else {
|
||||||
ctx.startService(new Intent(ctx, AndroidNativeService.class));
|
ctx.startService(new Intent(ctx, AndroidNativeService.class));
|
||||||
|
@ -35,7 +35,7 @@ public class AndroidNativeService extends QtService
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void stopQtService(Context ctx) {
|
public static void stopQtService(Context ctx) {
|
||||||
//Log.d(TAG,"Friendiqasync QtServiceStop");
|
Log.d(TAG,"Friendiqasync QtServiceStop");
|
||||||
ctx.stopService(new Intent(ctx, AndroidNativeService.class));
|
ctx.stopService(new Intent(ctx, AndroidNativeService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,11 +44,12 @@ public class AndroidNativeService extends QtService
|
||||||
{
|
{
|
||||||
Context context;
|
Context context;
|
||||||
context = this.getApplicationContext();
|
context = this.getApplicationContext();
|
||||||
|
Log.d(TAG,"Friendiqa onCreate");
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
|
||||||
Intent intent = new Intent(context,FriendiqaActivity.class);
|
Intent intent = new Intent(context,FriendiqaActivity.class);
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
String CHANNEL_ID = "channel_02";
|
String CHANNEL_ID = "channel_02";
|
||||||
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
|
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
|
||||||
"Sync Channel",
|
"Sync Channel",
|
||||||
|
|
|
@ -25,6 +25,11 @@ import android.content.Intent;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.qtproject.friendiqa.R;
|
import org.qtproject.friendiqa.R;
|
||||||
|
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.Manifest;
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
public class Util {
|
public class Util {
|
||||||
|
|
||||||
private static final String TAG = "androidnative.Util";
|
private static final String TAG = "androidnative.Util";
|
||||||
|
@ -33,7 +38,8 @@ public class Util {
|
||||||
public static final String SET_FULL_SCREEN = "androidnative.Util.setFullScreen";
|
public static final String SET_FULL_SCREEN = "androidnative.Util.setFullScreen";
|
||||||
public static final String SET_SCHEDULE = "androidnative.Util.setSchedule";
|
public static final String SET_SCHEDULE = "androidnative.Util.setSchedule";
|
||||||
public static final String SET_NOTIFICATION = "androidnative.Util.setNotification";
|
public static final String SET_NOTIFICATION = "androidnative.Util.setNotification";
|
||||||
|
public static final String SET_POST_NOTIFICATION = "androidnative.Util.setPostNotification";
|
||||||
|
public static final int MY_PERMISSIONS_REQUEST_POST_NOTIFICATIONS = 0x245285a9;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
SystemDispatcher.addListener(new SystemDispatcher.Listener() {
|
SystemDispatcher.addListener(new SystemDispatcher.Listener() {
|
||||||
|
@ -46,6 +52,8 @@ public class Util {
|
||||||
setSchedule(message);
|
setSchedule(message);
|
||||||
} else if (type.equals(SET_NOTIFICATION)) {
|
} else if (type.equals(SET_NOTIFICATION)) {
|
||||||
setNotification(message);
|
setNotification(message);
|
||||||
|
} else if (type.equals(SET_POST_NOTIFICATION)) {
|
||||||
|
setPostNotification(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -110,14 +118,14 @@ public class Util {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setNotification(Map message) {
|
static void setNotification(Map message) {
|
||||||
//Log.d(TAG,"setNotification");
|
Log.d(TAG,"setNotification");
|
||||||
Context context;
|
Context context;
|
||||||
//Context appcontext;
|
//Context appcontext;
|
||||||
context = QtNative.service().getApplicationContext();
|
context = QtNative.service().getApplicationContext();
|
||||||
//appcontext = QtNative.activity().getApplicationContext();
|
//appcontext = QtNative.activity().getApplicationContext();
|
||||||
Intent intent = new Intent(context,FriendiqaActivity.class);
|
Intent intent = new Intent(context,FriendiqaActivity.class);
|
||||||
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
|
||||||
|
|
||||||
final String textTitle = (String) message.get("title");
|
final String textTitle = (String) message.get("title");
|
||||||
final String textContent = (String) message.get("message");
|
final String textContent = (String) message.get("message");
|
||||||
|
@ -171,14 +179,23 @@ public class Util {
|
||||||
} else {
|
} else {
|
||||||
context = QtNative.activity().getApplicationContext();
|
context = QtNative.activity().getApplicationContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//AndroidNativeService fs = new AndroidNativeService();
|
||||||
|
//fs.startQtService(context);
|
||||||
|
|
||||||
|
|
||||||
if (value==0){
|
if (value==0){
|
||||||
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
||||||
jobScheduler.cancelAll();
|
jobScheduler.cancelAll();
|
||||||
//Log.d(TAG,"Friendiqasync deleting Androidnative jobscheduler");
|
Log.d(TAG,"Friendiqasync deleting Androidnative jobscheduler");
|
||||||
} else {
|
} else {
|
||||||
//Log.d(TAG,"Friendiqasync schedule Androidnative jobscheduler");
|
Log.d(TAG,"Friendiqasync schedule Androidnative jobscheduler");
|
||||||
ComponentName component = new ComponentName(context, FriendiqaService.class);
|
ComponentName component = new ComponentName(context, FriendiqaService.class);
|
||||||
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
||||||
|
|
||||||
|
|
||||||
//Log.d(TAG,"Jobinfolist size " + String.valueOf(jobScheduler.getAllPendingJobs().size()));
|
//Log.d(TAG,"Jobinfolist size " + String.valueOf(jobScheduler.getAllPendingJobs().size()));
|
||||||
if (jobScheduler.getAllPendingJobs().size()==0){
|
if (jobScheduler.getAllPendingJobs().size()==0){
|
||||||
JobInfo.Builder builder = new JobInfo.Builder(2, component)
|
JobInfo.Builder builder = new JobInfo.Builder(2, component)
|
||||||
|
@ -186,7 +203,7 @@ public class Util {
|
||||||
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
|
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
|
||||||
.setPersisted(true)
|
.setPersisted(true)
|
||||||
.setPrefetch(true);
|
.setPrefetch(true);
|
||||||
//Log.d(TAG,"Friendiqa schedule Androidnative sync schedule"+ (value * ONE_MIN));
|
Log.d(TAG,"1 Friendiqa schedule Androidnative sync schedule"+ (value * ONE_MIN));
|
||||||
jobScheduler.schedule(builder.build());
|
jobScheduler.schedule(builder.build());
|
||||||
} else {
|
} else {
|
||||||
for ( JobInfo jobInfo : jobScheduler.getAllPendingJobs() ) {
|
for ( JobInfo jobInfo : jobScheduler.getAllPendingJobs() ) {
|
||||||
|
@ -197,23 +214,42 @@ public class Util {
|
||||||
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
|
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
|
||||||
.setPersisted(true)
|
.setPersisted(true)
|
||||||
.setPrefetch(true);
|
.setPrefetch(true);
|
||||||
//Log.d(TAG,"Friendiqa schedule Androidnative sync schedule"+ (value * ONE_MIN));
|
Log.d(TAG,"2 Friendiqa schedule Androidnative sync schedule"+ (value * ONE_MIN));
|
||||||
jobScheduler.schedule(builder.build());
|
jobScheduler.schedule(builder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Log.d(TAG,"Active service " + String.valueOf(QtNative.service()!=null));
|
//Log.d(TAG,"Active service " + String.valueOf(QtNative.service()!=null));
|
||||||
if (QtNative.service() != null){
|
//if (QtNative.service() != null){
|
||||||
//Log.d(TAG,"Schedule Stopping Friendiqa Androidnative service");
|
// Log.d(TAG,"Schedule Stopping Friendiqa Androidnative service");
|
||||||
ComponentName componentStopper = new ComponentName(context, FriendiqaStopService.class);
|
// ComponentName componentStopper = new ComponentName(context, FriendiqaStopService.class);
|
||||||
JobInfo.Builder stopbuilder = new JobInfo.Builder(1, componentStopper)
|
// JobInfo.Builder stopbuilder = new JobInfo.Builder(1, componentStopper)
|
||||||
.setMinimumLatency(50)
|
// .setMinimumLatency(50)
|
||||||
.setOverrideDeadline(100);
|
// .setOverrideDeadline(100);
|
||||||
|
|
||||||
JobScheduler jobStopScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
// JobScheduler jobStopScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
|
||||||
jobStopScheduler.schedule(stopbuilder.build());
|
// jobStopScheduler.schedule(stopbuilder.build());
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
|
||||||
|
notificationManager.cancelAll();
|
||||||
//context.stopService(new Intent(context, AndroidNativeService.class));
|
//context.stopService(new Intent(context, AndroidNativeService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setPostNotification(Map message) {
|
||||||
|
Log.d(TAG,"setPostNotification");
|
||||||
|
Context context;
|
||||||
|
if (QtNative.activity() == null){
|
||||||
|
context = QtNative.service().getApplicationContext();
|
||||||
|
} else {
|
||||||
|
context = QtNative.activity().getApplicationContext();
|
||||||
|
}
|
||||||
|
Activity activity = org.qtproject.qt5.android.QtNative.activity();
|
||||||
|
Log.d(TAG,String.valueOf(ContextCompat.checkSelfPermission(context,Manifest.permission.POST_NOTIFICATIONS)));
|
||||||
|
if (ContextCompat.checkSelfPermission(context,Manifest.permission.POST_NOTIFICATIONS)!= PackageManager.PERMISSION_GRANTED) {
|
||||||
|
// Permission is not granted
|
||||||
|
Log.d(TAG,String.valueOf(PackageManager.PERMISSION_GRANTED));
|
||||||
|
ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.POST_NOTIFICATIONS},MY_PERMISSIONS_REQUEST_POST_NOTIFICATIONS);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
../source-linux/application.qrc
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/alarm.h
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/alarmandroid.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/alarmlinux.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/filesystem.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/filesystem.h
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/filesystemandroid.cpp
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "xhr.h"
|
#include "xhr.h"
|
||||||
#include "updatenews.h"
|
#include "updatenews.h"
|
||||||
#include "filesystem.h"
|
#include "filesystem.h"
|
||||||
|
#include "oauth.h"
|
||||||
#include "remoteauthasyncimageprovider.h"
|
#include "remoteauthasyncimageprovider.h"
|
||||||
#include "AndroidNative/systemdispatcher.h"
|
#include "AndroidNative/systemdispatcher.h"
|
||||||
|
|
||||||
|
@ -54,9 +55,7 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) {
|
||||||
|
|
||||||
|
|
||||||
Q_DECL_EXPORT int main(int argc, char *argv[]) {
|
Q_DECL_EXPORT int main(int argc, char *argv[]) {
|
||||||
//if (argc>1){qDebug()<< "argc Friendiqa"<< argc <<" argv1" <<argv[1];}
|
|
||||||
if ((argc>1) && (qstrcmp(argv[1],"-service")==0)){
|
if ((argc>1) && (qstrcmp(argv[1],"-service")==0)){
|
||||||
//qDebug()<<"FriendiqaMain Service";
|
|
||||||
QAndroidService app(argc, argv);
|
QAndroidService app(argc, argv);
|
||||||
UPDATENEWS* updatenews= UPDATENEWS::instance();
|
UPDATENEWS* updatenews= UPDATENEWS::instance();
|
||||||
updatenews->setDatabase();
|
updatenews->setDatabase();
|
||||||
|
@ -69,7 +68,6 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) {
|
||||||
else{
|
else{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
QQmlApplicationEngine view;
|
QQmlApplicationEngine view;
|
||||||
//qDebug()<<"FriendiqaMain started";
|
|
||||||
QTranslator qtTranslator;
|
QTranslator qtTranslator;
|
||||||
qtTranslator.load("friendiqa-" + QLocale::system().name(),":/translations");
|
qtTranslator.load("friendiqa-" + QLocale::system().name(),":/translations");
|
||||||
app.installTranslator(&qtTranslator);
|
app.installTranslator(&qtTranslator);
|
||||||
|
@ -84,6 +82,8 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) {
|
||||||
view.rootContext()->setContextProperty("alarm", alarm);
|
view.rootContext()->setContextProperty("alarm", alarm);
|
||||||
UPDATENEWS* updatenews = UPDATENEWS::instance();
|
UPDATENEWS* updatenews = UPDATENEWS::instance();
|
||||||
view.rootContext()->setContextProperty("updatenews", updatenews);
|
view.rootContext()->setContextProperty("updatenews", updatenews);
|
||||||
|
OAuthWrapper* oauth2 = OAuthWrapper::instance();
|
||||||
|
view.rootContext()->setContextProperty("oauth2", oauth2);
|
||||||
view.load(QUrl("qrc:/qml/friendiqa.qml"));
|
view.load(QUrl("qrc:/qml/friendiqa.qml"));
|
||||||
view.connect(view.rootContext()->engine(), SIGNAL(quit()), &app, SLOT(quit()));
|
view.connect(view.rootContext()->engine(), SIGNAL(quit()), &app, SLOT(quit()));
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/remoteauthasyncimageprovider.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/remoteauthasyncimageprovider.h
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/updatenews.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/updatenews.h
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/uploadableimage.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/uploadableimage.h
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/xhr.cpp
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/common/xhr.h
|
|
|
@ -13,7 +13,7 @@
|
||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
TARGET = friendiqa
|
TARGET = friendiqa
|
||||||
CONFIG += release
|
CONFIG += release
|
||||||
QT += core core-private qml quick gui widgets sql androidextras #webengine webview
|
QT += core core-private qml quick gui widgets sql androidextras network networkauth
|
||||||
|
|
||||||
include(androidnative.pri/androidnative.pri)
|
include(androidnative.pri/androidnative.pri)
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ SOURCES += common/friendiqa.cpp \
|
||||||
common/filesystemandroid.cpp \
|
common/filesystemandroid.cpp \
|
||||||
common/remoteauthasyncimageprovider.cpp \
|
common/remoteauthasyncimageprovider.cpp \
|
||||||
common/updatenews.cpp \
|
common/updatenews.cpp \
|
||||||
common/alarmandroid.cpp
|
common/alarmandroid.cpp \
|
||||||
|
common/oauth.cpp
|
||||||
lupdate_only{
|
lupdate_only{
|
||||||
SOURCES = qml/friendiqa.qml \
|
SOURCES = qml/friendiqa.qml \
|
||||||
qml/*.qml
|
qml/*.qml
|
||||||
|
@ -38,7 +39,6 @@ SOURCES += common/friendiqa.cpp \
|
||||||
|
|
||||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
|
||||||
|
|
||||||
|
|
||||||
RESOURCES = application.qrc
|
RESOURCES = application.qrc
|
||||||
|
|
||||||
OTHER_FILES += qml/friendiqa.qml \
|
OTHER_FILES += qml/friendiqa.qml \
|
||||||
|
@ -53,7 +53,8 @@ OTHER_FILES += qml/friendiqa.qml \
|
||||||
TRANSLATIONS += translations/friendiqa-de.ts \
|
TRANSLATIONS += translations/friendiqa-de.ts \
|
||||||
translations/friendiqa-es.ts \
|
translations/friendiqa-es.ts \
|
||||||
translations/friendiqa-it.ts \
|
translations/friendiqa-it.ts \
|
||||||
translations/friendiqa-hu.ts
|
translations/friendiqa-hu.ts \
|
||||||
|
translations/friendiqa-nl.ts
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
common/uploadableimage.h \
|
common/uploadableimage.h \
|
||||||
|
@ -61,7 +62,8 @@ HEADERS += \
|
||||||
common/filesystem.h \
|
common/filesystem.h \
|
||||||
common/remoteauthasyncimageprovider.h \
|
common/remoteauthasyncimageprovider.h \
|
||||||
common/updatenews.h \
|
common/updatenews.h \
|
||||||
common/alarm.h
|
common/alarm.h \
|
||||||
|
common/oauth.h
|
||||||
|
|
||||||
DISTFILES += \
|
DISTFILES += \
|
||||||
android/gradle.properties \
|
android/gradle.properties \
|
||||||
|
@ -86,8 +88,6 @@ DISTFILES += \
|
||||||
android/src/FriendiqaActivity.java \
|
android/src/FriendiqaActivity.java \
|
||||||
android/src/FriendiqaService.java
|
android/src/FriendiqaService.java
|
||||||
|
|
||||||
ANDROID_EXTRA_LIBS = $$PWD/android/arm/libcrypto_1_1.so $$PWD/android/arm/libssl_1_1.so $$PWD/android/arm64/libcrypto_1_1.so $$PWD/android/arm64/libssl_1_1.so
|
|
||||||
|
|
||||||
#ANDROID_ABIS = arm64-v8a
|
#ANDROID_ABIS = arm64-v8a
|
||||||
#android: include(/home/pankraz/git/android_openssl/openssl.pri)
|
|
||||||
android: include(/home/pankraz/android-sdk/android_openssl/openssl.pri)
|
android: include(/home/pankraz/android-sdk/android_openssl/openssl.pri)
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
../source-linux/images
|
|
|
@ -1 +0,0 @@
|
||||||
../source-linux/js
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/qml/calendarqml
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/qml/configqml
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/qml/contactqml
|
|
|
@ -43,11 +43,11 @@ import "qrc:/qml/genericqml"
|
||||||
ApplicationWindow{
|
ApplicationWindow{
|
||||||
id:root
|
id:root
|
||||||
title: "Friendiqa"
|
title: "Friendiqa"
|
||||||
property var globaloptions: Service.readGO(db)
|
|
||||||
property QtObject osSettings: {var tmp=Qt.createComponent("qrc:/qml/configqml/OSSettingsAndroid.qml");return tmp.createObject(root)}
|
property QtObject osSettings: {var tmp=Qt.createComponent("qrc:/qml/configqml/OSSettingsAndroid.qml");return tmp.createObject(root)}
|
||||||
visible: true
|
visible: true
|
||||||
property var db: ["Friendiqa", "1.0", "Stores Friendica data", 100000000]
|
property var db: ["Friendiqa", "1.0", "Stores Friendica data", 100000000]
|
||||||
property var login: Service.readActiveConfig(db)
|
property var login: Service.readActiveConfig(db)
|
||||||
|
property var globaloptions: Service.readGO(db)
|
||||||
property real fontFactor: root.font.pixelSize/root.font.pointSize
|
property real fontFactor: root.font.pixelSize/root.font.pointSize
|
||||||
property var contactlist: []
|
property var contactlist: []
|
||||||
property real mm: osSettings.osType=="Android"?Screen.pixelDensity:Screen.pixelDensity*1.5
|
property real mm: osSettings.osType=="Android"?Screen.pixelDensity:Screen.pixelDensity*1.5
|
||||||
|
@ -58,8 +58,10 @@ ApplicationWindow{
|
||||||
signal newstypeSignal(var type)
|
signal newstypeSignal(var type)
|
||||||
signal friendsSignal(var username)
|
signal friendsSignal(var username)
|
||||||
signal contactdetailsSignal(var contact)
|
signal contactdetailsSignal(var contact)
|
||||||
|
signal contactRefreshSignal()
|
||||||
signal searchSignal (var searchterm)
|
signal searchSignal (var searchterm)
|
||||||
signal eventSignal(var contact)
|
signal eventSignal(var contact)
|
||||||
|
signal eventcreateSignal(var event)
|
||||||
signal uploadSignal(var urls)
|
signal uploadSignal(var urls)
|
||||||
signal sendtextSignal(var intenttext)
|
signal sendtextSignal(var intenttext)
|
||||||
signal changeimage(var method, var type, var id)
|
signal changeimage(var method, var type, var id)
|
||||||
|
@ -74,9 +76,8 @@ ApplicationWindow{
|
||||||
Material.theme: Material.System
|
Material.theme: Material.System
|
||||||
|
|
||||||
function onLoginChanged(login){
|
function onLoginChanged(login){
|
||||||
if(login==""){rootstackView.push("qrc:/qml/configqml/AccountPage.qml")}
|
if(login=="" || login==null){rootstackView.push("qrc:/qml/configqml/AccountPage.qml")}
|
||||||
else{
|
else{
|
||||||
if (login.newsViewType!="" || login.newsViewType!=null){newstab.newstabstatus=login.newsViewType;}
|
|
||||||
Newsjs.getCurrentContacts(login,db,function(contacts){
|
Newsjs.getCurrentContacts(login,db,function(contacts){
|
||||||
contactlist=contacts})}
|
contactlist=contacts})}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/qml/genericqml
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/qml/newsqml
|
|
|
@ -1 +0,0 @@
|
||||||
../../source-linux/qml/photoqml
|
|
|
@ -1 +0,0 @@
|
||||||
../source-linux/qtquickcontrols2.conf
|
|
|
@ -1 +0,0 @@
|
||||||
../source-linux/translations
|
|
|
@ -1,45 +0,0 @@
|
||||||
cmake_minimum_required(VERSION 3.1.0)
|
|
||||||
|
|
||||||
project(friendiqa VERSION 0.6 LANGUAGES CXX)
|
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
set(CMAKE_AUTORCC ON)
|
|
||||||
set(CMAKE_AUTOUIC ON)
|
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_LESS "3.7.0")
|
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(Qt5 COMPONENTS Widgets Quick Sql DBus REQUIRED)
|
|
||||||
|
|
||||||
set(MOC_SOURCES common/uploadableimage.h
|
|
||||||
common/xhr.h
|
|
||||||
common/filesystem.h
|
|
||||||
common/remoteauthasyncimageprovider.h
|
|
||||||
common/updatenews.h
|
|
||||||
common/alarm.h)
|
|
||||||
|
|
||||||
set(SOURCES common/friendiqa.cpp
|
|
||||||
common/uploadableimage.cpp
|
|
||||||
common/xhr.cpp
|
|
||||||
common/filesystem.cpp
|
|
||||||
common/remoteauthasyncimageprovider.cpp
|
|
||||||
common/updatenews.cpp
|
|
||||||
common/alarmlinux.cpp)
|
|
||||||
|
|
||||||
include_directories(common)
|
|
||||||
|
|
||||||
add_executable(friendiqa ${SOURCES} ${MOC_SOURCES} application.qrc)
|
|
||||||
|
|
||||||
target_link_libraries(friendiqa Qt::Core)
|
|
||||||
target_link_libraries(friendiqa Qt::Widgets)
|
|
||||||
target_link_libraries(friendiqa Qt::Quick)
|
|
||||||
target_link_libraries(friendiqa Qt::Sql)
|
|
||||||
target_link_libraries(friendiqa Qt::DBus)
|
|
||||||
|
|
||||||
install(TARGETS friendiqa DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
||||||
install(FILES images/de.manic.Friendiqa.desktop DESTINATION share/applications)
|
|
||||||
install(FILES images/de.manic.Friendiqa.svg DESTINATION share/icons/hicolor/scalable/apps)
|
|
|
@ -1,256 +0,0 @@
|
||||||
<RCC>
|
|
||||||
<qresource prefix="/">
|
|
||||||
<file>qtquickcontrols2.conf</file>
|
|
||||||
<file>qml/friendiqa.qml</file>
|
|
||||||
<file>qml/newsqml/NewsStack.qml</file>
|
|
||||||
<file>qml/newsqml/NewsTab.qml</file>
|
|
||||||
<file>qml/newsqml/Newsitem.qml</file>
|
|
||||||
<file>qml/newsqml/MessageSend.qml</file>
|
|
||||||
<file>qml/newsqml/Conversation.qml</file>
|
|
||||||
<file>qml/newsqml/FriendicaActivities.qml</file>
|
|
||||||
<file>qml/newsqml/Hashtag.qml</file>
|
|
||||||
<file>qml/newsqml/NewsImage.qml</file>
|
|
||||||
<file>qml/newsqml/NewsVideo.qml</file>
|
|
||||||
<file>qml/newsqml/ContactPage.qml</file>
|
|
||||||
<file>qml/newsqml/NewsVideoLarge.qml</file>
|
|
||||||
<file>qml/newsqml/SmileyDialog.qml</file>
|
|
||||||
<file>qml/contactqml/FriendsTab.qml</file>
|
|
||||||
<file>qml/contactqml/GroupComponent.qml</file>
|
|
||||||
<file>qml/contactqml/ProfileComponent.qml</file>
|
|
||||||
<file>qml/contactqml/Contactlist.qml</file>
|
|
||||||
<file>qml/photoqml/PhotoComponent.qml</file>
|
|
||||||
<file>qml/photoqml/PhotogroupComponent.qml</file>
|
|
||||||
<file>qml/photoqml/PhotoTab.qml</file>
|
|
||||||
<file>qml/photoqml/ImageUploadDialog.qml</file>
|
|
||||||
<file>qml/genericqml/ImagePicker.qml</file>
|
|
||||||
<file>qml/genericqml/ImagePickerLinux.qml</file>
|
|
||||||
<file>qml/genericqml/Search.qml</file>
|
|
||||||
<file>qml/genericqml/IntentReceiver.qml</file>
|
|
||||||
<file>qml/genericqml/MButton.qml</file>
|
|
||||||
<file>qml/genericqml/LinuxSync.qml</file>
|
|
||||||
<file>qml/genericqml/BlueButton.qml</file>
|
|
||||||
<file>qml/genericqml/ContactComponent.qml</file>
|
|
||||||
<file>qml/genericqml/PermissionDialog.qml</file>
|
|
||||||
<file>qml/calendarqml/CalendarTab.qml</file>
|
|
||||||
<file>qml/calendarqml/CalendarDay.qml</file>
|
|
||||||
<file>qml/calendarqml/EventList.qml</file>
|
|
||||||
<file>qml/configqml/AccountPage.qml</file>
|
|
||||||
<file>qml/configqml/SyncConfig.qml</file>
|
|
||||||
<file>qml/configqml/SyncComponent.qml</file>
|
|
||||||
<file>qml/configqml/InfoBox.qml</file>
|
|
||||||
<file>qml/configqml/ConfigPage.qml</file>
|
|
||||||
<file>qml/configqml/OSSettingsAndroid.qml</file>
|
|
||||||
<file>qml/configqml/OSSettingsLinux.qml</file>
|
|
||||||
<file>js/image.js</file>
|
|
||||||
<file>js/yplayer.html</file>
|
|
||||||
<file>js/layout.js</file>
|
|
||||||
<file>js/photoworker.js</file>
|
|
||||||
<file>js/service.js</file>
|
|
||||||
<file>js/news.js</file>
|
|
||||||
<file>js/newsworker.js</file>
|
|
||||||
<file>js/helper.js</file>
|
|
||||||
<file>js/smiley.js</file>
|
|
||||||
<file>translations/friendiqa-it.ts</file>
|
|
||||||
<file>translations/friendiqa-it.qm</file>
|
|
||||||
<file>translations/friendiqa-de.qm</file>
|
|
||||||
<file>translations/friendiqa-de.ts</file>
|
|
||||||
<file>translations/friendiqa-es.qm</file>
|
|
||||||
<file>translations/friendiqa-es.ts</file>
|
|
||||||
<file>images/defaultcontact.jpg</file>
|
|
||||||
<file>images/fontawesome-webfont.ttf</file>
|
|
||||||
<file>images/folder-blue.png</file>
|
|
||||||
<file>images/smileys/animals/bee.gif</file>
|
|
||||||
<file>images/smileys/animals/bigspider.gif</file>
|
|
||||||
<file>images/smileys/animals/bunny.gif</file>
|
|
||||||
<file>images/smileys/animals/bunnyflowers.gif</file>
|
|
||||||
<file>images/smileys/animals/cat.gif</file>
|
|
||||||
<file>images/smileys/animals/chick.gif</file>
|
|
||||||
<file>images/smileys/animals/cow.gif</file>
|
|
||||||
<file>images/smileys/animals/crab.gif</file>
|
|
||||||
<file>images/smileys/animals/dog.gif</file>
|
|
||||||
<file>images/smileys/animals/dolphin.gif</file>
|
|
||||||
<file>images/smileys/animals/dragonfly.gif</file>
|
|
||||||
<file>images/smileys/animals/elephant.gif</file>
|
|
||||||
<file>images/smileys/animals/fish.gif</file>
|
|
||||||
<file>images/smileys/animals/frog.gif</file>
|
|
||||||
<file>images/smileys/animals/giraffe.gif</file>
|
|
||||||
<file>images/smileys/animals/hamster.gif</file>
|
|
||||||
<file>images/smileys/animals/horse.gif</file>
|
|
||||||
<file>images/smileys/animals/ladybird.gif</file>
|
|
||||||
<file>images/smileys/animals/monkey.gif</file>
|
|
||||||
<file>images/smileys/animals/parrot.gif</file>
|
|
||||||
<file>images/smileys/animals/pig.gif</file>
|
|
||||||
<file>images/smileys/animals/sheep.gif</file>
|
|
||||||
<file>images/smileys/animals/snail.gif</file>
|
|
||||||
<file>images/smileys/animals/tux.gif</file>
|
|
||||||
<file>images/smileys/babies/baby.gif</file>
|
|
||||||
<file>images/smileys/babies/babycot.gif</file>
|
|
||||||
<file>images/smileys/babies/pregnant.gif</file>
|
|
||||||
<file>images/smileys/babies/stork.gif</file>
|
|
||||||
<file>images/smileys/confused/confused.gif</file>
|
|
||||||
<file>images/smileys/confused/dazed.gif</file>
|
|
||||||
<file>images/smileys/confused/shrug.gif</file>
|
|
||||||
<file>images/smileys/confused/stupid.gif</file>
|
|
||||||
<file>images/smileys/cool/affro.gif</file>
|
|
||||||
<file>images/smileys/cool/cool.gif</file>
|
|
||||||
<file>images/smileys/devilangel/angel.gif</file>
|
|
||||||
<file>images/smileys/devilangel/blondedevil.gif</file>
|
|
||||||
<file>images/smileys/devilangel/catdevil.gif</file>
|
|
||||||
<file>images/smileys/devilangel/cherub.gif</file>
|
|
||||||
<file>images/smileys/devilangel/daseesaw.gif</file>
|
|
||||||
<file>images/smileys/devilangel/devil.gif</file>
|
|
||||||
<file>images/smileys/devilangel/graveside.gif</file>
|
|
||||||
<file>images/smileys/devilangel/saint.gif</file>
|
|
||||||
<file>images/smileys/devilangel/turnevil.gif</file>
|
|
||||||
<file>images/smileys/disgust/fartblush.gif</file>
|
|
||||||
<file>images/smileys/disgust/fartinbed.gif</file>
|
|
||||||
<file>images/smileys/disgust/toilet.gif</file>
|
|
||||||
<file>images/smileys/disgust/vomit.gif</file>
|
|
||||||
<file>images/smileys/drink/tea.gif</file>
|
|
||||||
<file>images/smileys/drool/drool.gif</file>
|
|
||||||
<file>images/smileys/fantasy/alienmonster.gif</file>
|
|
||||||
<file>images/smileys/fantasy/barbarian.gif</file>
|
|
||||||
<file>images/smileys/fantasy/dinosaur.gif</file>
|
|
||||||
<file>images/smileys/fantasy/dragon.gif</file>
|
|
||||||
<file>images/smileys/fantasy/dragonwhelp.gif</file>
|
|
||||||
<file>images/smileys/fantasy/ghost.gif</file>
|
|
||||||
<file>images/smileys/fantasy/mummy.gif</file>
|
|
||||||
<file>images/smileys/fight/2guns.gif</file>
|
|
||||||
<file>images/smileys/fight/acid.gif</file>
|
|
||||||
<file>images/smileys/fight/alienfight.gif</file>
|
|
||||||
<file>images/smileys/fight/alpha.png</file>
|
|
||||||
<file>images/smileys/fight/army.gif</file>
|
|
||||||
<file>images/smileys/fight/arrowhead.gif</file>
|
|
||||||
<file>images/smileys/fight/bfg.gif</file>
|
|
||||||
<file>images/smileys/fight/bowman.gif</file>
|
|
||||||
<file>images/smileys/fight/chainsaw.gif</file>
|
|
||||||
<file>images/smileys/fight/crossbow.gif</file>
|
|
||||||
<file>images/smileys/fight/crusader.gif</file>
|
|
||||||
<file>images/smileys/fight/dead.gif</file>
|
|
||||||
<file>images/smileys/fight/gangs.gif</file>
|
|
||||||
<file>images/smileys/fight/hammersplat.gif</file>
|
|
||||||
<file>images/smileys/fight/lasergun.gif</file>
|
|
||||||
<file>images/smileys/fight/machinegun.gif</file>
|
|
||||||
<file>images/smileys/fight/marine.gif</file>
|
|
||||||
<file>images/smileys/fight/sabre.gif</file>
|
|
||||||
<file>images/smileys/fight/samurai.gif</file>
|
|
||||||
<file>images/smileys/fight/tank.gif</file>
|
|
||||||
<file>images/smileys/fight/viking.gif</file>
|
|
||||||
<file>images/smileys/food/apple.gif</file>
|
|
||||||
<file>images/smileys/food/banana.gif</file>
|
|
||||||
<file>images/smileys/food/birthdaycake.gif</file>
|
|
||||||
<file>images/smileys/food/broccoli.gif</file>
|
|
||||||
<file>images/smileys/food/cake.gif</file>
|
|
||||||
<file>images/smileys/food/carrot.gif</file>
|
|
||||||
<file>images/smileys/food/cooking.gif</file>
|
|
||||||
<file>images/smileys/food/fryegg.gif</file>
|
|
||||||
<file>images/smileys/food/popcorn.gif</file>
|
|
||||||
<file>images/smileys/food/tomato.gif</file>
|
|
||||||
<file>images/smileys/happy/cloud9.gif</file>
|
|
||||||
<file>images/smileys/happy/tearsofjoy.gif</file>
|
|
||||||
<file>images/smileys/laugh/hahaha.gif</file>
|
|
||||||
<file>images/smileys/laugh/loltv.gif</file>
|
|
||||||
<file>images/smileys/laugh/rofl.gif</file>
|
|
||||||
<file>images/smileys/love/iloveyou.gif</file>
|
|
||||||
<file>images/smileys/love/inlove.gif</file>
|
|
||||||
<file>images/smileys/love/love.gif</file>
|
|
||||||
<file>images/smileys/love/lovebear.gif</file>
|
|
||||||
<file>images/smileys/love/lovebed.gif</file>
|
|
||||||
<file>images/smileys/love/loveheart.gif</file>
|
|
||||||
<file>images/smileys/music/dj.gif</file>
|
|
||||||
<file>images/smileys/music/drums.gif</file>
|
|
||||||
<file>images/smileys/music/elvis.gif</file>
|
|
||||||
<file>images/smileys/music/guitar.gif</file>
|
|
||||||
<file>images/smileys/music/trumpet.gif</file>
|
|
||||||
<file>images/smileys/music/violin.gif</file>
|
|
||||||
<file>images/smileys/oldcore/beard.png</file>
|
|
||||||
<file>images/smileys/oldcore/headbang.gif</file>
|
|
||||||
<file>images/smileys/oldcore/laughing.gif</file>
|
|
||||||
<file>images/smileys/oldcore/shaka.gif</file>
|
|
||||||
<file>images/smileys/oldcore/surprised.gif</file>
|
|
||||||
<file>images/smileys/oldcore/whitebeard.png</file>
|
|
||||||
<file>images/smileys/respect/bow.gif</file>
|
|
||||||
<file>images/smileys/respect/bravo.gif</file>
|
|
||||||
<file>images/smileys/respect/hailking.gif</file>
|
|
||||||
<file>images/smileys/respect/number1.gif</file>
|
|
||||||
<file>images/smileys/sad/crying.png</file>
|
|
||||||
<file>images/smileys/sad/prisoner.gif</file>
|
|
||||||
<file>images/smileys/sad/sigh.gif</file>
|
|
||||||
<file>images/smileys/smoking/smoking.gif</file>
|
|
||||||
<file>images/smileys/sport/archery.gif</file>
|
|
||||||
<file>images/smileys/sport/basketball.gif</file>
|
|
||||||
<file>images/smileys/sport/bowling.gif</file>
|
|
||||||
<file>images/smileys/sport/cycling.gif</file>
|
|
||||||
<file>images/smileys/sport/darts.gif</file>
|
|
||||||
<file>images/smileys/sport/fencing.gif</file>
|
|
||||||
<file>images/smileys/sport/football.gif</file>
|
|
||||||
<file>images/smileys/sport/golf.gif</file>
|
|
||||||
<file>images/smileys/sport/horseriding.gif</file>
|
|
||||||
<file>images/smileys/sport/juggling.gif</file>
|
|
||||||
<file>images/smileys/sport/skipping.gif</file>
|
|
||||||
<file>images/smileys/sport/snooker.gif</file>
|
|
||||||
<file>images/smileys/sport/surfing.gif</file>
|
|
||||||
<file>images/smileys/sport/tennis.gif</file>
|
|
||||||
<file>images/smileys/tired/countsheep.gif</file>
|
|
||||||
<file>images/smileys/tired/hammock.gif</file>
|
|
||||||
<file>images/smileys/tired/pillow.gif</file>
|
|
||||||
<file>images/smileys/tired/yawn.gif</file>
|
|
||||||
<file>images/smileys/core/beer_mug.gif</file>
|
|
||||||
<file>images/smileys/core/coffee.gif</file>
|
|
||||||
<file>images/smileys/core/dislike.gif</file>
|
|
||||||
<file>images/smileys/core/friendica-16.png</file>
|
|
||||||
<file>images/smileys/core/like.gif</file>
|
|
||||||
<file>images/smileys/core/rm-16.png</file>
|
|
||||||
<file>images/smileys/core/smiley-bangheaddesk.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-brokenheart.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-cool.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-cry.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-embarassed.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-facepalm.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-foot-in-mouth.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-heart.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-kiss.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-laughing.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-Oo.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-smile.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-surprised.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-thumbsup.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-tongue-out.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-undecided.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-wink.gif</file>
|
|
||||||
<file>images/smileys/core/smiley-frown.gif</file>
|
|
||||||
<file>images/smileys/adult/bong.gif</file>
|
|
||||||
<file>images/smileys/adult/drunk.gif</file>
|
|
||||||
<file>images/smileys/adult/finger.gif</file>
|
|
||||||
<file>images/smileys/adult/sperm.gif</file>
|
|
||||||
<file>images/smileys/adult/tits.gif</file>
|
|
||||||
<file>images/addImage.png</file>
|
|
||||||
<file>common/filesystem.cpp</file>
|
|
||||||
<file>common/filesystem.h</file>
|
|
||||||
<file>common/friendiqa.cpp</file>
|
|
||||||
<file>common/uploadableimage.cpp</file>
|
|
||||||
<file>common/uploadableimage.h</file>
|
|
||||||
<file>common/xhr.cpp</file>
|
|
||||||
<file>common/xhr.h</file>
|
|
||||||
<file>qml/newsqml/MoreComments.qml</file>
|
|
||||||
<file>qml/newsqml/NewsPhotolist.qml</file>
|
|
||||||
<file>qml/genericqml/DrawerAccountComponent.qml</file>
|
|
||||||
<file>qml/configqml/LeftDrawerScrollview.qml</file>
|
|
||||||
<file>qml/genericqml/LeftDrawerLinux.qml</file>
|
|
||||||
<file>qml/genericqml/LeftDrawerAndroid.qml</file>
|
|
||||||
<file>qml/genericqml/DrawerAccountComponentContacts.qml</file>
|
|
||||||
<file>qml/contactqml/ProfileTab.qml</file>
|
|
||||||
<file>qml/contactqml/FriendsListTab.qml</file>
|
|
||||||
<file>qml/contactqml/GroupsListTab.qml</file>
|
|
||||||
<file>qml/calendarqml/EventListItem.qml</file>
|
|
||||||
<file>translations/friendiqa-hu.qm</file>
|
|
||||||
<file>translations/friendiqa-hu.ts</file>
|
|
||||||
<file>images/Friendiqa.png</file>
|
|
||||||
<file>images/Friendica_monochrome.png</file>
|
|
||||||
<file>qml/configqml/ConfigAppearancePage.qml</file>
|
|
||||||
<file>qml/configqml/ConfigStartPage.qml</file>
|
|
||||||
<file>qml/contactqml/ContactsSearchPage.qml</file>
|
|
||||||
<file>images/Friendiqa.ico</file>
|
|
||||||
<file>qml/calendarqml/EventCreate.qml</file>
|
|
||||||
</qresource>
|
|
||||||
</RCC>
|
|
|
@ -1,123 +0,0 @@
|
||||||
// This file is part of Friendiqa
|
|
||||||
// https://github.com/lubuwest/Friendiqa
|
|
||||||
// Copyright (C) 2017 Marco R. <thomasschmidt45@gmx.net>
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// In addition, as a special exception, the copyright holders give
|
|
||||||
// permission to link the code of portions of this program with the
|
|
||||||
// OpenSSL library under certain conditions as described in each
|
|
||||||
// individual source file, and distribute linked combinations including
|
|
||||||
// the two.
|
|
||||||
//
|
|
||||||
// You must obey the GNU General Public License in all respects for all
|
|
||||||
// of the code used other than OpenSSL. If you modify file(s) with this
|
|
||||||
// exception, you may extend this exception to your version of the
|
|
||||||
// file(s), but you are not obligated to do so. If you do not wish to do
|
|
||||||
// so, delete this exception statement from your version. If you delete
|
|
||||||
// this exception statement from all source files in the program, then
|
|
||||||
// also delete it here.
|
|
||||||
//
|
|
||||||
// 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 General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
#include <QApplication>
|
|
||||||
#include <QtQml/QQmlEngine>
|
|
||||||
//#include <QtWebEngine>
|
|
||||||
//#include <QAndroidService>
|
|
||||||
//#include <QtAndroid>
|
|
||||||
#include <QtQuick>
|
|
||||||
#include "xhr.h"
|
|
||||||
#include "updatenews.h"
|
|
||||||
#include "filesystem.h"
|
|
||||||
#include "remoteauthasyncimageprovider.h"
|
|
||||||
#include "alarm.h"
|
|
||||||
//#include "AndroidNative/systemdispatcher.h"
|
|
||||||
//#include "AndroidNative/environment.h"
|
|
||||||
//#include "AndroidNative/debug.h"
|
|
||||||
//#include "AndroidNative/mediascannerconnection.h"
|
|
||||||
//#include <QQuickWidget>
|
|
||||||
#include <QSystemTrayIcon>
|
|
||||||
#include <QQmlContext>
|
|
||||||
|
|
||||||
// Declare a user-defined data type to work with an icon in QML
|
|
||||||
Q_DECLARE_METATYPE(QSystemTrayIcon::ActivationReason)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef Q_OS_ANDROID
|
|
||||||
#include <QtAndroidExtras/QAndroidJniObject>
|
|
||||||
#include <QtAndroidExtras/QAndroidJniEnvironment>
|
|
||||||
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) {
|
|
||||||
Q_UNUSED(vm);
|
|
||||||
qDebug("NativeInterface::JNI_OnLoad()"); // It must call this function within JNI_OnLoad to enable System Dispatcher
|
|
||||||
|
|
||||||
AndroidNative::SystemDispatcher::registerNatives();
|
|
||||||
return JNI_VERSION_1_6;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
//qDebug()<< "argv Friendiqa"<< argv[0] <<" argv2" <<argv[1];
|
|
||||||
if (qstrcmp(argv[1],"-service")==0){
|
|
||||||
//qDebug()<<"FriendiqaMain Service";
|
|
||||||
//QAndroidService app(argc, argv);
|
|
||||||
UPDATENEWS* updatenews= UPDATENEWS::instance();
|
|
||||||
updatenews->setDatabase();
|
|
||||||
updatenews->login();
|
|
||||||
updatenews->setSyncAll(true);
|
|
||||||
updatenews->startsync();
|
|
||||||
|
|
||||||
//app.connect (updatenews,SIGNAL(quitapp()),&app,SLOT(quit()));
|
|
||||||
//QtAndroid::androidService().callMethod<void>("stopSelf");
|
|
||||||
//return app.exec();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
//QtWebEngine::initialize();
|
|
||||||
QApplication app(argc, argv);
|
|
||||||
QQmlApplicationEngine view;
|
|
||||||
//QQuickView view;
|
|
||||||
//view.setResizeMode(QQuickView::SizeRootObjectToView);
|
|
||||||
app.setWindowIcon(QIcon(":/images/Friendiqa.ico"));
|
|
||||||
QTranslator qtTranslator;
|
|
||||||
qtTranslator.load("friendiqa-" + QLocale::system().name(),":/translations");
|
|
||||||
app.installTranslator(&qtTranslator);
|
|
||||||
RemoteAuthAsyncImageProvider *imageProvider = new RemoteAuthAsyncImageProvider;
|
|
||||||
view.addImageProvider("remoteauthimage",imageProvider);
|
|
||||||
view.rootContext()->setContextProperty("remoteauth", imageProvider);
|
|
||||||
XHR* xhr = XHR::instance();
|
|
||||||
view.rootContext()->setContextProperty("xhr", xhr);
|
|
||||||
FILESYSTEM* filesystem = FILESYSTEM::instance();
|
|
||||||
if (qstrcmp(argv[1],"-background")==0){
|
|
||||||
filesystem->setVisibility(false);
|
|
||||||
} else{filesystem->setVisibility(true);}
|
|
||||||
|
|
||||||
view.rootContext()->setContextProperty("filesystem", filesystem);
|
|
||||||
ALARM* alarm = ALARM::instance();
|
|
||||||
view.rootContext()->setContextProperty("alarm", alarm);
|
|
||||||
UPDATENEWS* updatenews = UPDATENEWS::instance();
|
|
||||||
view.rootContext()->setContextProperty("updatenews", updatenews);
|
|
||||||
|
|
||||||
qmlRegisterType<QSystemTrayIcon>("QSystemTrayIcon", 1, 0, "QSystemTrayIcon");
|
|
||||||
qRegisterMetaType<QSystemTrayIcon::ActivationReason>("ActivationReason");
|
|
||||||
view.rootContext()->setContextProperty("iconTray", QIcon(":/images/Friendica_monochrome.png"));
|
|
||||||
view.rootContext()->setContextProperty("iconTrayAvailable", QSystemTrayIcon::isSystemTrayAvailable());
|
|
||||||
|
|
||||||
view.load(QUrl("qrc:/qml/friendiqa.qml"));
|
|
||||||
//view.show();
|
|
||||||
|
|
||||||
view.connect(view.rootContext()->engine(), SIGNAL(quit()), &app, SLOT(quit()));
|
|
||||||
return app.exec();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
# NOTICE:
|
|
||||||
#
|
|
||||||
# Application name defined in TARGET has a corresponding QML filename.
|
|
||||||
# If name defined in TARGET is changed, the following needs to be done
|
|
||||||
# to match new name:
|
|
||||||
# - corresponding QML filename must be changed
|
|
||||||
# - desktop icon filename must be changed
|
|
||||||
# - desktop filename must be changed
|
|
||||||
# - icon definition filename in desktop file must be changed
|
|
||||||
# - translation filenames have to be changed
|
|
||||||
|
|
||||||
# The name of your application
|
|
||||||
TEMPLATE = app
|
|
||||||
TARGET = friendiqa
|
|
||||||
CONFIG += release
|
|
||||||
QT += qml quick gui widgets sql webview dbus webengine
|
|
||||||
|
|
||||||
SOURCES += common/friendiqa.cpp \
|
|
||||||
common/uploadableimage.cpp \
|
|
||||||
common/xhr.cpp \
|
|
||||||
common/filesystem.cpp \
|
|
||||||
common/remoteauthasyncimageprovider.cpp \
|
|
||||||
common/updatenews.cpp \
|
|
||||||
common/alarmlinux.cpp
|
|
||||||
|
|
||||||
RESOURCES = application.qrc
|
|
||||||
|
|
||||||
OTHER_FILES += qml/friendiqa.qml \
|
|
||||||
translations/*.ts \
|
|
||||||
qml/*.qml
|
|
||||||
qml/newsqml/*.qml
|
|
||||||
qml/contactqml/*.qml
|
|
||||||
qml/photoqml/*.qml
|
|
||||||
qml/configqml/*.qml
|
|
||||||
js/*.js
|
|
||||||
|
|
||||||
TRANSLATIONS += translations/friendiqa-de.ts \
|
|
||||||
translations/friendiqa-es.ts \
|
|
||||||
translations/friendiqa-it.ts
|
|
||||||
HEADERS += \
|
|
||||||
common/uploadableimage.h \
|
|
||||||
common/xhr.h \
|
|
||||||
common/filesystem.h \
|
|
||||||
common/remoteauthasyncimageprovider.h \
|
|
||||||
common/updatenews.h \
|
|
||||||
common/alarm.h
|
|
||||||
|
|
||||||
DISTFILES += \
|
|
||||||
qml/calendarqml/*.qml \
|
|
||||||
translations/*.ts \
|
|
||||||
translations/*.qm \
|
|
||||||
qml/*.qml \
|
|
||||||
qml/newsqml/*.qml \
|
|
||||||
qml/contactqml/*.qml \
|
|
||||||
qml/photoqml/*.qml \
|
|
||||||
qml/configqml/*.qml \
|
|
||||||
js/*.js \
|
|
||||||
|
|
||||||
|
|
||||||
target.path=/usr/bin
|
|
||||||
desktop.path = /usr/share/applications
|
|
||||||
desktop.files = images/de.ma-nic.Friendiqa.desktop
|
|
||||||
icon.path = /usr/share/icons/hicolor/scalable/apps
|
|
||||||
icon.files = images/Friendiqa.svg
|
|
||||||
INSTALLS+=target desktop icon
|
|