diff --git a/.gitignore b/.gitignore
index 9a38df1..8572e9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,4 +46,8 @@ Thumbs.db
gen/
/android-signing-keystore.jks
/secrets.properties
-/java_pid9513.hprof
+*.hprof
+
+# Other considerations
+*.html
+*~
diff --git a/README.md b/README.md
index d5f42de..b920969 100644
--- a/README.md
+++ b/README.md
@@ -1,62 +1,79 @@
# Pilldroid
+> I apologize. For know, even string exist in English, _Pilldroid_ is a French
+> only application. That because the global drugs database contain only French
+> drug's nommage. If you can find a way to provide another country global
+> database,feel free to [contact
+> me](mailto://pilldroid@foucry,net?Subject="Another database")
+>
Pilldroid est une application de gestion de stock **théorique** de médicament à
destination des personnes résidant en France.
-## Ce que n'est pas Pilldroid
+
+
+
-- Pilldroid n'est pas un pilulier. Pilldroid ne vous rappellera pas de prendre
-vos médicaments, c'est **VOTRE** responsabilité ;
+## Qu'est-ce que Pilldroid ?
-- Pilldroid n'est pas fiable, ce n'est qu'une aide. Seul votre stock réel est bon
-;
-
-- Pilldroid ne vous surveille pas.
+Pilldroid est une applicaton de gestion de stock _théorique_ de médicaments,
+pour téléphone Android©.
## Pourquoi « Stock théorique » ?
-Pilldroid ne sait (et n'a aucun moyen de savoir) si vous avez ou non pris vos
-médicaments. Pilldroid effectue, simple calcul : `stock connus - prise par
+Pilldroid ne sait ipas (et n'a aucun moyen de savoir) si vous avez ou non pris vos
+médicaments. Pilldroid effectue, simple calcul : `stock connu - prise par
jour`. Ce calcul est fait tous les jours entre 11h et midi.
+
## De quelles autorisations l'application Pilldroid a-t-elle besoin ?
- Pilldroid a besoin de savoir que le téléphone a été redémarré pour elle-même
-lancer son cycle de réveil journalier ;
+lancer son cycle de réveil journalier.
- Pilldroid a besoin d'accéder à l'appareil photo de votre téléphone pour
- scanner le code barre des boites de médicaments ;
-- Pilldroid a besoin de pouvoir vous envoyer des alarmes ;
-- Pilldroid a besoin de faire vibrer le téléphone pour les alarmes ;
+ scanner le code-barres des boîtes de médicaments.
+- Pilldroid a besoin de pouvoir vous envoyer des notifications.
+- Pilldroid a besoin de faire vibrer le téléphone pour les notifications.
-
## L'application Pilldroid embarque-t-elle des bibliothèques tierce ?
-Oui. Pour la lecture de code barre, Pilldroid utilise le projet
+Oui. Pour la lecture de code-barres, Pilldroid utilise le projet
[zxing](https://github.com/journeyapps/zxing-android-embedded) lui-même libre et
ouvert.
-
## L'application Pilldroid contient-elle des pisteurs ?
-[NON !](https://reports.exodus-privacy.eu.org/fr/reports/234531/)
+[NON !](https://reports.exodus-privacy.eu.org/fr/reports/net.foucry.pilldroid/latest/)
## D'où viennent les données de Pilldroid ?
Elles sont issues de plusieurs fichiers de l'Agence pour la Sécurité des
-Médicaments, agrégés dans une base de données grâce à script Python qui sera
-prochainement mis sur mon compte `github`.
+Médicaments, agrégés dans une base de données grâce à script Python qui est disponible sur le dépôt [TransformMeds](https://github.com/jfoucry/TransformMeds).
+
+## Ce que n'est pas Pilldroid
+
+- Pilldroid n'est pas un pilulier. Pilldroid ne vous rappellera pas de prendre
+vos médicaments, c'est **VOTRE** responsabilité.
+- Pilldroid n'est pas fiable, ce n'est qu'une aide. Seul votre stock réel est bon.
## Comment peut-on participer à Pilldroid ?
Mon code est de piètre qualité et mes connaissances Java maigrelettes toute
-amélioration **que je comprends** sera la bienvenue (je n'ai pas pigé les
-`lambda` par exemple).
+amélioration **que je comprends** sera la bienvenue.
Marché de niche, Pilldroid a besoin de testeuses et testeurs.
-Prochainement, vous pourrez glisser quelques menues monnaies dans une tirelire
-en ligne.
+Et si vous ne pouvez-vous pas par ces moyens, vous pouvez m'aider à payer mon
+électricité et mon accès internet :
+
+
## L'application Pilldroid dispose telle d'un site web ?
-Oui, [Pilldroid](https://pilldroid.foucry.net)
+Oui, bien sûr : [Pilldroid](https://pilldroid.foucry.net)
+
+## Contact
+
+Le site web en premier lieu et l'adresse mail
+[pilldroid@foucry.net](mailto://pilldroid@foucry.net:Subject="Contact")
diff --git a/app/build.gradle b/app/build.gradle
index 992003e..250f593 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -18,7 +18,7 @@ else {
android {
signingConfigs {
release {
- storeFile file("../android-signing-keystore.jks")
+ storeFile rootProject.file("android-signing-keystore.jks")
storePassword secretProperties['signing_keystore_password']
keyAlias secretProperties['signing_key_alias']
keyPassword secretProperties['signing_key_password']
@@ -30,21 +30,26 @@ android {
keyPassword secretProperties['signing_key_password']
}
}
- compileSdk 31
+ compileSdk 34
defaultConfig {
applicationId "net.foucry.pilldroid"
+
minSdkVersion defaultMinSdkVersion
targetSdkVersion defaultTargetSdkVersion
versionCode 350
versionName "v0.350-beta"
multiDexEnabled true
+
javaCompileOptions {
annotationProcessorOptions {
arguments += ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
+ buildFeatures {
+ buildConfig = true
+ }
buildTypes {
debug {
@@ -59,7 +64,7 @@ android {
signingConfig signingConfigs.release
}
}
- flavorDimensions "version"
+ flavorDimensions = ["version"]
productFlavors {
dev {
resValue "string", "app_name", "PillDroid dev"
@@ -77,7 +82,7 @@ android {
targetCompatibility JavaVersion.VERSION_11
}
- buildToolsVersion = "32.0.0"
+ namespace 'net.foucry.pilldroid'
allprojects {
tasks.withType(JavaCompile) {
@@ -92,26 +97,28 @@ repositories {
sourceSets {
main {
java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
+ exclude 'net/foucry/pilldroid/ViewDialog.java'
}
}
}
+
dependencies {
- implementation "androidx.room:room-common:2.4.2"
- annotationProcessor "androidx.room:room-compiler:2.4.2"
- implementation "androidx.room:room-testing:2.4.2"
- implementation "androidx.room:room-rxjava3:2.4.2"
- implementation "androidx.room:room-runtime:2.4.2"
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation "androidx.room:room-common:2.6.1"
+ annotationProcessor "androidx.room:room-compiler:2.6.1"
+ implementation "androidx.room:room-testing:2.6.1"
+ implementation "androidx.room:room-rxjava3:2.6.1"
+ implementation "androidx.room:room-runtime:2.6.1"
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.13.2'
- implementation 'androidx.appcompat:appcompat:1.4.2'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.6.1'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+ implementation 'androidx.recyclerview:recyclerview:1.3.2'
+ implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.8.0'
+ implementation 'androidx.core:core:1.12.0'
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.0'
-}
\ No newline at end of file
+ //coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.0'
+}
diff --git a/app/build_BACKUP_2537.gradle b/app/build_BACKUP_2537.gradle
deleted file mode 100644
index 9314be9..0000000
--- a/app/build_BACKUP_2537.gradle
+++ /dev/null
@@ -1,121 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
-<<<<<<< HEAD
- implementation 'androidx.appcompat:appcompat:1.4.1'
-=======
- implementation 'androidx.appcompat:appcompat:1.4.0'
->>>>>>> 5fe29e5 (Change compileSskVersion)
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BACKUP_2948.gradle b/app/build_BACKUP_2948.gradle
deleted file mode 100644
index 9314be9..0000000
--- a/app/build_BACKUP_2948.gradle
+++ /dev/null
@@ -1,121 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
-<<<<<<< HEAD
- implementation 'androidx.appcompat:appcompat:1.4.1'
-=======
- implementation 'androidx.appcompat:appcompat:1.4.0'
->>>>>>> 5fe29e5 (Change compileSskVersion)
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BACKUP_3178.gradle b/app/build_BACKUP_3178.gradle
deleted file mode 100644
index 9314be9..0000000
--- a/app/build_BACKUP_3178.gradle
+++ /dev/null
@@ -1,121 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
-<<<<<<< HEAD
- implementation 'androidx.appcompat:appcompat:1.4.1'
-=======
- implementation 'androidx.appcompat:appcompat:1.4.0'
->>>>>>> 5fe29e5 (Change compileSskVersion)
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BACKUP_3356.gradle b/app/build_BACKUP_3356.gradle
deleted file mode 100644
index 9314be9..0000000
--- a/app/build_BACKUP_3356.gradle
+++ /dev/null
@@ -1,121 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
-<<<<<<< HEAD
- implementation 'androidx.appcompat:appcompat:1.4.1'
-=======
- implementation 'androidx.appcompat:appcompat:1.4.0'
->>>>>>> 5fe29e5 (Change compileSskVersion)
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BASE_2537.gradle b/app/build_BASE_2537.gradle
deleted file mode 100644
index 4abead4..0000000
--- a/app/build_BASE_2537.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 30
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BASE_2948.gradle b/app/build_BASE_2948.gradle
deleted file mode 100644
index 4abead4..0000000
--- a/app/build_BASE_2948.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 30
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BASE_3178.gradle b/app/build_BASE_3178.gradle
deleted file mode 100644
index 4abead4..0000000
--- a/app/build_BASE_3178.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 30
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_BASE_3356.gradle b/app/build_BASE_3356.gradle
deleted file mode 100644
index 4abead4..0000000
--- a/app/build_BASE_3356.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 30
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_LOCAL_2537.gradle b/app/build_LOCAL_2537.gradle
deleted file mode 100644
index cc3eb2b..0000000
--- a/app/build_LOCAL_2537.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.1'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_LOCAL_2948.gradle b/app/build_LOCAL_2948.gradle
deleted file mode 100644
index cc3eb2b..0000000
--- a/app/build_LOCAL_2948.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.1'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_LOCAL_3178.gradle b/app/build_LOCAL_3178.gradle
deleted file mode 100644
index cc3eb2b..0000000
--- a/app/build_LOCAL_3178.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.1'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_LOCAL_3356.gradle b/app/build_LOCAL_3356.gradle
deleted file mode 100644
index cc3eb2b..0000000
--- a/app/build_LOCAL_3356.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.1'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.5.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.7.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_REMOTE_2537.gradle b/app/build_REMOTE_2537.gradle
deleted file mode 100644
index f39eced..0000000
--- a/app/build_REMOTE_2537.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_REMOTE_2948.gradle b/app/build_REMOTE_2948.gradle
deleted file mode 100644
index f39eced..0000000
--- a/app/build_REMOTE_2948.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_REMOTE_3178.gradle b/app/build_REMOTE_3178.gradle
deleted file mode 100644
index f39eced..0000000
--- a/app/build_REMOTE_3178.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/build_REMOTE_3356.gradle b/app/build_REMOTE_3356.gradle
deleted file mode 100644
index f39eced..0000000
--- a/app/build_REMOTE_3356.gradle
+++ /dev/null
@@ -1,117 +0,0 @@
-//noinspection GradleCompatible
-apply plugin: 'com.android.application'
-
-// Try reading secrets from file
-def secretsPropertiesFile = rootProject.file("secrets.properties")
-def secretProperties = new Properties()
-
-if (secretsPropertiesFile.exists()) {
- secretProperties.load(new FileInputStream(secretsPropertiesFile))
-}
-// Otherwise read from environment variables, this happens in CI
-else {
- secretProperties.setProperty("signing_keystore_password", "${System.getenv('signing_keystore_password')}")
- secretProperties.setProperty("signing_key_password", "${System.getenv('signing_key_password')}")
- secretProperties.setProperty("signing_key_alias", "${System.getenv('signing_key_alias')}")
-}
-
-android {
- signingConfigs {
- release {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_release_alias_key']
- keyPassword secretProperties['signing_release_key_password']
- }
- prerelease {
- storeFile rootProject.file("android-signing-keystore.jks")
- storePassword secretProperties['signing_keystore_password']
- keyAlias secretProperties['signing_pre-release_key_alias']
- keyPassword secretProperties['signing_pre-release_key_password']
- }
- }
- compileSdkVersion 31
-
- defaultConfig {
- applicationId "net.foucry.pilldroid"
- minSdkVersion defaultMinSdkVersion
- targetSdkVersion defaultTargetSdkVersion
- versionCode 100
- versionName "v0.100-beta"
- multiDexEnabled true
- }
-
- buildTypes {
- debug {
- minifyEnabled false
- debuggable true
- applicationIdSuffix ".debug"
- }
- release {
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.release
- }
- prerelease {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- debuggable false
- signingConfig signingConfigs.prerelease
- }
- }
- flavorDimensions "version"
- productFlavors {
- dev {
- resValue "string", "app_name", "PillDroid dev"
- dimension ="version"
- }
-
- product {
- resValue "string", "app_name", "PillDroid"
- dimension ="version"
- }
- preproduct {
- resValue "string", "app_name", "PillDroid Pre-Release"
- dimension ="version"
- }
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
- }
-
- buildToolsVersion '32.0.0'
-
- allprojects {
- tasks.withType(JavaCompile) {
- options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
- }
- }
-}
-
-repositories {
- mavenCentral()
-}
-sourceSets {
- main {
- java {
- exclude 'net/foucry/pilldroid/scanActivity.java'
- }
- }
-}
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.13.2'
-
- implementation 'androidx.appcompat:appcompat:1.4.0'
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'com.google.android.material:material:1.4.0'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
-
- implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
- implementation 'androidx.core:core:1.6.0'
-
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
-}
diff --git a/app/preproduct/prerelease/output-metadata.json b/app/preproduct/prerelease/output-metadata.json
deleted file mode 100644
index c0b772b..0000000
--- a/app/preproduct/prerelease/output-metadata.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "version": 3,
- "artifactType": {
- "type": "APK",
- "kind": "Directory"
- },
- "applicationId": "net.foucry.pilldroid",
- "variantName": "preproductPrerelease",
- "elements": [
- {
- "type": "SINGLE",
- "filters": [],
- "attributes": [],
- "versionCode": 24065,
- "versionName": "0.65.20220101-d04e132",
- "outputFile": "app-preproduct-prerelease.apk"
- }
- ],
- "elementType": "File"
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 95217b9..ceb173a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,12 +1,17 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/assets/about.html b/app/src/main/assets/about.html
index e48d667..301c173 100644
--- a/app/src/main/assets/about.html
+++ b/app/src/main/assets/about.html
@@ -20,6 +20,7 @@
[feb95329be7d05c6fd17d4ba4b72ca48c7bb294e]
+
Pilldroid © 2024 Jacques Foucry
Pilldroid est une gestion théorique de votre stock de médicaments.
Pilldroid n'a aucune connaissance des interactions des médicaments entre eux.
diff --git a/app/src/main/java/net/foucry/pilldroid/About.java b/app/src/main/java/net/foucry/pilldroid/About.java
index cabe0e8..99312ba 100644
--- a/app/src/main/java/net/foucry/pilldroid/About.java
+++ b/app/src/main/java/net/foucry/pilldroid/About.java
@@ -2,15 +2,14 @@ package net.foucry.pilldroid;
import android.graphics.Color;
import android.os.Bundle;
+import android.webkit.WebView;
import androidx.appcompat.app.AppCompatActivity;
-import android.webkit.WebView;
-
/**
* Created by jacques on 12/06/16.
*/
-public class About extends AppCompatActivity{
+public class About extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/app/src/main/java/net/foucry/pilldroid/AlarmReceiver.java b/app/src/main/java/net/foucry/pilldroid/AlarmReceiver.java
index 7555267..1b98efd 100644
--- a/app/src/main/java/net/foucry/pilldroid/AlarmReceiver.java
+++ b/app/src/main/java/net/foucry/pilldroid/AlarmReceiver.java
@@ -31,9 +31,54 @@ public class AlarmReceiver extends BroadcastReceiver {
NotificationManager notificationManager;
+ public static void scheduleAlarm(Context context) {
+ Calendar calendar = Calendar.getInstance();
+ Date today;
+ Date tomorrow;
+ LocalTime todayNow = LocalTime.now();
+
+ if (BuildConfig.DEBUG) {
+ Date nextSchedule = calendar.getTime();
+ calendar.setTimeInMillis(nextSchedule.getTime());
+ } else {
+ calendar.set(Calendar.HOUR_OF_DAY, 11);
+ calendar.set(Calendar.MINUTE, 15);
+ today = calendar.getTime();
+ calendar.add(Calendar.DAY_OF_YEAR, 1);
+ tomorrow = calendar.getTime();
+ if (todayNow.isBefore(LocalTime.NOON)) {
+ calendar.setTimeInMillis(today.getTime());
+ } else {
+ calendar.setTimeInMillis(tomorrow.getTime());
+ }
+ }
+
+ PendingIntent alarmIntent;
+
+ Intent intent = new Intent(context, AlarmReceiver.class);
+ alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
+
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+
+ if (BuildConfig.DEBUG) {
+ alarmManager.setExact(AlarmManager.RTC_WAKEUP, (calendar.getTimeInMillis()), alarmIntent);
+ } else {
+ alarmManager.setExact(AlarmManager.RTC_WAKEUP, (calendar.getTimeInMillis()), alarmIntent);
+ }
+
+ Log.d(TAG, "Alarm scheduled for " + UtilDate.convertDate(calendar.getTimeInMillis()));
+ if (BuildConfig.DEBUG) {
+ Toast.makeText(context, "Alarm scheduled for " + UtilDate.convertDate(calendar.getTimeInMillis()), Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ public static Boolean isAlarmScheduled(Context context) {
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ return alarmManager.getNextAlarmClock() != null;
+ }
+
@Override
- public void onReceive(Context context, Intent intent)
- {
+ public void onReceive(Context context, Intent intent) {
// Show the toast like in above screen shot
Log.d(TAG, "onReceive");
@@ -45,7 +90,9 @@ public class AlarmReceiver extends BroadcastReceiver {
scheduleAlarm(context);
}
- if (BuildConfig.DEBUG) { Toast.makeText(context, "New stock calculated", Toast.LENGTH_LONG).show(); }
+ if (BuildConfig.DEBUG) {
+ Toast.makeText(context, "New stock calculated", Toast.LENGTH_LONG).show();
+ }
createNotificationChannel(context);
PrescriptionDatabase prescriptions = PrescriptionDatabase.getInstanceDatabase(context.getApplicationContext());
PrescriptionsDAO prescriptionsDAO = prescriptions.getPrescriptionsDAO();
@@ -53,7 +100,7 @@ public class AlarmReceiver extends BroadcastReceiver {
Prescription firstPrescription = null;
Prescription currentPrescription;
- for (int i=0 ; i < prescriptionList.size(); i++ ) {
+ for (int i = 0; i < prescriptionList.size(); i++) {
currentPrescription = prescriptionList.get(i);
currentPrescription.newStock();
prescriptionsDAO.update(currentPrescription);
@@ -63,15 +110,14 @@ public class AlarmReceiver extends BroadcastReceiver {
Utils.sortPrescriptionList(prescriptionList);
try {
firstPrescription = prescriptionList.get(0);
- }
- catch (Exception e){
+ } catch (Exception e) {
Log.e(TAG, e.toString());
e.printStackTrace();
}
if (firstPrescription != null) {
if (firstPrescription.getTake() != 0) {
- if(firstPrescription.getStock() <= firstPrescription.getAlertThreshold()) {
+ if (firstPrescription.getStock() <= firstPrescription.getAlertThreshold()) {
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(context, DrugListActivity.class);
@@ -92,8 +138,7 @@ public class AlarmReceiver extends BroadcastReceiver {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = 666;
notificationManager.notify(notificationId, builder.build());
- } else
- {
+ } else {
double dummy = (firstPrescription.getStock() - firstPrescription.getAlertThreshold());
Log.d(TAG, "no notification scheduled " + dummy);
}
@@ -102,8 +147,8 @@ public class AlarmReceiver extends BroadcastReceiver {
}
private void createNotificationChannel(Context context) {
-
Log.d(TAG, "start create notification channel");
+
CharSequence name = context.getString(R.string.channel_name);
String description = context.getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
@@ -128,49 +173,4 @@ public class AlarmReceiver extends BroadcastReceiver {
e.printStackTrace();
}
}
- public static void scheduleAlarm(Context context) {
- Calendar calendar = Calendar.getInstance();
- Date today;
- Date tomorrow;
- LocalTime todayNow = LocalTime.now();
-
- /*if (BuildConfig.DEBUG) {
- Date nextSchedule = calendar.getTime();
- calendar.setTimeInMillis(nextSchedule.getTime());
- } else {*/
- calendar.set(Calendar.HOUR_OF_DAY, 11);
- today = calendar.getTime();
- calendar.add(Calendar.DAY_OF_YEAR, 1);
- tomorrow = calendar.getTime();
- if (todayNow.isBefore(LocalTime.NOON)) {
- calendar.setTimeInMillis(today.getTime());
- } else {
- calendar.setTimeInMillis(tomorrow.getTime());
- }
- //}
-
- PendingIntent alarmIntent;
-
- Intent intent = new Intent(context, AlarmReceiver.class);
- alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
-
- AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-
- /*if (BuildConfig.DEBUG) {
- alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,(calendar.getTimeInMillis()),
- AlarmManager.ELAPSED_REALTIME, alarmIntent);
- } else {*/
-
- alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, (calendar.getTimeInMillis()),
- AlarmManager.INTERVAL_DAY, alarmIntent);
- //}
-
- Log.d(TAG, "Alarm scheduled for " + UtilDate.convertDate(calendar.getTimeInMillis()));
- if (BuildConfig.DEBUG) { Toast.makeText(context, "Alarm scheduled for " + UtilDate.convertDate(calendar.getTimeInMillis()), Toast.LENGTH_SHORT).show(); }
- }
-
- public static Boolean isAlarmScheduled(Context context) {
- AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
- return alarmManager.getNextAlarmClock() != null;
- }
}
diff --git a/app/src/main/java/net/foucry/pilldroid/CustomScannerActivity.java b/app/src/main/java/net/foucry/pilldroid/CustomScannerActivity.java
index 14d90a8..a4a63a2 100644
--- a/app/src/main/java/net/foucry/pilldroid/CustomScannerActivity.java
+++ b/app/src/main/java/net/foucry/pilldroid/CustomScannerActivity.java
@@ -1,6 +1,5 @@
package net.foucry.pilldroid;
-import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
@@ -11,8 +10,7 @@ import android.widget.ImageButton;
import androidx.annotation.NonNull;
-import com.journeyapps.barcodescanner.BarcodeCallback;
-import com.journeyapps.barcodescanner.BarcodeResult;
+import androidx.appcompat.app.AppCompatActivity;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
import com.journeyapps.barcodescanner.ViewfinderView;
@@ -20,17 +18,15 @@ import com.journeyapps.barcodescanner.ViewfinderView;
/**
* Custom Scanner Activity extending from Activity to display a custom layout form scanner view.
*/
-public class CustomScannerActivity extends Activity implements DecoratedBarcodeView.TorchListener {
+public class CustomScannerActivity extends AppCompatActivity implements DecoratedBarcodeView.TorchListener {
private static final String TAG = CustomScannerActivity.class.getName();
-
+ final Bundle captureIntentBundle = new Bundle();
private CaptureManager capture;
private DecoratedBarcodeView barcodeScannerView;
private ImageButton switchFlashlightButton;
private ViewfinderView viewfinderView;
- final Bundle captureIntentBundle = new Bundle();
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -59,19 +55,16 @@ public class CustomScannerActivity extends Activity implements DecoratedBarcodeV
//changeMaskColor(null);
changeLaserVisibility(true);
- barcodeScannerView.decodeSingle(new BarcodeCallback() {
- @Override
- public void barcodeResult(BarcodeResult result) {
- Intent scanResult = new Intent();
- //Bundle scanResultBundle = new Bundle();
- scanResult.putExtra("Barcode Content", result.getText());
- scanResult.putExtra("Barcode Format name", result.getBarcodeFormat().name());
- scanResult.putExtra("returnCode", captureIntentBundle.getInt("returnCode"));
- scanResult.putExtra("resultCode", 1);
- CustomScannerActivity.this.setResult(RESULT_OK, scanResult);
- Log.d(TAG, "scanResult == " + scanResult);
- finish();
- }
+ barcodeScannerView.decodeSingle(result -> {
+ Intent scanResult = new Intent();
+ //Bundle scanResultBundle = new Bundle();
+ scanResult.putExtra("Barcode Content", result.getText());
+ scanResult.putExtra("Barcode Format name", result.getBarcodeFormat().name());
+ scanResult.putExtra("returnCode", captureIntentBundle.getInt("returnCode"));
+ scanResult.putExtra("resultCode", 1);
+ CustomScannerActivity.this.setResult(RESULT_OK, scanResult);
+ Log.d(TAG, "scanResult == " + scanResult);
+ finish();
});
}
@@ -93,6 +86,11 @@ public class CustomScannerActivity extends Activity implements DecoratedBarcodeV
capture.onDestroy();
}
+ @Override
+ public void onBackPressed(){
+ onCancel(this.getCurrentFocus());
+ }
+
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@@ -147,7 +145,7 @@ public class CustomScannerActivity extends Activity implements DecoratedBarcodeV
public void onKeyboard(View view) {
Log.d(TAG, "onkeyboard");
Intent resultIntent = new Intent();
- resultIntent.putExtra("returnCode",3);
+ resultIntent.putExtra("returnCode", 3);
CustomScannerActivity.this.setResult(RESULT_OK, resultIntent);
finish();
}
diff --git a/app/src/main/java/net/foucry/pilldroid/DBDrugs.java b/app/src/main/java/net/foucry/pilldroid/DBDrugs.java
index 912cf42..04116d2 100644
--- a/app/src/main/java/net/foucry/pilldroid/DBDrugs.java
+++ b/app/src/main/java/net/foucry/pilldroid/DBDrugs.java
@@ -21,35 +21,29 @@ class DBDrugs extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
- private static final String dbName = "drugs.db";
+ private static final String dbName = "drugs.db";
+ private static final String TABLE_NAME = "drugs";
+ private static final String DRUG_CIS = "cis";
+ private static final String DRUG_CIP13 = "cip13";
+ private static final String DRUG_CIP7 = "cip7";
+ private static final String DRUG_ADMIN = "administration_mode";
+ private static final String DRUG_NAME = "name";
+ private static final String DRUG_PRES = "presentation";
+ private static final String[] COLUMNS_NAMES = {DRUG_CIS, DRUG_CIP13, DRUG_CIP7, DRUG_ADMIN, DRUG_NAME, DRUG_PRES};
+ private static final String TAG = DBDrugs.class.getName();
private final Context myContext;
private final SQLiteDatabase myDataBase = null;
- private static final String TABLE_NAME = "drugs";
- private static final String DRUG_CIS = "cis";
- private static final String DRUG_CIP13 = "cip13";
- private static final String DRUG_CIP7 = "cip7";
- private static final String DRUG_ADMIN = "administration_mode";
- private static final String DRUG_NAME = "name";
- private static final String DRUG_PRES = "presentation";
-
- private static final String[] COLUMNS_NAMES = {DRUG_CIS, DRUG_CIP13, DRUG_CIP7, DRUG_ADMIN, DRUG_NAME, DRUG_PRES};
-
- private static final String TAG = DBDrugs.class.getName();
-
-
DBDrugs(Context context) {
super(context, dbName, null, DATABASE_VERSION);
this.myContext = context;
}
- public boolean isDBFileExist(File database)
- {
- try {
+ public boolean isDBFileExist(File database) {
+ try {
myContext.getDatabasePath(String.valueOf(database));
- }
- catch (final Exception e){
+ } catch (final Exception e) {
return false;
}
return true;
@@ -166,26 +160,24 @@ class DBDrugs extends SQLiteOpenHelper {
String getCIP13FromCIP7(String cip7) {
- String cip13 = null;
+ String cip13 = null;
- try {
- Cursor c = this.getReadableDatabase().rawQuery("SELECT cip13 FROM "+ TABLE_NAME + " where cip7 = "+cip7, null);
+ try {
+ Cursor c = this.getReadableDatabase().rawQuery("SELECT cip13 FROM " + TABLE_NAME + " where cip7 = " + cip7, null);
- Log.d(TAG, "Cursor == " + DatabaseUtils.dumpCursorToString(c));
+ Log.d(TAG, "Cursor == " + DatabaseUtils.dumpCursorToString(c));
- c.moveToFirst();
+ c.moveToFirst();
- if(c.getCount()>0)
- {
- cip13 = c.getString(0);
- }
- c.close();
- } catch(Exception e)
- {
- e.printStackTrace();
+ if (c.getCount() > 0) {
+ cip13 = c.getString(0);
}
- return cip13;
+ c.close();
+ } catch (Exception e) {
+ e.printStackTrace();
}
+ return cip13;
+ }
Drug getDrugByCIP7(String cip7) {
Log.d(TAG, "CIP7 - " + cip7);
diff --git a/app/src/main/java/net/foucry/pilldroid/DBHelper.java b/app/src/main/java/net/foucry/pilldroid/DBHelper.java
index d2dc1bf..17dc45d 100644
--- a/app/src/main/java/net/foucry/pilldroid/DBHelper.java
+++ b/app/src/main/java/net/foucry/pilldroid/DBHelper.java
@@ -10,7 +10,6 @@ import android.text.format.DateUtils;
import android.util.Log;
import java.util.ArrayList;
-import java.util.Comparator;
import java.util.List;
/**
@@ -18,31 +17,27 @@ import java.util.List;
*/
-
class DBHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "prescription.db";
- private static final String TABLE_DRUG = "drug";
- private static final String KEY_ID = "id";
- private static final String KEY_CIS = "cis";
- private static final String KEY_CIP13 = "cip13";
- private static final String KEY_NAME = "name";
- private static final String KEY_ADMIN = "administration_mode";
- private static final String KEY_PRES = "presentation";
- private static final String KEY_STOCK = "stock";
- private static final String KEY_TAKE = "take";
- private static final String KEY_THRESHOLD_WARN = "warning";
+ private static final String TABLE_DRUG = "drug";
+ private static final String KEY_ID = "id";
+ private static final String KEY_CIS = "cis";
+ private static final String KEY_CIP13 = "cip13";
+ private static final String KEY_NAME = "name";
+ private static final String KEY_ADMIN = "administration_mode";
+ private static final String KEY_PRES = "presentation";
+ private static final String KEY_STOCK = "stock";
+ private static final String KEY_TAKE = "take";
+ private static final String KEY_THRESHOLD_WARN = "warning";
private static final String KEY_THRESHOLD_ALERT = "alert";
- private static final String KEY_LAST_UPDATE = "last_update";
-
- final List drugs = new ArrayList<>();
-
+ private static final String KEY_LAST_UPDATE = "last_update";
private static final String TAG = DBHelper.class.getName();
-
- private static final String[] COLUMNS = {KEY_ID, KEY_CIS,KEY_CIP13, KEY_NAME, KEY_ADMIN, KEY_PRES, KEY_STOCK, KEY_TAKE,
+ private static final String[] COLUMNS = {KEY_ID, KEY_CIS, KEY_CIP13, KEY_NAME, KEY_ADMIN, KEY_PRES, KEY_STOCK, KEY_TAKE,
KEY_THRESHOLD_WARN, KEY_THRESHOLD_ALERT, KEY_LAST_UPDATE};
+ final List drugs = new ArrayList<>();
DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
@@ -53,7 +48,7 @@ class DBHelper extends SQLiteOpenHelper {
String CREATE_DRUG_TABLE = "CREATE TABLE drug ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
"cis TEXT, " +
- "cip13 TEXT, " +
+ "cip13 TEXT, " +
"name TEXT, " +
"administration_mode TEXT, " +
"presentation TEXT, " +
@@ -88,6 +83,7 @@ class DBHelper extends SQLiteOpenHelper {
/**
* Split drug values into database record and record it to the DB
+ *
* @param drug the drug object to be saved
*/
void addDrug(Drug drug) {
@@ -123,6 +119,7 @@ class DBHelper extends SQLiteOpenHelper {
/**
* return a drug from the DB with is id
+ *
* @param id of the drug we looking for (not used)
* @return return the found drug of null
*/
@@ -134,7 +131,7 @@ class DBHelper extends SQLiteOpenHelper {
Cursor cursor = db.query(TABLE_DRUG, // Which table
COLUMNS, // column names
" id = ?", // selections
- new String[] { String.valueOf(id) }, // selections args
+ new String[]{String.valueOf(id)}, // selections args
null, // group by
null, // having
null, // order by
@@ -161,7 +158,7 @@ class DBHelper extends SQLiteOpenHelper {
drug.setDateLastUpdate(Long.parseLong(cursor.getString(10)));
}
// Log
- Log.d(TAG, "getDrug("+id+")" + drug);
+ Log.d(TAG, "getDrug(" + id + ")" + drug);
assert cursor != null;
cursor.close();
@@ -172,7 +169,6 @@ class DBHelper extends SQLiteOpenHelper {
}
/**
- *
* @param cip13 drug id in French nomenclature
* @return the drug object found in DB or null
*/
@@ -218,7 +214,6 @@ class DBHelper extends SQLiteOpenHelper {
}
/**
- *
* @return a Sorted and updated by dateEndOfStock List of All drugs presents in database
*/
@@ -262,43 +257,36 @@ class DBHelper extends SQLiteOpenHelper {
db.close();
Drug currentDrug;
- for (int position = 0 ; position < getCount() ; position++ ) {
+ for (int position = 0; position < getCount(); position++) {
currentDrug = getItem(position);
- if (!DateUtils.isToday(currentDrug.getDateLastUpdate()))
- {
+ if (!DateUtils.isToday(currentDrug.getDateLastUpdate())) {
currentDrug.newStock();
updateDrug(currentDrug);
}
}
-
Log.d(TAG, "Before sort == " + drugs);
- drugs.sort(new Comparator() {
- @Override
- public int compare(Drug lhs, Drug rhs) {
- if (lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock()) != 0)
- return lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock());
- else
- return (int) (lhs.getStock() - rhs.getStock());
- }
+ drugs.sort((lhs, rhs) -> {
+ if (lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock()) != 0)
+ return lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock());
+ else
+ return (int) (lhs.getStock() - rhs.getStock());
});
Log.d(TAG, "After sort " + drugs);
// Move drug with prise = 0 at the end of the list
// todo: If some drug moved, must redo all the loop
- int position = 0 ;
- for ( int nbOps = 0; nbOps < getCount() ; nbOps ++ ) {
+ int position = 0;
+ for (int nbOps = 0; nbOps < getCount(); nbOps++) {
currentDrug = getItem(position);
double currentTake = currentDrug.getTake();
- if (currentTake == 0)
- {
+ if (currentTake == 0) {
drug = drugs.remove(position);
drugs.add(drug);
- } else
- {
+ } else {
position++;
}
}
@@ -306,7 +294,6 @@ class DBHelper extends SQLiteOpenHelper {
}
/**
- *
* @param drug object to be updated in DB
*/
public void updateDrug(Drug drug) {
@@ -319,19 +306,19 @@ class DBHelper extends SQLiteOpenHelper {
// Create ContentValues to add column/value
ContentValues values = new ContentValues();
- values.put(KEY_ID, drug.getId());
- values.put(KEY_CIS, drug.getCis());
- values.put(KEY_CIP13, drug.getCip13());
- values.put(KEY_NAME, drug.getName());
- values.put(KEY_ADMIN, drug.getAdministration_mode());
- values.put(KEY_PRES, drug.getPresentation());
- values.put(KEY_STOCK, drug.getStock());
- values.put(KEY_TAKE, drug.getTake());
- values.put(KEY_THRESHOLD_WARN, drug.getWarnThreshold());
+ values.put(KEY_ID, drug.getId());
+ values.put(KEY_CIS, drug.getCis());
+ values.put(KEY_CIP13, drug.getCip13());
+ values.put(KEY_NAME, drug.getName());
+ values.put(KEY_ADMIN, drug.getAdministration_mode());
+ values.put(KEY_PRES, drug.getPresentation());
+ values.put(KEY_STOCK, drug.getStock());
+ values.put(KEY_TAKE, drug.getTake());
+ values.put(KEY_THRESHOLD_WARN, drug.getWarnThreshold());
values.put(KEY_THRESHOLD_ALERT, drug.getAlertThreshold());
- values.put(KEY_LAST_UPDATE, drug.getDateLastUpdate());
+ values.put(KEY_LAST_UPDATE, drug.getDateLastUpdate());
- String[] selectionArgs = { String.valueOf(drug.getId()) };
+ String[] selectionArgs = {String.valueOf(drug.getId())};
db.update(TABLE_DRUG, // table
values, // column/value
@@ -345,6 +332,7 @@ class DBHelper extends SQLiteOpenHelper {
/**
* Delete a drug object in database
+ *
* @param drug object to be delete in the DB
*/
public void deleteDrug(Drug drug) {
@@ -353,18 +341,19 @@ class DBHelper extends SQLiteOpenHelper {
// Delete record
db.delete(TABLE_DRUG, // table
- KEY_ID+ " = ?", // selections
- new String[] { String.valueOf(drug.getId()) } ); // selections args
+ KEY_ID + " = ?", // selections
+ new String[]{String.valueOf(drug.getId())}); // selections args
// Close DB
db.close();
// log
- Log.d(TAG, "delete drug "+ drug);
+ Log.d(TAG, "delete drug " + drug);
}
/**
* Get count of all drug present in database
+ *
* @return number of drug in DB
*/
int getCount() {
@@ -389,15 +378,13 @@ class DBHelper extends SQLiteOpenHelper {
boolean isDrugExist(String cip13) {
boolean value = false;
try {
- Cursor c = this.getReadableDatabase().rawQuery("SELECT * FROM "+ TABLE_DRUG + " where cip13 = "+cip13, null);
+ Cursor c = this.getReadableDatabase().rawQuery("SELECT * FROM " + TABLE_DRUG + " where cip13 = " + cip13, null);
- if(c.getCount()>0)
- {
+ if (c.getCount() > 0) {
value = true;
}
c.close();
- } catch(Exception e)
- {
+ } catch (Exception e) {
e.printStackTrace();
}
return value;
diff --git a/app/src/main/java/net/foucry/pilldroid/Drug.java b/app/src/main/java/net/foucry/pilldroid/Drug.java
index 5c5b011..2491c55 100644
--- a/app/src/main/java/net/foucry/pilldroid/Drug.java
+++ b/app/src/main/java/net/foucry/pilldroid/Drug.java
@@ -1,5 +1,8 @@
package net.foucry.pilldroid;
+import static net.foucry.pilldroid.UtilDate.dateAtNoon;
+import static net.foucry.pilldroid.UtilDate.nbOfDaysBetweenDateAndToday;
+
import android.util.Log;
import java.io.Serializable;
@@ -7,9 +10,6 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
-import static net.foucry.pilldroid.UtilDate.dateAtNoon;
-import static net.foucry.pilldroid.UtilDate.nbOfDaysBetweenDateAndToday;
-
/**
* Created by jacques on 26/11/15.
*/
@@ -56,86 +56,68 @@ public class Drug implements Serializable {
return id;
}
- String getName() {
- return name;
- }
-
- String getCip13() {
- return cip13;
- }
-
- String getCis() {
- return cis;
- }
-
- String getAdministration_mode() {
- return administration_mode;
- }
-
- String getPresentation() {
- return presentation;
- }
-
- double getStock() {
- return stock;
- }
-
- double getTake() {
- return take;
- }
-
- int getAlertThreshold() {
- return alertThreshold;
- }
-
- int getWarnThreshold() {
- return warnThreshold;
- }
-
- long getDateLastUpdate() {
- return dateLastUpdate;
- }
-
- Date getDateEndOfStock() {
- return dateEndOfStock;
- }
-
public void setId(int id) {
this.id = id;
}
+ String getName() {
+ return name;
+ }
+
void setName(String name) {
this.name = name;
}
+ String getCip13() {
+ return cip13;
+ }
+
void setCip13(String cip13) {
this.cip13 = cip13;
}
+ String getCis() {
+ return cis;
+ }
+
void setCis(String cis) {
this.cis = cis;
}
+ String getAdministration_mode() {
+ return administration_mode;
+ }
+
void setAdministration_mode(String administration_mode) {
this.administration_mode = administration_mode;
}
+ String getPresentation() {
+ return presentation;
+ }
+
void setPresentation(String presentation) {
this.presentation = presentation;
}
+ double getStock() {
+ return stock;
+ }
+
void setStock(double stock) {
this.stock = stock;
}
+ double getTake() {
+ return take;
+ }
+
void setTake(double take) {
this.take = take;
}
- void setWarnThreshold(int warn) {
- if (warn == 0)
- warn = 14;
- this.warnThreshold = warn;
+ int getAlertThreshold() {
+ return alertThreshold;
}
void setAlertThreshold(int alert) {
@@ -144,10 +126,28 @@ public class Drug implements Serializable {
this.alertThreshold = alert;
}
+ int getWarnThreshold() {
+ return warnThreshold;
+ }
+
+ void setWarnThreshold(int warn) {
+ if (warn == 0)
+ warn = 14;
+ this.warnThreshold = warn;
+ }
+
+ long getDateLastUpdate() {
+ return dateLastUpdate;
+ }
+
void setDateLastUpdate(long l) {
this.dateLastUpdate = l;
}
+ Date getDateEndOfStock() {
+ return dateEndOfStock;
+ }
+
void setDateEndOfStock() {
int numberDayOfTake;
if (this.take > 0) {
@@ -176,6 +176,7 @@ public class Drug implements Serializable {
setDateLastUpdate(new Date().getTime());
}
}
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/app/src/main/java/net/foucry/pilldroid/DrugDetailActivity.java b/app/src/main/java/net/foucry/pilldroid/DrugDetailActivity.java
index 5dbd2ad..0760882 100644
--- a/app/src/main/java/net/foucry/pilldroid/DrugDetailActivity.java
+++ b/app/src/main/java/net/foucry/pilldroid/DrugDetailActivity.java
@@ -1,20 +1,17 @@
package net.foucry.pilldroid;
-import static net.foucry.pilldroid.R.id.detail_toolbar;
-
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
-import android.widget.ImageButton;
import android.widget.TextView;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-
+import com.google.android.material.appbar.MaterialToolbar;
+import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
import net.foucry.pilldroid.dao.PrescriptionsDAO;
import net.foucry.pilldroid.databases.PrescriptionDatabase;
import net.foucry.pilldroid.models.Prescription;
@@ -43,23 +40,20 @@ public class DrugDetailActivity extends AppCompatActivity {
Log.d(TAG, "aPrescription == " + aPrescription);
setContentView(R.layout.drug_detail_activity);
- Toolbar toolbar = findViewById(detail_toolbar);
+ MaterialToolbar toolbar = findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
- ImageButton fab = findViewById(R.id.fab);
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Log.d(TAG, "Click on save icon");
+ ExtendedFloatingActionButton fab = findViewById(R.id.fab);
+ fab.setOnClickListener(v -> {
+ Log.d(TAG, "Click on save icon");
- getDrugChanges();
- setResult(1);
- finish();
- overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);
- }
+ getDrugChanges();
+ setResult(1);
+ finish();
+ overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);
});
// Show the Up button in the action bar.
@@ -129,13 +123,14 @@ public class DrugDetailActivity extends AppCompatActivity {
String takeValue = takeTextView.getText().toString();
alertView = findViewById(R.id.alert_cell);
+ alertView.setContentDescription("R.string.Drug_warningThreshold_label");
TextView alertTextView = alertView.findViewById(R.id.value);
String alertValue = alertTextView.getText().toString();
warningView = findViewById(R.id.warning_cell);
+ warningView.setContentDescription("R.string.drug_alertThreshold_label");
TextView warningTextView = warningView.findViewById(R.id.value);
String warningValue = warningTextView.getText().toString();
-
newPrescription.setStock(Float.parseFloat(stockValue));
newPrescription.setTake(Float.parseFloat(takeValue));
newPrescription.setWarning(Integer.parseInt(warningValue));
diff --git a/app/src/main/java/net/foucry/pilldroid/DrugDetailContract.java b/app/src/main/java/net/foucry/pilldroid/DrugDetailContract.java
index 1dcef08..48bbc16 100644
--- a/app/src/main/java/net/foucry/pilldroid/DrugDetailContract.java
+++ b/app/src/main/java/net/foucry/pilldroid/DrugDetailContract.java
@@ -13,7 +13,7 @@ public class DrugDetailContract extends ActivityResultContract
* Create an intent that can be used for {@link Activity#startActivityForResult}
*
* @param context Context
- * @param input Drug
+ * @param input Drug
*/
@NonNull
@Override
@@ -26,8 +26,9 @@ public class DrugDetailContract extends ActivityResultContract
/**
* Convert result obtained from to O
+ *
* @param resultCode Integer
- * @param intent Intent
+ * @param intent Intent
* @return Integer
*/
@Override
diff --git a/app/src/main/java/net/foucry/pilldroid/DrugDetailFragment.java b/app/src/main/java/net/foucry/pilldroid/DrugDetailFragment.java
index 763746a..566d8ec 100644
--- a/app/src/main/java/net/foucry/pilldroid/DrugDetailFragment.java
+++ b/app/src/main/java/net/foucry/pilldroid/DrugDetailFragment.java
@@ -5,12 +5,11 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.TextView;
import androidx.fragment.app.Fragment;
-
-import com.google.android.material.appbar.CollapsingToolbarLayout;
-
+import com.google.android.material.appbar.MaterialToolbar;
+import com.google.android.material.textfield.TextInputEditText;
+import com.google.android.material.textview.MaterialTextView;
import net.foucry.pilldroid.models.Prescription;
/**
@@ -52,7 +51,7 @@ public class DrugDetailFragment extends Fragment {
Activity activity = this.getActivity();
assert activity != null;
- CollapsingToolbarLayout appBarLayout = activity.findViewById(R.id.toolbar_layout);
+ MaterialToolbar appBarLayout = activity.findViewById(R.id.toolbar);
if (appBarLayout != null) {
appBarLayout.setTitle(prescription.getName());
}
@@ -74,34 +73,34 @@ public class DrugDetailFragment extends Fragment {
if (prescription != null) {
// Find each component of rootView
nameView = detailView.findViewById(R.id.name_cell);
- TextView nameLabel = nameView.findViewById(R.id.label);
- TextView nameValue = nameView.findViewById(R.id.value);
+ MaterialTextView nameLabel = nameView.findViewById(R.id.label);
+ MaterialTextView nameValue = nameView.findViewById(R.id.value);
nameLabel.setText(R.string.drug_name_label);
nameValue.setText(prescription.getName());
presentationView = detailView.findViewById(R.id.presentation_cell);
- TextView presentationLabel = presentationView.findViewById(R.id.label);
- TextView presentationValue = presentationView.findViewById(R.id.value);
+ MaterialTextView presentationLabel = presentationView.findViewById(R.id.label);
+ MaterialTextView presentationValue = presentationView.findViewById(R.id.value);
presentationLabel.setText(R.string.drug_presentation_label);
presentationValue.setText(prescription.getPresentation());
adminModeView = detailView.findViewById(R.id.administration_cell);
- TextView adminModeLabel = adminModeView.findViewById(R.id.label);
- TextView adminModeValue = adminModeView.findViewById(R.id.value);
+ MaterialTextView adminModeLabel = adminModeView.findViewById(R.id.label);
+ MaterialTextView adminModeValue = adminModeView.findViewById(R.id.value);
adminModeLabel.setText(R.string.drug_administrationMode_label);
adminModeValue.setText(prescription.getAdministration_mode());
stockView = detailView.findViewById(R.id.stock_cell);
- TextView stockLibelle = (stockView.findViewById(R.id.label));
- TextView stockValue = stockView.findViewById(R.id.value);
+ MaterialTextView stockLibelle = (stockView.findViewById(R.id.label));
+ TextInputEditText stockValue = stockView.findViewById(R.id.value);
stockLibelle.setText(R.string.drug_current_stock_label);
stockValue.setText(Utils.fmt(prescription.getStock()));
stockValue.setHint(R.string.drug_current_stock_label);
stockValue.setSelectAllOnFocus(true);
takeView = detailView.findViewById(R.id.take_cell);
- TextView takeLabel = takeView.findViewById(R.id.label);
- TextView takeValue = (takeView.findViewById(R.id.value));
+ MaterialTextView takeLabel = takeView.findViewById(R.id.label);
+ TextInputEditText takeValue = (takeView.findViewById(R.id.value));
takeLabel.setText(R.string.drug_take_label);
//takeValue.setText(Double.toString(prescription.getTake()));
takeValue.setText(Utils.fmt(prescription.getTake()));
@@ -109,8 +108,8 @@ public class DrugDetailFragment extends Fragment {
takeValue.setSelectAllOnFocus(true);
warningView = detailView.findViewById(R.id.warning_cell);
- TextView warningLibelle = warningView.findViewById(R.id.label);
- TextView warningValue = warningView.findViewById(R.id.value);
+ MaterialTextView warningLibelle = warningView.findViewById(R.id.label);
+ TextInputEditText warningValue = warningView.findViewById(R.id.value);
warningLibelle.setText(R.string.drug_warningThreshold_label);
//warningValue.setText(Integer.toString(prescription.getWarnThreshold()));
warningValue.setText(Utils.fmt(prescription.getWarning()));
@@ -118,8 +117,8 @@ public class DrugDetailFragment extends Fragment {
warningValue.setSelectAllOnFocus(true);
alertView = detailView.findViewById(R.id.alert_cell);
- TextView alertLibelle = alertView.findViewById(R.id.label);
- TextView alertValue = alertView.findViewById(R.id.value);
+ MaterialTextView alertLibelle = alertView.findViewById(R.id.label);
+ TextInputEditText alertValue = alertView.findViewById(R.id.value);
alertLibelle.setText(R.string.drug_alertThreshold_label);
//alertValue.setText(Integer.toString(prescription.getAlertThreshold()));
alertValue.setText(Utils.fmt(prescription.getAlert()));
diff --git a/app/src/main/java/net/foucry/pilldroid/DrugListActivity.java b/app/src/main/java/net/foucry/pilldroid/DrugListActivity.java
index 049fc81..29ec254 100644
--- a/app/src/main/java/net/foucry/pilldroid/DrugListActivity.java
+++ b/app/src/main/java/net/foucry/pilldroid/DrugListActivity.java
@@ -4,13 +4,16 @@ import static net.foucry.pilldroid.UtilDate.date2String;
import static net.foucry.pilldroid.Utils.intRandomExclusive;
import android.annotation.SuppressLint;
+import android.app.Dialog;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Canvas;
+import android.graphics.Color;
import android.graphics.Paint;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
@@ -23,22 +26,26 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.Window;
import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Room;
+import com.google.android.material.appbar.MaterialToolbar;
+import com.google.android.material.button.MaterialButton;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+import com.google.android.material.imageview.ShapeableImageView;
import com.google.android.material.snackbar.Snackbar;
+import com.google.android.material.textview.MaterialTextView;
+import com.google.zxing.client.android.BuildConfig;
import com.google.zxing.client.android.Intents;
import com.journeyapps.barcodescanner.ScanOptions;
@@ -53,8 +60,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
-
-import com.google.zxing.client.android.BuildConfig;
+import java.util.Objects;
/**
* An activity representing a list of Drugs is activity
@@ -65,19 +71,15 @@ import com.google.zxing.client.android.BuildConfig;
* item details side-by-side using two vertical panes.
*/
public class DrugListActivity extends AppCompatActivity {
- // Used for dev and debug
- final Boolean DEMO = false;
-
+ private static final String TAG = DrugListActivity.class.getName();
public final int CUSTOMIZED_REQUEST_CODE = 0x0000ffff;
public final String BARCODE_FORMAT_NAME = "Barcode Format name";
public final String BARCODE_CONTENT = "Barcode Content";
-
- private ActivityResultLauncher mBarcodeScannerLauncher;
- private static final String TAG = DrugListActivity.class.getName();
-
+ // Used for dev and debug
+ final Boolean DEMO = false;
public PrescriptionDatabase prescriptions;
public MedicineDatabase medicines;
-
+ private ActivityResultLauncher mBarcodeScannerLauncher;
private List prescriptionList; // used for prescriptions
private RecyclerViewAdapter mAdapter;
@@ -86,7 +88,7 @@ public class DrugListActivity extends AppCompatActivity {
public void onStart() {
super.onStart();
- if(BuildConfig.DEBUG) {
+ if (BuildConfig.DEBUG) {
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
int version = Build.VERSION.SDK_INT;
@@ -108,13 +110,13 @@ public class DrugListActivity extends AppCompatActivity {
// Manually migrate old database to room
PrescriptionsDAO prescriptionsDAO = prescriptions.getPrescriptionsDAO();
DBHelper dbHelper = new DBHelper(this);
- if (dbHelper.getCount() !=0) {
- List drugs=dbHelper.getAllDrugs();
- for (int count=0; count < dbHelper.getCount(); count++) {
+ if (dbHelper.getCount() != 0) {
+ List drugs = dbHelper.getAllDrugs();
+ for (int count = 0; count < dbHelper.getCount(); count++) {
Drug drug = drugs.get(count);
Prescription prescription = new Prescription();
- if(prescriptionsDAO.getMedicByCIP13(drug.getCip13()) == null) {
+ if (prescriptionsDAO.getMedicByCIP13(drug.getCip13()) == null) {
prescription.setName(drug.getName());
prescription.setCip13(drug.getCip13());
prescription.setCis(drug.getCis());
@@ -127,8 +129,7 @@ public class DrugListActivity extends AppCompatActivity {
prescription.setLast_update(drug.getDateLastUpdate());
prescriptionsDAO.insert(prescription);
- }
- else {
+ } else {
Log.i(TAG, "Already in the database");
}
}
@@ -142,18 +143,10 @@ public class DrugListActivity extends AppCompatActivity {
}
// start tutorial (only in non debug mode)
- // if(!net.foucry.pilldroid.BuildConfig.DEBUG) {
- Log.i(TAG, "Launch tutorial");
- startActivity(new Intent(this, WelcomeActivity.class));
- // }
-
- PrefManager prefManager = new PrefManager(this);
- if (!prefManager.isUnderstood()) {
- askForComprehensive();
- prefManager.setUnderstood(true);
- }
-
-
+ // if(!net.foucry.pilldroid.BuildConfig.DEBUG) {
+ Log.i(TAG, "Launch tutorial");
+ startActivity(new Intent(this, WelcomeActivity.class));
+ // }
}
@Override
@@ -165,11 +158,12 @@ public class DrugListActivity extends AppCompatActivity {
super.onPause();
Log.d(TAG, "onPause");
- if (!AlarmReceiver.isAlarmScheduled(this)){
+ if (!AlarmReceiver.isAlarmScheduled(this)) {
AlarmReceiver.scheduleAlarm(this);
}
}
+
@SuppressLint("NotifyDataSetChanged")
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -184,41 +178,43 @@ public class DrugListActivity extends AppCompatActivity {
// Set view content
setContentView(R.layout.drug_list_activity);
- Toolbar toolbar = findViewById(R.id.toolbar);
+ MaterialToolbar toolbar = findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
toolbar.setTitle(getTitle());
}
+ FloatingActionButton mFloatingActionButton = findViewById(R.id.fab);
+ mFloatingActionButton.setOnClickListener(v-> onButtonClick());
if (DEMO) {
- PrescriptionsDAO prescriptionsDAO = prescriptions.getPrescriptionsDAO();
+ PrescriptionsDAO prescriptionsDAO = prescriptions.getPrescriptionsDAO();
- if (prescriptionsDAO.getMedicCount() == 0) {
- final int min_stock = 5;
- final int max_stock = 50;
- final int min_take = 0;
- final int max_take = 3;
+ if (prescriptionsDAO.getMedicCount() == 0) {
+ final int min_stock = 5;
+ final int max_stock = 50;
+ final int min_take = 0;
+ final int max_take = 3;
- for (int i = 1; i < 9; i++) {
- Prescription prescription = new Prescription();
- prescription.setName("Medicament test " + i);
- prescription.setCip13("340093000001" + i);
- prescription.setCis("6000001" + i);
- prescription.setAdministration_mode("oral");
- prescription.setPresentation("plaquette(s) thermoformée(s) PVC PVDC aluminium de 10 comprimé(s)");
- prescription.setStock((float) intRandomExclusive(min_stock, max_stock));
- prescription.setTake((float) intRandomExclusive(min_take, max_take));
- prescription.setWarning(14);
- prescription.setAlert(7);
- prescription.setLast_update(UtilDate.dateAtNoon(new Date()).getTime());
+ for (int i = 1; i < 9; i++) {
+ Prescription prescription = new Prescription();
+ prescription.setName("Medicament test " + i);
+ prescription.setCip13("340093000001" + i);
+ prescription.setCis("6000001" + i);
+ prescription.setAdministration_mode("oral");
+ prescription.setPresentation("plaquette(s) thermoformée(s) PVC PVDC aluminium de 10 comprimé(s)");
+ prescription.setStock((float) intRandomExclusive(min_stock, max_stock));
+ prescription.setTake((float) intRandomExclusive(min_take, max_take));
+ prescription.setWarning(14);
+ prescription.setAlert(7);
+ prescription.setLast_update(UtilDate.dateAtNoon(new Date()).getTime());
- prescriptionsDAO.insert(prescription);
- }
- List prescriptions = prescriptionsDAO.getAllMedics();
- System.out.println(prescriptions);
- Log.d(TAG, "prescriptions ==" + prescriptions);
- }
+ prescriptionsDAO.insert(prescription);
+ }
+ List prescriptions = prescriptionsDAO.getAllMedics();
+ System.out.println(prescriptions);
+ Log.d(TAG, "prescriptions ==" + prescriptions);
+ }
}
mBarcodeScannerLauncher = registerForActivityResult(new PilldroidScanContract(),
@@ -230,6 +226,7 @@ public class DrugListActivity extends AppCompatActivity {
Log.d(TAG, "Missing camera permission");
Toast.makeText(this, R.string.missing_camera_permission, Toast.LENGTH_LONG).show();
} else {
+ assert bundle != null;
Log.d(TAG, "bundle == " + bundle.getInt("returnCode"));
int returnCode = bundle.getInt("returnCode");
int resultCode = bundle.getInt("resultCode");
@@ -253,13 +250,13 @@ public class DrugListActivity extends AppCompatActivity {
}
String cip13;
- switch (bundle.getString(BARCODE_FORMAT_NAME)) {
+ switch (Objects.requireNonNull(bundle.getString(BARCODE_FORMAT_NAME))) {
case "CODE_128":
case "EAN_13": //CODE_128 || EAN 13
cip13 = bundle.getString(BARCODE_CONTENT);
break;
case "DATA_MATRIX":
- cip13 = bundle.getString(BARCODE_CONTENT).substring(4, 17);
+ cip13 = Objects.requireNonNull(bundle.getString(BARCODE_CONTENT)).substring(4, 17);
break;
default:
scanNotOK();
@@ -323,7 +320,7 @@ public class DrugListActivity extends AppCompatActivity {
}
// Launch scan
- public void onButtonClick(View v) {
+ public void onButtonClick() {
Log.d(TAG, "add medication");
ScanOptions options = new ScanOptions();
options.setDesiredBarcodeFormats(ScanOptions.DATA_MATRIX, ScanOptions.CODE_128);
@@ -332,11 +329,10 @@ public class DrugListActivity extends AppCompatActivity {
options.setBarcodeImageEnabled(true);
options.setTimeout(60);
options.setCaptureActivity(CustomScannerActivity.class);
- options.setBeepEnabled(true);
options.addExtra(Intents.Scan.SCAN_TYPE, Intents.Scan.MIXED_SCAN);
options.addExtra(Intents.Scan.SCAN_TYPE, Intents.Scan.INVERTED_SCAN);
- Log.d(TAG, "scanOptions == " + options);
+ Log.d(TAG, "scanOptions == " + options);
mBarcodeScannerLauncher.launch(options);
}
@@ -344,42 +340,62 @@ public class DrugListActivity extends AppCompatActivity {
* show keyboardInput dialog
*/
protected void showInputDialog() {
- // get prompts.xml view
- LayoutInflater layoutInflater = LayoutInflater.from(DrugListActivity.this);
- View promptView = layoutInflater.inflate(R.layout.input_dialog, null);
- AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(DrugListActivity.this);
- alertDialogBuilder.setView(promptView);
+ final Dialog dialog = new Dialog(this);
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- final EditText editText = promptView.findViewById(R.id.edittext);
- // setup a dialog window
+ dialog.setCancelable(true);
+ dialog.setCanceledOnTouchOutside(true);
+ dialog.setContentView(R.layout.input_dialog);
- alertDialogBuilder.setCancelable(false)
- .setPositiveButton("OK", (dialog, id) -> {
- //String cip13 = editText.getText().toString();
- String cip13 = "34009" + editText.getText().toString();
- MedicinesDAO medicineDAO = medicines.getMedicinesDAO();
- Medicine aMedicine = medicineDAO.getMedicineByCIP13(cip13);
- askToAddInDB(aMedicine);
- })
- .setNegativeButton("Cancel",
- (dialog, id) -> dialog.cancel());
+ MaterialButton ok = dialog.findViewById(R.id.agreed);
+ MaterialButton cancel = dialog.findViewById(R.id.notagreed);
+ ok.setEnabled(false);
+ ok.setBackground(Objects.requireNonNull(ContextCompat.getDrawable(this, R.drawable.rounded_btn_disabled)));
+ MaterialTextView title = dialog.findViewById(R.id.title);
+ final EditText editText = dialog.findViewById(R.id.editcip13);
+ String cip13 = String.valueOf(editText.getText());
- // create an alert dialog
- AlertDialog alert = alertDialogBuilder.create();
+ // TODO change the color of ok button when the number of character is correct.
+ ok.setText(R.string.button_ok);
+ cancel.setText(R.string.button_cancel);
editText.addTextChangedListener(new TextWatcher() {
@Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
@Override
- public void onTextChanged(CharSequence s, int start, int before, int count) { }
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
@Override
public void afterTextChanged(Editable s) {
- alert.getButton(alert.BUTTON_POSITIVE).setEnabled(s.length() == 8);
+ //alert.getButton(alert.BUTTON_POSITIVE).setEnabled(s.length() == 8);
+ if (s.length() == 8) {
+ ok.setEnabled(true);
+ ok.setBackground(Objects.requireNonNull(ContextCompat.getDrawable(editText.getContext(), R.drawable.rounded_btn)));
+ }
+ else {
+ ok.setEnabled(false);
+ ok.setBackground(Objects.requireNonNull(ContextCompat.getDrawable(editText.getContext(), R.drawable.rounded_btn_disabled)));
+ }
}
});
- alert.show();
+ ok.setOnClickListener(v -> {
+ dialog.cancel();
+ Log.i("EditText Value",editText.getEditableText().toString());
+ MedicinesDAO medicinesDAO = medicines.getMedicinesDAO();
+ Medicine aMedicine = medicinesDAO.getMedicineByCIP13(cip13);
+ askToAddInDB(aMedicine);
+ });
+ cancel.setOnClickListener(v -> {
+ dialog.cancel();
+ Log.i(TAG, "dismiss dialog");
+ });
+
+ dialog.show();
}
/**
@@ -389,24 +405,40 @@ public class DrugListActivity extends AppCompatActivity {
* @param aMedicine Prescription- medication to be added
*/
private void askToAddInDB(Medicine aMedicine) {
- AlertDialog.Builder dlg = new AlertDialog.Builder(this);
- dlg.setTitle(getString(R.string.app_name));
+ final Dialog dlg = new Dialog(this);
+ dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ Objects.requireNonNull(dlg.getWindow()).setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
+ dlg.setContentView(R.layout.custom_dialog_layout_one_button);
+ dlg.setCancelable(true);
+ MaterialTextView msg = dlg.findViewById(R.id.msg);
+ String msgString;
+ MaterialTextView cpl = dlg.findViewById(R.id.cpl);
+ ShapeableImageView icon = dlg.findViewById(R.id.image);
+ MaterialButton btn = dlg.findViewById(R.id.txtClose);
+ dlg.show();
if (aMedicine != null) {
- String msg = aMedicine.getName() + " " + getString(R.string.msgFound);
-
- dlg.setMessage(msg);
- dlg.setNegativeButton(getString(R.string.button_cancel), (dialog, which) -> {
- // Nothing to do in case of cancel
- });
- dlg.setPositiveButton(getString(R.string.button_ok), (dialog, which) -> {
- // Add Drug to DB then try to show it
+ msgString = aMedicine.getName() + " " + getString(R.string.msgFound);
+ msg.setText(msgString);
+ cpl.setText(getString(R.string.addInList));
+ icon.setImageResource(R.drawable.tickmark);
+ btn.setText(getString(R.string.Yes));
+ btn.setOnClickListener(v -> {
+ // TODO Auto-generated method stub
+ dlg.dismiss();
+ finish();
addDrugToList(Utils.medicine2prescription(aMedicine));
});
} else {
- dlg.setMessage(getString(R.string.msgNotFound));
- dlg.setPositiveButton("OK", (dialog, which) -> {
- // nothing to do to just dismiss dialog
+ msgString = getString(R.string.msgNotFound);
+ msg.setText(msgString);
+ cpl.setText("");
+ icon.setImageResource(R.drawable.tickcross);
+ btn.setText(getString(R.string.button_close));
+ btn.setOnClickListener(v -> {
+ // TODO Auto-generated method stub
+ dlg.dismiss();
+ finish();
});
}
dlg.show();
@@ -416,7 +448,7 @@ public class DrugListActivity extends AppCompatActivity {
* Tell user that the barre code cannot be interpreted
*/
private void scanNotOK() {
- AlertDialog.Builder dlg = new AlertDialog.Builder(this);
+ MaterialAlertDialogBuilder dlg = new MaterialAlertDialogBuilder(this);
dlg.setTitle(getString(R.string.app_name));
dlg.setMessage(R.string.notInterpreted);
@@ -426,20 +458,6 @@ public class DrugListActivity extends AppCompatActivity {
dlg.show();
}
- /**
- * askForCompréhensive
- */
- private void askForComprehensive() {
- AlertDialog.Builder dlg = new AlertDialog.Builder(this);
- dlg.setTitle(getString(R.string.app_name));
-
- dlg.setMessage(R.string.understood);
- dlg.setPositiveButton(R.string.Yes, (dialog, which) -> {
- // Nothing to do just dismiss dialog
- });
- dlg.show();
- }
-
/**
* Add New drug to the user database
@@ -460,6 +478,7 @@ public class DrugListActivity extends AppCompatActivity {
startActivityForResult(intent, CUSTOMIZED_REQUEST_CODE);
overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left);
}
+
/**
* setupRecyclerView (list of drugs)
*
@@ -470,7 +489,7 @@ public class DrugListActivity extends AppCompatActivity {
mAdapter = new RecyclerViewAdapter(prescriptionList);
recyclerView.setAdapter(mAdapter);
- new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, (ItemTouchHelper.RIGHT|ItemTouchHelper.LEFT)) {
+ new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, (ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT)) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
@@ -492,80 +511,88 @@ public class DrugListActivity extends AppCompatActivity {
} else {
// Call DetailView
Intent intent = new Intent(getApplicationContext(), DrugDetailActivity.class);
- intent.putExtra("prescription", prescription);
+ intent.putExtra("prescription", prescription);
startActivityForResult(intent, CUSTOMIZED_REQUEST_CODE);
}
Snackbar.make(recyclerView, prescription.getName(),
- Snackbar.LENGTH_LONG).setAction(R.string.Undo, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- prescriptionList.add(position, prescription);
- mAdapter.notifyItemInserted(position);
- }
- }).show();
- }
+ Snackbar.LENGTH_LONG).setAction(R.string.Undo, v -> {
+ prescriptionList.add(position, prescription);
+ mAdapter.notifyItemInserted(position);
+ }).setActionTextColor(getResources().getColor(R.color.bg_screen1))
+ .show();
+ }
- @Override
- public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
- if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
- // Get RecyclerView item from the ViewHolder
- View itemView = viewHolder.itemView;
+ @Override
+ public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
+ if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
+ // Get RecyclerView item from the ViewHolder
+ View itemView = viewHolder.itemView;
- Paint p = new Paint();
- Drawable icon;
- icon = ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_trash_can_outline);
+ Paint p = new Paint();
+ Drawable icon;
+ icon = ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_trash_can_outline);
- int xMarkMargin = (int) getApplicationContext().getResources().getDimension(R.dimen.fab_margin);
+ int xMarkMargin = (int) getApplicationContext().getResources().getDimension(R.dimen.fab_margin);
+ assert icon != null;
+ int intrinsicWidth = icon.getIntrinsicWidth();
+ int intrinsicHeight = icon.getIntrinsicHeight();
+ int itemHeight = itemView.getBottom() - itemView.getTop();
+
+ if (dX > 0) {
+ p.setColor(getColor(R.color.bg_screen3));
+ icon = ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_edit_black_48dp);
+
+ // Draw Rect with varying right side, equal to displacement dX
+ c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX,
+ (float) itemView.getBottom(), p);
+
+ int xMarkLeft = itemView.getLeft() + xMarkMargin;
+ int xMarkRight = itemView.getLeft() + xMarkMargin + intrinsicWidth;
+ int xMarkTop = itemView.getTop() + (itemHeight - intrinsicHeight) / 2;
+ int xMarkBottom = xMarkTop + intrinsicHeight;// +xMarkTop;
assert icon != null;
- int intrinsicWidth = icon.getIntrinsicWidth();
- int intrinsicHeight = icon.getIntrinsicHeight();
- int itemHeight = itemView.getBottom() - itemView.getTop();
+ icon.setBounds(xMarkLeft, xMarkTop, xMarkRight, xMarkBottom);
- if (dX > 0) {
- p.setColor(getColor(R.color.bg_screen3));
- icon = ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_edit_black_48dp);
-
- // Draw Rect with varying right side, equal to displacement dX
- c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX,
- (float) itemView.getBottom(), p);
-
- int xMarkLeft = itemView.getLeft() + xMarkMargin;
- int xMarkRight = itemView.getLeft() + xMarkMargin + intrinsicWidth;
- int xMarkTop = itemView.getTop() + (itemHeight - intrinsicHeight) / 2;
- int xMarkBottom = xMarkTop + intrinsicHeight;// +xMarkTop;
- assert icon != null;
- icon.setBounds(xMarkLeft, xMarkTop, xMarkRight, xMarkBottom);
-
- } else {
- p.setColor(getColor(R.color.bg_screen4));
- // Draw Rect with varying left side, equal to the item's right side plus negative displacement dX
- c.drawRect((float) itemView.getRight() + dX, (float) itemView.getTop(),
- (float) itemView.getRight(), (float) itemView.getBottom(), p);
+ } else {
+ p.setColor(getColor(R.color.bg_screen4));
+ // Draw Rect with varying left side, equal to the item's right side plus negative displacement dX
+ c.drawRect((float) itemView.getRight() + dX, (float) itemView.getTop(),
+ (float) itemView.getRight(), (float) itemView.getBottom(), p);
- int xMarkLeft = itemView.getRight() - xMarkMargin - intrinsicWidth;
- int xMarkRight = itemView.getRight() - xMarkMargin;
- int xMarkTop = itemView.getTop() + (itemHeight - intrinsicHeight) / 2;
- int xMarkBottom = xMarkTop + intrinsicHeight;
- icon.setBounds(xMarkLeft, xMarkTop, xMarkRight, xMarkBottom);
+ int xMarkLeft = itemView.getRight() - xMarkMargin - intrinsicWidth;
+ int xMarkRight = itemView.getRight() - xMarkMargin;
+ int xMarkTop = itemView.getTop() + (itemHeight - intrinsicHeight) / 2;
+ int xMarkBottom = xMarkTop + intrinsicHeight;
+ icon.setBounds(xMarkLeft, xMarkTop, xMarkRight, xMarkBottom);
- }
- icon.draw(c);
-
- super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
+ icon.draw(c);
+
+ super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
+ }
}).attachToRecyclerView(recyclerView);
- }
+ }
+
+ private String getAppName() {
+ PackageManager packageManager = getApplicationContext().getPackageManager();
+ ApplicationInfo applicationInfo = null;
+ try {
+ applicationInfo = packageManager.getApplicationInfo(this.getPackageName(), 0);
+ } catch (final PackageManager.NameNotFoundException ignored) {
+ }
+ return (String) ((applicationInfo != null) ? packageManager.getApplicationLabel(applicationInfo) : "???");
+ }
/**
* SimpleItemRecyclerViewAdapter
*/
public class RecyclerViewAdapter extends
- RecyclerView.Adapter {
+ RecyclerView.Adapter {
private final List mValues;
@@ -620,17 +647,14 @@ public class DrugListActivity extends AppCompatActivity {
holder.mView.setBackgroundResource(R.drawable.gradient_bg);
holder.mIconView.setImageResource(R.drawable.ic_suspended_pill);
- holder.mView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Prescription aPrescription = mValues.get(position);
- Context context = v.getContext();
- Intent intent = new Intent(context, DrugDetailActivity.class);
- intent.putExtra("prescription", aPrescription);
- startActivityForResult(intent, CUSTOMIZED_REQUEST_CODE);
- overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left);
+ holder.mView.setOnClickListener(v -> {
+ Prescription aPrescription = mValues.get(position);
+ Context context = v.getContext();
+ Intent intent = new Intent(context, DrugDetailActivity.class);
+ intent.putExtra("prescription", aPrescription);
+ startActivityForResult(intent, CUSTOMIZED_REQUEST_CODE);
+ overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left);
- }
});
} else {
int remainingStock = (int) Math.floor(mValues.get(position).getStock() / mValues.get(position).getTake());
@@ -646,16 +670,13 @@ public class DrugListActivity extends AppCompatActivity {
holder.mIconView.setImageResource(R.drawable.ok_stock_vect);
}
- holder.mView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Prescription prescription = mValues.get(position);
- Context context = v.getContext();
- Intent intent = new Intent(context, DrugDetailActivity.class);
- intent.putExtra("prescription", prescription);
- startActivityForResult(intent, CUSTOMIZED_REQUEST_CODE);
- overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left);
- }
+ holder.mView.setOnClickListener(v -> {
+ Prescription prescription = mValues.get(position);
+ Context context = v.getContext();
+ Intent intent = new Intent(context, DrugDetailActivity.class);
+ intent.putExtra("prescription", prescription);
+ startActivityForResult(intent, CUSTOMIZED_REQUEST_CODE);
+ overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left);
});
}
}
@@ -667,9 +688,9 @@ public class DrugListActivity extends AppCompatActivity {
class ViewHolder extends RecyclerView.ViewHolder {
final View mView;
- final TextView mContentView;
- final TextView mEndOfStock;
- final ImageView mIconView;
+ final MaterialTextView mContentView;
+ final MaterialTextView mEndOfStock;
+ final ShapeableImageView mIconView;
public Prescription mItem;
ViewHolder(View view) {
@@ -687,14 +708,4 @@ public class DrugListActivity extends AppCompatActivity {
}
}
}
-
- private String getAppName() {
- PackageManager packageManager = getApplicationContext().getPackageManager();
- ApplicationInfo applicationInfo = null;
- try {
- applicationInfo = packageManager.getApplicationInfo(this.getPackageName(), 0);
- } catch (final PackageManager.NameNotFoundException ignored) {
- }
- return (String) ((applicationInfo != null) ? packageManager.getApplicationLabel(applicationInfo) : "???");
- }
}
diff --git a/app/src/main/java/net/foucry/pilldroid/PilldroidScanContract.java b/app/src/main/java/net/foucry/pilldroid/PilldroidScanContract.java
index 8c8478a..4be8727 100644
--- a/app/src/main/java/net/foucry/pilldroid/PilldroidScanContract.java
+++ b/app/src/main/java/net/foucry/pilldroid/PilldroidScanContract.java
@@ -13,23 +13,24 @@ import com.journeyapps.barcodescanner.ScanIntentResult;
import com.journeyapps.barcodescanner.ScanOptions;
-public class PilldroidScanContract extends ActivityResultContract{
- private static final String TAG = PilldroidScanContract.class.getName();
- @NonNull
- @Override
- public Intent createIntent(@NonNull Context context, ScanOptions input) {
- Log.d(TAG, "create Intent");
+public class PilldroidScanContract extends ActivityResultContract {
+ private static final String TAG = PilldroidScanContract.class.getName();
- Intent intent = new Intent(context, CustomScannerActivity.class);
+ @NonNull
+ @Override
+ public Intent createIntent(@NonNull Context context, ScanOptions input) {
+ Log.d(TAG, "create Intent");
- intent.setAction(Intents.Scan.ACTION);
+ Intent intent = new Intent(context, CustomScannerActivity.class);
- Log.d(TAG, "intent ==" + intent);
- return(intent);
- }
+ intent.setAction(Intents.Scan.ACTION);
- @Override
- public ScanIntentResult parseResult(int resultCode, @Nullable Intent intent) {
- return ScanIntentResult.parseActivityResult(resultCode, intent);
- }
+ Log.d(TAG, "intent ==" + intent);
+ return (intent);
+ }
+
+ @Override
+ public ScanIntentResult parseResult(int resultCode, @Nullable Intent intent) {
+ return ScanIntentResult.parseActivityResult(resultCode, intent);
+ }
}
diff --git a/app/src/main/java/net/foucry/pilldroid/PrefManager.java b/app/src/main/java/net/foucry/pilldroid/PrefManager.java
index 8d0989d..6e2429c 100644
--- a/app/src/main/java/net/foucry/pilldroid/PrefManager.java
+++ b/app/src/main/java/net/foucry/pilldroid/PrefManager.java
@@ -4,49 +4,51 @@ package net.foucry.pilldroid;
import android.content.Context;
import android.content.SharedPreferences;
- /**
- * Created by Lincoln on 05/05/16.
- */
- public class PrefManager {
- final SharedPreferences pref;
- SharedPreferences.Editor editor;
+/**
+ * Created by Lincoln on 05/05/16.
+ */
+public class PrefManager {
+ // Shared preferences file name
+ private static final String PREF_NAME = "Pildroid-Prefs";
+ private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";
+ private static final String DATABASE_VERSION = "DatabaseVersion";
+ private static final String IS_UNDERSTOOD = "IsUnderStood";
+ final SharedPreferences pref;
+ // shared pref mode
+ final int PRIVATE_MODE = 0;
+ SharedPreferences.Editor editor;
- // shared pref mode
- final int PRIVATE_MODE = 0;
-
- // Shared preferences file name
- private static final String PREF_NAME = "Pildroid-Prefs";
- private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";
- private static final String DATABASE_VERSION = "DatabaseVersion";
- private static final String IS_UNDERSTOOD = "IsUnderStood";
-
- public PrefManager(Context context) {
- pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
- }
-
- public void setFirstTimeLaunch(boolean isFirstTime) {
- editor = pref.edit();
- editor.putBoolean(IS_FIRST_TIME_LAUNCH, isFirstTime);
- editor.apply();
- }
-
- public void setDatabaseVersion(int version) {
- editor = pref.edit();
- editor.putInt(DATABASE_VERSION, version);
- editor.apply();
- }
-
- public void setUnderstood(boolean isUnderstood) {
- editor = pref.edit();
- editor.putBoolean(IS_UNDERSTOOD, isUnderstood);
- editor.apply();
- }
-
- public boolean isFirstTimeLaunch() {
- return pref.getBoolean(IS_FIRST_TIME_LAUNCH, true);
- }
- public int getDatabaseVersion() {
- return pref.getInt(DATABASE_VERSION, 0);
- }
- public boolean isUnderstood() {return pref.getBoolean(IS_UNDERSTOOD, false); }
+ public PrefManager(Context context) {
+ pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
}
+
+ public boolean isFirstTimeLaunch() {
+ return pref.getBoolean(IS_FIRST_TIME_LAUNCH, true);
+ }
+
+ public void setFirstTimeLaunch(boolean isFirstTime) {
+ editor = pref.edit();
+ editor.putBoolean(IS_FIRST_TIME_LAUNCH, isFirstTime);
+ editor.apply();
+ }
+
+ public int getDatabaseVersion() {
+ return pref.getInt(DATABASE_VERSION, 0);
+ }
+
+ public void setDatabaseVersion(int version) {
+ editor = pref.edit();
+ editor.putInt(DATABASE_VERSION, version);
+ editor.apply();
+ }
+
+ public boolean isUnderstood() {
+ return pref.getBoolean(IS_UNDERSTOOD, false);
+ }
+
+ public void setUnderstood(boolean isUnderstood) {
+ editor = pref.edit();
+ editor.putBoolean(IS_UNDERSTOOD, isUnderstood);
+ editor.apply();
+ }
+}
diff --git a/app/src/main/java/net/foucry/pilldroid/UtilDate.java b/app/src/main/java/net/foucry/pilldroid/UtilDate.java
index 9a67307..37595dc 100644
--- a/app/src/main/java/net/foucry/pilldroid/UtilDate.java
+++ b/app/src/main/java/net/foucry/pilldroid/UtilDate.java
@@ -86,11 +86,12 @@ public class UtilDate {
Date oldDate = dateAtNoon(date); // Be sure that the old date is at Noon
Date todayDate = dateAtNoon(new Date()); // Be sure that we use today at Noon
- return (int) (todayDate.getTime() - oldDate.getTime())/(86400*1000);
+ return (int) (todayDate.getTime() - oldDate.getTime()) / (86400 * 1000);
}
/**
* Convert dateInMilliseconds into string formatted date
+ *
* @param dateInMilliseconds long
* @return formatted Date String
*/
diff --git a/app/src/main/java/net/foucry/pilldroid/Utils.java b/app/src/main/java/net/foucry/pilldroid/Utils.java
index b5b65ff..623b2df 100644
--- a/app/src/main/java/net/foucry/pilldroid/Utils.java
+++ b/app/src/main/java/net/foucry/pilldroid/Utils.java
@@ -3,7 +3,6 @@ package net.foucry.pilldroid;
import net.foucry.pilldroid.models.Medicine;
import net.foucry.pilldroid.models.Prescription;
-import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@@ -14,21 +13,21 @@ public class Utils {
/**
* Return a random number between two values - use to generate a false demo DB
+ *
* @param min minimal value accepted
* @param max maximum value accepted
* @return int random number
*/
static int intRandomExclusive(int min, int max) {
Random r = new Random();
- return r.nextInt(max - min) +max;
+ return r.nextInt(max - min) + max;
}
- public static String fmt(double d)
- {
- if(d == (long) d)
- return String.format(Locale.getDefault(),"%d",(long)d);
+ public static String fmt(double d) {
+ if (d == (long) d)
+ return String.format(Locale.getDefault(), "%d", (long) d);
else
- return String.format("%s",d);
+ return String.format("%s", d);
}
public static Prescription medicine2prescription(Medicine aMedicine) {
@@ -49,14 +48,11 @@ public class Utils {
}
public static void sortPrescriptionList(List prescriptionList) {
- prescriptionList.sort(new Comparator<>() {
- @Override
- public int compare(Prescription lhs, Prescription rhs) {
- if (lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock()) != 0)
- return lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock());
- else
- return (int) (lhs.getStock() - rhs.getStock());
- }
+ prescriptionList.sort((lhs, rhs) -> {
+ if (lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock()) != 0)
+ return lhs.getDateEndOfStock().compareTo(rhs.getDateEndOfStock());
+ else
+ return (int) (lhs.getStock() - rhs.getStock());
});
}
diff --git a/app/src/main/java/net/foucry/pilldroid/WelcomeActivity.java b/app/src/main/java/net/foucry/pilldroid/WelcomeActivity.java
index 43791a2..e6ee362 100644
--- a/app/src/main/java/net/foucry/pilldroid/WelcomeActivity.java
+++ b/app/src/main/java/net/foucry/pilldroid/WelcomeActivity.java
@@ -1,7 +1,9 @@
package net.foucry.pilldroid;
+import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -11,126 +13,23 @@ import android.view.Window;
import android.view.WindowInsets;
import android.view.WindowInsetsController;
import android.view.WindowManager;
-import android.widget.Button;
import android.widget.LinearLayout;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
+import com.google.android.material.button.MaterialButton;
+import com.google.android.material.imageview.ShapeableImageView;
+import com.google.android.material.textview.MaterialTextView;
public class WelcomeActivity extends AppCompatActivity {
private ViewPager viewPager;
private LinearLayout dotsLayout;
private int[] layouts;
- private Button btnSkip, btnNext;
- private PrefManager prefManager;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- boolean DEBUG = false;
-
- // Checking for first time launch - before calling setContentView()
- prefManager = new PrefManager(this);
- if (DEBUG) {
- prefManager.setFirstTimeLaunch(true);
- }
- if (!prefManager.isFirstTimeLaunch()) {
- finish();
- }
-
- prefManager.setFirstTimeLaunch(false);
- setContentView(R.layout.welcome_activity);
-
- setFullScreen();
-
- viewPager = findViewById(R.id.view_pager);
- dotsLayout = findViewById(R.id.layoutDots);
- btnSkip = findViewById(R.id.btn_skip);
- btnNext = findViewById(R.id.btn_next);
-
-
- // layouts of all welcome sliders
- // add few more layouts if you want
- layouts = new int[]{
- R.layout.welcome1,
- R.layout.welcome2,
- R.layout.welcome3,
- R.layout.welcome4,
- R.layout.welcome5,
- R.layout.welcome6,
- R.layout.welcome7,
- R.layout.welcome8,
- R.layout.welcome9,
- R.layout.welcome10,
- R.layout.welcome11,
- R.layout.welcome12};
-
- // adding bottom dots
- addBottomDots(0);
-
- // making notification bar transparent
- changeStatusBarColor();
-
- MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter();
- viewPager.setAdapter(myViewPagerAdapter);
- viewPager.addOnPageChangeListener(viewPagerPageChangeListener);
-
- btnSkip.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- launchHomeScreen();
- }
- });
-
- btnNext.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // checking for last page
- // if last page home screen will be launched
- int current = getItem();
- if (current < layouts.length) {
- // move to next screen
- viewPager.setCurrentItem(current);
- overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);
- } else {
- launchHomeScreen();
- }
- }
- });
- }
-
- private void addBottomDots(int currentPage) {
- TextView[] dots = new TextView[layouts.length];
-
- dotsLayout.removeAllViews();
- for (int i = 0; i < dots.length; i++) {
- dots[i] = new TextView(this);
- dots[i].setText("∙");
- dots[i].setTextSize(65);
- dots[i].setTextColor(ContextCompat.getColor(this, R.color.dot_dark));
- dotsLayout.addView(dots[i]);
- }
-
- if (dots.length > 0)
- dots[currentPage].setTextColor(ContextCompat.getColor(this, R.color.dot_light));
- }
-
- private int getItem() {
- return viewPager.getCurrentItem() + 1;
- }
-
- void launchHomeScreen() {
- prefManager.setFirstTimeLaunch(false);
- startActivity(new Intent(WelcomeActivity.this, DrugListActivity.class));
- finish();
- }
-
+ private MaterialButton btnSkip, btnNext;
// viewpager change listener
final ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() {
@@ -160,6 +59,131 @@ public class WelcomeActivity extends AppCompatActivity {
}
};
+ private PrefManager prefManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ boolean DEBUG = false;
+
+ // Checking for first time launch - before calling setContentView()
+ prefManager = new PrefManager(this);
+ if (DEBUG) {
+ prefManager.setFirstTimeLaunch(true);
+ }
+ if (!prefManager.isFirstTimeLaunch()) {
+ finish();
+ }
+
+ prefManager.setFirstTimeLaunch(false);
+
+ if (!prefManager.isUnderstood()) {
+ askForComprehensive();
+ prefManager.setUnderstood(true);
+ }
+
+ setContentView(R.layout.welcome_activity);
+
+ setFullScreen();
+
+ viewPager = findViewById(R.id.view_pager);
+ dotsLayout = findViewById(R.id.layoutDots);
+ btnSkip = findViewById(R.id.btn_skip);
+ btnNext = findViewById(R.id.btn_next);
+
+
+ // layouts of all welcome sliders
+ // add few more layouts if you want
+ layouts = new int[]{
+ R.layout.welcome1,
+ R.layout.welcome2,
+ R.layout.welcome3,
+ R.layout.welcome4,
+ R.layout.welcome5,
+ R.layout.welcome6,
+ R.layout.welcome7,
+ R.layout.welcome8,
+ R.layout.welcome9,
+ R.layout.welcome10,
+ R.layout.welcome11,
+ R.layout.welcome12};
+
+ // adding bottom dots
+ addBottomDots(0);
+
+ // making notification bar transparent
+ changeStatusBarColor();
+
+ MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter();
+ viewPager.setAdapter(myViewPagerAdapter);
+ viewPager.addOnPageChangeListener(viewPagerPageChangeListener);
+
+ btnSkip.setOnClickListener(v -> launchHomeScreen());
+
+ btnNext.setOnClickListener(v -> {
+ // checking for last page
+ // if last page home screen will be launched
+ int current = getItem();
+ if (current < layouts.length) {
+ // move to next screen
+ viewPager.setCurrentItem(current);
+ overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);
+ } else {
+ launchHomeScreen();
+ }
+ });
+ }
+
+ private void askForComprehensive() {
+ final Dialog dlg = new Dialog(this);
+ dlg.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dlg.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
+ dlg.setContentView(R.layout.custom_dialog_layout_one_button);
+ dlg.setCancelable(false);
+ MaterialTextView msg = dlg.findViewById(R.id.msg);
+ String msgString;
+ MaterialTextView cpl = dlg.findViewById(R.id.cpl);
+ ShapeableImageView icon = dlg.findViewById(R.id.image);
+ MaterialButton btn = dlg.findViewById(R.id.txtClose);
+ dlg.show();
+
+ msgString = getString(R.string.understood);
+ msg.setText(msgString);
+ cpl.setVisibility(View.GONE);
+ //icon.setImageResource(R.drawable.pilldroid_icon);
+ btn.setText(R.string.Yes_understood);
+ btn.setOnClickListener(v -> {
+ // TODO Auto-generated method stub
+ dlg.dismiss();
+ });
+ }
+
+ private void addBottomDots(int currentPage) {
+ MaterialTextView[] dots = new MaterialTextView[layouts.length];
+
+ dotsLayout.removeAllViews();
+ for (int i = 0; i < dots.length; i++) {
+ dots[i] = new MaterialTextView(this);
+ dots[i].setText("∙");
+ dots[i].setTextSize(65);
+ dots[i].setTextColor(ContextCompat.getColor(this, R.color.dot_dark));
+ dotsLayout.addView(dots[i]);
+ }
+
+ if (dots.length > 0)
+ dots[currentPage].setTextColor(ContextCompat.getColor(this, R.color.dot_light));
+ }
+
+ private int getItem() {
+ return viewPager.getCurrentItem() + 1;
+ }
+
+ void launchHomeScreen() {
+ prefManager.setFirstTimeLaunch(false);
+ startActivity(new Intent(WelcomeActivity.this, DrugListActivity.class));
+ finish();
+ }
/**
* Making notification bar transparent
@@ -170,17 +194,16 @@ public class WelcomeActivity extends AppCompatActivity {
window.setStatusBarColor(Color.TRANSPARENT);
}
- private void setFullScreen(){
+ @SuppressWarnings("deprecation")
+ private void setFullScreen() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().setDecorFitsSystemWindows(false);
WindowInsetsController controller = getWindow().getInsetsController();
- if(controller != null) {
+ if (controller != null) {
controller.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
controller.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
- }
- else {
- //noinspection
+ } else {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
@@ -222,7 +245,7 @@ public class WelcomeActivity extends AppCompatActivity {
@Override
- public void destroyItem(ViewGroup container, int position, @NonNull Object object) {
+ public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
View view = (View) object;
container.removeView(view);
}
diff --git a/app/src/main/java/net/foucry/pilldroid/dao/PrescriptionsDAO.java b/app/src/main/java/net/foucry/pilldroid/dao/PrescriptionsDAO.java
index 969ac4a..4eb920a 100644
--- a/app/src/main/java/net/foucry/pilldroid/dao/PrescriptionsDAO.java
+++ b/app/src/main/java/net/foucry/pilldroid/dao/PrescriptionsDAO.java
@@ -12,23 +12,23 @@ import java.util.List;
@Dao
public interface PrescriptionsDAO {
- @Insert
- void insert(Prescription... prescriptions);
+ @Insert
+ void insert(Prescription... prescriptions);
- @Update
- void update(Prescription... prescriptions);
+ @Update
+ void update(Prescription... prescriptions);
- @Delete
- void delete(Prescription prescription);
+ @Delete
+ void delete(Prescription prescription);
- @Query("SELECT * FROM prescriptions")
- List getAllMedics();
+ @Query("SELECT * FROM prescriptions")
+ List getAllMedics();
- @Query("SELECT * FROM prescriptions WHERE cip13 = :cip13")
- Prescription getMedicByCIP13(String cip13);
+ @Query("SELECT * FROM prescriptions WHERE cip13 = :cip13")
+ Prescription getMedicByCIP13(String cip13);
- @Query("SELECT count(*) FROM prescriptions")
- int getMedicCount();
+ @Query("SELECT count(*) FROM prescriptions")
+ int getMedicCount();
}
diff --git a/app/src/main/java/net/foucry/pilldroid/databases/MedicineDatabase.java b/app/src/main/java/net/foucry/pilldroid/databases/MedicineDatabase.java
index 0f50517..763ce18 100644
--- a/app/src/main/java/net/foucry/pilldroid/databases/MedicineDatabase.java
+++ b/app/src/main/java/net/foucry/pilldroid/databases/MedicineDatabase.java
@@ -16,7 +16,7 @@ import net.foucry.pilldroid.models.Medicine;
public abstract class MedicineDatabase extends RoomDatabase {
private static MedicineDatabase INSTANCE;
- public abstract MedicinesDAO getMedicinesDAO();
+
public static MedicineDatabase getInstanceDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
@@ -32,4 +32,6 @@ public abstract class MedicineDatabase extends RoomDatabase {
public static void destroyInstance() {
INSTANCE = null;
}
+
+ public abstract MedicinesDAO getMedicinesDAO();
}
\ No newline at end of file
diff --git a/app/src/main/java/net/foucry/pilldroid/databases/PrescriptionDatabase.java b/app/src/main/java/net/foucry/pilldroid/databases/PrescriptionDatabase.java
index 406f05e..10e826e 100644
--- a/app/src/main/java/net/foucry/pilldroid/databases/PrescriptionDatabase.java
+++ b/app/src/main/java/net/foucry/pilldroid/databases/PrescriptionDatabase.java
@@ -13,38 +13,40 @@ import net.foucry.pilldroid.dao.PrescriptionsDAO;
import net.foucry.pilldroid.models.Prescription;
@Database(
- version = 2,
- entities = {Prescription.class},
- autoMigrations = {
- @AutoMigration(
- from = 1,
- to = 2,
- spec = PrescriptionDatabase.generic_typeMigration.class
- )
- }
+ version = 2,
+ entities = {Prescription.class},
+ autoMigrations = {
+ @AutoMigration(
+ from = 1,
+ to = 2,
+ spec = PrescriptionDatabase.generic_typeMigration.class
+ )
+ }
)
public abstract class PrescriptionDatabase extends RoomDatabase {
private static PrescriptionDatabase INSTANCE;
- public abstract PrescriptionsDAO getPrescriptionsDAO();
-
- @RenameColumn(tableName = "prescriptions", fromColumnName = "genetic_type", toColumnName = "generic_type")
- static class generic_typeMigration implements AutoMigrationSpec { }
-
public static PrescriptionDatabase getInstanceDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
- Room
- .databaseBuilder(context.getApplicationContext(),
- PrescriptionDatabase.class, "prescriptions")
- .allowMainThreadQueries()
- .build();
+ Room
+ .databaseBuilder(context.getApplicationContext(),
+ PrescriptionDatabase.class, "prescriptions")
+ .allowMainThreadQueries()
+ .build();
}
return INSTANCE;
}
+
public static void destroyInstance() {
INSTANCE = null;
}
+
+ public abstract PrescriptionsDAO getPrescriptionsDAO();
+
+ @RenameColumn(tableName = "prescriptions", fromColumnName = "genetic_type", toColumnName = "generic_type")
+ static class generic_typeMigration implements AutoMigrationSpec {
+ }
}
diff --git a/app/src/main/java/net/foucry/pilldroid/models/Medicine.java b/app/src/main/java/net/foucry/pilldroid/models/Medicine.java
index 1fd10be..ec69cd1 100644
--- a/app/src/main/java/net/foucry/pilldroid/models/Medicine.java
+++ b/app/src/main/java/net/foucry/pilldroid/models/Medicine.java
@@ -7,14 +7,15 @@ import androidx.room.PrimaryKey;
@Entity(tableName = "drugs")
public class Medicine {
@PrimaryKey
- @NonNull private Integer _id;
- private String cis;
- private String cip13;
- private String cip7;
- private String administration_mode;
- private String name;
- private String presentation;
- private String label_group;
+ @NonNull
+ private Integer _id;
+ private String cis;
+ private String cip13;
+ private String cip7;
+ private String administration_mode;
+ private String name;
+ private String presentation;
+ private String label_group;
private Integer generic_type;
public Medicine(@NonNull String cis) {
diff --git a/app/src/main/java/net/foucry/pilldroid/models/Prescription.java b/app/src/main/java/net/foucry/pilldroid/models/Prescription.java
index 7ce3ea9..45e41dc 100644
--- a/app/src/main/java/net/foucry/pilldroid/models/Prescription.java
+++ b/app/src/main/java/net/foucry/pilldroid/models/Prescription.java
@@ -1,8 +1,5 @@
package net.foucry.pilldroid.models;
-import android.util.Log;
-import android.widget.Toast;
-
import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@@ -15,7 +12,7 @@ import java.util.Date;
@Entity(tableName = "prescriptions")
public class Prescription implements Serializable {
- private static final String TAG = Prescription.class.getName();;
+ private static final String TAG = Prescription.class.getName();
@PrimaryKey
@NonNull
private String cis;
@@ -31,87 +28,87 @@ public class Prescription implements Serializable {
private String label_group;
private Integer generic_type;
- public void setCis(@NonNull String cis) {
- this.cis = cis;
- }
-
- public void setCip13(String cip13) {
- this.cip13 = cip13;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public void setAdministration_mode(String administration_mode) {
- this.administration_mode = administration_mode;
- }
-
- public void setPresentation(String presentation) {
- this.presentation = presentation;
- }
-
- public void setStock(Float stock) {
- this.stock = stock;
- }
-
- public void setTake(Float take) {
- this.take = take;
- }
-
- public void setWarning(Integer warning) {
- this.warning = warning;
- }
-
- public void setAlert(Integer alert) {
- this.alert = alert;
- }
-
- public void setLast_update(Long last_update) {
- this.last_update = last_update;
- }
-
@NonNull
public String getCis() {
return this.cis;
}
+ public void setCis(@NonNull String cis) {
+ this.cis = cis;
+ }
+
public Integer getWarning() {
return warning;
}
+ public void setWarning(Integer warning) {
+ this.warning = warning;
+ }
+
public String getCip13() {
return cip13;
}
+ public void setCip13(String cip13) {
+ this.cip13 = cip13;
+ }
+
public String getName() {
return name;
}
+ public void setName(String name) {
+ this.name = name;
+ }
+
public String getAdministration_mode() {
return administration_mode;
}
+ public void setAdministration_mode(String administration_mode) {
+ this.administration_mode = administration_mode;
+ }
+
public String getPresentation() {
return presentation;
}
+ public void setPresentation(String presentation) {
+ this.presentation = presentation;
+ }
+
public Float getStock() {
return stock;
}
+ public void setStock(Float stock) {
+ this.stock = stock;
+ }
+
public Float getTake() {
return take;
}
+ public void setTake(Float take) {
+ this.take = take;
+ }
+
public Integer getAlert() {
return alert;
}
+ public void setAlert(Integer alert) {
+ this.alert = alert;
+ }
+
public Long getLast_update() {
return last_update;
}
+ public void setLast_update(Long last_update) {
+ this.last_update = last_update;
+ }
+
public int getAlertThreshold() {
return this.alert;
}
@@ -167,8 +164,12 @@ public class Prescription implements Serializable {
}*/
if (numberOfDays > 0) {
+ float currentStock = 0;
+ float newStock = 0;
double takeDuringPeriod = this.take * numberOfDays;
- setStock((float) (getStock() - takeDuringPeriod));
+ currentStock = getStock();
+ newStock = (float) (currentStock - takeDuringPeriod);
+ setStock(newStock);
setLast_update(new Date().getTime());
}
}
diff --git a/app/src/main/res/anim/slide_from_left.xml b/app/src/main/res/anim/slide_from_left.xml
index e28db8a..084e18e 100644
--- a/app/src/main/res/anim/slide_from_left.xml
+++ b/app/src/main/res/anim/slide_from_left.xml
@@ -1,6 +1,8 @@
-
+ android:toXDelta="0" />
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_from_right.xml b/app/src/main/res/anim/slide_from_right.xml
index b4224a5..ca260c8 100644
--- a/app/src/main/res/anim/slide_from_right.xml
+++ b/app/src/main/res/anim/slide_from_right.xml
@@ -1,6 +1,8 @@
-
+ android:toXDelta="0" />
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_to_left.xml b/app/src/main/res/anim/slide_to_left.xml
index 4e9dc22..00190ff 100644
--- a/app/src/main/res/anim/slide_to_left.xml
+++ b/app/src/main/res/anim/slide_to_left.xml
@@ -1,6 +1,6 @@
-
+ android:toXDelta="-100%p"/>
\ No newline at end of file
diff --git a/app/src/main/res/anim/slide_to_right.xml b/app/src/main/res/anim/slide_to_right.xml
index 1d73b17..705daa9 100644
--- a/app/src/main/res/anim/slide_to_right.xml
+++ b/app/src/main/res/anim/slide_to_right.xml
@@ -1,6 +1,8 @@
-
+ android:toXDelta="100%p" />
\ No newline at end of file
diff --git a/app/src/main/res/drawable/arrow_back.xml b/app/src/main/res/drawable/arrow_back.xml
new file mode 100644
index 0000000..0e2e863
--- /dev/null
+++ b/app/src/main/res/drawable/arrow_back.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable/background_dialog.xml b/app/src/main/res/drawable/background_dialog.xml
new file mode 100644
index 0000000..f3b2d55
--- /dev/null
+++ b/app/src/main/res/drawable/background_dialog.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml
new file mode 100644
index 0000000..2fcde96
--- /dev/null
+++ b/app/src/main/res/drawable/ic_add.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_save_black_24dp.xml b/app/src/main/res/drawable/ic_save_black_24dp.xml
index 085eb41..7a19b6b 100644
--- a/app/src/main/res/drawable/ic_save_black_24dp.xml
+++ b/app/src/main/res/drawable/ic_save_black_24dp.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/app/src/main/res/drawable/rounded_btn.xml b/app/src/main/res/drawable/rounded_btn.xml
new file mode 100644
index 0000000..09dce02
--- /dev/null
+++ b/app/src/main/res/drawable/rounded_btn.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/rounded_btn_disabled.xml b/app/src/main/res/drawable/rounded_btn_disabled.xml
new file mode 100644
index 0000000..89933d4
--- /dev/null
+++ b/app/src/main/res/drawable/rounded_btn_disabled.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shadow_bg.xml b/app/src/main/res/drawable/shadow_bg.xml
new file mode 100644
index 0000000..1482ed0
--- /dev/null
+++ b/app/src/main/res/drawable/shadow_bg.xml
@@ -0,0 +1,17 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/tickcross.xml b/app/src/main/res/drawable/tickcross.xml
new file mode 100644
index 0000000..3a5e7e7
--- /dev/null
+++ b/app/src/main/res/drawable/tickcross.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/tickmark.xml b/app/src/main/res/drawable/tickmark.xml
new file mode 100644
index 0000000..467e3b7
--- /dev/null
+++ b/app/src/main/res/drawable/tickmark.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/font/opensans_regular.xml b/app/src/main/res/font/opensans_regular.xml
new file mode 100644
index 0000000..f9284b2
--- /dev/null
+++ b/app/src/main/res/font/opensans_regular.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/font/opensans_semibold.ttf b/app/src/main/res/font/opensans_semibold.ttf
new file mode 100644
index 0000000..de2baa4
Binary files /dev/null and b/app/src/main/res/font/opensans_semibold.ttf differ
diff --git a/app/src/main/res/layout-w900dp/drug_list.xml b/app/src/main/res/layout-w900dp/drug_list.xml
index 6f8d0f6..ea61160 100644
--- a/app/src/main/res/layout-w900dp/drug_list.xml
+++ b/app/src/main/res/layout-w900dp/drug_list.xml
@@ -3,8 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginLeft="16dp"
- android:layout_marginRight="16dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
android:baselineAligned="false"
android:divider="?android:attr/dividerHorizontal"
android:orientation="horizontal"
@@ -23,8 +23,8 @@
android:name="net.foucry.pilldroid.MedicamentListFragment"
android:layout_width="@dimen/item_width"
android:layout_height="match_parent"
- android:layout_marginLeft="16dp"
- android:layout_marginRight="16dp"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
app:layoutManager="LinearLayoutManager"
tools:context="net.foucry.pilldroid.DrugListActivity"
tools:listitem="@layout/drug_list_content" />
diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml
index e45cf76..4087f6b 100644
--- a/app/src/main/res/layout/about.xml
+++ b/app/src/main/res/layout/about.xml
@@ -1,10 +1,22 @@
-
+
+
+
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools">
-
+ app:zxing_framing_rect_height="150dp"
+ app:zxing_framing_rect_width="300dp"/>
+ app:zxing_viewfinder_mask="@color/grey" />
-
+ app:background="@android:color/darker_gray"
+ app:srcCompat="@drawable/ic_cancel_black_24dp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_btn.xml b/app/src/main/res/layout/custom_btn.xml
new file mode 100644
index 0000000..0c1ef17
--- /dev/null
+++ b/app/src/main/res/layout/custom_btn.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_dialog_layout_one_button.xml b/app/src/main/res/layout/custom_dialog_layout_one_button.xml
new file mode 100644
index 0000000..df8e602
--- /dev/null
+++ b/app/src/main/res/layout/custom_dialog_layout_one_button.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/custom_dialog_layout_two_button.xml b/app/src/main/res/layout/custom_dialog_layout_two_button.xml
new file mode 100644
index 0000000..f735162
--- /dev/null
+++ b/app/src/main/res/layout/custom_dialog_layout_two_button.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/custom_scanner_activty.xml b/app/src/main/res/layout/custom_scanner_activty.xml
index 298d8c5..2d91999 100644
--- a/app/src/main/res/layout/custom_scanner_activty.xml
+++ b/app/src/main/res/layout/custom_scanner_activty.xml
@@ -1,7 +1,7 @@
@@ -21,10 +21,9 @@
android:layout_marginTop="@dimen/fab_margin"
android:layout_marginEnd="@dimen/fab_margin"
android:layout_marginBottom="@dimen/fab_margin"
- android:backgroundTint="@android:color/transparent"
+ app:backgroundTint="@android:color/transparent"
android:contentDescription="@string/flashlightButton"
- android:onClick="switchFlashlight"
- android:src="@drawable/ic_baseline_highlight_24" />
+ app:srcCompat="@drawable/ic_baseline_highlight_24" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/drug_detail.xml b/app/src/main/res/layout/drug_detail.xml
index 1592f83..31e9bdc 100644
--- a/app/src/main/res/layout/drug_detail.xml
+++ b/app/src/main/res/layout/drug_detail.xml
@@ -8,47 +8,47 @@
+ android:layout_height="match_parent" />
-
+ android:layout_height="match_parent" />
+
-
+ android:layout_height="match_parent" />
+
-
+ android:layout_height="wrap_content" />
+
+ android:layout_height="wrap_content" />
-
+ android:layout_height="wrap_content" />
+
diff --git a/app/src/main/res/layout/drug_detail_activity.xml b/app/src/main/res/layout/drug_detail_activity.xml
index ecf8bda..adf7f04 100644
--- a/app/src/main/res/layout/drug_detail_activity.xml
+++ b/app/src/main/res/layout/drug_detail_activity.xml
@@ -12,27 +12,25 @@
+ android:layout_height="wrap_content">
+ app:contentScrim="#0000"
+ app:layout_scrollFlags="scroll|exitUntilCollapsed" />
-
-
+ app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
+ app:titleTextColor="@color/white"/>
+
-
+ android:text="@string/save_button"
+ android:textColor="@color/white"
+ app:icon="@drawable/ic_save_black_24dp"
+ app:backgroundTint="@color/colorPrimary"
+ app:iconTint="@color/white"/>
diff --git a/app/src/main/res/layout/drug_list.xml b/app/src/main/res/layout/drug_list.xml
index d798d15..a831757 100644
--- a/app/src/main/res/layout/drug_list.xml
+++ b/app/src/main/res/layout/drug_list.xml
@@ -6,7 +6,7 @@
android:name="net.foucry.pilldroid.MedicamentListFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:layoutManager="LinearLayoutManager"
android:background="@drawable/list_selector"
+ app:layoutManager="LinearLayoutManager"
tools:context="net.foucry.pilldroid.DrugListActivity"
tools:listitem="@layout/drug_list_content" />
diff --git a/app/src/main/res/layout/drug_list_activity.xml b/app/src/main/res/layout/drug_list_activity.xml
index 0664590..44d60e1 100644
--- a/app/src/main/res/layout/drug_list_activity.xml
+++ b/app/src/main/res/layout/drug_list_activity.xml
@@ -13,11 +13,14 @@
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
-
+ android:layout_height="?attr/actionBarSize"
+ android:background="@color/colorPrimary"
+ app:layout_collapseMode="pin"
+ app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
+ app:titleTextColor="@color/white"/>
@@ -25,31 +28,24 @@
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- app:layout_behavior="@string/appbar_scrolling_view_behavior">
+ android:layout_marginTop="?attr/actionBarSize">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+ app:srcCompat="@drawable/ic_add"
+ app:backgroundTint="@color/colorPrimary"
+ app:tint="@color/white"/>
diff --git a/app/src/main/res/layout/drug_list_content.xml b/app/src/main/res/layout/drug_list_content.xml
index 93a2b46..8be99b8 100644
--- a/app/src/main/res/layout/drug_list_content.xml
+++ b/app/src/main/res/layout/drug_list_content.xml
@@ -1,38 +1,40 @@
-
+
-
+ android:layout_marginStart="5dp"
+ android:contentDescription="@string/stockIcon"
+ app:srcCompat="@drawable/ok_stock_vect" />
-
+ android:typeface="sans" />
-
-
+ app:srcCompat="@drawable/ic_navigate_next_black_24dp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/info_cell.xml b/app/src/main/res/layout/info_cell.xml
index 0ed2e26..069f6ad 100644
--- a/app/src/main/res/layout/info_cell.xml
+++ b/app/src/main/res/layout/info_cell.xml
@@ -1,23 +1,23 @@
+ android:background="@color/white"
+ android:orientation="vertical">
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/input_dialog.xml b/app/src/main/res/layout/input_dialog.xml
index 31cf8b7..4a1e5ec 100644
--- a/app/src/main/res/layout/input_dialog.xml
+++ b/app/src/main/res/layout/input_dialog.xml
@@ -1,46 +1,114 @@
-
-
+
-
+
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/value_input.xml b/app/src/main/res/layout/value_input.xml
index 7c850fe..7ef0f28 100644
--- a/app/src/main/res/layout/value_input.xml
+++ b/app/src/main/res/layout/value_input.xml
@@ -1,44 +1,49 @@
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:background="@color/white"
+ android:orientation="horizontal"
+ android:padding="10dp"
+ android:weightSum="1">
+
+
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/value_input_threshold.xml b/app/src/main/res/layout/value_input_threshold.xml
new file mode 100644
index 0000000..2941cd7
--- /dev/null
+++ b/app/src/main/res/layout/value_input_threshold.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/welcome1.xml b/app/src/main/res/layout/welcome1.xml
index d50a532..e8eba62 100644
--- a/app/src/main/res/layout/welcome1.xml
+++ b/app/src/main/res/layout/welcome1.xml
@@ -1,21 +1,21 @@
+
-
-
-
-
+ app:srcCompat="@drawable/pilldroid_icon" />
-
-
-
+
-
+ app:srcCompat="@drawable/ic_suspended_pill" />
-
-
-
+
-
+ app:srcCompat="@drawable/ic_save_black_24dp" />
-
-
-
+ app:srcCompat="@drawable/pilldroid_icon" />
-
-
+ android:textSize="@dimen/slide_desc"
+ android:autoLink="web"/>
diff --git a/app/src/main/res/layout/welcome2.xml b/app/src/main/res/layout/welcome2.xml
index 5bbb86c..9a07be7 100644
--- a/app/src/main/res/layout/welcome2.xml
+++ b/app/src/main/res/layout/welcome2.xml
@@ -1,19 +1,20 @@
-
+
-
-
-
+
-
-
+
-
+ app:srcCompat="@drawable/ic_barcode" />
-
-
-
+
-
+ app:srcCompat="@drawable/ic_qr_code" />
-
-
+
-
-
-
-
+ app:srcCompat="@drawable/ok_stock_vect" />
-
+
-
-
-
+ app:srcCompat="@drawable/warning_stock_vect" />
-
-
+
-
+ app:srcCompat="@drawable/lower_stock_vect" />
-
-
+
-
+ app:srcCompat="@drawable/info" />
-
-
+
-
+ app:srcCompat="@drawable/tunable" />
-
-
+ android:orientation="horizontal"/>
-
+ android:textColor="@android:color/white" />
-
+ android:textColor="@android:color/white" />
\ No newline at end of file
diff --git a/app/src/main/res/menu/about.xml b/app/src/main/res/menu/about.xml
index f25403c..a4e4690 100644
--- a/app/src/main/res/menu/about.xml
+++ b/app/src/main/res/menu/about.xml
@@ -2,6 +2,15 @@
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi b/app/src/main/res/mipmap-anydpi
deleted file mode 100644
index e69de29..0000000
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr/strings.xml
similarity index 91%
rename from app/src/main/res/values-fr-rFR/strings.xml
rename to app/src/main/res/values-fr/strings.xml
index ffdfbd6..5d66ec2 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -21,6 +21,8 @@
Allumer/Eteindre le Flash
Saisir la fin du code CIP 13 ici..
Saisir le code CIP 13
+ Fermer
+ Visez le code-barres pour le scanner
Bienvenue dans Pilldroid
@@ -66,8 +68,13 @@
Le code barre ne peut pas être interprété
Scan annulé
Autorisation appareil photo manquante
- Oui, j\'ai compris
+ Oui
+ Oui, j\'ai compris
Je comprends que le développeur de Pilldroid n\'est pas responsable de la gestion de vos médicaments. CELA RELÈVE DE VOTRE SEULE RESPONSABILITÉ.
Annuler
Icône de poubelle
+ Ajouter à votre liste de médicament
+ Backup
+ Export
+ Import
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index a7f3f3a..b11cd19 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -10,11 +10,14 @@
75dp
20dp
+ 25dp
240dp
30sp
16sp
40dp
20dp
250dp
+ 10dp
+ 30dp
diff --git a/app/src/main/res/values/font_certs.xml b/app/src/main/res/values/font_certs.xml
new file mode 100644
index 0000000..d2226ac
--- /dev/null
+++ b/app/src/main/res/values/font_certs.xml
@@ -0,0 +1,17 @@
+
+
+
+ - @array/com_google_android_gms_fonts_certs_dev
+ - @array/com_google_android_gms_fonts_certs_prod
+
+
+ -
+ MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
+
+
+
+ -
+ MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
+
+
+
diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml
index 06dee65..9766106 100644
--- a/app/src/main/res/values/ids.xml
+++ b/app/src/main/res/values/ids.xml
@@ -23,4 +23,6 @@
+
+
diff --git a/app/src/main/res/values/preloaded_fonts.xml b/app/src/main/res/values/preloaded_fonts.xml
new file mode 100644
index 0000000..7f32cf8
--- /dev/null
+++ b/app/src/main/res/values/preloaded_fonts.xml
@@ -0,0 +1,6 @@
+
+
+
+ - @font/opensans_regular
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1d58c5e..d1a52b1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -22,6 +22,8 @@
Enter CIP 13
Pilldroid_NotificationChannel
PilldroidChannel
+ Close
+ Aim at the barcode to scan it
Welcome on Pilldroid
@@ -68,8 +70,13 @@
Bar code cannot be interpreted
Scan canceled
Missing camera permission
- Yes, I understood
+ Yes
+ Yes, I understood
I understood that the developer of Pilldroid cannot be responsible of your medication management. IT\'S YOU OWN RESPONSIBILITY.
Undo
Trash icon
+ add to your list of medicine
+ Backup
+ Export
+ Import
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 545b9c6..8a5f636 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,11 +1,14 @@
-
-
+
-
+
+
+
diff --git a/build.gradle b/build.gradle
index 7e8b67e..e12786b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.1'
+ classpath 'com.android.tools.build:gradle:8.0.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -17,9 +17,6 @@ buildscript {
}
ext {
compileSdkVersion = '28'
- buildToolsVersion = '28.0.1'
- var = '3.4.2'
- //buildToolsVersion1 = '29.0.3'
defaultMinSdkVersion = 26
defaultTargetSdkVersion = 30
defaultVersionCode = 1
@@ -35,9 +32,8 @@ allprojects {
}
}
-task clean(type: Delete) {
+tasks.register('clean', Delete) {
delete rootProject.buildDir
}
-dependencies {
-}
\ No newline at end of file
+dependencies {}
\ No newline at end of file
diff --git a/fastlane/metadata/android/fr-FR/changelogs/v0.300-beta.txt b/fastlane/metadata/android/fr-FR/changelogs/v0.300-beta.txt
index ea43d84..7cb16a2 100644
--- a/fastlane/metadata/android/fr-FR/changelogs/v0.300-beta.txt
+++ b/fastlane/metadata/android/fr-FR/changelogs/v0.300-beta.txt
@@ -1,6 +1,6 @@
# v0.300-beta - Nouvelles fonctionnalités
-- La gestion de la liste des prescriptions (les médicaments que vous prenez) à été revue ;
+- La gestion de la liste des prescriptions (les médicaments que vous prenez) a été revue ;
- un glissement de la droite vers la gauche supprime le médicament de la liste ET de
la base données ;
- un glissement de la gauche vers la droite permet de modifier les détails du médicament,
@@ -8,9 +8,9 @@
Ces changements vont vous permettre de supprimer les médicaments dont la prise est à zéro (0)
depuis longtemps et que vous ne prendrez plus.
-Ils vont également me permettre d'avancer sur la prochaine étape qui est de plus présenter les noms
+Ils vont également me permettre d'avancer sur la prochaine étape qui est de plus présenté les noms
des médicaments, mais la molécule (doliprane, efferalgan, dafalgan deviendront paracétamol).
-Je vous en dirais plus prochainement.
+Je vous en dirai plus prochainement.
Merci de me faire des retours sur ces nouveautés, [Pilldroid](mailto:jacques+pilldroid@foucry.net)
[Pilldroid](mailto:pilldroid@foucry.net)ou pilldroid@foucry.net.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/v0.302-beta.txt b/fastlane/metadata/android/fr-FR/changelogs/v0.302-beta.txt
index 9f33ab9..12a232e 100644
--- a/fastlane/metadata/android/fr-FR/changelogs/v0.302-beta.txt
+++ b/fastlane/metadata/android/fr-FR/changelogs/v0.302-beta.txt
@@ -1,12 +1,12 @@
# V0.302-beta - bugs fix and small interface changes
-- Résolution de la bogue qui empéchait la calcul dv stock et l'émission de l'alarme,
+- Résolution de la bogue qui empêchait le calcul du stock et l'émission de l'alarme,
bogue qui est apparu dans la version v0.201-beta. Je suis désolé pour cette bogue et le temps
que j'ai mis à la corriger ;
- Suppression de vieux code et vieux commentaires ;
-- Changement dans le dialogue de saisie d'un CIP13, vous n'avez plvs qve les 7
+- Changement dans le dialogue de saisie d'un CIP13, vous n'avez plus que les 7
derniers chiffres à entrer;
-- Changement dans l'apparence de la saisie des valeurs, j'ai supprimer les coins arrondis.
+- Changement dans l'apparence de la saisie des valeurs, j'ai supprimé les coins arrondis.
De nombreux autres bogues restent présentes, mais je ne les ai pas encore trouvé.
@@ -25,7 +25,7 @@ Merci pour votre aide et votre patience. Un petit mot fait toujours plaisir.
# v0.300-beta - Nouvelles fonctionnalités
-- La gestion de la liste des prescriptions (les médicaments que vous prenez) à été revue ;
+- La gestion de la liste des prescriptions (les médicaments que vous prenez) a été revue ;
- un glissement de la droite vers la gauche supprime le médicament de la liste ET de
la base données ;
- un glissement de la gauche vers la droite permet de modifier les détails du médicament,
@@ -33,9 +33,9 @@ Merci pour votre aide et votre patience. Un petit mot fait toujours plaisir.
Ces changements vont vous permettre de supprimer les médicaments dont la prise est à zéro (0)
depuis longtemps et que vous ne prendrez plus.
-Ils vont également me permettre d'avancer sur la prochaine étape qui est de plus présenter les noms
+Ils vont également me permettre d'avancer sur la prochaine étape qui est de plus présenté les noms
des médicaments, mais la molécule (doliprane, efferalgan, dafalgan deviendront paracétamol).
-Je vous en dirais plus prochainement.
+Je vous en dirai plus prochainement.
Merci de me faire des retours sur ces nouveautés, [Pilldroid](mailto:jacques+pilldroid@foucry.net)
[Pilldroid](mailto:pilldroid@foucry.net)ou pilldroid@foucry.net.
diff --git a/gradle.properties b/gradle.properties
index cab9572..2146027 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,23 +1,19 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
+## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
-
+#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
+#
# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# This option should only be used with decoupled projects. For more details, visit
+# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
# org.gradle.parallel=true
-android.enableJetifier=true
+#Wed Apr 17 19:53:26 CEST 2024
+android.enableJetifier=false
+android.nonFinalResIds=true
+android.nonTransitiveRClass=false
android.useAndroidX=true
-org.gradle.unsafe.configuration-cache=true
+org.gradle.jvmargs=-Xmx2048M
org.gradle.warning.mode=none
-org.gradle.unsafe.configuration-cache-problems=warn
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 13372ae..d64cd49 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 769daa4..fd3cb44 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Sep 29 16:41:02 CEST 2021
+#Fri Sep 22 18:17:05 CEST 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists
-zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 9d82f78..0adc8e1 100755
--- a/gradlew
+++ b/gradlew
@@ -1,74 +1,127 @@
-#!/usr/bin/env bash
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+# Attempt to set APP_HOME
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
-warn ( ) {
+warn () {
echo "$*"
-}
+} >&2
-die ( ) {
+die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# 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
- ;;
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=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"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -77,84 +130,120 @@ 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.
+ JAVACMD=java
+ if ! command -v java >/dev/null 2>&1
+ then
+ 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
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" ;;
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
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"
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index aec9973..6689b85 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,4 +1,20 @@
-@if "%DEBUG%" == "" @echo off
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -8,20 +24,24 @@
@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=.
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@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="-Xmx64m" "-Xms64m"
+
@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
+if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +55,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-if exist "%JAVA_EXE%" goto init
+if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,44 +65,26 @@ 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%
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
+if %ERRORLEVEL% equ 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
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal