From 548e4fe25f97161fbc5ebaf84944a4c855534686 Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Sun, 13 Nov 2022 22:26:48 +0100 Subject: [PATCH 01/87] Support GitHub Codespaces --- .github/devcontainer.json | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/devcontainer.json diff --git a/.github/devcontainer.json b/.github/devcontainer.json new file mode 100644 index 0000000..349343e --- /dev/null +++ b/.github/devcontainer.json @@ -0,0 +1,44 @@ +// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java +{ + "name": "Java", + "build": { + "dockerfile": "Dockerfile", + "args": { + // Update the VARIANT arg to pick a Java version: 8, 11, 17 + // Append -bullseye or -buster to pin to an OS version. + // Use the -bullseye variants on local arm64/Apple Silicon. + "VARIANT": "17-bullseye", + // Options + "INSTALL_MAVEN": "true", + "MAVEN_VERSION": "3.8.5", + "INSTALL_GRADLE": "false", + "NODE_VERSION": "lts/*" + } + }, + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "settings": { + "maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "vscjava.vscode-java-pack" + ] + } + }, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "java -version", + + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} From 55f1870808f8ea67066a5b5ff064da1b3e492f6b Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Sun, 13 Nov 2022 22:35:01 +0100 Subject: [PATCH 02/87] Support GitHub Codespaces --- .devcontainer/devcontainer.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1 @@ + From c3dd6e9a816673cdb873249b71cdbed6a06c412a Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Sun, 13 Nov 2022 22:35:56 +0100 Subject: [PATCH 03/87] Delete devcontainer.json --- .github/devcontainer.json | 44 --------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 .github/devcontainer.json diff --git a/.github/devcontainer.json b/.github/devcontainer.json deleted file mode 100644 index 349343e..0000000 --- a/.github/devcontainer.json +++ /dev/null @@ -1,44 +0,0 @@ -// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: -// https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java -{ - "name": "Java", - "build": { - "dockerfile": "Dockerfile", - "args": { - // Update the VARIANT arg to pick a Java version: 8, 11, 17 - // Append -bullseye or -buster to pin to an OS version. - // Use the -bullseye variants on local arm64/Apple Silicon. - "VARIANT": "17-bullseye", - // Options - "INSTALL_MAVEN": "true", - "MAVEN_VERSION": "3.8.5", - "INSTALL_GRADLE": "false", - "NODE_VERSION": "lts/*" - } - }, - - // Configure tool-specific properties. - "customizations": { - // Configure properties specific to VS Code. - "vscode": { - // Set *default* container specific settings.json values on container create. - "settings": { - "maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn" - }, - - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "vscjava.vscode-java-pack" - ] - } - }, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "java -version", - - // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "vscode" -} From 5dfc340cec7942b2c0e90bf5a5cd5d55d7eb5a6c Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Sun, 13 Nov 2022 22:37:12 +0100 Subject: [PATCH 04/87] Update devcontainer.json --- .devcontainer/devcontainer.json | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8b13789..349343e 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1 +1,44 @@ +// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/java +{ + "name": "Java", + "build": { + "dockerfile": "Dockerfile", + "args": { + // Update the VARIANT arg to pick a Java version: 8, 11, 17 + // Append -bullseye or -buster to pin to an OS version. + // Use the -bullseye variants on local arm64/Apple Silicon. + "VARIANT": "17-bullseye", + // Options + "INSTALL_MAVEN": "true", + "MAVEN_VERSION": "3.8.5", + "INSTALL_GRADLE": "false", + "NODE_VERSION": "lts/*" + } + }, + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "settings": { + "maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "vscjava.vscode-java-pack" + ] + } + }, + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "java -version", + + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} From 291283a80c575b463b07bdd6d37cf40094af40e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Nov 2022 08:09:11 +0000 Subject: [PATCH 05/87] Bump espresso-core from 3.4.0 to 3.5.0 Bumps espresso-core from 3.4.0 to 3.5.0. --- updated-dependencies: - dependency-name: androidx.test.espresso:espresso-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 072d986..0ff9106 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' implementation 'com.squareup:android-times-square:1.7.11@aar' implementation 'com.google.android.material:material:1.7.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' From d28330e2c0166e065719bb1bd92680d917895ca2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Nov 2022 10:26:17 +0000 Subject: [PATCH 06/87] Bump junit from 1.1.3 to 1.1.4 Bumps junit from 1.1.3 to 1.1.4. --- updated-dependencies: - dependency-name: androidx.test.ext:junit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 0ff9106..519c689 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,7 +68,7 @@ dependencies { implementation 'com.google.android.material:material:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.ext:junit:1.1.4' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' implementation 'com.squareup:android-times-square:1.7.11@aar' implementation 'com.google.android.material:material:1.7.0' From e88983337fd6444b6e4c3fa4058cc304dd47fea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 14 Nov 2022 04:27:10 +0000 Subject: [PATCH 07/87] Translated using Weblate (Turkish) Currently translated at 100.0% (14 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/tr/ --- fastlane/metadata/android/tr/changelogs/10.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/fastlane/metadata/android/tr/changelogs/10.txt b/fastlane/metadata/android/tr/changelogs/10.txt index 0bc4da6..6877ed0 100644 --- a/fastlane/metadata/android/tr/changelogs/10.txt +++ b/fastlane/metadata/android/tr/changelogs/10.txt @@ -1,4 +1,5 @@ - Birçok hata düzeltildi, teşekkürler subeep 🐛 +- Kullanıcı arayüzü iyileştirmeleri, teşekkürler unbiaseduser 🎨 - Geri düğmesine basmak artık uygulamayı otomatik olarak kapatmıyor 🐛 - Daha keskin bir görünüm için vektör simgelerine geçildi, teşekkürler karthikayya 🎨 - Çeviriler güncellendi 🗺️ From 01cd453ef9ac97adfd202fcb1e032168f3f3fc75 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Mon, 14 Nov 2022 12:12:31 +0000 Subject: [PATCH 08/87] Translated using Weblate (Spanish) Currently translated at 100.0% (14 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/es/ --- fastlane/metadata/android/es/changelogs/10.txt | 9 +++++---- fastlane/metadata/android/es/changelogs/2.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fastlane/metadata/android/es/changelogs/10.txt b/fastlane/metadata/android/es/changelogs/10.txt index cc478ad..c97a7b7 100644 --- a/fastlane/metadata/android/es/changelogs/10.txt +++ b/fastlane/metadata/android/es/changelogs/10.txt @@ -1,4 +1,5 @@ -- Muchos errores corregidos gracias a subeep 🐛 -- Presionar Atrás Ahora No Cierra La Aplicación Automáticamente 🐛 -- Cambio a iconos vectoriales para una vista más nítida Gracias a karthikayya 🎨 -- Actualizaciones de traducción 🗺️ +- Muchos errores se solucionaron gracias a subeep 🐛 +- Mejoras en la interfaz de usuario gracias a unbiaseduser 🎨 +- Presionar Atrás ahora no cierra la aplicación automáticamente 🐛 +- Cambie a iconos vectoriales para una vista más nítida gracias a karthikayya 🎨 +- Actualizaciones en la traducción 🗺️ diff --git a/fastlane/metadata/android/es/changelogs/2.txt b/fastlane/metadata/android/es/changelogs/2.txt index 5aa46b5..e4e22d8 100644 --- a/fastlane/metadata/android/es/changelogs/2.txt +++ b/fastlane/metadata/android/es/changelogs/2.txt @@ -1 +1 @@ -Pequeñas mejoras en el motor de la aplicación +Pequeñas mejoras bajo el capó From c5c8455ca8725a2f3bab5868ef643a5b194c1d8f Mon Sep 17 00:00:00 2001 From: Ettore Atalan Date: Fri, 23 Dec 2022 17:35:51 +0000 Subject: [PATCH 09/87] Translated using Weblate (German) Currently translated at 7.1% (1 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/de/ --- fastlane/metadata/android/de/title.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/de/title.txt diff --git a/fastlane/metadata/android/de/title.txt b/fastlane/metadata/android/de/title.txt new file mode 100644 index 0000000..dba31f0 --- /dev/null +++ b/fastlane/metadata/android/de/title.txt @@ -0,0 +1 @@ +Urlaubstage From b627d423ac72b89d1d20d3acfee733806a44d35f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Tue, 27 Dec 2022 03:13:06 +0000 Subject: [PATCH 10/87] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 100.0% (14 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/nb_NO/ --- fastlane/metadata/android/nb-NO/changelogs/10.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 fastlane/metadata/android/nb-NO/changelogs/10.txt diff --git a/fastlane/metadata/android/nb-NO/changelogs/10.txt b/fastlane/metadata/android/nb-NO/changelogs/10.txt new file mode 100644 index 0000000..3d0c6a0 --- /dev/null +++ b/fastlane/metadata/android/nb-NO/changelogs/10.txt @@ -0,0 +1,5 @@ +- Mange feilfikser takket være subeep 🐛 +- Grensesnittsforbedringer takket være unbiaseduser 🎨 +- Å trykke «Tilbake» lukker nå ikke programmet automatisk 🐛 +- Bytte til vektorielle ikoner for skarpere visning takket være karthikayya 🎨 +- Oversettelsesoppdateringer 🗺️ From 797f33f18c090fce9db5ca95e60cb9c2a3ccdb14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jan 2023 08:07:41 +0000 Subject: [PATCH 11/87] Bump junit from 1.1.4 to 1.1.5 Bumps junit from 1.1.4 to 1.1.5. --- updated-dependencies: - dependency-name: androidx.test.ext:junit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 519c689..e3e4c92 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,7 +68,7 @@ dependencies { implementation 'com.google.android.material:material:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.4' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' implementation 'com.squareup:android-times-square:1.7.11@aar' implementation 'com.google.android.material:material:1.7.0' From 795d340cf71438fa189943becfb70794f41194f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jan 2023 08:45:50 +0000 Subject: [PATCH 12/87] Bump espresso-core from 3.5.0 to 3.5.1 Bumps espresso-core from 3.5.0 to 3.5.1. --- updated-dependencies: - dependency-name: androidx.test.espresso:espresso-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index e3e4c92..384e1bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -69,7 +69,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'com.squareup:android-times-square:1.7.11@aar' implementation 'com.google.android.material:material:1.7.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' From 8045964e15c9d2c2975c203a9ddfd43ad3cb1ff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jan 2023 08:07:56 +0000 Subject: [PATCH 13/87] Bump appcompat from 1.5.1 to 1.6.0 Bumps appcompat from 1.5.1 to 1.6.0. --- updated-dependencies: - dependency-name: androidx.appcompat:appcompat dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 384e1bd..9a466de 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,7 +64,7 @@ testOptions { dependencies { - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'androidx.appcompat:appcompat:1.6.0' implementation 'com.google.android.material:material:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' From dec4224c450d3454346e88a9e0f57bca6c9b0174 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jan 2023 08:08:04 +0000 Subject: [PATCH 14/87] Bump gradle from 7.3.1 to 7.4.0 Bumps gradle from 7.3.1 to 7.4.0. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a9b5236..25501ce 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.android.tools.build:gradle:7.4.0' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From 30b28a2295ccf54dff173fc826fa3b5278a9db5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 08:11:00 +0000 Subject: [PATCH 15/87] Bump material from 1.7.0 to 1.8.0 Bumps [material](https://github.com/material-components/material-components-android) from 1.7.0 to 1.8.0. - [Release notes](https://github.com/material-components/material-components-android/releases) - [Commits](https://github.com/material-components/material-components-android/compare/1.7.0...1.8.0) --- updated-dependencies: - dependency-name: com.google.android.material:material dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9a466de..ee98667 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,13 +65,13 @@ testOptions { dependencies { implementation 'androidx.appcompat:appcompat:1.6.0' - implementation 'com.google.android.material:material:1.7.0' + implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'com.squareup:android-times-square:1.7.11@aar' - implementation 'com.google.android.material:material:1.7.0' + implementation 'com.google.android.material:material:1.8.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' From 5172268042ef3e4e459307fb24474f8ab404abb8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 08:08:34 +0000 Subject: [PATCH 16/87] Bump com.android.tools.build:gradle from 7.4.0 to 7.4.1 Bumps com.android.tools.build:gradle from 7.4.0 to 7.4.1. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 25501ce..df9eaa8 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.0' + classpath 'com.android.tools.build:gradle:7.4.1' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From d33bb65fbb094d8bd4e0fdb33c8799e2d3793f58 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sun, 5 Feb 2023 15:27:12 +0000 Subject: [PATCH 17/87] Translated using Weblate (Spanish) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/es/ --- app/src/main/res/values-es/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index c82f80e..ece8e81 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -22,7 +22,7 @@ Java NoboButton Crazy Marvin - Code Acquaria + Code Aquaria Traducir Íconos Material Design Información From 03e069e97588cdea1ce3cfb045cfd9f62e020404 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 09:06:00 +0000 Subject: [PATCH 18/87] Bump androidx.appcompat:appcompat from 1.6.0 to 1.6.1 Bumps androidx.appcompat:appcompat from 1.6.0 to 1.6.1. --- updated-dependencies: - dependency-name: androidx.appcompat:appcompat dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ee98667..a080087 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,7 +64,7 @@ testOptions { dependencies { - implementation 'androidx.appcompat:appcompat:1.6.0' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' From e8a54dab80e305b18e07c44309fa3e403b1dd3c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 09:05:32 +0000 Subject: [PATCH 19/87] Bump com.android.tools.build:gradle from 7.4.1 to 7.4.2 Bumps com.android.tools.build:gradle from 7.4.1 to 7.4.2. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index df9eaa8..09822ca 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.1' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From c8933e347428101f0bc0cffa14b7f921bd8a4313 Mon Sep 17 00:00:00 2001 From: w-jablonski Date: Fri, 10 Mar 2023 23:08:11 +0100 Subject: [PATCH 20/87] Added translation using Weblate (Polish) --- app/src/main/res/values-pl/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-pl/strings.xml diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 2cefd6b1fac6b41b0a82f22120527ed36536e121 Mon Sep 17 00:00:00 2001 From: w-jablonski Date: Fri, 10 Mar 2023 22:08:49 +0000 Subject: [PATCH 21/87] Translated using Weblate (Polish) Currently translated at 80.9% (34 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/pl/ --- app/src/main/res/values-pl/strings.xml | 36 +++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a6b3dae..4f6836b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,2 +1,36 @@ - \ No newline at end of file + + Dni Wolne + O aplikacji + Ustawienia + Oś czasu + Kotlin + Java + Przetłumacz + Zgłoś problem + Zobacz kod źródłowy + Licencje open-source + Ogólne + Wygląd + Baza danych + Utwórz kopię zapasową + Przywróć z kopii zapasowej + Wpisz nazwę urlopu + Zapisz + OK + Wygląd systemu + Jasny + Deweloper + Zaangażuj się + Beta - licencja Apache 2.0 + Licencja Apache 2.0 + Crazy Marvin + Licencja Apache 2.0 + Ikony Material Design + Ciemny + Liczba dni wolnych + Wpisz liczbę dni wolnych + Kalendarz + Usuń wcześniejsze kopie zapasowe z urządzenia. + Licencja MIT + \ No newline at end of file From 6f58997093d528479f0be7ad5d5d7a2df9cf0fff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 09:03:09 +0000 Subject: [PATCH 22/87] Bump androidx.recyclerview:recyclerview from 1.2.1 to 1.3.0 Bumps androidx.recyclerview:recyclerview from 1.2.1 to 1.3.0. --- updated-dependencies: - dependency-name: androidx.recyclerview:recyclerview dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a080087..a634213 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,7 +76,7 @@ dependencies { implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' implementation 'com.savvi.datepicker:rangepicker:1.3.0' - implementation 'androidx.recyclerview:recyclerview:1.2.1' + implementation 'androidx.recyclerview:recyclerview:1.3.0' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' implementation 'com.opencsv:opencsv:5.7.0' } From 8f4b5e87d01252bd53b0296f4d98a105c50616b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 21:47:16 +0000 Subject: [PATCH 23/87] Bump opencsv from 5.7.0 to 5.7.1 Bumps opencsv from 5.7.0 to 5.7.1. --- updated-dependencies: - dependency-name: com.opencsv:opencsv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a634213..8cffdb5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,5 +78,5 @@ dependencies { implementation 'com.savvi.datepicker:rangepicker:1.3.0' implementation 'androidx.recyclerview:recyclerview:1.3.0' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' - implementation 'com.opencsv:opencsv:5.7.0' + implementation 'com.opencsv:opencsv:5.7.1' } From b8fbafd05823175fc89935e9dc154c26e2af7c07 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 08:59:51 +0000 Subject: [PATCH 24/87] Bump org.jacoco:org.jacoco.core from 0.8.8 to 0.8.9 Bumps [org.jacoco:org.jacoco.core](https://github.com/jacoco/jacoco) from 0.8.8 to 0.8.9. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.8...v0.8.9) --- updated-dependencies: - dependency-name: org.jacoco:org.jacoco.core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 09822ca..161be12 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.jacocoVersion = '0.8.8' + ext.jacocoVersion = '0.8.9' repositories { google() jcenter() From 1df52703c23a8aa54357f635828ba2ecf8e08b08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 09:01:30 +0000 Subject: [PATCH 25/87] Bump com.android.tools.build:gradle from 7.4.2 to 8.0.0 Bumps com.android.tools.build:gradle from 7.4.2 to 8.0.0. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 161be12..8f6ac03 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:8.0.0' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From 2a4a058c3eb4f4f5e55d8a1dd7ddab7f6cc278d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 May 2023 09:03:03 +0000 Subject: [PATCH 26/87] Bump org.jacoco:org.jacoco.core from 0.8.9 to 0.8.10 Bumps [org.jacoco:org.jacoco.core](https://github.com/jacoco/jacoco) from 0.8.9 to 0.8.10. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.9...v0.8.10) --- updated-dependencies: - dependency-name: org.jacoco:org.jacoco.core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8f6ac03..a33f8bf 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.jacocoVersion = '0.8.9' + ext.jacocoVersion = '0.8.10' repositories { google() jcenter() From 6b721a73b8f8698de07cf051bebbe568532e6245 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 08:59:16 +0000 Subject: [PATCH 27/87] Bump com.google.android.material:material from 1.8.0 to 1.9.0 Bumps [com.google.android.material:material](https://github.com/material-components/material-components-android) from 1.8.0 to 1.9.0. - [Release notes](https://github.com/material-components/material-components-android/releases) - [Commits](https://github.com/material-components/material-components-android/compare/1.8.0...1.9.0) --- updated-dependencies: - dependency-name: com.google.android.material:material dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a634213..9694811 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,13 +65,13 @@ testOptions { dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.8.0' + implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'com.squareup:android-times-square:1.7.11@aar' - implementation 'com.google.android.material:material:1.8.0' + implementation 'com.google.android.material:material:1.9.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' From c1be5a5864294c368bcac4b8ae0ec3c450f1dda6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 08:59:19 +0000 Subject: [PATCH 28/87] Bump com.android.tools.build:gradle from 8.0.0 to 8.0.1 Bumps com.android.tools.build:gradle from 8.0.0 to 8.0.1. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a33f8bf..eaea32f 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.0.0' + classpath 'com.android.tools.build:gradle:8.0.1' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From 4171cb07ed650d824b8666c8ee051c9e3ca3c56b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 08:59:35 +0000 Subject: [PATCH 29/87] Bump com.android.tools.build:gradle from 8.0.1 to 8.0.2 Bumps com.android.tools.build:gradle from 8.0.1 to 8.0.2. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index eaea32f..f87ba8d 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.0.1' + classpath 'com.android.tools.build:gradle:8.0.2' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From 20e8777d3856744fcc6a68f62e711a5620679f86 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sat, 8 Jul 2023 19:46:53 +0200 Subject: [PATCH 30/87] Added translation using Weblate (Czech) --- app/src/main/res/values-cs/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-cs/strings.xml diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-cs/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 9c34eb516b043751bd3d984c53915b63e689c692 Mon Sep 17 00:00:00 2001 From: Pluto Date: Sat, 8 Jul 2023 17:47:07 +0000 Subject: [PATCH 31/87] Translated using Weblate (Czech) Currently translated at 100.0% (14 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/cs/ --- fastlane/metadata/android/cs-CZ/changelogs/1.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/10.txt | 5 +++++ fastlane/metadata/android/cs-CZ/changelogs/2.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/3.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/4.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/5.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/6.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/7.txt | 4 ++++ fastlane/metadata/android/cs-CZ/changelogs/8.txt | 1 + fastlane/metadata/android/cs-CZ/changelogs/9.txt | 6 ++++++ .../metadata/android/cs-CZ/full_description.txt | 13 +++++++++++++ .../metadata/android/cs-CZ/short_description.txt | 1 + fastlane/metadata/android/cs-CZ/title.txt | 1 + fastlane/metadata/android/cs-CZ/video.txt | 1 + 14 files changed, 38 insertions(+) create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/1.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/10.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/2.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/3.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/4.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/5.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/6.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/7.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/8.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/9.txt create mode 100644 fastlane/metadata/android/cs-CZ/full_description.txt create mode 100644 fastlane/metadata/android/cs-CZ/short_description.txt create mode 100644 fastlane/metadata/android/cs-CZ/title.txt create mode 100644 fastlane/metadata/android/cs-CZ/video.txt diff --git a/fastlane/metadata/android/cs-CZ/changelogs/1.txt b/fastlane/metadata/android/cs-CZ/changelogs/1.txt new file mode 100644 index 0000000..b5e092e --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/1.txt @@ -0,0 +1 @@ +První verze diff --git a/fastlane/metadata/android/cs-CZ/changelogs/10.txt b/fastlane/metadata/android/cs-CZ/changelogs/10.txt new file mode 100644 index 0000000..25add13 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/10.txt @@ -0,0 +1,5 @@ +- Mnoho chyb opraveno díky subeep 🐛 +- Vylepšení uživatelského rozhraní díky unbiaseduser 🎨 +- Stisknutím tlačítka Zpět se aplikace nyní nezavře automaticky 🐛 +- Přepněte na vektorové ikony pro ostřejší pohled díky karthikayya 🎨 +- Aktualizace překladu 🗺️ diff --git a/fastlane/metadata/android/cs-CZ/changelogs/2.txt b/fastlane/metadata/android/cs-CZ/changelogs/2.txt new file mode 100644 index 0000000..71e5e84 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/2.txt @@ -0,0 +1 @@ +Malé vylepšení pod kapotou diff --git a/fastlane/metadata/android/cs-CZ/changelogs/3.txt b/fastlane/metadata/android/cs-CZ/changelogs/3.txt new file mode 100644 index 0000000..71e5e84 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/3.txt @@ -0,0 +1 @@ +Malé vylepšení pod kapotou diff --git a/fastlane/metadata/android/cs-CZ/changelogs/4.txt b/fastlane/metadata/android/cs-CZ/changelogs/4.txt new file mode 100644 index 0000000..f5c30f3 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/4.txt @@ -0,0 +1 @@ +Interní opravy diff --git a/fastlane/metadata/android/cs-CZ/changelogs/5.txt b/fastlane/metadata/android/cs-CZ/changelogs/5.txt new file mode 100644 index 0000000..5791ead --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/5.txt @@ -0,0 +1 @@ +"Opraven" linting pro vydané verze diff --git a/fastlane/metadata/android/cs-CZ/changelogs/6.txt b/fastlane/metadata/android/cs-CZ/changelogs/6.txt new file mode 100644 index 0000000..92c4add --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/6.txt @@ -0,0 +1 @@ +Aktualizovány závislostí diff --git a/fastlane/metadata/android/cs-CZ/changelogs/7.txt b/fastlane/metadata/android/cs-CZ/changelogs/7.txt new file mode 100644 index 0000000..14fbd21 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/7.txt @@ -0,0 +1,4 @@ +- 🐛 Opraveno ukládání nastavení vzhledu +- 🎵 Aplikace nyní zobrazuje zprávu, že funkce zálohování ještě není implementována +- 🤮 Lepší zvládnutí špatných dní +- 🆕 Závislosti aktualizovány diff --git a/fastlane/metadata/android/cs-CZ/changelogs/8.txt b/fastlane/metadata/android/cs-CZ/changelogs/8.txt new file mode 100644 index 0000000..870e2a6 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/8.txt @@ -0,0 +1 @@ +Aplikace nyní ukazuje počet Volných Dní. Další vylepšení jsou na cestě. 🚀 diff --git a/fastlane/metadata/android/cs-CZ/changelogs/9.txt b/fastlane/metadata/android/cs-CZ/changelogs/9.txt new file mode 100644 index 0000000..47f4b66 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/9.txt @@ -0,0 +1,6 @@ +- ⚙️ Opraveno zálohování (#94) +- 🎨 Podpora pro Téma Ikon, která byla představena pro Android 13+ (#83) +- 🐛 Opraven název verze zobrazený na obrazovce O aplikaci (#97) +- 👍 Aktualizovány závislosti a překlady + +Děkuji moc @unbiaseduser, @amarradi a všem překladatelům! 😘 diff --git a/fastlane/metadata/android/cs-CZ/full_description.txt b/fastlane/metadata/android/cs-CZ/full_description.txt new file mode 100644 index 0000000..31685ee --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/full_description.txt @@ -0,0 +1,13 @@ +Zjistete kdy máte volno a naplánujte si dovolenou. + +Na první pohled Zobrazte si dny dovolené v jednom ze dvou rozložení: časové ose nebo kalendáři. Počítadla v horní liště ukazují dny dovolené v aktuálním roce – a kolik jich zbývá. + +Seřazeno v sekundách. Klepnutím na plovoucí tlačítko přidáte nové dny dovolené. Zadejte název, přejetím prstem vyberte časové rozmezí a máte hotovo. + +Měníte telefon? Zálohujte všechna svá data na jednom zařízení a obnovte je na jiném. Provádějte pravidelné zálohy, aby byla vaše data v bezpečí. + +Noční sovy, radujte se. Krásný tmavý režim pro sledování pozdě v noci. Přepněte jej automaticky nebo jej nechte následovat vzhled systému. + +Webová stránka: https://www.crazymarvin.com/vacation-days +Přeložte ji na Hosted Weblate: https://hosted.weblate.org/engage/vacationdays/ +Libre software na GitHubu: https://github.com/Crazy-Marvin/VacationDays diff --git a/fastlane/metadata/android/cs-CZ/short_description.txt b/fastlane/metadata/android/cs-CZ/short_description.txt new file mode 100644 index 0000000..337968d --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/short_description.txt @@ -0,0 +1 @@ +Zjistěte kdy máte volno - Vacation Days vám pomohou sledovat vaše dny volna. diff --git a/fastlane/metadata/android/cs-CZ/title.txt b/fastlane/metadata/android/cs-CZ/title.txt new file mode 100644 index 0000000..5cdd76e --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/title.txt @@ -0,0 +1 @@ +Dny Dovolené diff --git a/fastlane/metadata/android/cs-CZ/video.txt b/fastlane/metadata/android/cs-CZ/video.txt new file mode 100644 index 0000000..6a7f6f3 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/video.txt @@ -0,0 +1 @@ +https://youtu.be/wFzSAZmT09M From 2052ad78bb3e7a3b63b2ef6aef14178ae5d7260f Mon Sep 17 00:00:00 2001 From: Pluto Date: Sat, 8 Jul 2023 18:04:53 +0000 Subject: [PATCH 32/87] Translated using Weblate (Czech) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/cs/ --- app/src/main/res/values-cs/strings.xml | 46 +++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index a6b3dae..a84f30d 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1,2 +1,46 @@ - \ No newline at end of file + + Dny Dovolené + O + Nastavení + Časová osa + Kalendář + Beta - Apache Licence 2.0 + Kotlin + Java + GNU General Public License, verze 2, s Classpath Výjímkou + Apache Licence 2.0 + NoboTlačítko + Kruhové zobrazení obrázku + Nejprve ze zařízení odstraňte všechny již existující záložní soubory. + MIT Licence + Material Design Ikony + Šílený Márvin + Vývojář + Kód Acquaria + Přispět + Přeložit + Nahlásit problém + Zobrazit zdroj + Licence s otevřeným zdrojem + Feather Ikony + Apache Licence 2.0 + Android Jetpack + Výběr časového rozmezí + Všeobecné + Vzhled + Data + Záloha + Obnovit + Přidat název Svátku + Uložit + OK + %s +\n↓ +\n%s + Následovat Systém + Světlé + Tmavé + Počet dovolených + Upravit počet dovolených + \ No newline at end of file From d7a2db267b14c74496dd45615730e6a57ee0ab3e Mon Sep 17 00:00:00 2001 From: Pluto Date: Wed, 19 Jul 2023 14:23:46 +0000 Subject: [PATCH 33/87] Translated using Weblate (Czech) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/cs/ --- app/src/main/res/values-cs/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index a84f30d..2544cf8 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -42,5 +42,5 @@ Světlé Tmavé Počet dovolených - Upravit počet dovolených + Zadejte počet dovolených \ No newline at end of file From aba16bf16ce1fad0a8e96ceab113c049a4ddc753 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 08:37:16 +0000 Subject: [PATCH 34/87] Bump com.opencsv:opencsv from 5.7.1 to 5.8 Bumps com.opencsv:opencsv from 5.7.1 to 5.8. --- updated-dependencies: - dependency-name: com.opencsv:opencsv dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 11a74b7..4da60dd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,5 +78,5 @@ dependencies { implementation 'com.savvi.datepicker:rangepicker:1.3.0' implementation 'androidx.recyclerview:recyclerview:1.3.0' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' - implementation 'com.opencsv:opencsv:5.7.1' + implementation 'com.opencsv:opencsv:5.8' } From 0c75d2fc20ff82fc5a34f131035925ba5c0bbb4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 08:21:14 +0000 Subject: [PATCH 35/87] Bump androidx.recyclerview:recyclerview from 1.3.0 to 1.3.1 Bumps androidx.recyclerview:recyclerview from 1.3.0 to 1.3.1. --- updated-dependencies: - dependency-name: androidx.recyclerview:recyclerview dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 4da60dd..b94af3d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,7 +76,7 @@ dependencies { implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' implementation 'com.savvi.datepicker:rangepicker:1.3.0' - implementation 'androidx.recyclerview:recyclerview:1.3.0' + implementation 'androidx.recyclerview:recyclerview:1.3.1' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' implementation 'com.opencsv:opencsv:5.8' } From 7b8a0d818543d2b259a821df3cb2b79252beb38f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 08:21:26 +0000 Subject: [PATCH 36/87] Bump com.android.tools.build:gradle from 8.0.2 to 8.1.0 Bumps com.android.tools.build:gradle from 8.0.2 to 8.1.0. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f87ba8d..519d830 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.0.2' + classpath 'com.android.tools.build:gradle:8.1.0' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From cc774112d4cee77c37d451fcd673f7e979d91b8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 08:12:17 +0000 Subject: [PATCH 37/87] Bump com.android.tools.build:gradle from 8.1.0 to 8.1.1 Bumps com.android.tools.build:gradle from 8.1.0 to 8.1.1. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 519d830..d25feb2 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.0' + classpath 'com.android.tools.build:gradle:8.1.1' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From aa3b8fae82026e78b575076e6f0f7465016cab26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 08:12:12 +0000 Subject: [PATCH 38/87] Bump androidx.constraintlayout:constraintlayout from 2.1.3 to 2.1.4 Bumps [androidx.constraintlayout:constraintlayout](https://github.com/androidx/constraintlayout) from 2.1.3 to 2.1.4. - [Release notes](https://github.com/androidx/constraintlayout/releases) - [Commits](https://github.com/androidx/constraintlayout/compare/2.1.3...2.1.4) --- updated-dependencies: - dependency-name: androidx.constraintlayout:constraintlayout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index b94af3d..417246a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' From cd978b568c38f79e2b606e0e592c395c5897c6e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 08:57:52 +0000 Subject: [PATCH 39/87] Bump com.android.tools.build:gradle from 8.1.1 to 8.1.2 Bumps com.android.tools.build:gradle from 8.1.1 to 8.1.2. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d25feb2..74f2801 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.1' + classpath 'com.android.tools.build:gradle:8.1.2' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From ad0075c9d0cb958b63cb0bd52433e105844590d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 08:58:35 +0000 Subject: [PATCH 40/87] Bump com.google.android.material:material from 1.9.0 to 1.10.0 Bumps [com.google.android.material:material](https://github.com/material-components/material-components-android) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/material-components/material-components-android/releases) - [Commits](https://github.com/material-components/material-components-android/compare/1.9.0...1.10.0) --- updated-dependencies: - dependency-name: com.google.android.material:material dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 417246a..e1465d0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,13 +65,13 @@ testOptions { dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.9.0' + implementation 'com.google.android.material:material:1.10.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'com.squareup:android-times-square:1.7.11@aar' - implementation 'com.google.android.material:material:1.9.0' + implementation 'com.google.android.material:material:1.10.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' From de8adcd8be04a281beac7d4f22f42bd93c2ef5dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 08:28:51 +0000 Subject: [PATCH 41/87] Bump org.jacoco:org.jacoco.core from 0.8.10 to 0.8.11 Bumps [org.jacoco:org.jacoco.core](https://github.com/jacoco/jacoco) from 0.8.10 to 0.8.11. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.10...v0.8.11) --- updated-dependencies: - dependency-name: org.jacoco:org.jacoco.core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 74f2801..00dc844 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.jacocoVersion = '0.8.10' + ext.jacocoVersion = '0.8.11' repositories { google() jcenter() From 2d61064df302ba48c748c38f9c04312ec9a64369 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 08:28:55 +0000 Subject: [PATCH 42/87] Bump androidx.recyclerview:recyclerview from 1.3.1 to 1.3.2 Bumps androidx.recyclerview:recyclerview from 1.3.1 to 1.3.2. --- updated-dependencies: - dependency-name: androidx.recyclerview:recyclerview dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index e1465d0..c18146f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,7 +76,7 @@ dependencies { implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' implementation 'com.savvi.datepicker:rangepicker:1.3.0' - implementation 'androidx.recyclerview:recyclerview:1.3.1' + implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' implementation 'com.opencsv:opencsv:5.8' } From 2e38efcc586d1fbc238deab71072e57e5f77a6da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 08:41:39 +0000 Subject: [PATCH 43/87] Bump com.android.tools.build:gradle from 8.1.2 to 8.1.3 Bumps com.android.tools.build:gradle from 8.1.2 to 8.1.3. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 00dc844..0362e68 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.2' + classpath 'com.android.tools.build:gradle:8.1.3' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From 87a9656e3d71f38db26a7a4e2d11160416ded03b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:00:14 +0000 Subject: [PATCH 44/87] Bump com.android.tools.build:gradle from 8.1.3 to 8.1.4 Bumps com.android.tools.build:gradle from 8.1.3 to 8.1.4. --- updated-dependencies: - dependency-name: com.android.tools.build:gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0362e68..c355377 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.3' + classpath 'com.android.tools.build:gradle:8.1.4' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong From 929b51eb0ca3f017ba9ae3ad973aff721d43e43f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 08:22:54 +0000 Subject: [PATCH 45/87] Bump com.opencsv:opencsv from 5.8 to 5.9 Bumps com.opencsv:opencsv from 5.8 to 5.9. --- updated-dependencies: - dependency-name: com.opencsv:opencsv dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index c18146f..18892c0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -78,5 +78,5 @@ dependencies { implementation 'com.savvi.datepicker:rangepicker:1.3.0' implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' - implementation 'com.opencsv:opencsv:5.8' + implementation 'com.opencsv:opencsv:5.9' } From dc66684fc1f10ff7eb53a8d8af086fe78a340c84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:45:35 +0000 Subject: [PATCH 46/87] Bump com.google.android.material:material from 1.10.0 to 1.11.0 Bumps [com.google.android.material:material](https://github.com/material-components/material-components-android) from 1.10.0 to 1.11.0. - [Release notes](https://github.com/material-components/material-components-android/releases) - [Commits](https://github.com/material-components/material-components-android/compare/1.10.0...1.11.0) --- updated-dependencies: - dependency-name: com.google.android.material:material dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c18146f..572ae92 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,13 +65,13 @@ testOptions { dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.10.0' + implementation 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'com.squareup:android-times-square:1.7.11@aar' - implementation 'com.google.android.material:material:1.10.0' + implementation 'com.google.android.material:material:1.11.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.ornach.nobobutton:nobobutton:1.6' From 0cb4c0fea301f749bffd100ff4ffffa33c66e07d Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Wed, 27 Dec 2023 15:03:57 +0100 Subject: [PATCH 47/87] Target Android 14 --- app/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fb14484..417c0d5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,16 +23,16 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea } android { - compileSdkVersion 33 + compileSdkVersion 34 lintOptions { checkReleaseBuilds false } defaultConfig { applicationId "rocks.poopjournal.vacationdays" minSdkVersion 21 - targetSdkVersion 33 - versionCode 10 - versionName "10.0" + targetSdkVersion 34 + versionCode 11 + versionName "11.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" From 6bce6af97a0feea8f6d29f1fc1bc5b9a0934e27a Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Fri, 29 Dec 2023 04:42:10 +0100 Subject: [PATCH 48/87] Added translation using Weblate (Interlingua) --- app/src/main/res/values-ia/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-ia/strings.xml diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-ia/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 1de9cfc3abecc0fa971f197c77ef8de4ca96b6e8 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Fri, 29 Dec 2023 04:02:10 +0000 Subject: [PATCH 49/87] Translated using Weblate (Interlingua) Currently translated at 28.5% (4 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/ia/ --- fastlane/metadata/android/ia/changelogs/1.txt | 1 + fastlane/metadata/android/ia/changelogs/4.txt | 1 + fastlane/metadata/android/ia/changelogs/6.txt | 1 + fastlane/metadata/android/ia/title.txt | 1 + 4 files changed, 4 insertions(+) create mode 100644 fastlane/metadata/android/ia/changelogs/1.txt create mode 100644 fastlane/metadata/android/ia/changelogs/4.txt create mode 100644 fastlane/metadata/android/ia/changelogs/6.txt create mode 100644 fastlane/metadata/android/ia/title.txt diff --git a/fastlane/metadata/android/ia/changelogs/1.txt b/fastlane/metadata/android/ia/changelogs/1.txt new file mode 100644 index 0000000..669a906 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/1.txt @@ -0,0 +1 @@ +Version initial diff --git a/fastlane/metadata/android/ia/changelogs/4.txt b/fastlane/metadata/android/ia/changelogs/4.txt new file mode 100644 index 0000000..1949d45 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/4.txt @@ -0,0 +1 @@ +Correctiones interne diff --git a/fastlane/metadata/android/ia/changelogs/6.txt b/fastlane/metadata/android/ia/changelogs/6.txt new file mode 100644 index 0000000..28b7246 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/6.txt @@ -0,0 +1 @@ +Actualisationes de dependentias diff --git a/fastlane/metadata/android/ia/title.txt b/fastlane/metadata/android/ia/title.txt new file mode 100644 index 0000000..c8f45b0 --- /dev/null +++ b/fastlane/metadata/android/ia/title.txt @@ -0,0 +1 @@ +Dies de vacantias From f53d11f0ad3f3da17c297c86476213803eef7678 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Fri, 29 Dec 2023 03:44:55 +0000 Subject: [PATCH 50/87] Translated using Weblate (Interlingua) Currently translated at 90.4% (38 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/ia/ --- app/src/main/res/values-ia/strings.xml | 42 +++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index a6b3dae..1bfa39d 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -1,2 +1,42 @@ - \ No newline at end of file + + Icones Material Design + Salvar + Android Jetpack + %s +\n↓ +\n%s + Licentia Apache 2.0 + Disveloppator + Traducer + Thema de systema + Chronologia + Restaurar + NoboButton + Apparentia + Adder titulo de vacantia + Licentia Apache 2.0 + Clar + Kotlin + Datos + OK + A proposito de + Signalar un defecto + Java + Beta - Licentia Apache 2.0 + Obscur + Icones Feather + Insere le numero de vacantias + General + Crazy Marvin + Numero de vacantias + Vider le fonte + Licentias de codice aperte + Code Acquaria + Licentia MIT + Parametros + Dies de vacantias + Calendario + Copia de securitate + Contribuer + \ No newline at end of file From dbbd1cc1a6b4c739b009495fe2bb183e89f15c12 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Sat, 30 Dec 2023 12:27:10 +0000 Subject: [PATCH 51/87] Translated using Weblate (Interlingua) Currently translated at 95.2% (40 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/ia/ --- app/src/main/res/values-ia/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index 1bfa39d..f6405cd 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -39,4 +39,6 @@ Calendario Copia de securitate Contribuer + DateRangePicker + CircleImageView \ No newline at end of file From 5eed7d3ae23634ac81bf58e301df368866fc17e2 Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Sun, 31 Dec 2023 22:12:04 +0000 Subject: [PATCH 52/87] Translated using Weblate (Interlingua) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/ia/ --- app/src/main/res/values-ia/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index f6405cd..3d096fd 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -41,4 +41,6 @@ Contribuer DateRangePicker CircleImageView + Licentia Public General GNU, version 2, con le exception Classpath + Dele qualcunque files de copia de securitate preexistente ab tu apparato prime. \ No newline at end of file From 8c01fcfa82f0fab53dd1914fd48c37e3b824ee5d Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Tue, 23 Jan 2024 02:12:11 +0000 Subject: [PATCH 53/87] Translated using Weblate (Interlingua) Currently translated at 100.0% (14 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/ia/ --- fastlane/metadata/android/ia/changelogs/10.txt | 5 +++++ fastlane/metadata/android/ia/changelogs/2.txt | 1 + fastlane/metadata/android/ia/changelogs/3.txt | 1 + fastlane/metadata/android/ia/changelogs/5.txt | 1 + fastlane/metadata/android/ia/changelogs/7.txt | 4 ++++ fastlane/metadata/android/ia/changelogs/8.txt | 1 + fastlane/metadata/android/ia/changelogs/9.txt | 6 ++++++ fastlane/metadata/android/ia/full_description.txt | 13 +++++++++++++ fastlane/metadata/android/ia/short_description.txt | 1 + fastlane/metadata/android/ia/video.txt | 1 + 10 files changed, 34 insertions(+) create mode 100644 fastlane/metadata/android/ia/changelogs/10.txt create mode 100644 fastlane/metadata/android/ia/changelogs/2.txt create mode 100644 fastlane/metadata/android/ia/changelogs/3.txt create mode 100644 fastlane/metadata/android/ia/changelogs/5.txt create mode 100644 fastlane/metadata/android/ia/changelogs/7.txt create mode 100644 fastlane/metadata/android/ia/changelogs/8.txt create mode 100644 fastlane/metadata/android/ia/changelogs/9.txt create mode 100644 fastlane/metadata/android/ia/full_description.txt create mode 100644 fastlane/metadata/android/ia/short_description.txt create mode 100644 fastlane/metadata/android/ia/video.txt diff --git a/fastlane/metadata/android/ia/changelogs/10.txt b/fastlane/metadata/android/ia/changelogs/10.txt new file mode 100644 index 0000000..dc6a2a1 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/10.txt @@ -0,0 +1,5 @@ +- Multe defectos corrigite gratias a subeep 🐛 +- Meliorationes de interfacie de usator gratias a unbiaseduser 🎨 +- Pulsar Retro ora non claude le application automaticamente 🐛 +- Cambio a icones vector pro un vista plus fulgente gratias a karthikayya 🎨 +- Actualisationes de traductiones 🗺️ diff --git a/fastlane/metadata/android/ia/changelogs/2.txt b/fastlane/metadata/android/ia/changelogs/2.txt new file mode 100644 index 0000000..84914c7 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/2.txt @@ -0,0 +1 @@ +Parve melioramentos sub le cappucio diff --git a/fastlane/metadata/android/ia/changelogs/3.txt b/fastlane/metadata/android/ia/changelogs/3.txt new file mode 100644 index 0000000..84914c7 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/3.txt @@ -0,0 +1 @@ +Parve melioramentos sub le cappucio diff --git a/fastlane/metadata/android/ia/changelogs/5.txt b/fastlane/metadata/android/ia/changelogs/5.txt new file mode 100644 index 0000000..fd596a4 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/5.txt @@ -0,0 +1 @@ +"Corrigite" le linting del compilationes publicate diff --git a/fastlane/metadata/android/ia/changelogs/7.txt b/fastlane/metadata/android/ia/changelogs/7.txt new file mode 100644 index 0000000..dc5c0b4 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/7.txt @@ -0,0 +1,4 @@ +- 🐛 Corrigite le salvamento del parametros de apparentia +- 🎵 Le application ora monstra un message indicante que le copia de securitate ancora non es implementate +- 🤮 Melior gestion de dies de maladia +- 🆕 Dependentias actualisate diff --git a/fastlane/metadata/android/ia/changelogs/8.txt b/fastlane/metadata/android/ia/changelogs/8.txt new file mode 100644 index 0000000..53dd94b --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/8.txt @@ -0,0 +1 @@ +Le application ora monstra le numero de dies de vacantia. Plus de melioramentos es in cammino. 🚀 diff --git a/fastlane/metadata/android/ia/changelogs/9.txt b/fastlane/metadata/android/ia/changelogs/9.txt new file mode 100644 index 0000000..548a064 --- /dev/null +++ b/fastlane/metadata/android/ia/changelogs/9.txt @@ -0,0 +1,6 @@ +- ⚙️ Corrigite le copia de securitate (#94) +- 🎨 Supporto de themas de icone introducite in Android 13+ (#83) +- 🐛 Corrigite le nomine de version monstrate in le schermo A proposito (#97) +- 👍 Dependentias e traductiones actualisate + +Multe gratias a @unbiaseduser, @amarradi e tote le traductores! 😘 diff --git a/fastlane/metadata/android/ia/full_description.txt b/fastlane/metadata/android/ia/full_description.txt new file mode 100644 index 0000000..b19d220 --- /dev/null +++ b/fastlane/metadata/android/ia/full_description.txt @@ -0,0 +1,13 @@ +Vide quando tu es libere e planifica tu vacantias. + +A prime vista. Vide tu dies de vacantia in un de duo dispositiones: un chronologia o un calendar. Le contatores in le barra monstra tu dies de vacantia pro le anno actual — e quanto es remanente. + +Ordinate in secundas. Tocca le button emergente pro adder nove dies de vacantia. Insere un nomine, glissa pro seliger un intervallo de date e tu jam es preste. + +Cambiante telephonos? Face un copia de securitate de tote tu datos in un apparato e restaura lo in altere. Face copias de securitate periodic pro mantener tu datos. + +Night owls, rejoice. Un belle Modo Obscur pro vistas tarde in le nocte. Commuta lo automaticamente o face lo sequer le apparentia del systema. + +Sito web: https://www.crazymarvin.com/vacation-days +Traduce lo in Hosted Weblate: https://hosted.weblate.org/engage/vacationdays/ +Software libere in GitHub: https://github.com/Crazy-Marvin/VacationDays diff --git a/fastlane/metadata/android/ia/short_description.txt b/fastlane/metadata/android/ia/short_description.txt new file mode 100644 index 0000000..b9578ed --- /dev/null +++ b/fastlane/metadata/android/ia/short_description.txt @@ -0,0 +1 @@ +Vide quando tu es libere — Vacation Days te adjuta in arrangiar tu vacantias. diff --git a/fastlane/metadata/android/ia/video.txt b/fastlane/metadata/android/ia/video.txt new file mode 100644 index 0000000..6a7f6f3 --- /dev/null +++ b/fastlane/metadata/android/ia/video.txt @@ -0,0 +1 @@ +https://youtu.be/wFzSAZmT09M From 9572dca1c343ff870c5db4b1601ee3ec6fc20a72 Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 24 Jan 2024 21:53:32 +0100 Subject: [PATCH 54/87] Update Gradle Wrapper --- .idea/gradle.xml | 5 ++--- .idea/misc.xml | 1 - gradle/wrapper/gradle-wrapper.properties | 12 ++++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index d553552..cb865f6 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,16 +4,15 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 3259bfb..853d9ce 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 35c8e4e..6a7412a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Oct 03 23:04:32 CEST 2022 -distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip -distributionPath=wrapper/dists -zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME +#Wed Jan 24 21:48:41 CET 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists From e11e3edd9ac5696a19d1b1515bd104abdbf087ef Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 24 Jan 2024 21:55:28 +0100 Subject: [PATCH 55/87] Upgrade AGP --- app/build.gradle | 6 +++--- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 417c0d5..ad8ff4b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,9 +24,6 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea android { compileSdkVersion 34 - lintOptions { - checkReleaseBuilds false - } defaultConfig { applicationId "rocks.poopjournal.vacationdays" minSdkVersion 21 @@ -60,6 +57,9 @@ testOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + lint { + checkReleaseBuilds false + } } dependencies { diff --git a/build.gradle b/build.gradle index c355377..bfd6abd 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:8.1.4' + classpath 'com.android.tools.build:gradle:8.2.2' classpath "org.jacoco:org.jacoco.core:$jacocoVersion" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6a7412a..abf9c80 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Wed Jan 24 21:48:41 CET 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 842b4d1719b84fdf33bccbaa7bb5c4a103afd450 Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Sat, 27 Jan 2024 22:17:02 +0100 Subject: [PATCH 56/87] Update dependabot.yml --- .github/dependabot.yml | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index a35c2aa..8d09d2d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,11 +1,21 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - version: 2 updates: - - package-ecosystem: "gradle" # See documentation for possible values - directory: "/" # Location of package manifests +- package-ecosystem: gradle + directory: "/" + schedule: + interval: monthly + open-pull-requests-limit: 10 +- package-ecosystem: "devcontainers" + directory: "/" schedule: - interval: "weekly" + interval: monthly + open-pull-requests-limit: 10 +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: monthly + open-pull-requests-limit: 10 + reviewers: + - FahadSaleem + assignees: + - FahadSaleem From 20ce935ae06f93827886924a9a45332206a62a0a Mon Sep 17 00:00:00 2001 From: Software In Interlingua Date: Sun, 4 Feb 2024 19:07:40 +0000 Subject: [PATCH 57/87] Translated using Weblate (Interlingua) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/ia/ --- app/src/main/res/values-ia/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ia/strings.xml b/app/src/main/res/values-ia/strings.xml index 3d096fd..7843cef 100644 --- a/app/src/main/res/values-ia/strings.xml +++ b/app/src/main/res/values-ia/strings.xml @@ -1,7 +1,7 @@ Icones Material Design - Salvar + Salveguardar Android Jetpack %s \n↓ From 868e844e46bd598df1786d31087441e6c93cd3b8 Mon Sep 17 00:00:00 2001 From: Marvin Date: Sat, 17 Feb 2024 18:45:00 +0100 Subject: [PATCH 58/87] Switch From JCenter To MavenCentral --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index bfd6abd..c52e853 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext.jacocoVersion = '0.8.11' repositories { google() - jcenter() + mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.2.2' @@ -17,7 +17,7 @@ buildscript { allprojects { repositories { google() - jcenter() + mavenCentral() } } From ecd5718307249f783482564601dc384b5eb4f9bb Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 28 Feb 2024 17:45:36 +0100 Subject: [PATCH 59/87] Try To Fix Gradle --- .idea/compiler.xml | 2 +- .idea/gradle.xml | 2 +- .idea/misc.xml | 3 ++- .idea/vcs.xml | 2 +- app/build.gradle | 6 ++++-- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 659bf43..b589d56 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index cb865f6..0897082 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,7 +5,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index ad8ff4b..5fe4801 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,9 @@ plugins { task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { reports { - xml.enabled = true - html.enabled = true + xml.required = false + csv.required = false + html.outputLocation = layout.buildDirectory.dir('jacocoHtml') } def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] @@ -26,6 +27,7 @@ android { compileSdkVersion 34 defaultConfig { applicationId "rocks.poopjournal.vacationdays" + namespace "rocks.poopjournal.vacationdays" minSdkVersion 21 targetSdkVersion 34 versionCode 11 From 97203866841c8ca74ab25f61651cf4240becf521 Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 28 Feb 2024 22:05:16 +0100 Subject: [PATCH 60/87] Fix Build --- app/build.gradle | 4 ++-- build.gradle | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5fe4801..7ecc5dd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,8 +76,8 @@ dependencies { implementation 'com.google.android.material:material:1.11.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'com.ornach.nobobutton:nobobutton:1.6' - implementation 'com.savvi.datepicker:rangepicker:1.3.0' + implementation 'com.github.ornachcom:NoboButton:master' + implementation 'com.github.savvisingh:DateRangePicker:master' implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' implementation 'com.opencsv:opencsv:5.9' diff --git a/build.gradle b/build.gradle index c52e853..dd98720 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ buildscript { repositories { google() mavenCentral() + maven {url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'com.android.tools.build:gradle:8.2.2' @@ -18,6 +19,7 @@ allprojects { repositories { google() mavenCentral() + maven { url 'https://jitpack.io' } } } From 0d527ad56723398409c39247484a6312c17b8921 Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 28 Feb 2024 23:43:29 +0100 Subject: [PATCH 61/87] Fix Build --- .idea/misc.xml | 1 - app/build.gradle | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index dfc270e..c514421 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/app/build.gradle b/app/build.gradle index 7ecc5dd..8e9d69e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,7 +76,7 @@ dependencies { implementation 'com.google.android.material:material:1.11.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'com.github.ornachcom:NoboButton:master' + implementation 'com.github.ornachcom:NoboButton:1.6' implementation 'com.github.savvisingh:DateRangePicker:master' implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' From 8c17b941ff1e8af7e9e33b9f0e6c0f9fd2588298 Mon Sep 17 00:00:00 2001 From: Eryk Michalak Date: Tue, 12 Mar 2024 20:17:21 +0000 Subject: [PATCH 62/87] Translated using Weblate (Polish) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/pl/ --- app/src/main/res/values-pl/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 4f6836b..7bbc9d7 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -33,4 +33,14 @@ Kalendarz Usuń wcześniejsze kopie zapasowe z urządzenia. Licencja MIT + Licencja GNU General Public, wersja 2, z wykluczeniem Classpath + NoboButton + CircleImageView + Kod Aquaria + Zestaw ikon Feather + Android Jetpack + DateRangePicker + %s +\n↓ +\n%s \ No newline at end of file From 598859c462b5a3de46fe223ccac749eda66cf8ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 08:38:10 +0000 Subject: [PATCH 63/87] Bump org.jacoco:org.jacoco.core from 0.8.11 to 0.8.12 Bumps [org.jacoco:org.jacoco.core](https://github.com/jacoco/jacoco) from 0.8.11 to 0.8.12. - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.11...v0.8.12) --- updated-dependencies: - dependency-name: org.jacoco:org.jacoco.core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index dd98720..06bc908 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.jacocoVersion = '0.8.11' + ext.jacocoVersion = '0.8.12' repositories { google() mavenCentral() From a99c3c2b99e67238ea01064a1ff5ccb22e2508d4 Mon Sep 17 00:00:00 2001 From: Languages add-on Date: Sat, 13 Apr 2024 18:53:04 +0200 Subject: [PATCH 64/87] Added translation using Weblate (Hindi) --- app/src/main/res/values-hi/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-hi/strings.xml diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-hi/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 43abed164aa19d5372f62676197918d94ec245e1 Mon Sep 17 00:00:00 2001 From: Scrambled777 Date: Sat, 13 Apr 2024 17:27:53 +0000 Subject: [PATCH 65/87] Translated using Weblate (Hindi) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/hi/ --- app/src/main/res/values-hi/strings.xml | 46 +++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index a6b3dae..38be3b5 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -1,2 +1,46 @@ - \ No newline at end of file + + Vacation Days + बारे में + Kotlin + Java + CircleImageView + क्रेजी मार्विन + अनुवाद + दिखावट + डेटा + बैकअप + सेटिंग्स + समयरेखा + कैलेंडर + बीटा - अपाचे लाइसेंस 2.0 + GNU जनरल पब्लिक लाइसेंस, संस्करण 2, Classpath अपवाद के साथ + अपाचे लाइसेंस 2.0 + NoboButton + पहले अपने डिवाइस से पहले से मौजूद किसी भी बैकअप फाइल को हटा दें। + विकासकर्ता + कोड एक्वेरिया + योगदान करें + समस्या की रिपोर्ट करें + स्रोत देखें + ओपन-सोर्स लाइसेंस + फैदर चिह्न + MIT लाइसेंस + Material डिज़ाइन चिह्न + अपाचे लाइसेंस 2.0 + Android Jetpack + तिथि सीमा चयनकर्ता + सामान्य + पुनर्स्थापना + छुट्टी का शीर्षक जोड़ें + सहेजें + ठीक है + %s +\n↓ +\n%s + सिस्टम का पालन करें + हल्की + गहरी + छुट्टियों की संख्या + छुट्टियों की संख्या दर्ज करें + \ No newline at end of file From a5173e3b43e3ab3b7c9a8c3cb05f8de1b189f781 Mon Sep 17 00:00:00 2001 From: Scrambled777 Date: Sat, 13 Apr 2024 17:42:05 +0000 Subject: [PATCH 66/87] Translated using Weblate (Hindi) Currently translated at 100.0% (14 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/hi/ --- fastlane/metadata/android/hi-IN/changelogs/1.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/10.txt | 5 +++++ fastlane/metadata/android/hi-IN/changelogs/2.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/3.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/4.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/5.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/6.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/7.txt | 4 ++++ fastlane/metadata/android/hi-IN/changelogs/8.txt | 1 + fastlane/metadata/android/hi-IN/changelogs/9.txt | 6 ++++++ .../metadata/android/hi-IN/full_description.txt | 13 +++++++++++++ .../metadata/android/hi-IN/short_description.txt | 1 + fastlane/metadata/android/hi-IN/title.txt | 1 + fastlane/metadata/android/hi-IN/video.txt | 1 + 14 files changed, 38 insertions(+) create mode 100644 fastlane/metadata/android/hi-IN/changelogs/1.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/10.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/2.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/3.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/4.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/5.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/6.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/7.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/8.txt create mode 100644 fastlane/metadata/android/hi-IN/changelogs/9.txt create mode 100644 fastlane/metadata/android/hi-IN/full_description.txt create mode 100644 fastlane/metadata/android/hi-IN/short_description.txt create mode 100644 fastlane/metadata/android/hi-IN/title.txt create mode 100644 fastlane/metadata/android/hi-IN/video.txt diff --git a/fastlane/metadata/android/hi-IN/changelogs/1.txt b/fastlane/metadata/android/hi-IN/changelogs/1.txt new file mode 100644 index 0000000..1228c01 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/1.txt @@ -0,0 +1 @@ +प्रारंभिक विज्ञप्ति diff --git a/fastlane/metadata/android/hi-IN/changelogs/10.txt b/fastlane/metadata/android/hi-IN/changelogs/10.txt new file mode 100644 index 0000000..9412b35 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/10.txt @@ -0,0 +1,5 @@ +- कई बग ठीक किए गए, subeep को धन्यवाद +- UI सुधार के लिए unbiaseduser को धन्यवाद 🎨 +- अब वापस दबाने से ऐप अपने आप बंद नहीं होता 🐛 +- अधिक स्पष्ट दृश्य के लिए वेक्टर आइकन पर स्विच करें, कार्तिकेय को धन्यवाद +- अनुवाद अपडेट 🗺️ diff --git a/fastlane/metadata/android/hi-IN/changelogs/2.txt b/fastlane/metadata/android/hi-IN/changelogs/2.txt new file mode 100644 index 0000000..df57704 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/2.txt @@ -0,0 +1 @@ +सतह के नीचे थोड़ा सुधार diff --git a/fastlane/metadata/android/hi-IN/changelogs/3.txt b/fastlane/metadata/android/hi-IN/changelogs/3.txt new file mode 100644 index 0000000..df57704 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/3.txt @@ -0,0 +1 @@ +सतह के नीचे थोड़ा सुधार diff --git a/fastlane/metadata/android/hi-IN/changelogs/4.txt b/fastlane/metadata/android/hi-IN/changelogs/4.txt new file mode 100644 index 0000000..91a16a1 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/4.txt @@ -0,0 +1 @@ +आंतरिक सुधार diff --git a/fastlane/metadata/android/hi-IN/changelogs/5.txt b/fastlane/metadata/android/hi-IN/changelogs/5.txt new file mode 100644 index 0000000..b94fcd4 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/5.txt @@ -0,0 +1 @@ +रिलीज़ बिल्ड के लिए लिंटिंग को "ठीक" किया गया diff --git a/fastlane/metadata/android/hi-IN/changelogs/6.txt b/fastlane/metadata/android/hi-IN/changelogs/6.txt new file mode 100644 index 0000000..95d91a3 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/6.txt @@ -0,0 +1 @@ +निर्भरता अद्यतन diff --git a/fastlane/metadata/android/hi-IN/changelogs/7.txt b/fastlane/metadata/android/hi-IN/changelogs/7.txt new file mode 100644 index 0000000..7722514 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/7.txt @@ -0,0 +1,4 @@ +- 🐛 उपस्थिति सेटिंग्स की बचत को ठीक किया गया +- 🎵 ऐप अब एक संदेश दिखाता है कि बैकअप सुविधा अभी तक लागू नहीं हुई है +- 🤮बीमार दिनों का बेहतर प्रबंधन +- 🆕डिपेंडेंस अपडेट किया गया diff --git a/fastlane/metadata/android/hi-IN/changelogs/8.txt b/fastlane/metadata/android/hi-IN/changelogs/8.txt new file mode 100644 index 0000000..fbda310 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/8.txt @@ -0,0 +1 @@ +ऐप अब छुट्टियों के दिनों की संख्या दिखाता है। और अधिक संवर्द्धन आने वाले हैं। 🚀 diff --git a/fastlane/metadata/android/hi-IN/changelogs/9.txt b/fastlane/metadata/android/hi-IN/changelogs/9.txt new file mode 100644 index 0000000..f4244eb --- /dev/null +++ b/fastlane/metadata/android/hi-IN/changelogs/9.txt @@ -0,0 +1,6 @@ +- ⚙️ बैकअप ठीक किया गया (#94) +- 🎨 थीम वाले आइकन का समर्थन करता है जिसे Android 13+ (#83) के लिए पेश किया गया था +- 🐛 "बारे में" स्क्रीन में दिखाए गए संस्करण का नाम ठीक किया गया (#97) +- 👍 अद्यतन निर्भरताएँ और अनुवाद + +@unbiaseduser, @amarradi और सभी अनुवादकों को बहुत-बहुत धन्यवाद! 😘 diff --git a/fastlane/metadata/android/hi-IN/full_description.txt b/fastlane/metadata/android/hi-IN/full_description.txt new file mode 100644 index 0000000..61a5001 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/full_description.txt @@ -0,0 +1,13 @@ +देखें कि आप कब खाली हैं और छुट्टियों की योजना बनाते हैं। + +एक नज़र में। अपने अवकाश के दिनों को दो अभिन्यास में से एक में देखें: एक समयरेखा या एक कैलेंडर। शीर्ष बार में काउंटर चालू वर्ष के लिए आपकी छुट्टियों के दिन दिखाते हैं - और कितने बचे हैं। + +सेकेंड में क्रमबद्ध। नए छुट्टियों के दिनों को जोड़ने के लिए फ़्लोटिंग बटन पर टैप करें। एक नाम दर्ज करें, दिनांक सीमा चुनने के लिए स्वाइप करें और आपका काम हो गया। + +फ़ोन स्विच कर रहे हैं? एक डिवाइस पर अपने सभी डेटा का बैकअप लें और दूसरे पर पुनर्स्थापित करें। अपने डेटा को सुरक्षित रखने के लिए समय-समय पर बैकअप बनाएं। + +रात के उल्लू, आनंद लें। देर रात देखने के लिए एक सुंदर डार्क मोड। इसे स्वचालित रूप से टॉगल करें या इसे सिस्टम स्वरूप का अनुसरण करने दें। + +वेबपेज: https://www.crazymarvin.com/vacation-days +होस्टेड वेबलेट पर इसका अनुवाद करें: https://hosted.weblate.org/engage/vacationdays/ +GitHub पर लिब्रे सॉफ़्टवेयर: https://github.com/Crazy-Marvin/VacationDays diff --git a/fastlane/metadata/android/hi-IN/short_description.txt b/fastlane/metadata/android/hi-IN/short_description.txt new file mode 100644 index 0000000..7247b3a --- /dev/null +++ b/fastlane/metadata/android/hi-IN/short_description.txt @@ -0,0 +1 @@ +देखिये, जब आप खाली हों - Vacation Days आपकी छुट्टी के दिनों का हिसाब रखने में आपकी मदद करता है। diff --git a/fastlane/metadata/android/hi-IN/title.txt b/fastlane/metadata/android/hi-IN/title.txt new file mode 100644 index 0000000..e66c973 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/title.txt @@ -0,0 +1 @@ +Vacation Days diff --git a/fastlane/metadata/android/hi-IN/video.txt b/fastlane/metadata/android/hi-IN/video.txt new file mode 100644 index 0000000..6a7f6f3 --- /dev/null +++ b/fastlane/metadata/android/hi-IN/video.txt @@ -0,0 +1 @@ +https://youtu.be/wFzSAZmT09M From 1275eafe8f9fb3f3e6ee1aa45d32a7ccd3b5526c Mon Sep 17 00:00:00 2001 From: Marvin Date: Thu, 2 May 2024 23:59:33 +0200 Subject: [PATCH 67/87] Add Project Info For IDEA To Display --- .idea/icon.png | Bin 0 -> 8246 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .idea/icon.png diff --git a/.idea/icon.png b/.idea/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..67392a27e30b5f0a91c881619d9475ca5810013f GIT binary patch literal 8246 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 DgX*Jl literal 0 HcmV?d00001 From 5e50c750711b9dbfdedc3f5ff8e0865bebc011f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 08:42:01 +0000 Subject: [PATCH 68/87] Bump com.google.android.material:material from 1.11.0 to 1.12.0 Bumps [com.google.android.material:material](https://github.com/material-components/material-components-android) from 1.11.0 to 1.12.0. - [Release notes](https://github.com/material-components/material-components-android/releases) - [Commits](https://github.com/material-components/material-components-android/compare/1.11.0...1.12.0) --- updated-dependencies: - dependency-name: com.google.android.material:material dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8e9d69e..ff8c1e3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ testOptions { dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.11.0' + implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation 'com.squareup:android-times-square:1.7.11@aar' - implementation 'com.google.android.material:material:1.11.0' + implementation 'com.google.android.material:material:1.12.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' implementation 'com.github.ornachcom:NoboButton:1.6' From 47b4b8ce12bed9b6db9ff5d430acd202d9b28acc Mon Sep 17 00:00:00 2001 From: Marcus Radisch Date: Sat, 11 May 2024 07:20:38 +0000 Subject: [PATCH 69/87] Translated using Weblate (German) Currently translated at 14.2% (2 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/de/ --- fastlane/metadata/android/de/short_description.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/de/short_description.txt diff --git a/fastlane/metadata/android/de/short_description.txt b/fastlane/metadata/android/de/short_description.txt new file mode 100644 index 0000000..702a74d --- /dev/null +++ b/fastlane/metadata/android/de/short_description.txt @@ -0,0 +1 @@ +Vacation Days hilft Ihnen, den Überblick über Ihre Freizeit zu behalten. From 011baa802b861c8885f86f2d53ee03a458bdf78c Mon Sep 17 00:00:00 2001 From: poi Date: Tue, 7 May 2024 19:24:24 +0000 Subject: [PATCH 70/87] Translated using Weblate (Chinese (Simplified)) Currently translated at 66.6% (28 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 10ad522..684c943 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -11,7 +11,7 @@ 假期时间表 开发者 帮助软件发展 - 翻译 + 翻译 匿名 <me-qr.com/entry/vcard/Wr2h6tBO> 上报软件问题 浏览源代码 开源许可协议 @@ -26,4 +26,6 @@ 数据 好的 备份 + 假期数 + 输入假期数 \ No newline at end of file From fd58a4dc366e3c752fd948dad8ef1dc6392132d1 Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Wed, 15 May 2024 09:17:17 +0000 Subject: [PATCH 71/87] Translated using Weblate (Chinese (Simplified)) Currently translated at 66.6% (28 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 684c943..13d252e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -11,7 +11,7 @@ 假期时间表 开发者 帮助软件发展 - 翻译 匿名 <me-qr.com/entry/vcard/Wr2h6tBO> + 翻译 匿名 上报软件问题 浏览源代码 开源许可协议 From 11bc4b377853083031a4cd2661b2238869adf41a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 08:31:18 +0000 Subject: [PATCH 72/87] Bump androidx.appcompat:appcompat from 1.6.1 to 1.7.0 Bumps androidx.appcompat:appcompat from 1.6.1 to 1.7.0. --- updated-dependencies: - dependency-name: androidx.appcompat:appcompat dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ff8c1e3..9c150f8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,7 @@ testOptions { dependencies { - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' From 9bf52f37136e8a50ccaf5ea04fc3ed035359dd8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8D=E4=BA=88?= Date: Sun, 19 May 2024 03:27:56 +0000 Subject: [PATCH 73/87] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (42 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 13d252e..0693a78 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -4,10 +4,9 @@ 设置 日历 Apache License 2.0 开源协议 - 注意! -\n原先有备份的话,先把原来的备份文件删掉 + 请先删除设备上原有的备份文件。 公测 | Apache License 2.0 开源协议 - 何时放假? + 放假日 假期时间表 开发者 帮助软件发展 @@ -28,4 +27,20 @@ 备份 假期数 输入假期数 + Java + NoboButton + CircleImageView + Crazy Marvin + Code Acquaria + Feather Icons + MIT License + Material Design Icons + Apache License 2.0 + Android Jetpack + DateRangePicker + GNU General Public License, version 2, with the Classpath Exception + %s +\n↓ +\n%s + Kotlin \ No newline at end of file From 8777f05cf0a41e4c32f24aa6c1524a75e48110ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 08:33:40 +0000 Subject: [PATCH 74/87] Bump androidx.test.espresso:espresso-core from 3.5.1 to 3.6.1 Bumps androidx.test.espresso:espresso-core from 3.5.1 to 3.6.1. --- updated-dependencies: - dependency-name: androidx.test.espresso:espresso-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 9c150f8..9412ba7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -71,7 +71,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' implementation 'com.squareup:android-times-square:1.7.11@aar' implementation 'com.google.android.material:material:1.12.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' From 4f76c61efecb294c2360149c890f8af29e3af9a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 11:42:44 +0000 Subject: [PATCH 75/87] Bump androidx.test.ext:junit from 1.1.5 to 1.2.1 Bumps androidx.test.ext:junit from 1.1.5 to 1.2.1. --- updated-dependencies: - dependency-name: androidx.test.ext:junit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 9412ba7..a86c350 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,7 +70,7 @@ dependencies { implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' implementation 'com.squareup:android-times-square:1.7.11@aar' implementation 'com.google.android.material:material:1.12.0' From 08e464687d48f5d5cbf74397db13235114028110 Mon Sep 17 00:00:00 2001 From: CrazyMarvin Date: Fri, 27 Sep 2024 21:43:19 +0200 Subject: [PATCH 76/87] Add Figma Mockups Badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b59c246..7d61cde 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ [![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/Crazy-Marvin/VacationDays/CI/development)](https://github.com/Crazy-Marvin/VacationDays/actions) [![License](https://img.shields.io/github/license/Crazy-Marvin/VacationDays.svg)](https://github.com/Crazy-Marvin/VacationDays/blob/trunk/LICENSE) +[![Figma Mockups](https://img.shields.io/badge/Figma-black?logo=figma)](https://www.figma.com/file/9Fk92SQVItIwAjVfsakopo/) [![Last commit](https://img.shields.io/github/last-commit/Crazy-Marvin/ToDont.svg?style=flat)](https://github.com/Crazy-Marvin/VacationDays/commits) [![Releases](https://img.shields.io/github/downloads/Crazy-Marvin/VacationDays/total.svg?style=flat)](https://github.com/Crazy-Marvin/ToDont/releases) [![Latest tag](https://img.shields.io/github/tag/Crazy-Marvin/VacationDays.svg?style=flat)](https://github.com/Crazy-Marvin/VacationDays/tags) From 47bd1645fc311ac753551d0758916493d4a45805 Mon Sep 17 00:00:00 2001 From: Xapitonov Date: Sun, 27 Oct 2024 18:28:48 +0100 Subject: [PATCH 77/87] Added translation using Weblate (Russian) --- app/src/main/res/values-ru/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-ru/strings.xml diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000..a6b3dae --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 545f57c91a5b1f88ad8103348635dadc57de8f4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:53:41 +0000 Subject: [PATCH 78/87] Bump androidx.constraintlayout:constraintlayout from 2.1.4 to 2.2.0 Bumps androidx.constraintlayout:constraintlayout from 2.1.4 to 2.2.0. --- updated-dependencies: - dependency-name: androidx.constraintlayout:constraintlayout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index a86c350..3e4e135 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,7 +68,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.constraintlayout:constraintlayout:2.2.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.2.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' From b44646849dbecf6c92e813fcdf8f3283da363747 Mon Sep 17 00:00:00 2001 From: Xapitonov Date: Mon, 16 Dec 2024 05:33:06 +0000 Subject: [PATCH 79/87] Translated using Weblate (Russian) Currently translated at 88.0% (37 of 42 strings) Translation: Vacation Days/Vacation Days Translate-URL: https://hosted.weblate.org/projects/vacation-days/vacation-days/ru/ --- app/src/main/res/values-ru/strings.xml | 44 +++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a6b3dae..00e322f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1,2 +1,44 @@ - \ No newline at end of file + + Дни отпуска + О приложении + Настройки + Бета - Лицензия Apache 2.0 + График + Календарь + Kotlin + Java + GNU General Public License, версия 2, с исключением Classpath + Лицензия Apache 2.0 + NoboButton + CircleImageView + Сначала удалите все ранее созданные резервные копии с вашего устройства. + Crazy Marvin + Разработчик + Код Acquaria + Вносить вклад + Перевести + Сообщить о проблеме + Глянуть исходный код + Значки Feather + Лицензия MIT + Значки Material Design + Лицензия Apache 2.0 + Android Jetpack + Лицензии с открытым исходным кодом + В целом + DateRangePicker + Облик + Данные + Резервирование + Восстановление + Добавить название праздника + Сохранить + ОК + %s\n↓\n%s + Вслед за системой + Светлая + Тёмная + Количество отпусков + Введите количество отпусков + \ No newline at end of file From 19d2e6e8d7e5f655458a93b463b046a756d896dc Mon Sep 17 00:00:00 2001 From: Xapitonov Date: Mon, 16 Dec 2024 06:36:30 +0000 Subject: [PATCH 80/87] Translated using Weblate (Russian) Currently translated at 78.5% (11 of 14 strings) Translation: Vacation Days/Metadata Translate-URL: https://hosted.weblate.org/projects/vacation-days/metadata/ru/ --- fastlane/metadata/android/ru-RU/changelogs/1.txt | 1 + fastlane/metadata/android/ru-RU/changelogs/10.txt | 5 +++++ fastlane/metadata/android/ru-RU/changelogs/2.txt | 1 + fastlane/metadata/android/ru-RU/changelogs/3.txt | 1 + fastlane/metadata/android/ru-RU/changelogs/4.txt | 1 + fastlane/metadata/android/ru-RU/changelogs/5.txt | 1 + fastlane/metadata/android/ru-RU/changelogs/6.txt | 1 + fastlane/metadata/android/ru-RU/changelogs/7.txt | 4 ++++ fastlane/metadata/android/ru-RU/changelogs/8.txt | 1 + .../metadata/android/ru-RU/full_description.txt | 15 +++++++++++++++ .../metadata/android/ru-RU/short_description.txt | 1 + fastlane/metadata/android/ru-RU/title.txt | 1 + fastlane/metadata/android/ru-RU/video.txt | 1 + 13 files changed, 34 insertions(+) create mode 100644 fastlane/metadata/android/ru-RU/changelogs/1.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/10.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/2.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/3.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/4.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/5.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/6.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/7.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/8.txt create mode 100644 fastlane/metadata/android/ru-RU/full_description.txt create mode 100644 fastlane/metadata/android/ru-RU/short_description.txt create mode 100644 fastlane/metadata/android/ru-RU/title.txt create mode 100644 fastlane/metadata/android/ru-RU/video.txt diff --git a/fastlane/metadata/android/ru-RU/changelogs/1.txt b/fastlane/metadata/android/ru-RU/changelogs/1.txt new file mode 100644 index 0000000..cfd633c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/1.txt @@ -0,0 +1 @@ +Первый выпуск diff --git a/fastlane/metadata/android/ru-RU/changelogs/10.txt b/fastlane/metadata/android/ru-RU/changelogs/10.txt new file mode 100644 index 0000000..22cf4dc --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/10.txt @@ -0,0 +1,5 @@ +- Исправлено множество ошибок благодаря subeep 🐛 +- Улучшение интерфейса благодаря unbiaseduser 🎨 +- Нажатие кнопки "Назад" теперь не закрывает приложение автоматически 🐛 +- Переход на векторные значки для четкости благодаря karthikayya 🎨 +- Обновления переводов 🗺️ diff --git a/fastlane/metadata/android/ru-RU/changelogs/2.txt b/fastlane/metadata/android/ru-RU/changelogs/2.txt new file mode 100644 index 0000000..b0c14c5 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/2.txt @@ -0,0 +1 @@ +Небольшие улучшения под капотом diff --git a/fastlane/metadata/android/ru-RU/changelogs/3.txt b/fastlane/metadata/android/ru-RU/changelogs/3.txt new file mode 100644 index 0000000..b0c14c5 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/3.txt @@ -0,0 +1 @@ +Небольшие улучшения под капотом diff --git a/fastlane/metadata/android/ru-RU/changelogs/4.txt b/fastlane/metadata/android/ru-RU/changelogs/4.txt new file mode 100644 index 0000000..679c383 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/4.txt @@ -0,0 +1 @@ +Внутренние исправления diff --git a/fastlane/metadata/android/ru-RU/changelogs/5.txt b/fastlane/metadata/android/ru-RU/changelogs/5.txt new file mode 100644 index 0000000..1fe60e1 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/5.txt @@ -0,0 +1 @@ +"Исправление" проверки для выпускных сборок diff --git a/fastlane/metadata/android/ru-RU/changelogs/6.txt b/fastlane/metadata/android/ru-RU/changelogs/6.txt new file mode 100644 index 0000000..f11386d --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/6.txt @@ -0,0 +1 @@ +Обновления зависимостей diff --git a/fastlane/metadata/android/ru-RU/changelogs/7.txt b/fastlane/metadata/android/ru-RU/changelogs/7.txt new file mode 100644 index 0000000..96537df --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/7.txt @@ -0,0 +1,4 @@ +- 🐛 Исправлено сохранение настроек облика +- 🎵 Приложение теперь показывает сообщение о том, что функция резервного копирования еще не реализована +- 🤮 Более эффективная работа в дни болезни +- 🆕 Обновлены зависимости diff --git a/fastlane/metadata/android/ru-RU/changelogs/8.txt b/fastlane/metadata/android/ru-RU/changelogs/8.txt new file mode 100644 index 0000000..89ba879 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/8.txt @@ -0,0 +1 @@ +Теперь приложение показывает количество дней отпуска. Скоро появятся новые улучшения. 🚀 diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt new file mode 100644 index 0000000..0b762c2 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -0,0 +1,15 @@ +Смотрите, когда вы свободны, и планируйте праздники. + +Мгновенный обзор. Просматривайте свои дни отпуска в одном из двух форматов: временной линии или календаря. Счетчики в верхней панели показывают ваши дни отпуска за текущий год — и сколько их осталось. + +Сортировка за секунды. Нажмите на плавающую кнопку, чтобы добавить новые дни отпуска. Введите название, смахните, чтобы выбрать диапазон дат, и готово. + +Меняете телефон? Сохраните все свои данные на одном устройстве и восстановите их на другом. Делайте периодические резервные копии, чтобы защитить свои данные. + +Совенки, радуйтесь. Прекрасный темный режим для ночного просмотра. Включайте его автоматически или запустите его в соответствии с системным дизайном. + +Веб-страница: https://www.crazymarvin.com/vacation-days + +Переведите на Hosted Weblate: https://hosted.weblate.org/engage/vacationdays/ + +Свободное программное обеспечение на GitHub: https://github.com/Crazy-Marvin/VacationDays diff --git a/fastlane/metadata/android/ru-RU/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt new file mode 100644 index 0000000..f3f5acc --- /dev/null +++ b/fastlane/metadata/android/ru-RU/short_description.txt @@ -0,0 +1 @@ +Смотрите, когда вы свободны — Дни отпуска помогают вам отслеживать ваши выходные. diff --git a/fastlane/metadata/android/ru-RU/title.txt b/fastlane/metadata/android/ru-RU/title.txt new file mode 100644 index 0000000..e77f269 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/title.txt @@ -0,0 +1 @@ +Дни отпуска diff --git a/fastlane/metadata/android/ru-RU/video.txt b/fastlane/metadata/android/ru-RU/video.txt new file mode 100644 index 0000000..6a7f6f3 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/video.txt @@ -0,0 +1 @@ +https://youtu.be/wFzSAZmT09M From 59f021513a360deb40865915b765d9c16f19f354 Mon Sep 17 00:00:00 2001 From: mubeen Date: Mon, 20 Jan 2025 17:36:19 +0500 Subject: [PATCH 81/87] remove xml support added compose support --- app/build.gradle | 54 +- app/src/main/AndroidManifest.xml | 56 +- .../rocks/poopjournal/vacationdays/About.java | 168 ---- .../vacationdays/AdapterRecyclerView.java | 166 ---- .../vacationdays/DB_Controller.java | 145 ---- .../poopjournal/vacationdays/DatePicker.java | 91 --- .../vacationdays/FragmentCalendar.java | 159 ---- .../vacationdays/FragmentTimeline.java | 154 ---- .../poopjournal/vacationdays/Helper.java | 21 - .../rocks/poopjournal/vacationdays/Item.java | 29 - .../poopjournal/vacationdays/ItemAdapter.java | 160 ---- .../vacationdays/MainActivity.java | 159 ---- .../poopjournal/vacationdays/MainActivity2.kt | 38 + .../vacationdays/SettingsActivity.java | 501 ------------ .../poopjournal/vacationdays/SubItem.java | 49 -- .../vacationdays/SubItemAdapter.java | 108 --- .../vacationdays/VacationApplication.kt | 7 + .../vacationdays/data/VacationData.kt | 15 + .../poopjournal/vacationdays/di/AppModule.kt | 39 + .../domain/repo/VacationRepository.kt | 19 + .../domain/service/DatabaseBackup.kt | 79 ++ .../domain/service/VacationDao.kt | 29 + .../domain/service/VacationDatabase.kt | 10 + .../presentation/component/CustomTab.kt | 129 ++++ .../presentation/screen/home/HomeScreen.kt | 125 +++ .../presentation/screen/home/HomeViewModel.kt | 11 + .../presentation/ui/theme/Color.kt | 14 + .../presentation/ui/theme/Theme.kt | 60 ++ .../presentation/ui/theme/Type.kt | 59 ++ .../presentation/ui/utils/Constants.kt | 7 + app/src/main/res/drawable/briefcase.xml | 20 + app/src/main/res/drawable/tempreature.xml | 13 + app/src/main/res/drawable/umbrella.xml | 27 + app/src/main/res/font/dm_sans_bold.ttf | Bin 0 -> 56304 bytes app/src/main/res/font/dm_sans_italic.ttf | Bin 0 -> 61316 bytes app/src/main/res/font/dm_sans_regular.ttf | Bin 0 -> 56408 bytes app/src/main/res/layout/activity_about.xml | 728 ------------------ .../main/res/layout/activity_datepicker.xml | 10 - app/src/main/res/layout/activity_main.xml | 147 ---- app/src/main/res/layout/activity_settings.xml | 156 ---- app/src/main/res/layout/addholiday.xml | 57 -- app/src/main/res/layout/backup_dialogbox.xml | 56 -- app/src/main/res/layout/dialogbox.xml | 84 -- app/src/main/res/layout/fragment_calendar.xml | 46 -- app/src/main/res/layout/fragment_timeline.xml | 17 - app/src/main/res/layout/layout_item.xml | 50 -- app/src/main/res/layout/layout_sub_item.xml | 65 -- .../res/layout/noofvacationsdialogbox.xml | 57 -- .../main/res/layout/recyclerview_layout.xml | 19 - app/src/main/res/layout/spinner_layout.xml | 29 - app/src/main/res/menu/side_menu.xml | 24 - app/src/main/res/values-night/styles.xml | 53 -- app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/style.xml | 56 -- app/src/main/res/values/themes.xml | 5 + build.gradle | 8 + 56 files changed, 793 insertions(+), 3596 deletions(-) delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/About.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/AdapterRecyclerView.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/DB_Controller.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/DatePicker.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/FragmentCalendar.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/FragmentTimeline.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/Helper.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/Item.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/ItemAdapter.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/MainActivity.java create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/MainActivity2.kt delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/SettingsActivity.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/SubItem.java delete mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/SubItemAdapter.java create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/VacationApplication.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/data/VacationData.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/di/AppModule.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/domain/repo/VacationRepository.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/domain/service/DatabaseBackup.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDao.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDatabase.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/component/CustomTab.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeScreen.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeViewModel.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Color.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Theme.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Type.kt create mode 100644 app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/utils/Constants.kt create mode 100644 app/src/main/res/drawable/briefcase.xml create mode 100644 app/src/main/res/drawable/tempreature.xml create mode 100644 app/src/main/res/drawable/umbrella.xml create mode 100644 app/src/main/res/font/dm_sans_bold.ttf create mode 100644 app/src/main/res/font/dm_sans_italic.ttf create mode 100644 app/src/main/res/font/dm_sans_regular.ttf delete mode 100644 app/src/main/res/layout/activity_about.xml delete mode 100644 app/src/main/res/layout/activity_datepicker.xml delete mode 100644 app/src/main/res/layout/activity_main.xml delete mode 100644 app/src/main/res/layout/activity_settings.xml delete mode 100644 app/src/main/res/layout/addholiday.xml delete mode 100644 app/src/main/res/layout/backup_dialogbox.xml delete mode 100644 app/src/main/res/layout/dialogbox.xml delete mode 100644 app/src/main/res/layout/fragment_calendar.xml delete mode 100644 app/src/main/res/layout/fragment_timeline.xml delete mode 100644 app/src/main/res/layout/layout_item.xml delete mode 100644 app/src/main/res/layout/layout_sub_item.xml delete mode 100644 app/src/main/res/layout/noofvacationsdialogbox.xml delete mode 100644 app/src/main/res/layout/recyclerview_layout.xml delete mode 100644 app/src/main/res/layout/spinner_layout.xml delete mode 100644 app/src/main/res/menu/side_menu.xml delete mode 100644 app/src/main/res/values-night/styles.xml delete mode 100644 app/src/main/res/values/style.xml create mode 100644 app/src/main/res/values/themes.xml diff --git a/app/build.gradle b/app/build.gradle index 3e4e135..55264b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,10 @@ plugins { id 'com.android.application' id 'jacoco' + id 'kotlin-android' + id 'kotlin-kapt' + id 'com.google.dagger.hilt.android' + } task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { @@ -24,17 +28,20 @@ task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'crea } android { - compileSdkVersion 34 + compileSdkVersion 35 defaultConfig { applicationId "rocks.poopjournal.vacationdays" namespace "rocks.poopjournal.vacationdays" minSdkVersion 21 - targetSdkVersion 34 + targetSdkVersion 35 versionCode 11 versionName "11.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary true + } } testOptions { @@ -46,6 +53,13 @@ testOptions { unitTests.returnDefaultValues = true } + buildFeatures { + compose true + } + composeOptions { + kotlinCompilerExtensionVersion '1.5.1' + } + buildTypes { debug { testCoverageEnabled true @@ -62,6 +76,14 @@ testOptions { lint { checkReleaseBuilds false } + kotlinOptions { + jvmTarget = '1.8' + } + packaging { + resources { + excludes += '/META-INF/{AL2.0,LGPL2.1}' + } + } } dependencies { @@ -69,6 +91,9 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.0' + implementation 'androidx.compose.material3:material3-android:1.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7' + implementation 'androidx.compose.material3:material3' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.2.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' @@ -76,9 +101,32 @@ dependencies { implementation 'com.google.android.material:material:1.12.0' implementation 'com.github.sundeepk:compact-calendar-view:3.0.0' implementation 'de.hdodenhof:circleimageview:3.1.0' - implementation 'com.github.ornachcom:NoboButton:1.6' implementation 'com.github.savvisingh:DateRangePicker:master' implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'com.wdullaer:materialdatetimepicker:4.2.3' implementation 'com.opencsv:opencsv:5.9' + implementation 'androidx.compose.ui:ui' + implementation 'androidx.compose.material:material' + implementation 'androidx.compose.runtime:runtime' + implementation 'androidx.activity:activity-compose:1.10.0' + implementation platform('androidx.compose:compose-bom:2025.01.00') + implementation 'androidx.compose.ui:ui-graphics' + implementation 'androidx.compose.ui:ui-tooling-preview' + // Room + implementation 'androidx.room:room-runtime:2.6.1' + androidTestImplementation platform('androidx.compose:compose-bom:2024.04.01') + androidTestImplementation 'androidx.compose.ui:ui-test-junit4' + annotationProcessor 'androidx.room:room-compiler:2.6.1' + debugImplementation 'androidx.compose.ui:ui-tooling' + debugImplementation 'androidx.compose.ui:ui-test-manifest' + kapt 'androidx.room:room-compiler:2.6.1' + implementation 'androidx.room:room-ktx:2.6.1' + + //Hilt + implementation 'com.google.dagger:hilt-android:2.48' + kapt 'com.google.dagger:hilt-android-compiler:2.48' + implementation 'androidx.hilt:hilt-navigation-compose:1.2.0' +} +kapt{ + correctErrorTypes = true } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d911c8e..056d149 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,30 +1,28 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/About.java b/app/src/main/java/rocks/poopjournal/vacationdays/About.java deleted file mode 100644 index 01e9c95..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/About.java +++ /dev/null @@ -1,168 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.annotation.SuppressLint; -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.view.Gravity; -import android.view.View; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.appcompat.app.AppCompatActivity; - -//import com.github.sundeepk.compactcalendarview.BuildConfig; - -public class About extends AppCompatActivity { - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_about); - TextView appVersion = findViewById(R.id.version); - appVersion.setText(BuildConfig.VERSION_NAME+" "+getString(R.string.apache)); - } - - public void contact_codeaquaria(View view) { - switch (view.getId()) { - case R.id.btnmail_codeaquaria: - String mailto = "mailto:codeaquaria20@gmail.com"; - Intent emailIntent = new Intent(Intent.ACTION_SENDTO); - emailIntent.setData(Uri.parse(mailto)); - try { - startActivity(emailIntent); - } catch (ActivityNotFoundException e) { - Toast toast = Toast.makeText(this, " Error to open Email ", Toast.LENGTH_SHORT); - View v = toast.getView(); - v.setBackground(this.getResources().getDrawable(R.drawable.roundbutton)); - toast.setGravity(Gravity.CENTER, 0, 0); - toast.show(); - } - break; - case R.id.btngit_codeaquaria: - Uri uri = Uri.parse("https://github.com/arafaatqureshi"); // missing 'http://' will cause crashed - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - startActivity(intent); - break; - case R.id.btntwitter_codeaquaria: - Uri ui = Uri.parse("https://www.facebook.com/Code-Aquaria-109834144196326"); // missing 'http://' will cause crashed - Intent it = new Intent(Intent.ACTION_VIEW, ui); - startActivity(it); - break; - - } - } - - public void contact_marvin(View view) { - switch (view.getId()) { - case R.id.btnmail_crazymarvin: - String mailto = "mailto:marvin@poopjournal.rocks"; - Intent emailIntent = new Intent(Intent.ACTION_SENDTO); - emailIntent.setData(Uri.parse(mailto)); - try { - startActivity(emailIntent); - } catch (ActivityNotFoundException e) { - Toast toast = Toast.makeText(this, " Error to open Email ", Toast.LENGTH_SHORT); - View v = toast.getView(); - v.setBackground(this.getResources().getDrawable(R.drawable.roundbutton)); - toast.setGravity(Gravity.CENTER, 0, 0); - toast.show(); - } - break; - case R.id.btngit_crazymarvin: - Uri uri = Uri.parse("https://github.com/Crazy-Marvin"); // missing 'http://' will cause crashed - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - startActivity(intent); - break; - case R.id.btntwitter_crazymarvin: - Uri u = Uri.parse("https://twitter.com/CrazyMarvinApps"); // missing 'http://' will cause crashed - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - break; - - } - } - - public void translate(View view) { - Uri u = Uri.parse("https://hosted.weblate.org/engage/vacation-days/"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void report(View view) { - Uri u = Uri.parse("https://github.com/Crazy-Marvin/VacationDays/issues/"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void viewsource(View view) { - Uri u = Uri.parse("https://github.com/Crazy-Marvin/VacationDays/"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void back(View view) { - Intent i = new Intent(About.this, MainActivity.class); - finishAffinity(); - startActivity(i); - overridePendingTransition(R.anim.fade_in, R.anim.fade_out); - - } - - public void jetpack(View view) { - Uri u = Uri.parse("https://developer.android.com/jetpack"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void logoclicked(View view) { - Uri u = Uri.parse("https://crazymarvin.com/vacation-days/"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void feather(View view) { - Uri u = Uri.parse("https://feathericons.com/"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void apacheee(View view) { - Uri u = Uri.parse("https://github.com/Crazy-Marvin/VacationDays/blob/development/LICENSE"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void daterangepicker(View view) { - Uri u = Uri.parse("https://github.com/savvisingh/DateRangePicker/blob/master/LICENSE.txt"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - - public void Kotlin(View view) { - Uri u = Uri.parse("https://github.com/JetBrains/kotlin/blob/master/license/LICENSE.txt"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void Java(View view) { - Uri u = Uri.parse("http://openjdk.java.net/legal/gplv2+ce.html"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void nobobutton(View view) { - Uri u = Uri.parse("https://github.com/alex31n/NoboButton/blob/master/LICENSE"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } - - public void cImgButton(View view) { - Uri u = Uri.parse("https://github.com/hdodenhof/CircleImageView/blob/master/LICENSE.txt"); - Intent i = new Intent(Intent.ACTION_VIEW, u); - startActivity(i); - } -} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/AdapterRecyclerView.java b/app/src/main/java/rocks/poopjournal/vacationdays/AdapterRecyclerView.java deleted file mode 100644 index 8e489a5..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/AdapterRecyclerView.java +++ /dev/null @@ -1,166 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.ArrayList; -import java.util.List; - - -public class AdapterRecyclerView extends RecyclerView.Adapter { - - - List titles = new ArrayList<>(); - Context con; - DB_Controller db; - - public AdapterRecyclerView(Context con, List titles,DB_Controller db) { - this.titles = titles; - this.con = con; - this.db = db; - } - @NonNull - @Override - public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); - View view = inflater.inflate(R.layout.recyclerview_layout, viewGroup, false); - - return new RecyclerViewHolder(view); - } - - - @Override - public void onBindViewHolder(@NonNull final RecyclerViewHolder recyclerViewHolder, @SuppressLint("RecyclerView") final int i) { - recyclerViewHolder.tv1.setText(""+titles.get(i)); -// db.showMonthYear((String) titles.get(i)); -// db.show_data(); -// - // recyclerViewHolder.tv1.setText(""+titles.get(i)); -// TextView tv=new TextView(con); -// LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( -// LinearLayout.LayoutParams.FILL_PARENT, -// LinearLayout.LayoutParams.WRAP_CONTENT); -// tv.setLayoutParams(params); -// db.show_data(); -// ArrayList my = new ArrayList<>(); -// for (int j = 0; j < Helper.data.size(); j++) { -// my.add(Helper.data.get(j)[2]); -// } -// Log.d("check size before",""+my.size()); -// for(int k=0;k tareekhen = new ArrayList<>(); -// for (int j = 0; j < Helper.data.size(); j++) { -// Log.d("showCalRecorddata",""+ Helper.data.get(j)[2]); -// tareekhen.add(Helper.data.get(j)[3]); -// } -// String getdates = tareekhen.get(i); -// Log.d("adaptertareekhen", "" + tareekhen.get(i)); -// String[] splitdates = getdates.split(","); -// String start_date=splitdates[0]; -// String end_date=splitdates[splitdates.length-1]; -// String[] s = start_date.split("-"); -// String[] e = end_date.split("-"); -// Log.d("haankinn"," S:"+start_date+" E:"+end_date); -// if(start_date==end_date){ -// recyclerViewHolder.start.setText(s[2]); -// recyclerViewHolder.to.setHeight(0); -// recyclerViewHolder.end.setHeight(0); -// } -// else{ -// -// recyclerViewHolder.start.setText(s[2]); -// recyclerViewHolder.to.setBackgroundResource(R.drawable.arrow_down); -// recyclerViewHolder.end.setText(e[2]); -// } -// -// for(int k=0;k my = new ArrayList<>(); -// for (int j = 0; j < Helper.data.size(); j++) { -// my.add(Helper.data.get(j)[2]); -// } -// Log.d("check size before",""+my.size()); -// for(int k=0;k(); - ArrayList dataTEMP=new ArrayList<>(); - while (cursor.moveToNext()) { - String[] temp = new String[5]; - temp[0] = (cursor.getString(0)); - String str=(cursor.getString(1)); - if(str.contains("geodhola")){ - str=str.replace("geodhola","'"); - } - temp[1] = str; - temp[2] = (cursor.getString(2)); - temp[3] = (cursor.getString(3)); - temp[4] = String.valueOf((cursor.getInt(4))); - dataTEMP.add(temp); - Helper.data.add(temp); - } - if(dataTEMP.size()>0){ - - } -// for(int i=0;i(); - - while (cursor.moveToNext()) { - String[] temp = new String[4]; - temp[0] = (cursor.getString(0)); - temp[1] = (cursor.getString(1)); - temp[2] = (cursor.getString(2)); - temp[3] = (cursor.getString(3)); - - Helper.dataformonthyear.add(temp); - } - - } - - public void delete_mainItem(String s) { - this.getWritableDatabase().delete("RECORD", "MONTHYEAR='" + s + "'", null); - } - - public void delete_subItem(String s) { - this.getWritableDatabase().delete("RECORD", "ID='" + s + "'", null); - } - - public void updateHabitsIdsForDeletion(String subItemTitle, String monthyear, String - updatedid) { - this.getWritableDatabase().execSQL("UPDATE RECORD SET ID='" + updatedid + "' " + - "WHERE TITLE='" + subItemTitle + "' AND MONTHYEAR='" + monthyear + "'"); - } - - -} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/DatePicker.java b/app/src/main/java/rocks/poopjournal/vacationdays/DatePicker.java deleted file mode 100644 index 98cc56a..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/DatePicker.java +++ /dev/null @@ -1,91 +0,0 @@ -package rocks.poopjournal.vacationdays; - - -import android.content.Intent; -import android.icu.text.SimpleDateFormat; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; -import android.view.View; - -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.util.Pair; - -import com.google.android.material.datepicker.MaterialDatePicker; -import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener; - -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -public class DatePicker extends AppCompatActivity { - DB_Controller db; - @RequiresApi(api = Build.VERSION_CODES.N) - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_datepicker); - db = new DB_Controller(this, "", null, 2); - db.show_data(); - MaterialDatePicker.Builder> builder = MaterialDatePicker.Builder.dateRangePicker(); - builder.setTitleText(Helper.holidayTitle); - builder.setTheme(R.style.CustomMaterialCalendarFullscreenTheme); - -// (R.style.ThemeOverlay_MaterialComponents_MaterialCalendar_Fullscreen - final MaterialDatePicker materialDatePicker = builder.build(); - materialDatePicker.show(getSupportFragmentManager(), "Date Picker"); - - materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() { - @RequiresApi(api = Build.VERSION_CODES.N) - @Override - public void onPositiveButtonClick(Object selection) { - Pair selectedDates = (Pair) materialDatePicker.getSelection(); -// then obtain the startDate & endDate from the range - final Pair rangeDate = new Pair<>(new Date((Long) selectedDates.first), new Date((Long) selectedDates.second)); -// assigned variables - Date startDate = rangeDate.first; - Date endDate = rangeDate.second; - List date = new ArrayList<>(); - DateTimeFormatter df = null; - SimpleDateFormat simpleFormat = new SimpleDateFormat("dd-MMM-yyyy"); - //Long datediff=null; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - df = DateTimeFormatter.ofPattern("dd-MMM-yyyy"); - LocalDate d1 = LocalDate.parse(simpleFormat.format(startDate), df); - LocalDate d2 = LocalDate.parse(simpleFormat.format(endDate), df); - - // datediff = ChronoUnit.DAYS.between(d1, d2); - while (!d1.isAfter(d2)) { - date.add(d1); - d1 = d1.plusDays(1); - } - } - //adding dates to db - String allDates=""; - Log.d("pleasedatebta",""+date.size()); - for(int i=0;i dates=new ArrayList(); - db = new DB_Controller(getActivity(), "", null, 2); - final Calendar nextYear = Calendar.getInstance(); - nextYear.add(Calendar.YEAR, 10); - - final Calendar lastYear = Calendar.getInstance(); - lastYear.add(Calendar.YEAR, -10); - - int cyear = lastYear.get(Calendar.YEAR); - - - - - - ArrayList years= new ArrayList<>(); - for(int i =10;i>0;i--){ - Calendar prevYear = Calendar.getInstance(); - prevYear.add(Calendar.YEAR, -i); - int iyear = prevYear.get(Calendar.YEAR); - years.add("" + iyear); - } - - for(int i =0;i<11;i++){ - Calendar prevYear = Calendar.getInstance(); - prevYear.add(Calendar.YEAR, i); - int iyear = prevYear.get(Calendar.YEAR); - years.add( "" + iyear); - } - - Toast.makeText(getActivity(), "current year "+ cyear, Toast.LENGTH_SHORT).show(); - - - Spinner spinner = v.findViewById(R.id.yearspinner); - - ArrayAdapter arrayAdapter = new ArrayAdapter(getContext(), R.layout.spinner_layout, years); - arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - spinner.setAdapter(arrayAdapter); - Calendar prevYear = Calendar.getInstance(); - int iyear = prevYear.get(Calendar.YEAR); - String obj = "" + iyear; - spinner.setSelection(years.indexOf(obj)); - - - - - - calendar = v.findViewById(R.id.calendar_view); - db.show_data(); - - //calendar.deactivateDates(list); - ArrayList arrayList = new ArrayList<>(); - ArrayList tareekhen = new ArrayList<>(); - for (int i = 0; i < Helper.data.size(); i++) { - tareekhen.add(Helper.data.get(i)[3]); - } - for (int i = 0; i < tareekhen.size(); i++) { - String getdates = tareekhen.get(i); - String[] splitdates = getdates.split(","); - for (int j = 0; j < splitdates.length; j++) { - String[] arrangedates=splitdates[j].split("-"); - for(int k=0;k parent, View view, int position, long id) { - String tutorialsName = parent.getItemAtPosition(position).toString(); - Toast.makeText(parent.getContext(), "Selected: " + tutorialsName, Toast.LENGTH_LONG).show(); - - if(!tutorialsName.equals("" + iyear)){ - String dtStart = tutorialsName+"-01-01"; - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - try { - Date date = format.parse(dtStart); - System.out.println(date); - calendar.scrollToDate(date); - - } catch (ParseException e) { - e.printStackTrace(); - } - - - } - - } - @Override - public void onNothingSelected(AdapterView parent) { - } - }); - - - - - return v; - } -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/FragmentTimeline.java b/app/src/main/java/rocks/poopjournal/vacationdays/FragmentTimeline.java deleted file mode 100644 index a5597e2..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/FragmentTimeline.java +++ /dev/null @@ -1,154 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -public class FragmentTimeline extends Fragment { - RecyclerView rv; - DB_Controller db; - TextView monyear; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - // Inflate the layout for this fragment - View v = inflater.inflate(R.layout.fragment_timeline, container, false); - rv = v.findViewById(R.id.rv); - db = new DB_Controller(getActivity(), "", null, 2); - db.show_data(); - rv.setLayoutManager(new LinearLayoutManager(getActivity())); - LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); - ItemAdapter itemAdapter = new ItemAdapter(buildItemList(),db,getContext()); -// new ItemTouchHelper(itemtouchhelper).attachToRecyclerView(rv); - rv.setAdapter(itemAdapter); - rv.setLayoutManager(layoutManager); - return v; - } - - private List buildItemList() { - db.show_data(); - ArrayList monthyear = new ArrayList<>(); - //getting titles - for (int i = 0; i < Helper.data.size(); i++) { - monthyear.add(Helper.data.get(i)[2]); - } - - List newList = new ArrayList<>(); - for (String name : monthyear) { - if (!newList.contains(name)) { - newList.add(name); - } - } - /////////////////////decsending order//////////////////////// - Collections.sort(newList, new Comparator() { - public int compare(String date1, String date2) { - String month1 = date1.substring(5); - String year1 = date1.substring(0,4); - - String month2 = date2.substring(5); - String year2 = date2.substring(0,4); - - // Condition to check the year - if (year2.compareTo(year1) > 0) - return -1; - else if (year2.compareTo(year1) < 0) - return 1; - - // Condition to check the month - if (month2.compareTo(month1) > 0) - return -1; - else - return 1; - } - }); - ///////////////// - List itemList = new ArrayList<>(); - for (int i=0; i buildSubItemList(String s) { - db.showMonthYear(s); - ArrayList tareekhen = new ArrayList<>(); - for (int j = 0; j < Helper.dataformonthyear.size(); j++) { - tareekhen.add(Helper.dataformonthyear.get(j)[3]); - } - List subItemList = new ArrayList<>(); - for (int i = 0; i < Helper.dataformonthyear.size(); i++) { - String monthyear=Helper.data.get(i)[2]; - String[] strt = Helper.dataformonthyear.get(i)[3].split(","); - String start_date = strt[0]; - String end_date = strt[strt.length - 1]; - String[] st = start_date.split("-"); - String[] ed = end_date.split("-"); - SubItem subItem = new SubItem("" + Helper.dataformonthyear.get(i)[1], st[2], ed[2],Helper.dataformonthyear.get(i)[2]); - subItemList.add(subItem); - } - return subItemList; - } - private String getMonthName(String s) { - String date=""; - Log.d("getmon",""+s); - String[] splt=s.split("-"); - switch (splt[1]){ - case "01": - date="Jan "+splt[0]; - break; - case "02": - date="Feb "+splt[0]; - break; - case "03": - date="Mar "+splt[0]; - break; - case "04": - date="Apr "+splt[0]; - break; - case "05": - date="May "+splt[0]; - break; - case "06": - date="Jun "+splt[0]; - break; - case "07": - date="July "+splt[0]; - break; - case "08": - date="Aug "+splt[0]; - break; - case "09": - date="Sept "+splt[0]; - break; - case "10": - date="Oct "+splt[0]; - break; - case "11": - date="Nov "+splt[0]; - break; - case "12": - date="Dec "+splt[0]; - break; - - - } - return date; - } - -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/Helper.java b/app/src/main/java/rocks/poopjournal/vacationdays/Helper.java deleted file mode 100644 index f566e28..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/Helper.java +++ /dev/null @@ -1,21 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import java.util.ArrayList; - -public class Helper { - public static int whichTabSelected=0; - - public static ArrayList data=new ArrayList<>(); - - public static ArrayList dataformonthyear=new ArrayList<>(); - - public static String holidayTitle=""; - - public static String monthyear=""; - - public static String senddate=""; - - public static String isnightmodeon=""; - - public static int totalHolidays=30; -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/Item.java b/app/src/main/java/rocks/poopjournal/vacationdays/Item.java deleted file mode 100644 index f04d4fb..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/Item.java +++ /dev/null @@ -1,29 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import java.util.List; - -public class Item { - private String itemTitle; - private List subItemList; - - public Item(String itemTitle, List subItemList) { - this.itemTitle = itemTitle; - this.subItemList = subItemList; - } - - public String getItemTitle() { - return itemTitle; - } - - public void setItemTitle(String itemTitle) { - this.itemTitle = itemTitle; - } - - public List getSubItemList() { - return subItemList; - } - - public void setSubItemList(List subItemList) { - this.subItemList = subItemList; - } -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/ItemAdapter.java b/app/src/main/java/rocks/poopjournal/vacationdays/ItemAdapter.java deleted file mode 100644 index 4ba9a45..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/ItemAdapter.java +++ /dev/null @@ -1,160 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.app.Activity; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.graphics.Color; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.cardview.widget.CardView; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.List; - -public class ItemAdapter extends RecyclerView.Adapter { - - private RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool(); - private List itemList; - rocks.poopjournal.vacationdays.DB_Controller db; - Context con; - - ItemAdapter(List itemList, rocks.poopjournal.vacationdays.DB_Controller db, Context con) { - this.itemList = itemList; - this.db = db; - this.con = con; - } - - @NonNull - @Override - public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_item, viewGroup, false); - return new ItemViewHolder(view); - } - - - @Override - public void onBindViewHolder(@NonNull ItemViewHolder itemViewHolder, int i) { - rocks.poopjournal.vacationdays.Item item = itemList.get(i); - itemViewHolder.tvItemTitle.setText(item.getItemTitle()); - itemViewHolder.tvItemTitle.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - itemViewHolder.tvItemTitle.setTextColor(Color.BLACK); - AlertDialog.Builder builder1 = new AlertDialog.Builder(con); - builder1.setMessage("Delete the whole thread?"); - builder1.setCancelable(false); - builder1.setPositiveButton( - "Yes", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - String s = itemViewHolder.tvItemTitle.getText().toString(); - String date = ""; - Log.d("getmoninnum", "" + s); - String[] splt = s.split(" "); - switch (splt[0]) { - case "Jan": - date = splt[1] + "-01"; - break; - case "Feb": - date = splt[1] + "-02"; - break; - case "Mar": - date = splt[1] + "-03"; - break; - case "Apr": - date = splt[1] + "-04"; - break; - case "May": - date = splt[1] + "-05"; - break; - case "Jun": - date = splt[1] + "-06"; - break; - case "July": - date = splt[1] + "-07"; - break; - case "Aug": - date = splt[1] + "-08"; - break; - case "Sept": - date = splt[1] + "-09"; - break; - case "Oct": - date = splt[1] + "-10"; - break; - case "Nov": - date = splt[1] + "-11"; - break; - case "Dec": - date = splt[1] + "-12"; - break; - } - db.delete_mainItem(date); - rocks.poopjournal.vacationdays.Helper.senddate=date; - Log.d("deleted", "deleted : " + date); - Intent intent = new Intent(con, MainActivity.class); - con.startActivity(intent); - ((Activity) con).overridePendingTransition(0, 0); - dialog.cancel(); - } - }); - - builder1.setNegativeButton( - "No", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - itemViewHolder.tvItemTitle.setTextColor(con.getResources().getColor(R.color.apptheme)); - dialog.cancel(); - } - }); - - AlertDialog alert11 = builder1.create(); - alert11.show(); - - return true; - } - }); - itemViewHolder.img.setVisibility(View.INVISIBLE); - // Create layout manager with initial prefetch item count - LinearLayoutManager layoutManager = new LinearLayoutManager( - itemViewHolder.rvSubItem.getContext(), - LinearLayoutManager.VERTICAL, - false - ); - layoutManager.setInitialPrefetchItemCount(item.getSubItemList().size()); - // Create sub item view adapter - SubItemAdapter subItemAdapter = new SubItemAdapter(item.getSubItemList(),db,con); - itemViewHolder.rvSubItem.setLayoutManager(layoutManager); - itemViewHolder.rvSubItem.setAdapter(subItemAdapter); - itemViewHolder.rvSubItem.setRecycledViewPool(viewPool); - - } - @Override - public int getItemCount() { - return itemList.size(); - } - - class ItemViewHolder extends RecyclerView.ViewHolder { - private TextView tvItemTitle; - private RecyclerView rvSubItem; - private ImageView img; - private CardView cardView; - - ItemViewHolder(View itemView) { - super(itemView); - tvItemTitle = itemView.findViewById(R.id.tv_item_title); - rvSubItem = itemView.findViewById(R.id.rv_sub_item); - img=itemView.findViewById(R.id.img); - cardView=itemView.findViewById(R.id.card); - } - } -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/MainActivity.java b/app/src/main/java/rocks/poopjournal/vacationdays/MainActivity.java deleted file mode 100644 index ec4b024..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/MainActivity.java +++ /dev/null @@ -1,159 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import androidx.annotation.NonNull; -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.widget.Toolbar; -import androidx.fragment.app.FragmentTransaction; - -import android.app.Dialog; -import android.content.Intent; -import android.graphics.Color; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.TextView; - -import com.ornach.nobobutton.NoboButton; - -public class MainActivity extends AppCompatActivity { - NoboButton timeline, calendar; - Toolbar toolbar; - DB_Controller db; - int count=0; - int remaining=0; - TextView holidayscount; - - @RequiresApi(api = Build.VERSION_CODES.N) - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - holidayscount=findViewById(R.id.holidayscount); - db = new DB_Controller(this, "", null, 2); - db.show_data(); - db.getnoofholidays(); - for(int i=0;i { - Helper.whichTabSelected=0; - timeline.setBackgroundColor(getResources().getColor(R.color.tabs)); - timeline.setTextColor(getResources().getColor(R.color.textcolorblack)); - calendar.setBackgroundColor(Color.TRANSPARENT); - calendar.setTextColor(getResources().getColor(R.color.textcolorwhite)); - FragmentTransaction ft = getSupportFragmentManager().beginTransaction().setCustomAnimations( - R.anim.fade_in,R.anim.fade_out - ); - ft.replace(R.id.container, new FragmentTimeline()); - ft.commit(); - }); - calendar.setOnClickListener(view -> { - Helper.whichTabSelected=1; - calendar.setBackgroundColor(getResources().getColor(R.color.tabs)); - calendar.setTextColor(getResources().getColor(R.color.textcolorblack)); - timeline.setBackgroundColor(Color.TRANSPARENT); - timeline.setTextColor(getResources().getColor(R.color.textcolorwhite)); - FragmentTransaction ft = getSupportFragmentManager().beginTransaction().setCustomAnimations(0,0); - ft.replace(R.id.container, new FragmentCalendar()); - ft.commit(); - }); - } - public void floatingbuttonclicked(View view) { - final Dialog d = new Dialog(this); - - d.requestWindowFeature(Window.FEATURE_NO_TITLE); - d.setContentView(R.layout.addholiday); - Button btnsave=d.findViewById(R.id.saveHolidayTitle); - EditText editText=d.findViewById(R.id.holidayTitle); - WindowManager.LayoutParams lp = d.getWindow().getAttributes(); - lp.dimAmount=0.9f; - d.getWindow().setAttributes(lp); - d.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); - btnsave.setOnClickListener(view1 -> { - if(editText.getText().toString().equals("")){ - editText.setError("Can't be empty"); - } - else{ - Helper.holidayTitle=""+editText.getText().toString(); - d.dismiss(); - Intent i = new Intent(MainActivity.this, DatePicker.class); - finishAffinity(); - startActivity(i); - overridePendingTransition(R.anim.fade_in, R.anim.fade_out); - - } - });d.show(); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.side_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.settings: - Intent i = new Intent(MainActivity.this, SettingsActivity.class); - startActivity(i); - return true; - case R.id.about: - Intent in = new Intent(MainActivity.this, About.class); - startActivity(in); - return true; - } - return super.onOptionsItemSelected(item); - } -} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/MainActivity2.kt b/app/src/main/java/rocks/poopjournal/vacationdays/MainActivity2.kt new file mode 100644 index 0000000..6f2b270 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/MainActivity2.kt @@ -0,0 +1,38 @@ +package rocks.poopjournal.vacationdays + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Scaffold +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import dagger.hilt.android.AndroidEntryPoint +import rocks.poopjournal.vacationdays.presentation.screen.home.HomeScreen +import rocks.poopjournal.vacationdays.presentation.ui.theme.MyVacationDays2Theme + +@AndroidEntryPoint +class MainActivity2 : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + setContent { + MyVacationDays2Theme(dynamicColor = false) { + Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> + HomeScreen() + } + } + } + } +} + + +@Preview(showBackground = true) +@Composable +fun GreetingPreview() { + MyVacationDays2Theme { + HomeScreen() + } +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/SettingsActivity.java b/app/src/main/java/rocks/poopjournal/vacationdays/SettingsActivity.java deleted file mode 100644 index 43a3953..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/SettingsActivity.java +++ /dev/null @@ -1,501 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.app.Dialog; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.os.Environment; -import android.provider.Settings; -import android.util.Log; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.widget.Button; -import android.widget.EditText; -import android.widget.RadioButton; -import android.widget.TextView; -import android.widget.Toast; - -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; - -import com.opencsv.CSVReader; -import com.opencsv.exceptions.CsvValidationException; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.util.ArrayList; -import java.util.List; - -import static android.Manifest.permission.READ_EXTERNAL_STORAGE; -import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; - -public class SettingsActivity extends AppCompatActivity { - rocks.poopjournal.vacationdays.DB_Controller db; - TextView modetitle, noofvacations; - //*******STORAGE PERMISSION********** - private static final int STORAGE_REQUEST_CODE_EXPORT = 1; - private static final int STORAGE_REQUEST_CODE_IMPORT = 2; - private String[] storagepermission; - private final ActivityResultLauncher importCSV = registerForActivityResult(new ActivityResultContracts.GetContent(), result -> { - if (result != null) { - try (CSVReader csvReader = new CSVReader(new InputStreamReader(getContentResolver().openInputStream(result)))) { - // List restoreData = new ArrayList<>(); - - int k = Helper.data.size(); - int counter; - if (k == 0) { - counter = 1; - } else { - counter = Helper.data.size(); - } - for (int i = 0; i < counter; i++) { - Log.d("bakwaasinloop", "i am in" + counter); - String[] nextline; - while ((nextline = csvReader.readNext()) != null) { - String id = nextline[0]; - String title = nextline[1]; - String monthyear = nextline[2]; - String dates = nextline[3]; - String newdates = dates.replaceAll("geodholaz", ","); - int noOfHolidays = Integer.parseInt(nextline[4]); - db.insert_data(id, title, monthyear, newdates, noOfHolidays); - db.show_data(); - - Helper.holidayTitle = ""; - k++; - } - } - Helper.whichTabSelected = 0; - Toast.makeText(this, Helper.whichTabSelected + "Restored...." + Helper.data.size(), Toast.LENGTH_SHORT).show(); - Intent in = new Intent(SettingsActivity.this, MainActivity.class); - startActivity(in); - finish(); - } catch (IOException | CsvValidationException e) { - e.printStackTrace(); - } - } - }); - private final ActivityResultLauncher exportCSV = registerForActivityResult(new ActivityResultContracts.CreateDocument("text/plain"), result -> { - if (result != null) { - try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(getContentResolver().openOutputStream(result)))) { - for (int i = 0; i < Helper.data.size(); i++) { - bw.append(Helper.data.get(i)[0]); - bw.append(","); - bw.append(Helper.data.get(i)[1]); - bw.append(","); - bw.append(Helper.data.get(i)[2]); - bw.append(","); - String newdate = Helper.data.get(i)[3]; - String new1 = newdate.replaceAll(",", "geodholaz"); - Log.d("formatingdate", "" + new1); - bw.append(new1); - bw.append(","); - String noOfHolidays = Helper.data.get(i)[4]; - bw.append(noOfHolidays); - bw.append(","); - bw.append("\n"); - //Toast.makeText(this, "Backup Exported "+FileandPathname, Toast.LENGTH_LONG ).show(); - } - Toast.makeText(this, "Backup Exported", Toast.LENGTH_LONG ).show(); - /*final Dialog d = new Dialog(this); - d.requestWindowFeature(Window.FEATURE_NO_TITLE); - d.setContentView(R.layout.backup_dialogbox); - Button btnok = d.findViewById(R.id.btnok); - TextView path = d.findViewById(R.id.path); - path.setText("Backup Exported"); - WindowManager.LayoutParams lp = d.getWindow().getAttributes(); - lp.dimAmount = 0.9f; - d.getWindow().setAttributes(lp); - d.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); - btnok.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - d.dismiss(); - } - }); - d.show();*/ - } catch (IOException e) { - - } - } - }); - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_settings); - db = new DB_Controller(getApplicationContext(), "", null, 2); - storagepermission = new String[]{WRITE_EXTERNAL_STORAGE}; - modetitle = findViewById(R.id.modetitle); - noofvacations = findViewById(R.id.noOfvacations); - noofvacations.setText("" + Helper.totalHolidays); - switch (rocks.poopjournal.vacationdays.Helper.isnightmodeon) { - case "followsys": - modetitle.setText("Follow System"); - break; - case "light": - modetitle.setText("Light"); - break; - case "dark": - modetitle.setText("Dark"); - break; - default: - modetitle.setText("Follow System"); - - } - - } - -// private boolean checkStoragePermission() { -// if(Build.VERSION.SDK_INT==Build.VERSION_CODES.R){ -// Log.d("IncheckStorIf","hello"+Environment.isExternalStorageManager()); -// return Environment.isExternalStorageManager(); -// -// } -// else{ -// -// int result = ContextCompat.checkSelfPermission(SettingsActivity.this, READ_EXTERNAL_STORAGE); -// int result1 = ContextCompat.checkSelfPermission(SettingsActivity.this, WRITE_EXTERNAL_STORAGE); -// Log.d("IncheckStorElse","hello"+result); -// -// return result == PackageManager.PERMISSION_GRANTED && result1 == PackageManager.PERMISSION_GRANTED; -// } -// } - -// private void requestStoragePermissionImport() { -// //request storage permission for import -// ActivityCompat.requestPermissions(this, storagepermission, STORAGE_REQUEST_CODE_IMPORT); -// } -// -// private void requestStoragePermissionExport() { -// //request storage permission for import -// ActivityCompat.requestPermissions(this, storagepermission, STORAGE_REQUEST_CODE_EXPORT); -// } -// private void importCSV(){ -// String FileandPathname= Environment.getExternalStorageDirectory()+"/SQliteBackup/"+"SQLite_Backup.csv"; -// File csvfile= new File(FileandPathname); -// if(csvfile.exists()){ -// try{ -// CSVReader csvReader=new CSVReader(new FileReader(csvfile.getAbsoluteFile())); -// ArrayList restoreData=new ArrayList<>(); -// -// int k=Helper.data.size(); -// int counter; -// if(k==0){ -// counter=1; -// } -// else{ -// counter=Helper.data.size(); -// } -// for(int i=0;i 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { -// //permission granted -// exportCSV(); -// } else { -// //permission denied -// takePermission(); -// Toast.makeText(this, "Storage permission required...", Toast.LENGTH_LONG).show(); -// } -// break; -// } -// case STORAGE_REQUEST_CODE_IMPORT: { -// if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { -// //permission granted -// importCSV(); -// } else { -// //permission denied -// Toast.makeText(this, "Storage permission required...", Toast.LENGTH_LONG).show(); -// } -// break; -// } -// -// } -// } -// -// private void takePermission() { -// if(Build.VERSION.SDK_INT==Build.VERSION_CODES.R){ -// Log.d("IntakePer","hello"); -// try{ -// Intent intent=new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); -// intent.addCategory("android.intent.category.DEFAULT"); -// intent.setData(Uri.parse(String.format("package:%s",getApplicationContext().getPackageName()))); -// startActivityForResult(intent,2000); -// } catch (Exception e) { -// Intent obj=new Intent(); -// obj.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); -// startActivityForResult(obj,2000); -// -//// e.printStackTrace(); -// } -// } -// else{ -// Log.d("IntakePerelse","hello"); -// -// ActivityCompat.requestPermissions(SettingsActivity.this,new String[]{ -// WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE},101); -// } -// } - -} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/SubItem.java b/app/src/main/java/rocks/poopjournal/vacationdays/SubItem.java deleted file mode 100644 index 63ddcdf..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/SubItem.java +++ /dev/null @@ -1,49 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.util.Log; - -public class SubItem { - private String subItemTitle; - private String start; - private String end; - private String monthyear; - - public SubItem(String subItemTitle, String start, String end, String monthyear) { - this.subItemTitle = subItemTitle; - this.start=start; - this.end=end; - this.monthyear=monthyear; - } - - - - public String getSubItemTitle() { - if(subItemTitle.contains("'")){ - subItemTitle=subItemTitle.replace("'","geodhola"); - } - return subItemTitle; - } - public String getStart() { - return start; - } - public String getEnd() { - return end; - } - public String getMonthyear() { - return monthyear; - } - - public void setSubItemTitle(String subItemTitle) { - this.subItemTitle = subItemTitle; - } - public void setStart(String from) { - this.start = start; - } - public void setEnd(String to) { - this.end= end; - } - public void setMonthyear(String monthyear) { - this.monthyear= monthyear; - } - -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/SubItemAdapter.java b/app/src/main/java/rocks/poopjournal/vacationdays/SubItemAdapter.java deleted file mode 100644 index 1dc6b93..0000000 --- a/app/src/main/java/rocks/poopjournal/vacationdays/SubItemAdapter.java +++ /dev/null @@ -1,108 +0,0 @@ -package rocks.poopjournal.vacationdays; - -import android.app.Activity; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.List; - -public class SubItemAdapter extends RecyclerView.Adapter { - - private List subItemList; - rocks.poopjournal.vacationdays.DB_Controller db; - Context con; - SubItemAdapter(List subItemList, rocks.poopjournal.vacationdays.DB_Controller db, Context con) { - this.subItemList = subItemList; - this.db=db; - this.con=con; - } - - - - @NonNull - @Override - public SubItemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_sub_item, viewGroup, false); - return new SubItemViewHolder(view); - } - - @Override - public void onBindViewHolder(@NonNull SubItemViewHolder subItemViewHolder, int i) { - rocks.poopjournal.vacationdays.SubItem subItem = subItemList.get(i); - String updatedid= i+subItem.getSubItemTitle()+subItem.getMonthyear(); - db.show_data(); - String str=subItem.getSubItemTitle(); - if(str.contains("geodhola")){ - str=str.replace("geodhola","'"); - } - subItemViewHolder.tvSubItemTitle.setText(""+str); - db.updateHabitsIdsForDeletion(subItem.getSubItemTitle(),subItem.getMonthyear(),updatedid); - db.show_data(); - if(subItem.getStart().equals(subItem.getEnd())){ - subItemViewHolder.dateRange.setText(subItem.getStart()); - } - else{ - subItemViewHolder.dateRange.setText(con.getString(R.string.date_range, subItem.getStart(), subItem.getEnd())); - } - - subItemViewHolder.img.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - AlertDialog.Builder builder1 = new AlertDialog.Builder(con); - builder1.setMessage("Do you want to delete?"); - builder1.setCancelable(false); - builder1.setPositiveButton( - "Yes", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - db.delete_subItem(updatedid); - Intent intent = new Intent(con, MainActivity.class); - con.startActivity(intent); - ((Activity) con).overridePendingTransition(0, 0); - dialog.cancel(); - } - }); - - builder1.setNegativeButton( - "No", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - - AlertDialog alert11 = builder1.create(); - alert11.show(); - } - }); - - } - - @Override - public int getItemCount() { - return subItemList.size(); - } - - static class SubItemViewHolder extends RecyclerView.ViewHolder { - TextView tvSubItemTitle, dateRange; - ImageView img; - - SubItemViewHolder(View itemView) { - super(itemView); - tvSubItemTitle = itemView.findViewById(R.id.tv_sub_item_title); - dateRange = itemView.findViewById(R.id.date_range); - img=itemView.findViewById(R.id.btndel); - } - } -} diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/VacationApplication.kt b/app/src/main/java/rocks/poopjournal/vacationdays/VacationApplication.kt new file mode 100644 index 0000000..1076fe9 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/VacationApplication.kt @@ -0,0 +1,7 @@ +package rocks.poopjournal.vacationdays + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class VacationApplication : Application() \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/data/VacationData.kt b/app/src/main/java/rocks/poopjournal/vacationdays/data/VacationData.kt new file mode 100644 index 0000000..b1e742c --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/data/VacationData.kt @@ -0,0 +1,15 @@ +package rocks.poopjournal.vacationdays.data + +import androidx.room.Entity +import androidx.room.PrimaryKey +import rocks.poopjournal.vacationdays.presentation.ui.utils.THETABLE_TABLENAME + +@Entity(tableName = THETABLE_TABLENAME) +data class VacationData( + @PrimaryKey(autoGenerate = true) + val id : Int = 0, + val name : String, + val startDate : Long, + val endDate : Long, + val category : String +) diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/di/AppModule.kt b/app/src/main/java/rocks/poopjournal/vacationdays/di/AppModule.kt new file mode 100644 index 0000000..b4f2f5a --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/di/AppModule.kt @@ -0,0 +1,39 @@ +package rocks.poopjournal.vacationdays.di + +import android.content.Context +import androidx.room.Room +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext +import dagger.hilt.components.SingletonComponent +import rocks.poopjournal.vacationdays.domain.service.DatabaseBackupManager +import rocks.poopjournal.vacationdays.domain.service.VacationDao +import rocks.poopjournal.vacationdays.domain.service.VacationDatabase +import rocks.poopjournal.vacationdays.presentation.ui.utils.THEDATABASE_DATABASE_NAME +import javax.inject.Singleton + +@InstallIn(SingletonComponent::class) +@Module +object AppModule { + @Singleton + @Provides + fun provideVacationDao(vacationDatabase: VacationDatabase): VacationDao = + vacationDatabase.vacationDao() + + @Singleton + @Provides + fun provideVacationDatabase(@ApplicationContext context: Context): VacationDatabase = + Room.databaseBuilder( + context, + VacationDatabase::class.java, + THEDATABASE_DATABASE_NAME + ).build() + + @Singleton + @Provides + fun provideDatabaseBackup( + @ApplicationContext context: Context, + vacationDatabase: VacationDatabase + ): DatabaseBackupManager = DatabaseBackupManager(context, vacationDatabase) +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/domain/repo/VacationRepository.kt b/app/src/main/java/rocks/poopjournal/vacationdays/domain/repo/VacationRepository.kt new file mode 100644 index 0000000..f7d6fdc --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/domain/repo/VacationRepository.kt @@ -0,0 +1,19 @@ +package rocks.poopjournal.vacationdays.domain.repo + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.conflate +import kotlinx.coroutines.flow.flowOn +import rocks.poopjournal.vacationdays.data.VacationData +import rocks.poopjournal.vacationdays.domain.service.VacationDao +import javax.inject.Inject + +class VacationRepository @Inject constructor( + private val vacationDao: VacationDao +) { + fun getAllData() : Flow> = vacationDao.getAllData().flowOn(Dispatchers.IO).conflate() + fun getData(id: Int) : Flow = vacationDao.getData(id).flowOn(Dispatchers.IO).conflate() + suspend fun insertData(data: VacationData) = vacationDao.insert(data) + suspend fun updateData(data: VacationData) = vacationDao.update(data) + suspend fun deletedata(data: VacationData) = vacationDao.delete(data) +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/DatabaseBackup.kt b/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/DatabaseBackup.kt new file mode 100644 index 0000000..b24464a --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/DatabaseBackup.kt @@ -0,0 +1,79 @@ +package rocks.poopjournal.vacationdays.domain.service + +import android.content.Context +import android.content.Intent +import android.widget.Toast +import rocks.poopjournal.vacationdays.presentation.ui.utils.SQLITE_SHMFILE_SUFFIX +import rocks.poopjournal.vacationdays.presentation.ui.utils.SQLITE_WALFILE_SUFFIX +import rocks.poopjournal.vacationdays.presentation.ui.utils.THEDATABASE_DATABASE_BACKUP_SUFFIX +import rocks.poopjournal.vacationdays.presentation.ui.utils.THEDATABASE_DATABASE_NAME +import java.io.File +import java.io.IOException +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class DatabaseBackupManager @Inject constructor( + private val context: Context, + private val vacationDatabase: VacationDatabase +) { + fun backupDatabase(message : String): Int { + var result = -99 + val dbFile = context.getDatabasePath(THEDATABASE_DATABASE_NAME) + val dbWalFile = File(dbFile.path + SQLITE_WALFILE_SUFFIX) + val dbShmFile = File(dbFile.path + SQLITE_SHMFILE_SUFFIX) + val bkpFile = File(dbFile.path + THEDATABASE_DATABASE_BACKUP_SUFFIX) + val bkpWalFile = File(bkpFile.path + SQLITE_WALFILE_SUFFIX) + val bkpShmFile = File(bkpFile.path + SQLITE_SHMFILE_SUFFIX) + if (bkpFile.exists()) bkpFile.delete() + if (bkpWalFile.exists()) bkpWalFile.delete() + if (bkpShmFile.exists()) bkpShmFile.delete() + checkpoint() + try { + dbFile.copyTo(bkpFile, true) + if (dbWalFile.exists()) dbWalFile.copyTo(bkpWalFile, true) + if (dbShmFile.exists()) dbShmFile.copyTo(bkpShmFile, true) + result = 0 + Toast.makeText(context, message, Toast.LENGTH_SHORT).show() + } catch (e: IOException) { + e.printStackTrace() + } + return result + } + + fun restoreDatabase(restart: Boolean = true) { + val backupFilePath = + context.getDatabasePath(THEDATABASE_DATABASE_NAME).path + THEDATABASE_DATABASE_BACKUP_SUFFIX + if (!File(backupFilePath).exists()) { + return + } + if (vacationDatabase == null) return + val dbPath = vacationDatabase.openHelper.readableDatabase.path + val dbFile = File(dbPath) + val dbWalFile = File(dbFile.path + SQLITE_WALFILE_SUFFIX) + val dbShmFile = File(dbFile.path + SQLITE_SHMFILE_SUFFIX) + val bkpFile = File(dbFile.path + THEDATABASE_DATABASE_BACKUP_SUFFIX) + val bkpWalFile = File(bkpFile.path + SQLITE_WALFILE_SUFFIX) + val bkpShmFile = File(bkpFile.path + SQLITE_SHMFILE_SUFFIX) + try { + bkpFile.copyTo(dbFile, true) + if (bkpWalFile.exists()) bkpWalFile.copyTo(dbWalFile, true) + if (bkpShmFile.exists()) bkpShmFile.copyTo(dbShmFile, true) + checkpoint() + } catch (e: IOException) { + e.printStackTrace() + } + if (restart) { + val intent = context.packageManager.getLaunchIntentForPackage(context.packageName) + intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + context.startActivity(intent) + System.exit(0) + } + } + + private fun checkpoint() { + val db = vacationDatabase.openHelper.writableDatabase + db.query("PRAGMA wal_checkpoint(FULL);", emptyArray()) + db.query("PRAGMA wal_checkpoint(TRUNCATE);", emptyArray()) + } +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDao.kt b/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDao.kt new file mode 100644 index 0000000..4735f88 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDao.kt @@ -0,0 +1,29 @@ +package rocks.poopjournal.vacationdays.domain.service + +import androidx.room.Dao +import androidx.room.Delete +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import androidx.room.Update +import kotlinx.coroutines.flow.Flow +import rocks.poopjournal.vacationdays.data.VacationData +import rocks.poopjournal.vacationdays.presentation.ui.utils.THETABLE_TABLENAME + +@Dao +interface VacationDao { + @Query("SELECT * from $THETABLE_TABLENAME") + fun getAllData(): Flow> + + @Query("SELECT * from $THETABLE_TABLENAME WHERE id = :id") + fun getData(id: Int): Flow + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insert(data: VacationData) + + @Update + suspend fun update(data: VacationData) + + @Delete + suspend fun delete(data: VacationData) +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDatabase.kt b/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDatabase.kt new file mode 100644 index 0000000..6c0bc58 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/domain/service/VacationDatabase.kt @@ -0,0 +1,10 @@ +package rocks.poopjournal.vacationdays.domain.service + +import androidx.room.Database +import androidx.room.RoomDatabase +import rocks.poopjournal.vacationdays.data.VacationData + +@Database(entities = [VacationData::class], version = 1, exportSchema = false) +abstract class VacationDatabase : RoomDatabase() { + abstract fun vacationDao() : VacationDao +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/component/CustomTab.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/component/CustomTab.kt new file mode 100644 index 0000000..3d6b8f0 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/component/CustomTab.kt @@ -0,0 +1,129 @@ +package rocks.poopjournal.vacationdays.presentation.component + +import androidx.compose.animation.animateColorAsState +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.tween +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.IntrinsicSize +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Color.Companion.Black +import androidx.compose.ui.graphics.Color.Companion.White +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +@Composable +private fun MyTabIndicator( + indicatorWidth: Dp, + indicatorOffset: Dp, + indicatorColor: Color, +) { + Box( + modifier = Modifier + .fillMaxHeight() + .width( + width = indicatorWidth, + ) + .offset( + x = indicatorOffset, + ) + .clip( + shape = RoundedCornerShape(10.dp), + ) + .background( + color = indicatorColor, + ), + ) +} +@Composable +private fun MyTabItem( + isSelected: Boolean, + onClick: () -> Unit, + tabWidth: Dp, + text: String, +) { + val tabTextColor: Color by animateColorAsState( + targetValue = if (isSelected) { + White + } else { + Black + }, + animationSpec = tween(easing = LinearEasing), + ) + Text( + modifier = Modifier + .clip( RoundedCornerShape(10.dp)) + .clickable { + onClick() + } + .width(tabWidth) + .padding( + vertical = 8.dp, + horizontal = 12.dp, + ), + text = text, + color = tabTextColor, + textAlign = TextAlign.Center, + ) +} + +@Composable +fun CustomTab( + selectedItemIndex: Int, + items: List, + modifier: Modifier = Modifier, + tabWidth: Dp = 150.dp, + onClick: (index: Int) -> Unit, +) { + val indicatorOffset: Dp by animateDpAsState( + targetValue = tabWidth * selectedItemIndex, + animationSpec = tween(easing = LinearEasing), label = "tab animation", + ) + + Box( + modifier = modifier + .clip( RoundedCornerShape(10.dp)) + .background(MaterialTheme.colorScheme.background) + .height(intrinsicSize = IntrinsicSize.Min), + ) { + MyTabIndicator( + indicatorWidth = tabWidth, + indicatorOffset = indicatorOffset, + indicatorColor = androidx.compose.material3.MaterialTheme.colorScheme.primary, + ) + Row( + horizontalArrangement = Arrangement.Center, + modifier = Modifier.clip( RoundedCornerShape(5.dp)), + ) { + items.mapIndexed { index, text -> + val isSelected = index == selectedItemIndex + MyTabItem( + isSelected = isSelected, + onClick = { + onClick(index) + }, + tabWidth = tabWidth, + text = text, + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeScreen.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeScreen.kt new file mode 100644 index 0000000..f4aa9e4 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeScreen.kt @@ -0,0 +1,125 @@ +package rocks.poopjournal.vacationdays.presentation.screen.home + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.MoreVert +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import rocks.poopjournal.vacationdays.R +import rocks.poopjournal.vacationdays.presentation.component.CustomTab + +@Composable +fun HomeScreen() { + + Column(modifier = Modifier.fillMaxSize()) { + TopBar() + } + +} + + +@Composable +private fun TopBar() { + Column( + modifier = Modifier + .fillMaxWidth() + .height(144.dp) + .background(MaterialTheme.colorScheme.primary) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(top = 20.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + ) { + // Column in the center + Column( + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.weight(1f) + ) { + Text( + text = stringResource(id = R.string.app_name), + color = MaterialTheme.colorScheme.onBackground, + style = MaterialTheme.typography.titleLarge + ) + + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center // Center Row contents + ) { + Icon( + painter = painterResource(id = R.drawable.umbrella), + contentDescription = "vacation", + ) + Spacer(modifier = Modifier.width(5.dp)) + Text(text = "16 (12 left)") + Spacer(modifier = Modifier.width(8.dp)) + Icon( + painter = painterResource(id = R.drawable.briefcase), + contentDescription = "total" + ) + Spacer(modifier = Modifier.width(5.dp)) + Text(text = "349") + Spacer(modifier = Modifier.width(8.dp)) + Icon( + painter = painterResource(id = R.drawable.tempreature), + contentDescription = "sick" + ) + Spacer(modifier = Modifier.width(5.dp)) + Text(text = "7") + } + } + + // IconButton on the right, vertically centered + IconButton( + onClick = { /*TODO*/ }, + modifier = Modifier.align(Alignment.CenterVertically) // Center icon vertically + ) { + Icon( + imageVector = Icons.Filled.MoreVert, + contentDescription = "Menu", + tint = MaterialTheme.colorScheme.onBackground + ) + } + } + Row( + modifier = Modifier + .fillMaxWidth() + .padding(15.dp), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + val (selected, setSelected) = remember { + mutableIntStateOf(0) + } + + CustomTab( + items = listOf("Timeline", "Calender"), + selectedItemIndex = selected, + onClick = setSelected, + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeViewModel.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeViewModel.kt new file mode 100644 index 0000000..3fb68f3 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/screen/home/HomeViewModel.kt @@ -0,0 +1,11 @@ +package rocks.poopjournal.vacationdays.presentation.screen.home + +import androidx.lifecycle.ViewModel +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class HomeViewModel @Inject constructor() : ViewModel() { + + +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Color.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Color.kt new file mode 100644 index 0000000..bfb258b --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Color.kt @@ -0,0 +1,14 @@ +package rocks.poopjournal.vacationdays.presentation.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) +val primary = Color(0xFFFF3B14) +val background = Color(0xFFFFFFFF) +val lightGray = Color(0xFFF3F5F6) \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Theme.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Theme.kt new file mode 100644 index 0000000..c09f69d --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Theme.kt @@ -0,0 +1,60 @@ +package rocks.poopjournal.vacationdays.presentation.ui.theme + +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext + +private val DarkColorScheme = darkColorScheme( + primary = primary, + secondary = lightGray, + background = Color.Black, + onBackground = Color.White, +) + +private val LightColorScheme = lightColorScheme( + primary = primary, + secondary = lightGray, + onBackground = Color.Black, + background = Color.White, + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun MyVacationDays2Theme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Type.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Type.kt new file mode 100644 index 0000000..d24abc2 --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/theme/Type.kt @@ -0,0 +1,59 @@ +package rocks.poopjournal.vacationdays.presentation.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp +import rocks.poopjournal.vacationdays.R + +val DMSansFamily = FontFamily( + Font(R.font.dm_sans_regular, FontWeight.Light), + Font(R.font.dm_sans_regular, FontWeight.Normal), + Font(R.font.dm_sans_italic, FontWeight.Normal, FontStyle.Italic), + Font(R.font.dm_sans_bold, FontWeight.Bold), +) +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = DMSansFamily, + fontWeight = FontWeight.W400, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ), + labelSmall = TextStyle( + fontFamily = DMSansFamily, + fontWeight = FontWeight.W700, + fontSize = 14.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + ), + titleLarge = TextStyle( + fontFamily = DMSansFamily, + fontWeight = FontWeight.Bold, + fontSize = 20.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + ), + + bodySmall = TextStyle( + fontFamily = DMSansFamily, + fontWeight = FontWeight.W700, + fontSize = 14.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp, + ) + + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + + */ +) \ No newline at end of file diff --git a/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/utils/Constants.kt b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/utils/Constants.kt new file mode 100644 index 0000000..58feeba --- /dev/null +++ b/app/src/main/java/rocks/poopjournal/vacationdays/presentation/ui/utils/Constants.kt @@ -0,0 +1,7 @@ +package rocks.poopjournal.vacationdays.presentation.ui.utils + +const val THETABLE_TABLENAME = "vacationTable" +const val THEDATABASE_DATABASE_NAME = "vacation_db" +const val THEDATABASE_DATABASE_BACKUP_SUFFIX = "-bkp" +const val SQLITE_WALFILE_SUFFIX = "-wal" +const val SQLITE_SHMFILE_SUFFIX = "-shm" \ No newline at end of file diff --git a/app/src/main/res/drawable/briefcase.xml b/app/src/main/res/drawable/briefcase.xml new file mode 100644 index 0000000..7ec026a --- /dev/null +++ b/app/src/main/res/drawable/briefcase.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/src/main/res/drawable/tempreature.xml b/app/src/main/res/drawable/tempreature.xml new file mode 100644 index 0000000..3b37063 --- /dev/null +++ b/app/src/main/res/drawable/tempreature.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/umbrella.xml b/app/src/main/res/drawable/umbrella.xml new file mode 100644 index 0000000..f4907fb --- /dev/null +++ b/app/src/main/res/drawable/umbrella.xml @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/app/src/main/res/font/dm_sans_bold.ttf b/app/src/main/res/font/dm_sans_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2bd1d6050f5d5cfd87765f2765e64a7bbe969452 GIT binary patch literal 56304 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 bqsSnbQK$n060QGVa-g+9l7!AnO2YpG(Yw~d literal 0 HcmV?d00001 diff --git a/app/src/main/res/font/dm_sans_italic.ttf b/app/src/main/res/font/dm_sans_italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..79073c8404dae1cacfd8ebd75da177ae12da78c9 GIT binary patch literal 61316 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 MM$&=iQ|iF~0iye(4FCWD literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml deleted file mode 100644 index 26a849a..0000000 --- a/app/src/main/res/layout/activity_about.xml +++ /dev/null @@ -1,728 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_datepicker.xml b/app/src/main/res/layout/activity_datepicker.xml deleted file mode 100644 index 657c9ba..0000000 --- a/app/src/main/res/layout/activity_datepicker.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index f4715dc..0000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml deleted file mode 100644 index 9c1d9e5..0000000 --- a/app/src/main/res/layout/activity_settings.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/addholiday.xml b/app/src/main/res/layout/addholiday.xml deleted file mode 100644 index 3aecd06..0000000 --- a/app/src/main/res/layout/addholiday.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - -