Commit 2755bfd0 authored by Matyáš Latner's avatar Matyáš Latner

Merge branch 'devel' into V3.3

parents b1a8aa84 5c55fc44
......@@ -30,6 +30,7 @@ android/gen/
*.iml
out/
com_crashlytics_export_strings.xml
captures
## Eclipse
.classpath
......
![Tablexia logo](https://gitlab.labs.nic.cz/labs/tablexia/raw/0efd78d10092b21472f8749ef673296502df034a/core/assets/common/screen/about/tablexia.png)
<br />
Tablexia is a modern educational application aiming to support the development of cognitive abilities. It is designed primarily for children with dyslexia in secondary schools. It should find its use in schools to supplement the standard teaching, as well as in pedagogical-psychological counseling offices and other counseling facilities for pupils with learning difficulties.
## <b>Build</b>
Project is working with git submodule [Tablexia-Model](https://gitlab.labs.nic.cz/labs/tablexia-model). Before building the application, it needs to be called:
```
git submodule update --init --recursive
```
<br />
Tablexia can be build by running the command:
```
./gradlew build
```
This will build all versions of application (Android, iOS, desktop). It will work only on OS X systems, as iOS application can be build only there.
<br />
<br />
For building specific version of application, run following commands:
<br />
<b>Android version</b>
```
./gradlew android:build
```
<br />
<b>iOS version</b>
```
./gradlew ios:build
```
<br />
<b>Desktop version</b>
```
./gradlew desktop:build
```
<br />
Final result of building application for each platform are 2 build types: RELEASE and DEBUG.
DEBUG version will show debug information on the screen.
## Gradle build parameters
File with build parameters should be located in `~/.gradle/gradle.properies`
<br />
<b>TABLEXIA_ASSETS_DOWNLOAD_URL</b>
URL address for downloading assets (textures, sounds...)
<br />
<b>TABLEXIA_ASSETS_UPLOAD_URL</b>
URL address for uploading assets, when application is built
<br />
<b>TABLEXIA_ASSETS_UPLOAD_USER</b>
User used for uploading assets
<br />
<b>TABLEXIA_SERVER_PROTOCOL</b>
Protocol of server
<br />
<b>TABLEXIA_SERVER_HOST</b>
Server host
<br />
<b>TABLEXIA_SERVER_PORT</b>
Server port
<br />
<b>TABLEXIA_SERVER_SECRET</b>
Password for the server
<br />
<b>TABLEXIA_SENTRY_DSN_DEBUG</b>
URL for Sentry server for collecting bugs, debug version
<br />
<b>TABLEXIA_SENTRY_DSN_RELEASE</b>
URL for Sentry server for collecting bugs, release version
<br />
## <b>Assets</b>
All graphic assets in application are connected into several atlas files. These atlases are then packed into .zip files.
<br />
<br />
<b>Location of files:</b>
<br />
`tablexia/build/assets/src`
Original assets files
`tablexia/build/assets/dest`
Atlas files
`tablexia/build/assets/pack`
Packed .zip files
<br />
In order to have these assets in application, .zip files has to be copied into this folder:
`tablexia/android/assets/.tablexia_devel/download`
<br />
This applies only for desktop version.
......@@ -60,8 +60,8 @@ game_averagescore_error=Durchschnittliche Fehlerzahl:
game_averagescore_duration=Durchschnittliche Spieldauer:
game_quit_question=Möchtest du wirklich das Spiel beenden?
sound_muted_question=[DE]Pro pokračování je zapotřebí mít zapnutý zvuk. Přeješ si nyní zvuk zapnout a pokračovat?[DE]
sound_muted_game_question=[DE]Pro pokračování ve hře je zapotřebí mít zapnutý zvuk. Přeješ si nyní zvuk zapnout a pokračovat?[DE]
sound_muted_question=Um fortzufahren ist es notwendig, dass der Ton eingeschalten ist. Möchtest du jetzt den Ton einschalten und fortfahren?
sound_muted_game_question=Um das Spiel fortzusetzen ist es notwendig, dass der Ton eingeschalten ist. Möchtest du jetzt den Ton einschalten und fortsetzen?
game_robbery_title=Einbrecher
game_robbery_description=Training des Arbeitsgedächtnisses
......@@ -191,7 +191,7 @@ user_rank_9=Kleiner Kommissar
user_rank_10=Besserwisser
user_rank_11=Oberrat
sync_request_dialog_text=Trage deine Ausweisnummer ein:
sync_request_dialog_text=Trage deine Ausweisnummer ein\:
sync_request_button=Account synchronisieren
game_runes_preloader1=**Podívej se na symboly v pásu vpravo.[DE]**
game_runes_preloader2_easy=**Najdi je na domech a označ dřív, než ti dojde čas.[DE]**
......
......@@ -6,24 +6,24 @@ mouse_0_1=Kde nic, tu nic. Medaile, ani salám.\r\nRadši mazej do práce, chyta
mouse_0_2=Tak co tu ještě okouníš?
mouse_0_3=Tobě přijde divný, že myš mluví?
mouse_0_4=To budou asi přeludy z toho prázdna tady.
mouse_4_1=Žádný bohatství tu ještě nemáš, ale aspoň něco.
mouse_5_1=Prostě pár trofejí... údivem z toho teda nepadám.
mouse_6_1=Bejt tebou, jdu lovit další, ať se máš čím chlubit.
mouse_4_1=Žádný bohatství tu ještě nemáš,\r\nale aspoň něco.
mouse_5_1=Prostě pár trofejí...\r\núdivem z toho teda nepadám.
mouse_6_1=Bejt tebou, jdu lovit další,\r\nať se máš čím chlubit.
mouse_9_1=Je vidět, že jsi na sobě pracoval, ale dobří\r\ndetektivové mají trofejí ještě víc.
mouse_13_1=Tak se pokochej a zase do práce.
mouse_14_1=Tak ještě chvili pokoukat, pohladit,\r\npřeleštit, ale neusínej na vavřínech.
mouse_16_1=Možná, že to dotáhneš daleko.
mouse_17_1=Ty mě překvapuješ! Vypadá to, že to myslíš vážně.
mouse_19_1=Je vidět, že jsi na svou sbírku trofejí pyšný. Taky už máš na co.
mouse_17_1=Ty mě překvapuješ! Vypadá to,\r\nže to myslíš vážně.
mouse_19_1=Je vidět, že jsi na svou sbírku trofejí pyšný.\r\nTaky už máš na co.
mouse_21_1=Možná, že o tobě ještě uslyšíme.
mouse_21_2=Možná taky ne, to záleží na tom,\r\njak na sobě ještě zapracuješ.
mouse_21_3=Když tu budeš ještě okounět, tak o tobě\r\nspíš už neuslyšíme.
mouse_25_1=Zas tolik se nenaparuj, ještě ti jich pár chybí.
mouse_28_1=Že zbylé trofeje za chvíli posbíráš? To říkal každý detektiv.
mouse_29_1=Pro mě za mě, klidně si je prohlížej, ale ty zbylé trofeje se samy neposbírají.
mouse_25_1=Zas tolik se nenaparuj,\r\nještě ti jich pár chybí.
mouse_28_1=Že zbylé trofeje za chvíli posbíráš?\r\nTo říkal každý detektiv.
mouse_29_1=Pro mě za mě, klidně si je prohlížej,\r\nale ty zbylé trofeje se samy neposbírají.
mouse_30_1=Ó jistě, detektiv tvého formátu má na všechno dost času.
mouse_31_1=To vypadá, že je tu\r\nněkdo hodně ambiciózní.
mouse_32_1=To není samo sebou sesbírat skoro všechny trofeje.
mouse_31_1=To vypadá, že je tu někdo hodně ambiciózní.
mouse_32_1=To není samo sebou sesbírat skoro\r\nvšechny trofeje.
mouse_33_1=Vsadím svůj ocas, že ty zbylé už neposbíráš.
mouse_34_1=Tolik trofejí. Úctyhodný výkon.
mouse_36_1=Tak to tu ještě nebylo!
......
......@@ -6,31 +6,31 @@ mouse_0_1=Von nichts kommt nichts. Hier ist noch keine Medaille.\r\nMach dich li
mouse_0_2=Na was stehst du hier noch rum?
mouse_0_3=Du wunderst dich, dass eine Maus sprechen kann?
mouse_0_4=Das ist wohl eine Fata Morgana von der Leere hier.
mouse_4_1=Du hast hier noch keinen Reichtum, aber wenigstens etwas.
mouse_5_1=Nur ein paar Trophäen ... also vor Staunen fall ich noch nicht um.
mouse_6_1=An deiner Stelle würde ich noch weitere ergattern, dann kannst du damit prahlen.
mouse_9_1=Man sieht, dass du an dir gearbeitet hast, aber gute\r\nDetektive haben noch mehr Trophäen.
mouse_4_1=Du hast hier noch keinen Reichtum,\r\naber wenigstens etwas.
mouse_5_1=Nur ein paar Trophäen...\r\nalso vor Staunen fall ich noch nicht um.
mouse_6_1=An deiner Stelle würde ich noch weitere ergattern,\r\ndann kannst du damit prahlen.
mouse_9_1=Man sieht, dass du an dir gearbeitet hast,\r\naber gute Detektive haben noch mehr Trophäen.
mouse_13_1=Dann schau dich kurz um und wieder an die Arbeit.
mouse_14_1=Noch ein wenig schauen, streicheln,\r\npolieren, aber ruh dich nicht auf deinen Lorbeeren aus.
mouse_14_1=Noch ein wenig schauen, streicheln, polieren,\r\naber ruh dich nicht auf deinen Lorbeeren aus.
mouse_16_1=Vielleicht bringst du es weit.
mouse_17_1=Du überraschst mich! Es sieht aus, als würdest du es ernst meinen.
mouse_19_1=Man sieht, dass du auf deine Trophäensammlung stolz bist. Du hast auch allen Grund.
mouse_17_1=Du überraschst mich! Es sieht aus,\r\nals würdest du es ernst meinen.
mouse_19_1=Man sieht, dass du auf deine Trophäensammlung\r\nstolz bist. Du hast auch allen Grund.
mouse_21_1=Vielleicht hören wir noch etwas von dir.
mouse_21_2=Vielleicht auch nicht, das hängt davon ab,\r\nwie sehr du noch an dir arbeitest.
mouse_21_3=Wenn du dir hier nur die Trophäen anschaust, dann wird man von dir\r\neher nichts mehr hören.
mouse_25_1=Gib aber nicht so viel damit an, dir fehlen noch ein paar Trophäen.
mouse_28_1=Die fehlenden Trophäen sammelst du\r\nsicher in einer Weile, richtig? Das hat jeder Detektiv/jede Detektivin gesagt.
mouse_21_3=Wenn du dir hier nur die Trophäen anschaust,\r\ndann wird man von dir\r\neher nichts mehr hören.
mouse_25_1=Gib aber nicht so viel damit an,\r\ndir fehlen noch ein paar Trophäen.
mouse_28_1=Die fehlenden Trophäen sammelst\r\ndu sicher in einer Weile, richtig?\r\nDas hat jeder Detektiv/jede Detektivin gesagt.
mouse_29_1=Meinetwegen, schau sie dir ruhig\r\nan, aber die fehlenden\r\nTrophäen sammeln sich nicht von allein.
mouse_30_1=Na sicher, ein Detektiv/eine Detektivin von deinem Format hat für alles genügend Zeit.
mouse_30_1=Na sicher, ein Detektiv/eine Detektivin\r\nvon deinem Format hat für alles genügend Zeit.
mouse_31_1=Es sieht so aus, dass hier\r\njemand große Ambitionen hat.
mouse_32_1=Das geht nicht von allein, fast alle Trophäen zu sammeln.
mouse_33_1=Ich verwette meine Schneidezähne, dass du die übrigen nicht mehr einsammelst.
mouse_32_1=Das geht nicht von allein,\r\nfast alle Trophäen zu sammeln.
mouse_33_1=Ich verwette meine Schneidezähne,\r\ndass du die übrigen nicht mehr einsammelst.
mouse_34_1=So viele Trophäen. Respektable Leistung.
mouse_36_1=Na das hat es hier noch nicht gegeben!
mouse_36_2=Alle Ehre, das habe ich noch nicht gesehen.\r\nUnd ich wohne hier schon ganz schön lange.
mouse_36_3=Davon werden sich noch meine Enkel erzählen.
mouse_rankup=Herzlichen Glückwunsch zur Beförderung! Mach weiter so!
mouse_rankup=Herzlichen Glückwunsch zur Beförderung!\r\nMach weiter so!
# <!-- Skrin s hodnostmi -->
badge_cabinet_list=Dienstgradliste
......
......@@ -2,32 +2,32 @@ count_sum=Celkom
mouse_bubble=Čože to myška povedala?
# <!-- Myška -->
mouse_0_1=Kde nič, tu nič. Ani medaile, ani saláma. Radšej utekaj do práce chytať lupičov.
mouse_0_1=Kde nič, tu nič. Ani medaile, ani saláma.\r\nRadšej utekaj do práce chytať lupičov.
mouse_0_2=Tak čo tu ešte okúňaš?
mouse_0_3=Tebe príde divné, že myš hovorí?
mouse_0_4=To budú asi preľudy z tohto prázdna.
mouse_4_1=Žiadne bohatstvo tu ešte nemáš, ale aspoň niečo.
mouse_5_1=Proste pár trofejí...údivom z toho teda nepadám.
mouse_6_1=Na tvojom mieste idem loviť ďalšie, nech sa máš čím pochváliť.
mouse_9_1=Je vidieť, že si na sebe pracoval, ale dobrí detektívovia majú trofejí ešte viac.
mouse_4_1=Žiadne bohatstvo tu ešte nemáš,\r\nale aspoň niečo.
mouse_5_1=Proste pár trofejí...\r\núdivom z toho teda nepadám.
mouse_6_1=Na tvojom mieste idem loviť ďalšie,\r\nnech sa máš čím pochváliť.
mouse_9_1=Je vidieť, že si na sebe pracoval,\r\nale dobrí detektívovia majú trofejí ešte viac.
mouse_13_1=Tak sa pokochaj a zase do práce.
mouse_14_1=Tak ešte chvíľu popozerať, pohladiť, preleštiť, ale nespí na vavrínoch.
mouse_14_1=Tak ešte chvíľu popozerať, pohladiť,\r\npreleštiť, ale nespí na vavrínoch.
mouse_16_1=Možno to ešte dotiahneš ďaleko.
mouse_17_1=Ty ma prekvapuješ! Vyzerá to tak, že to myslíš vážne.
mouse_19_1=Je vidieť, že si na svoju zbierku trofejí pyšný. Tiež už máš na čo.
mouse_17_1=Ty ma prekvapuješ!\r\nVyzerá to tak, že to myslíš vážne.
mouse_19_1=Je vidieť, že si na svoju zbierku trofejí pyšný.\r\nTiež už máš na čo.
mouse_21_1=Možno o tebe budeme ešte počuť.
mouse_21_2=Možno tiež nie, to záleží na tom, ako na sebe ešte zapracuješ.
mouse_21_3=Keď tu budeš ešte okúňať, tak o tebe skôr už nebudeme počuť.
mouse_25_1=Zas toľko sa nenaparuj, ešte ti pár Trofejí chýba.
mouse_28_1=Že zvyšné trofeje za chvíľu pozbieraš? To hovoril každý detektív.
mouse_29_1=Pre mňa za mňa, kľudne si ich prezeraj, ale tie zvyšné trofeje sa samé nepozbierajú.
mouse_30_1=Ó určite, detektív tvojho formátu má na všetko dosť času.
mouse_31_1=Vyzerá to tak, že je tu niekto veľmi ambiciózny.
mouse_32_1=To nieje len tak, vyzbierať skoro všetky trofeje.
mouse_21_2=Možno tiež nie, to záleží na tom,\r\nako na sebe ešte zapracuješ.
mouse_21_3=Keď tu budeš ešte okúňať,\r\ntak o tebe skôr už nebudeme počuť.
mouse_25_1=Zas toľko sa nenaparuj,\r\nešte ti pár Trofejí chýba.
mouse_28_1=Že zvyšné trofeje za chvíľu pozbieraš?\r\nTo hovoril každý detektív.
mouse_29_1=Pre mňa za mňa, kľudne si ich prezeraj,\r\nale tie zvyšné trofeje sa samé nepozbierajú.
mouse_30_1=Ó určite, detektív tvojho formátu\r\nmá na všetko dosť času.
mouse_31_1=Vyzerá to tak, že je tu niekto\r\nveľmi ambiciózny.
mouse_32_1=To nieje len tak, vyzbierať skoro\r\nvšetky trofeje.
mouse_33_1=Vsadím sa, že tie ostatné už nepozbieraš.
mouse_34_1=Toľko trofejí. Úctyhodný výkon.
mouse_36_1=Tak to tu ešte nebolo!
mouse_36_2=Všetká česť, toto som ešte nevidela. A to tu bývam už celkom dlho.
mouse_36_2=Všetká česť, toto som ešte nevidela.\r\nA to tu bývam už celkom dlho.
mouse_36_3=O tom si budú rozprávať ešte moje vnúčatá.
mouse_rankup=Gratulujem k povýšenie. Len tak ďalej!
......
......@@ -29,18 +29,21 @@ android {
applicationIdSuffix rootProject.applicationIdBranch + rootProject.applicationIdDebugSuffix
buildConfigField ASSETS_CHECKSUM_FIELD_TYPE, ASSETS_CHECKSUM_FIELD_NAME, rootProject.ext.assetsChecksumPattern
resValue "string", "app_name", "${tablexiaAppName}"
resValue "string", "sentry_dsn", project.hasProperty('TABLEXIA_SENTRY_DSN_DEBUG') ? "$TABLEXIA_SENTRY_DSN_DEBUG" : "$project.sentryDSNFallbackValue";
}
release {
debuggable false
applicationIdSuffix rootProject.applicationIdBranch
buildConfigField ASSETS_CHECKSUM_FIELD_TYPE, ASSETS_CHECKSUM_FIELD_NAME, rootProject.ext.assetsChecksumPattern
resValue "string", "app_name", "${tablexiaAppName}"
resValue "string", "sentry_dsn", project.hasProperty('TABLEXIA_SENTRY_DSN_RELEASE') ? "$TABLEXIA_SENTRY_DSN_RELEASE" : "$project.sentryDSNFallbackValue";
}
devel.initWith(buildTypes.debug)
devel {
applicationIdSuffix rootProject.applicationIdDevelSuffix
buildConfigField ASSETS_CHECKSUM_FIELD_TYPE, ASSETS_CHECKSUM_FIELD_NAME, rootProject.ext.assetsChecksumPattern
resValue "string", "app_name", "${tablexiaAppName}"
resValue "string", "sentry_dsn", "$project.sentryDSNFallbackValue";
}
}
......
......@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.net.ConnectivityManager;
import android.os.Build;
import android.os.Bundle;
import com.badlogic.gdx.Gdx;
......@@ -18,6 +19,7 @@ import cz.nic.tablexia.Tablexia;
import cz.nic.tablexia.TablexiaBuildConfig;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.debug.BuildConfig;
import cz.nic.tablexia.debug.R;
import cz.nic.tablexia.screen.loader.IConnectionManager;
import cz.nic.tablexia.util.Log;
......@@ -41,8 +43,10 @@ public class AndroidLauncher extends AndroidApplication {
getResources().getConfiguration().locale,
SQL_CONNECTION_TYPE,
new AndroidConnectionManager(getContext()),
getResources().getString(R.string.sentry_dsn),
HAS_SOFT_BACK_BUTTON,
savedInstanceState == null), config);
savedInstanceState == null,
Build.SERIAL), config);
if (TablexiaSettings.getInstance().getBuildType().isBugReport() && TablexiaBuildConfig.FLURRY_KEY != null) {
FlurryAgent.setLogEnabled(false);
......@@ -95,23 +99,34 @@ public class AndroidLauncher extends AndroidApplication {
@Override
public boolean isUsingMobileData() {
return getConnectionType() == ConnectionType.Mobile;
}
@Override
public ConnectionType getConnectionType() {
ConnectivityManager conMan = (ConnectivityManager) androidContext.getSystemService(Context.CONNECTIVITY_SERVICE);
//We are not connected to the internet at all...
//We are not connected to the internet at all...
if(conMan == null || conMan.getActiveNetworkInfo() == null)
return false;
return ConnectionType.Unknown;
//Is user using any of mobile internet types ? Hope I didn't miss any...
//Is user using any of mobile internet types ? Hope I didn't miss any...
switch (conMan.getActiveNetworkInfo().getType()) {
case ConnectivityManager.TYPE_MOBILE:
case ConnectivityManager.TYPE_MOBILE_DUN:
case ConnectivityManager.TYPE_MOBILE_HIPRI:
case ConnectivityManager.TYPE_MOBILE_MMS:
case ConnectivityManager.TYPE_MOBILE_SUPL:
return true;
return ConnectionType.Mobile;
case ConnectivityManager.TYPE_ETHERNET:
return ConnectionType.Ethernet;
case ConnectivityManager.TYPE_WIFI:
return ConnectionType.Wifi;
default:
return false;
return ConnectionType.Unknown;
}
}
}
......
......@@ -26,6 +26,9 @@ final assetsGameGlobalDirectory = "_global"
final assetsGameCommonDifficultyDirectory = "common"
final assetsGameExcludedDirectory = "excluded"
final String TABLEXIA_GIT_PATH = './'
final String MODEL_GIT_PATH = 'core/external/'
System.setProperty("javax.net.ssl.trustStore", new File("${project(":android").projectDir.absolutePath}/assets/keystore/tablexiaTrustKeystore").getAbsolutePath());
System.setProperty("javax.net.ssl.trustStorePassword", "tablexia");
......@@ -45,8 +48,10 @@ allprojects {
masterBranch = 'master'
applicationBaseId = 'cz.nic.tablexia'
tablexiaAppName = getTablexiaAppName()
tablexiaVersionName = getVersionNameFromGit()
tablexiaVersionCode = getVersionCodeFromGit()
tablexiaVersionName = getVersionNameFromGit(TABLEXIA_GIT_PATH)
tablexiaVersionCode = getVersionCodeFromGit(TABLEXIA_GIT_PATH)
tablexiaModelVersionName = getVersionNameFromGit(MODEL_GIT_PATH)
tablexiaModelVersionCode = getVersionCodeFromGit(MODEL_GIT_PATH)
applicationIdBranch = getTablexiaAppId()
applicationIdRelease = applicationBaseId + applicationIdBranch
applicationIdDebugSuffix = '.debug'
......@@ -54,6 +59,9 @@ allprojects {
applicationIdDevelSuffix = '.devel'
applicationIdDevel = applicationBaseId + applicationIdDevelSuffix
//Fallback value if sentry DSN is not defined (gradle parameter SENTRY_DSN_DEBUG or SENTRY_DSN_RELEASE)
sentryDSNFallbackValue = "None"
gdxVersion = '1.9.2'
gdxUtilsVersion = '0.13.2'
mbassadorVersion = '1.2.0'
......@@ -64,9 +72,12 @@ allprojects {
roboPodsVersion = '1.13.0'
androidSupportV4Version = '22.0.0'
googlePlayServicesVersion = '8.3.+'
servletApiVersion = '5.5.23'
ravenVersion = '7.5.0'
}
version = getVersionNameFromGit()
version = getVersionNameFromGit(TABLEXIA_GIT_PATH)
repositories {
maven { url "http://repo1.maven.org/maven2" }
......@@ -264,12 +275,13 @@ def getTablexiaAppId() {
}
}
def getVersionNameFromGit() {
def getVersionNameFromGit(String relativePath) {
def stdout = new ByteArrayOutputStream()
String branchName = getBranchNameFromGit()
// get last tag in current branch
exec {
workingDir relativePath
commandLine 'git', 'describe', '--abbrev=0', '--tags'
standardOutput = stdout
}
......@@ -279,6 +291,7 @@ def getVersionNameFromGit() {
if (!project.masterBranch.equals(branchName)) {
stdout = new ByteArrayOutputStream()
exec {
workingDir relativePath
commandLine 'git', 'rev-list', "${result}..HEAD", '--count'
standardOutput = stdout
}
......@@ -292,9 +305,10 @@ def getVersionNameFromGit() {
return result
}
def getVersionCodeFromGit() {
def getVersionCodeFromGit(String relativePath) {
def stdout = new ByteArrayOutputStream()
exec {
workingDir relativePath
commandLine 'git', 'log', '-1', '--format=%at'
standardOutput = stdout
}
......@@ -398,6 +412,8 @@ project(":core") {
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
compile "com.google.guava:guava:$guavaVersion"
compile "tomcat:servlet-api:$servletApiVersion"
compile "com.getsentry.raven:raven:$ravenVersion"
testCompile "junit:junit:4.11"
testCompile "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion"
......
......@@ -35,7 +35,10 @@ task writeTablexiaBuildConfig {
"public class TablexiaBuildConfig {\n" +
"\n" +
" public final static String APP_NAME = \"${tablexiaAppName}\";\n" +
" public final static String VERSION_NAME = \"${tablexiaVersionName}\";\n" +
" public final static String APPLICATION_VERSION_NAME = \"${tablexiaVersionName}\";\n" +
" public final static Integer APPLICATION_VERSION_CODE = ${tablexiaVersionCode};\n" +
" public final static String MODEL_VERSION_NAME = \"${tablexiaModelVersionName}\";\n" +
" public final static Integer MODEL_VERSION_CODE = ${tablexiaModelVersionCode};\n" +
" public final static String ASSETS_CHECKSUM = \"${getMapConvertedToString(rootProject.ext.assetsChecksum)}\";\n" +
" public final static String TABLEXIA_ASSETS_URL = ${project.hasProperty('TABLEXIA_ASSETS_DOWNLOAD_URL') ? "\"$TABLEXIA_ASSETS_DOWNLOAD_URL\"" : "null"};\n" +
" public final static String TABLEXIA_SERVER_PROTOCOL = ${project.hasProperty('TABLEXIA_SERVER_PROTOCOL') ? "\"$TABLEXIA_SERVER_PROTOCOL\"" : "null"};\n" +
......@@ -43,6 +46,7 @@ task writeTablexiaBuildConfig {
" public final static Integer TABLEXIA_SERVER_PORT = ${project.hasProperty('TABLEXIA_SERVER_PORT') ? "$TABLEXIA_SERVER_PORT" : "null"};\n" +
" public final static String TABLEXIA_SERVER_SECRET = ${project.hasProperty('TABLEXIA_SERVER_SECRET') ? "\"$TABLEXIA_SERVER_SECRET\"" : "null"};\n" +
" public final static String FLURRY_KEY = ${project.hasProperty('TABLEXIA_FLURRY_KEY') ? "\"$TABLEXIA_FLURRY_KEY\"" : "null"};\n" +
" public final static String SENTRY_DSN_FALLBACK = \"${project.sentryDSNFallbackValue}\";\n" +
"\n" +
"}", BUILD_CONFIG_FILE_ENCODING)
}
......
external @ f1e82e39
Subproject commit d8cb4a89e64ceec83718fc478f76a5eb31d8fb3e
Subproject commit f1e82e392f631c1e0b9002e41413ddad12b4d4d2
......@@ -26,6 +26,7 @@ import cz.nic.tablexia.loader.application.ApplicationInternalTextureManager;
import cz.nic.tablexia.loader.application.ApplicationTextManager;
import cz.nic.tablexia.loader.zip.ZipAssetLoader;
import cz.nic.tablexia.menu.MenuController;
import cz.nic.tablexia.model.DatabaseManager;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.loader.IConnectionManager;
import cz.nic.tablexia.util.Log;
......@@ -97,12 +98,12 @@ public class Tablexia extends TablexiaApplication {
}
}
public Tablexia(String buildType, Locale systemLocale, SQLConnectionType sqlConnectionType, IConnectionManager connManager, boolean hasSoftBackButton, boolean reset) {
public Tablexia(String buildType, Locale systemLocale, SQLConnectionType sqlConnectionType, IConnectionManager connManager, String sentryDSN, boolean hasSoftBackButton, boolean reset, String hwSerial) {
this.reset = reset;
connectionManager = validateConnectionManager(connManager);
this.sqlConnectionType = sqlConnectionType;
TablexiaSettings.init(buildType, systemLocale, hasSoftBackButton);
TablexiaSettings.init(buildType, systemLocale, hasSoftBackButton, hwSerial);
// register error handler for exceptions in event bus handler methods
ApplicationBus.getInstance().addErrorHandler(new IPublicationErrorHandler() {
......@@ -111,6 +112,12 @@ public class Tablexia extends TablexiaApplication {
Log.err(ApplicationBus.class, error.getMessage(), error.getCause());
}
});
if(TablexiaSettings.getInstance().getBuildType().isBugReport()) {
@SuppressWarnings("ConstantConditions")
String DSN = (TablexiaBuildConfig.SENTRY_DSN_FALLBACK == null || sentryDSN == null || TablexiaBuildConfig.SENTRY_DSN_FALLBACK.equals(sentryDSN)) ? null : sentryDSN;
TablexiaRaven.start(DSN);
}
}
private void loadingComplete() {
......@@ -302,9 +309,14 @@ public class Tablexia extends TablexiaApplication {
public void create() {
super.create();
TablexiaRaven.sendSavedReports();
// init data storage
TablexiaStorage.init(sqlConnectionType, reset);
// init database
DatabaseManager.initializeDatabase();
// init dialog factory
TablexiaComponentDialogFactory.init(getStage());
......
This diff is collapsed.
......@@ -51,12 +51,17 @@ public class TablexiaSettings {
//Interval <start month; end month>
private static final int WINTER_MODE_START_MONTH = 10;
private static final int WINTER_MODE_END_MONTH = 2;
private static boolean winterMode = false;
private static final String APP_NAME = TablexiaBuildConfig.APP_NAME;
private final String VERSION_NAME = TablexiaBuildConfig.VERSION_NAME;
private static boolean winterMode = false;
private static final String APP_NAME = TablexiaBuildConfig.APP_NAME;
private final String APPLICATION_VERSION_NAME = TablexiaBuildConfig.APPLICATION_VERSION_NAME;
private final int APPLICATION_VERSION_CODE = TablexiaBuildConfig.APPLICATION_VERSION_CODE;
private final String MODEL_VERSION_NAME = TablexiaBuildConfig.MODEL_VERSION_NAME;
private final int MODEL_VERSION_CODE = TablexiaBuildConfig.MODEL_VERSION_CODE;
private Platform PLATFORM;
private final BuildType BUILD_TYPE;
private final boolean HAS_SOFT_BACK_BUTTON;
private static String HW_SERIAL_NUMBER;
private Preferences preferences;
private LocaleDefinition systemLocale;
......@@ -67,15 +72,47 @@ public class TablexiaSettings {
private boolean soundMuted = false;
public enum Platform {
UNKNOWN (-1, null),
DESKTOP (1, Application.ApplicationType.Desktop),
ANDROID (2, Application.ApplicationType.Android),
iOS (3, Application.ApplicationType.iOS);
private static Platform FALLBACK_PLATFORM = UNKNOWN;
private final int id;
private final Application.ApplicationType applicationType;
Platform(int id, Application.ApplicationType applicationType) {
this.id = id;
this.applicationType = applicationType;
}
public int getId() {
return id;
}
public static Platform getPlatformForApplicationType(Application.ApplicationType applicationType) {
for (Platform platform : values()) {
if (platform.applicationType != null && platform.applicationType.equals(applicationType)) {
return platform;
}
}
return FALLBACK_PLATFORM;
}
}
public enum BuildType {
// boxes aInfo sInfo dMenu btName bReport debugBtn
RELEASE ("release", false, false, false, false, false, true, false, Log.TablexiaLogLevel.ERROR),
DEBUG ("debug", false, true, true, true, true, true, true, Log.TablexiaLogLevel.DEBUG),
DEVEL ("devel", true, true, true, true, true, false, true, Log.TablexiaLogLevel.DEBUG);
RELEASE (1, "release", false, false, false, false, false, true, false, Log.TablexiaLogLevel.ERROR),
DEBUG (2, "debug", false, true, true, true, true, true, true, Log.TablexiaLogLevel.DEBUG),
DEVEL (3, "devel", true, true, true, true, true, false, true, Log.TablexiaLogLevel.DEBUG);
private final static BuildType FALLBACK_VARIANT = BuildType.DEVEL;
private int id;
private final String key;
private boolean boundingBoxes;
private boolean applicationInfo;
......@@ -86,7 +123,8 @@ public class TablexiaSettings {
private boolean showDebugButtons;
private final Log.TablexiaLogLevel logLevel;
BuildType(String key, boolean boundingBoxes, boolean applicationInfo, boolean screenInfo, boolean debugMenu, boolean showBuildTypeInName, boolean bugReport, boolean showDebugButtons, Log.TablexiaLogLevel logLevel) {
BuildType(int id, String key, boolean boundingBoxes, boolean applicationInfo, boolean screenInfo, boolean debugMenu, boolean showBuildTypeInName, boolean bugReport, boolean showDebugButtons, Log.TablexiaLogLevel logLevel) {
this.id = id;
this.key = key;
this.boundingBoxes = boundingBoxes;
this.applicationInfo = applicationInfo;
......@@ -98,6 +136,10 @@ public class TablexiaSettings {
this.logLevel = logLevel;
}
public int getId() {
return id;
}
public String getKey() {
return key;
}
......@@ -164,11 +206,11 @@ public class TablexiaSettings {
return instance;
}
static void init(String buildTypeKey, Locale systemLocale, boolean hasSoftBackButton) {
TablexiaSettings.init(BuildType.getBuildTypeForKey(buildTypeKey), systemLocale, hasSoftBackButton);
static void init(String buildTypeKey, Locale systemLocale, boolean hasSoftBackButton, String hwSerial) {
TablexiaSettings.init(BuildType.getBuildTypeForKey(buildTypeKey), systemLocale, hasSoftBackButton, hwSerial);
}
static void init(BuildType buildType, Locale systemLocale, boolean hasSoftBackButton) {
static void init(BuildType buildType, Locale systemLocale, boolean hasSoftBackButton, String hwSerialNumber) {
if (instance != null) {
String exceptionMessage = "Tablexia settings already initialized!";
Log.err(TablexiaSettings.class, exceptionMessage);
......@@ -176,6 +218,7 @@ public class TablexiaSettings {
}
instance = new TablexiaSettings(buildType, systemLocale, hasSoftBackButton);
TablexiaSettings.HW_SERIAL_NUMBER = hwSerialNumber;
}
void dispose() {
......@@ -199,21 +242,44 @@ public class TablexiaSettings {
//////////////////////////// SETTINGS ACCESS
public String getFullName() {
return getAppName() + " " + getVersionName();
return getAppName() + " " + getApplicationVersionName();
}
public String getAppName() {
return getBuildType().getAppName();
}
public String getVersionName() {
return VERSION_NAME;
public String getApplicationVersionName