Commit ee89a020 authored by Martin Straka's avatar Martin Straka

First prototype of mobile Datovka

parents
-----------------------------------------------------
Datovka - free mobile application for Datove schranky
-----------------------------------------------------
This file contains the list of people involved in the
development of mobile Datovka along its history. The development
of the Datovka project was started at the CZ.NIC Labs.
* PROJECT COORDINATOR:
----------------------
- Bedrich Kosata <bedrich.kosata@nic.cz>
* APPLICATION DEVELOPERS:
-------------------------
- Martin Straka <martin.straka@nic.cz>
- Karel Slany <karel.slany@nic.cz>
* APPLICATION MAINTAINERS:
--------------------------
- Martin Straka <martin.straka@nic.cz>
- Karel Slany <karel.slany@nic.cz>
This diff is collapsed.
0.0.1 / 2016-10-13
* First prototype of application mobile Datovka (alfa version for testing).
Required libraries
------------------
- Qt5.x
- QML 2.3
- Application requires the Qt sqlite database driver.
- OpenSSL
Compilation on Linux
--------------------
qmake
make
NOTE: Instructions for build and deployment of application to another platform will be added later.
Mobile version of application "Datovka" both for iOS, Android and WindowsPhone/WindowsMobile. It is based on Qt 5.7 (QtQuick/Qml together with C++). Same UI and functionality for all mobile platforms.
<?xml version="1.0"?>
<manifest package="cz.nic.mobiledatovka" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="@VERSION@" android:versionCode="1" android:installLocation="auto">
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="Datovka" android:icon="@drawable/icon">
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="Datovka" android:screenOrientation="unspecified" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!-- Application arguments -->
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
<!-- Application arguments -->
<meta-data android:name="android.app.lib_name" android:value="mobile-datovka"/>
<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="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/>
<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="-- %%USE_LOCAL_QT_LIBS%% --"/>
<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="-- %%INSERT_LOCAL_LIBS%% --"/>
<meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/>
<meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/>
<!-- 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"/>
<!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
<!-- Splash screen -->
<!-- Background running -->
<!-- Warning: changing this value to true may cause unexpected crashes if the
application still try to draw after
"applicationStateChanged(Qt::ApplicationSuspended)"
signal is sent! -->
<meta-data android:name="android.app.background_running" android:value="false"/>
<!-- Background running -->
<!-- auto screen scale factor -->
<meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/>
<!-- auto screen scale factor -->
<!-- extract android style -->
<!-- available android:values :
* full - useful QWidget & Quick Controls 1 apps
* 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
-->
<meta-data android:name="android.app.extract_android_style" android:value="full"/>
<!-- extract android style -->
</activity>
<!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
</application>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="16"/>
<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. -->
<!-- %%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 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
INCLUDEPATH += \
$$PWD \
src \
android/openssl/include/
equals(ANDROID_TARGET_ARCH, armeabi-v7a) {
LIBS = \
$${_PRO_FILE_PWD_}/android/openssl/armv7a/lib/libcrypto.a \
$${_PRO_FILE_PWD_}/android/openssl/armv7a/lib/libssl.a
}
equals(ANDROID_TARGET_ARCH, armeabi) {
LIBS = \
$${_PRO_FILE_PWD_}/android/openssl/arm/lib/libcrypto.a \
$${_PRO_FILE_PWD_}/android/openssl/arm/lib/libssl.a
}
equals(ANDROID_TARGET_ARCH, x86) {
LIBS = \
$${_PRO_FILE_PWD_}/android/openssl/x86/lib/libcrypto.a \
$${_PRO_FILE_PWD_}/android/openssl/x86/lib/libssl.a
}
DISTFILES += \
$${_PRO_FILE_PWD_}/android/AndroidManifest.xml
contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
ANDROID_EXTRA_LIBS = \
$${_PRO_FILE_PWD_}/android/openssl/armv7a/lib/libcrypto.so \
$${_PRO_FILE_PWD_}/android/openssl/armv7a/lib/libssl.so
}
contains(ANDROID_TARGET_ARCH,armeabi) {
ANDROID_EXTRA_LIBS = \
$${_PRO_FILE_PWD_}/android/openssl/arm/lib/libcrypto.so \
$${_PRO_FILE_PWD_}/android/openssl/arm/lib/libssl.so
}
contains(ANDROID_TARGET_ARCH,x86) {
ANDROID_EXTRA_LIBS = \
$${_PRO_FILE_PWD_}/android/openssl/x86/lib/libcrypto.so \
$${_PRO_FILE_PWD_}/android/openssl/x86/lib/libssl.so
}
# 1. Requiers Mingw and MSYS for openssl build on windows.
# 2. Install from https://sourceforge.net/projects/mingw/files/
# 3. Run C:\MinGW\msys\1.0\msys.bat
# 4. Unpack opeenssl tar.gz to home dir
# 5. Set compiler and run ./Configure with architecture param:
# (https://developer.android.com/ndk/guides/android_mk.html section TARGET_ARCH_ABI)
# ARM v7
export CC=/x/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc
export AR=/x/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar
export ANDROID_DEV=/x/android-ndk-r11c/platforms/android-9/arch-arm/usr
./Configure shared android-armv7
# ARM v6 and older
export CC=/x/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc
export AR=/x/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar
export ANDROID_DEV=/x/android-ndk-r11c/platforms/android-9/arch-arm/usr
./Configure shared android
# x86
export CC=/x/android-ndk-r11c/toolchains/x86-4.9/prebuilt/windows-x86_64/bin/i686-linux-android-gcc
export AR=/x/android-ndk-r11c/toolchains/x86-4.9/prebuilt/windows-x86_64/bin/i686-linux-android-ar
export ANDROID_DEV=/x/android-ndk-r11c/platforms/android-9/arch-x86/usr
./Configure shared android
# 6. Replace the following two lines that appear under "link-shared" and "do_$(SHLIB_TARGET)" make targets in Makefile:
# LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
# LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
# with
# LIBNAME=$$i \
# Run make:
make build_libs
\ No newline at end of file
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)
{
"images" : [
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "AppIcon_29px.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "AppIcon_58px.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "AppIcon_87px.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "AppIcon_80px.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "AppIcon_120px.png",
"scale" : "3x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "AppIcon_57px.png",
"scale" : "1x"
},
{
"size" : "57x57",
"idiom" : "iphone",
"filename" : "AppIcon_114px.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "AppIcon_120px.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "AppIcon_180px.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "AppIcon_29px.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "AppIcon_58px.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "AppIcon_40px.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "AppIcon_80px.png",
"scale" : "2x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "AppIcon_50px.png",
"scale" : "1x"
},
{
"size" : "50x50",
"idiom" : "ipad",
"filename" : "AppIcon_100px.png",
"scale" : "2x"
},
{
"size" : "72x72",
"idiom" : "ipad",
"filename" : "AppIcon_72px.png",
"scale" : "1x"
},
{
"size" : "72x72",
"idiom" : "ipad",
"filename" : "AppIcon_144px.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "AppIcon_76px.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "AppIcon_152px.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "AppIcon_167px.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"images" : [
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage_640px.png",
"scale" : "2x"
},
{
"extent" : "full-screen",
"idiom" : "iphone",
"subtype" : "retina4",
"filename" : "LaunchImage_640v2px.png",
"minimum-system-version" : "7.0",
"orientation" : "portrait",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage_768v2px.png",
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage_1024px.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage_1536px.png",
"scale" : "2x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "full-screen",
"minimum-system-version" : "7.0",
"filename" : "LaunchImage_2048px.png",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage_320px.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage_640px.png",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "iphone",
"extent" : "full-screen",
"filename" : "LaunchImage_640v2px.png",
"subtype" : "retina4",
"scale" : "2x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "to-status-bar",
"filename" : "LaunchImage_768v2pxnoSB.png",
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "to-status-bar",
"filename" : "LaunchImage_1024pxnoSB.png",
"scale" : "1x"
},
{
"orientation" : "portrait",
"idiom" : "ipad",
"extent" : "to-status-bar",
"filename" : "LaunchImage_1536v2px.png",
"scale" : "2x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
"extent" : "to-status-bar",
"filename" : "LaunchImage_2048pxnoSB.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Datovka</string>
<key>CFBundleExecutable</key>
<string>mobile-datovka</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>cz.nic.mobile-datovka</string>
<key>CFBundleName</key>
<string>Datovka</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>@VERSION@</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
<key>NSMainNibFile</key>
<string>LaunchScreen</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
INCLUDEPATH += \
$$PWD \
src \
ios/openssl/include/
LIBS = \
$${_PRO_FILE_PWD_}/ios/openssl/lib/libcrypto.a \
$${_PRO_FILE_PWD_}/ios/openssl/lib/libssl.a
HEADERS += \
ios/src/send_email_controller.h \
ios/src/doc_view_controller.h \
ios/src/ios_file_opener.h \
ios/src/url_opener.h
OBJECTIVE_SOURCES += \
ios/src/send_email_controller.mm \
ios/src/doc_view_controller.mm \
ios/src/ios_file_opener.mm \
ios/src/url_opener.mm
QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
QMAKE_INFO_PLIST = $${_PRO_FILE_PWD_}/ios/Info.plist
assets_catalogs.files = $$files($${_PRO_FILE_PWD_}/ios/*.xcassets)
QMAKE_BUNDLE_DATA += assets_catalogs
ios_icon.files = $$files($${_PRO_FILE_PWD_}/ios/Images.xcassets/AppIcon.appiconset/AppIcon*.png)
QMAKE_BUNDLE_DATA += ios_icon
app_launch_images.files = $$files($${_PRO_FILE_PWD_}/ios/Images.xcassets/LaunchImage.launchimage/LaunchImage*.png)
QMAKE_BUNDLE_DATA += app_launch_images
LIBS += -framework UIKit -framework MessageUI -framework MobileCoreServices