Compare commits

...

1470 Commits

Author SHA1 Message Date
Sylvia van Os
a74c4f822e Release Catima 2.33.0 2024-11-19 17:48:48 +01:00
Sylvia van Os
c228d274b5 Merge pull request #2181 from CatimaLoyalty/create-pull-request/patch-1731953537
Update locales
2024-11-18 18:35:52 +00:00
TheLastProject
d8e0e03aa5 Update locales 2024-11-18 18:12:17 +00:00
Sylvia van Os
171dd7af59 Merge pull request #2179 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-18 18:12:02 +00:00
Sylvia van Os
10bf27a246 Merge pull request #2180 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.14
Bump org.robolectric:robolectric from 4.13 to 4.14
2024-11-18 06:09:35 +00:00
dependabot[bot]
199c243eb0 Bump org.robolectric:robolectric from 4.13 to 4.14
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.13 to 4.14.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.13...robolectric-4.14)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 02:42:36 +00:00
josé m
11b0143b1c Translated using Weblate (Galician)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/gl/
2024-11-17 16:01:42 +01:00
josé m
f2e20eaea3 Added translation using Weblate (Galician) 2024-11-17 16:00:17 +01:00
josé m
c8725a4588 Translated using Weblate (Galician)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/gl/
2024-11-17 16:00:15 +01:00
josé m
f881965485 Added translation using Weblate (Galician) 2024-11-17 16:00:14 +01:00
ritchierope
3e16d0daf6 Translated using Weblate (Hungarian)
Currently translated at 97.8% (322 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-11-17 16:00:12 +01:00
Sylvia van Os
7068f57443 Merge pull request #2178 from CatimaLoyalty/create-pull-request/patch-1731817092
Update contributors
2024-11-17 11:42:06 +00:00
TheLastProject
8b611511f5 Update contributors 2024-11-17 04:18:12 +00:00
Sylvia van Os
1c9f0ee724 Merge pull request #2175 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-16 12:30:41 +00:00
Giovanni Donisi
2d816b39f6 Translated using Weblate (Italian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-11-15 22:01:04 +01:00
Sylvia van Os
c0b13bf040 Merge pull request #2174 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-14 17:31:23 +00:00
B o d o
e40d98f386 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-14 18:01:34 +01:00
Sylvia van Os
8af295a72b Translated using Weblate (Dutch)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-11-14 18:01:33 +01:00
Sylvia van Os
ac4dde1f8b Merge pull request #2173 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-13 16:48:00 +00:00
大王叫我来巡山
2dc87fd37c Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-13 16:18:15 +01:00
Максим Горпиніч
aebceec1f6 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-13 16:18:15 +01:00
solokot
95b59a9cc3 Translated using Weblate (Russian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-13 16:18:15 +01:00
B o d o
4ff72b66a8 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-13 16:18:15 +01:00
Sylvia van Os
d1162d0272 Merge pull request #2172 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-12 17:37:25 +00:00
Sylvia van Os
794ac2bab2 Merge pull request #2171 from CatimaLoyalty/create-pull-request/patch-1731392619
Update Gradle to 8.11
2024-11-12 17:36:13 +00:00
Lassi Määttä
7b76fe86b2 Translated using Weblate (Finnish)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-11-12 14:00:36 +01:00
TheLastProject
4387c7ed1e Update Gradle to 8.11 2024-11-12 06:23:38 +00:00
Sylvia van Os
f819fc7db9 Merge pull request #2170 from CatimaLoyalty/create-pull-request/patch-1731347745
Update Fastlane changelogs
2024-11-11 17:57:33 +00:00
TheLastProject
fb5a882fdb Update Fastlane changelogs 2024-11-11 17:55:44 +00:00
Sylvia van Os
be8c0a6787 Update CHANGELOG 2024-11-11 18:55:31 +01:00
Sylvia van Os
5dc84fbd77 Merge pull request #2169 from CatimaLoyalty/fix/note_line_limit
Limit max line count to 5 on main view
2024-11-11 17:54:33 +00:00
Sylvia van Os
0c37827fb0 Limit max line count to 5 on main view
This prevents cards with very long notes to take up the entire screen or
more. This effect is worse with more columns.
2024-11-11 18:43:30 +01:00
Sylvia van Os
cee5d39b27 Merge pull request #2168 from CatimaLoyalty/fix/shorter_date_on_main_screen
Use MEDIUM instead of FULL date format on main screen
2024-11-11 17:21:07 +00:00
Sylvia van Os
9c5603eae6 Use MEDIUM instead of FULL date format on main screen
This improves the display of high column counts
2024-11-11 17:50:14 +01:00
Sylvia van Os
dd42c99ca7 Merge pull request #2167 from CatimaLoyalty/create-pull-request/patch-1731212204
Update contributors
2024-11-10 10:42:11 +00:00
TheLastProject
403c60ec6c Update contributors 2024-11-10 04:16:44 +00:00
Sylvia van Os
7c7e6d3b45 Merge pull request #2166 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-09 21:20:07 +00:00
大王叫我来巡山
316e51efb2 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-09 20:01:50 +01:00
Максим Горпиніч
9e838e266b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-09 20:01:49 +01:00
solokot
a56b984c53 Translated using Weblate (Russian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-09 20:01:48 +01:00
B o d o
4040b270a8 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-09 20:01:47 +01:00
Sylvia van Os
eab8614bcc Merge pull request #2165 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-08 18:36:27 +00:00
kowih83264
ef8befe0cd Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-11-08 19:00:56 +01:00
gallegonovato
860b79fc9b Translated using Weblate (Spanish)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-11-08 19:00:55 +01:00
Sylvia van Os
93341fc4ec Merge pull request #2164 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.3
Bump com.android.tools:desugar_jdk_libs from 2.1.2 to 2.1.3
2024-11-08 16:59:02 +00:00
dependabot[bot]
51f123bc41 Bump com.android.tools:desugar_jdk_libs from 2.1.2 to 2.1.3
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.2 to 2.1.3.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-08 02:24:08 +00:00
Sylvia van Os
f0512fbeca Merge pull request #2162 from CatimaLoyalty/create-pull-request/patch-1730917344
Update Fastlane changelogs
2024-11-06 18:22:51 +00:00
TheLastProject
71f6fcd2e6 Update Fastlane changelogs 2024-11-06 18:22:24 +00:00
Sylvia van Os
d1a244efa0 Update CHANGELOG 2024-11-06 19:22:10 +01:00
Sylvia van Os
075478db17 Merge pull request #2092 from vp193dt/main
#1962: Refactoring of Search Behavior: Restoring of Previous Search Query After Coming Back from Card Interaction or Screen Rotation on Search
2024-11-06 18:21:08 +00:00
vp193dt
6f4582eec9 Refactoring of Search Behavior: Restoring of Previous Search Query After Coming Back from Card Interaction or Screen Rotation on Search 2024-11-06 19:12:01 +01:00
Sylvia van Os
91f5f9a8b4 Merge pull request #2161 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-06 17:03:05 +00:00
Marnick L'Eau
f04adc0901 Translated using Weblate (Dutch)
Currently translated at 51.7% (72 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-11-06 13:01:02 +01:00
Augustin LAVILLE
f184ee7e58 Translated using Weblate (French)
Currently translated at 99.2% (138 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-11-06 13:01:01 +01:00
min7-i
9abeec578e Translated using Weblate (German)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-11-06 13:01:00 +01:00
Sylvia van Os
8deab5f94f Merge pull request #2160 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-05 18:53:00 +00:00
Priit Jõerüüt
50fca74267 Translated using Weblate (Estonian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-11-05 12:36:58 +01:00
Davi Souza
9e7bf97cc9 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-11-05 12:36:58 +01:00
Hasan Cesur
96be72b4c6 Translated using Weblate (Turkish)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-11-05 12:36:58 +01:00
Kristoffer Grundström
5c31ac6d00 Translated using Weblate (Swedish)
Currently translated at 5.0% (7 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2024-11-05 12:36:57 +01:00
Kristoffer Grundström
1675d591dd Translated using Weblate (Swedish)
Currently translated at 95.4% (314 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-11-05 12:36:57 +01:00
109247019824
361495dfed Translated using Weblate (Bulgarian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-11-05 12:36:57 +01:00
大王叫我来巡山
2b81e861f6 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-05 12:36:57 +01:00
大王叫我来巡山
657a761c3a Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-11-05 12:36:55 +01:00
Максим Горпиніч
6d401c4234 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-11-05 12:36:55 +01:00
solokot
8a33d2e5ed Translated using Weblate (Russian)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-11-05 12:36:53 +01:00
B o d o
66e994be60 Translated using Weblate (German)
Currently translated at 100.0% (139 of 139 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-11-05 12:36:52 +01:00
Максим Горпиніч
4e50ca9340 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-11-05 12:36:50 +01:00
solokot
af064d1cda Translated using Weblate (Russian)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-11-05 12:36:50 +01:00
Marnick L'Eau
585c444f2d Translated using Weblate (Dutch)
Currently translated at 97.8% (322 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-11-05 12:36:49 +01:00
Augustin LAVILLE
85683a0b3f Translated using Weblate (French)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-11-05 12:36:49 +01:00
Vasilis K
4c7aa2b26b Translated using Weblate (Greek)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-11-05 12:36:49 +01:00
B o d o
af236e1099 Translated using Weblate (German)
Currently translated at 100.0% (329 of 329 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-11-05 12:36:49 +01:00
Sylvia van Os
79f6014e26 Merge pull request #2157 from CatimaLoyalty/create-pull-request/patch-1730607506
Update contributors
2024-11-03 08:28:03 +00:00
TheLastProject
0fa3de40ba Update contributors 2024-11-03 04:18:25 +00:00
Sylvia van Os
d77f938107 Merge pull request #2155 from CatimaLoyalty/create-pull-request/patch-1730584271
Update Fastlane changelogs
2024-11-02 21:54:41 +00:00
TheLastProject
e44aaa6618 Update Fastlane changelogs 2024-11-02 21:51:10 +00:00
Sylvia van Os
96d88bb08c Update CHANGELOG 2024-11-02 22:50:53 +01:00
Sylvia van Os
b502f89da6 Merge pull request #2147 from leaumar/feat/1952-columns
resolve #1952 custom column count
2024-11-02 21:47:48 +00:00
Sylvia van Os
d7b8cd7e03 More consistant naming and column edge case bugfix for shortcut picker 2024-11-02 13:45:25 +01:00
Sylvia van Os
61681bdc2b Set default card columns to 4 on big screens 2024-11-01 22:36:12 +01:00
Sylvia van Os
dc65030a63 Padding fixes to ensure the cards scale well without changing text size in LoyaltyCardViewActivity 2024-11-01 22:35:33 +01:00
Sylvia van Os
328c110a97 General cleanups 2024-11-01 22:32:05 +01:00
Sylvia van Os
0b7cd32209 Merge pull request #2152 from CatimaLoyalty/dependabot/gradle/com.android.application-8.7.2
Bump com.android.application from 8.7.1 to 8.7.2
2024-11-01 19:25:10 +00:00
Sylvia van Os
b1c0ab74d7 Merge pull request #2151 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-11-01 19:25:00 +00:00
Marnes
faee01cde2 implement #1952: better values between portrait and landscape 2024-11-01 18:51:26 +01:00
Marnes
6f456437f7 implement #1952: custom column count 2024-11-01 18:27:41 +01:00
Marnes
1b0fd94a8c misc. linting 2024-11-01 18:27:33 +01:00
dependabot[bot]
268d04841f Bump com.android.application from 8.7.1 to 8.7.2
Bumps com.android.application from 8.7.1 to 8.7.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-01 03:00:22 +00:00
大王叫我来巡山
9408ac5d9f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-11-01 02:02:45 +01:00
Sylvia van Os
45d2b6206e Merge pull request #2149 from CatimaLoyalty/dependabot/gradle/androidx.constraintlayout-constraintlayout-2.2.0
Bump androidx.constraintlayout:constraintlayout from 2.1.4 to 2.2.0
2024-10-31 16:49:45 +00:00
dependabot[bot]
a943fdcc5a 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] <support@github.com>
2024-10-31 02:18:56 +00:00
Sylvia van Os
06e02f0b0f Update fastlane 2024-10-30 19:42:10 +01:00
Sylvia van Os
5b29dc66a9 Merge pull request #2148 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-30 18:38:23 +00:00
大王叫我来巡山
5187916fd3 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-30 18:10:54 +00:00
Максим Горпиніч
d6e444c6e9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-30 18:10:54 +00:00
solokot
59f4ef1091 Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-30 18:10:53 +00:00
B o d o
bab1b3e9df Translated using Weblate (German)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-30 18:10:53 +00:00
Kachelkaiser
4e8cbdc93b Translated using Weblate (German)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-30 18:10:52 +00:00
Vasilis K
d3e5c5b335 Translated using Weblate (Greek)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-10-30 18:10:51 +00:00
Sylvia van Os
2b4b38ddc6 Merge pull request #2145 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-29 17:25:47 +00:00
B o d o
d3e6d775e8 Translated using Weblate (German)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-29 17:18:28 +00:00
Sylvia van Os
ecf3b57679 Release Catima 2.32.1 2024-10-29 18:18:09 +01:00
Sylvia van Os
115981ecc6 Merge pull request #2144 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-29 16:44:32 +00:00
大王叫我来巡山
009f297f59 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-29 16:36:14 +00:00
Максим Горпиніч
f539fb1acf Translated using Weblate (Ukrainian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-29 16:36:14 +00:00
solokot
297e1e79c2 Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-29 16:36:13 +00:00
B o d o
d8a95d9d48 Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-29 16:36:13 +00:00
Vasilis K
1d8e87981b Translated using Weblate (Greek)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-10-29 16:36:12 +00:00
Sylvia van Os
5c97f9c89a Merge pull request #2143 from CatimaLoyalty/create-pull-request/patch-1730153137
Update Fastlane changelogs
2024-10-28 23:03:04 +00:00
TheLastProject
a3b02d775c Update Fastlane changelogs 2024-10-28 22:05:37 +00:00
Sylvia van Os
a83b01b0f4 Update CHANGELOG 2024-10-28 23:05:24 +01:00
Sylvia van Os
4be1d76869 Merge pull request #2142 from CatimaLoyalty/fix/2141
Fix text wrapping on add dialog
2024-10-28 22:04:19 +00:00
Sylvia van Os
15a6924894 Fix text wrapping on add dialog 2024-10-28 22:50:55 +01:00
Sylvia van Os
fdeef6504c Release Catima 2.32.0 2024-10-28 18:38:52 +01:00
Sylvia van Os
00ce3466fd Merge pull request #2138 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.3.0
Bump actions/setup-python from 5.2.0 to 5.3.0
2024-10-28 06:41:27 +00:00
dependabot[bot]
ee3013499d Bump actions/setup-python from 5.2.0 to 5.3.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 06:32:46 +00:00
Sylvia van Os
0f966d036b Merge pull request #2137 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.2.2
Bump actions/checkout from 4.2.1 to 4.2.2
2024-10-28 06:31:52 +00:00
dependabot[bot]
2c09e625fb Bump actions/checkout from 4.2.1 to 4.2.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 02:33:10 +00:00
Sylvia van Os
8908796b44 Merge pull request #2136 from CatimaLoyalty/create-pull-request/patch-1730069540
Update Fastlane changelogs
2024-10-27 22:52:40 +00:00
TheLastProject
a01fd67565 Update Fastlane changelogs 2024-10-27 22:52:20 +00:00
Sylvia van Os
07fe173487 Update CHANGELOG 2024-10-27 22:52:08 +00:00
Sylvia van Os
e9e63e66a5 Merge pull request #2135 from CatimaLoyalty/fix/2104
Don't show import cancelled text on import completion
2024-10-27 22:04:28 +00:00
Sylvia van Os
6cbfb6dd48 Don't show import cancelled text on import completion 2024-10-27 22:51:45 +01:00
Sylvia van Os
e1f4c0a1ca Merge pull request #2132 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-27 20:29:23 +01:00
Sylvia van Os
5a6b912037 Merge pull request #2134 from CatimaLoyalty/create-pull-request/patch-1730002644
Update contributors
2024-10-27 20:28:04 +01:00
Sylvia van Os
996324829d Merge pull request #2133 from obfusk/update-stocard
update stocard_stores.csv
2024-10-27 20:25:08 +01:00
TheLastProject
e6e556f9af Update contributors 2024-10-27 04:17:24 +00:00
大王叫我来巡山
0318b99aa7 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-26 13:16:39 +02:00
Максим Горпиніч
bb79ba3ca5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-26 13:16:27 +02:00
solokot
57679fdc40 Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-26 13:16:15 +02:00
Kachelkaiser
01c80d1f8b Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-26 13:16:03 +02:00
FC (Fay) Stegerman
76d69219f8 update stocard_stores.csv 2024-10-25 19:05:01 +02:00
Kamborio
1b0761a36d Translated using Weblate (Spanish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-10-25 12:16:52 +02:00
Sylvia van Os
b519507600 Merge pull request #2131 from CatimaLoyalty/create-pull-request/patch-1729799074
Update Fastlane changelogs
2024-10-24 21:47:15 +02:00
TheLastProject
cdb7077b91 Update Fastlane changelogs 2024-10-24 19:44:33 +00:00
Sylvia van Os
55639e3cf2 Update CHANGELOG 2024-10-24 21:44:20 +02:00
Sylvia van Os
088ee5dc34 Merge pull request #2125 from obfusk/stocard-spanned-fix
StocardImporter: use ZipFile (fixes spanned archive marker breaking import)
2024-10-24 21:43:53 +02:00
Sylvia van Os
20d8374edc Merge pull request #2130 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-24 19:18:17 +02:00
ikanakova
265b90251d Translated using Weblate (Czech)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-10-24 09:16:08 +02:00
ikanakova
49d833eee7 Translated using Weblate (Czech)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-10-24 09:16:08 +02:00
FC (Fay) Stegerman
98f4e0dd7f StocardImporter: use ZipFile (fixes spanned archive marker breaking import) 2024-10-22 21:36:29 +02:00
FC (Fay) Stegerman
4ec1a947bc modify stocard ZIP files to include spanned archive marker 2024-10-22 21:36:28 +02:00
Sylvia van Os
dfe825ebec Merge pull request #2127 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-22 19:26:11 +02:00
Balázs Meskó
4f24e0a2dc Translated using Weblate (Hungarian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-10-22 19:16:14 +02:00
Eji-san
ed57ab52c8 Translated using Weblate (Indonesian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-10-22 19:16:13 +02:00
B o d o
0d3c3c5e35 Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-22 19:16:12 +02:00
Kachelkaiser
333acb7911 Translated using Weblate (German)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-10-22 19:16:12 +02:00
Sylvia van Os
056b363b7b Merge pull request #2126 from CatimaLoyalty/dep/agp871
Bump com.android.application to 8.7.1 and suppress incorrect new lint warning
2024-10-22 19:01:27 +02:00
Sylvia van Os
693e89c635 Bump com.android.application to 8.7.1 and suppress incorrect new lint warning 2024-10-22 18:39:34 +02:00
Vincent Caron
d95a7f7982 Add icons to the "More options" dialog (#2121) 2024-10-21 18:39:30 +02:00
Sylvia van Os
2f72fee1aa Merge pull request #2122 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-21 17:49:06 +02:00
Jiri Grönroos
59ffa6c357 Translated using Weblate (Finnish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-10-21 03:32:21 +02:00
Sylvia van Os
1eea1b4402 Merge pull request #2119 from CatimaLoyalty/create-pull-request/patch-1729397925
Update contributors
2024-10-20 11:14:44 +02:00
TheLastProject
c936d0df49 Update contributors 2024-10-20 04:18:45 +00:00
Sylvia van Os
41dd6b2b69 Merge pull request #2112 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-17 19:45:14 +02:00
Sylvia van Os
524ef19991 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-10-17 18:16:30 +02:00
João Palmeiro
3312f7db8c Translated using Weblate (Portuguese (Portugal))
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-10-15 12:16:04 +02:00
befag74614
49ea6e39cf Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-10-15 12:16:03 +02:00
Renko
4c15ddc35c Translated using Weblate (Romanian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-10-15 12:16:02 +02:00
Wiktor Perskawiec
1a7c8f088d Translated using Weblate (Polish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-10-15 12:16:02 +02:00
João Palmeiro
1d6af0c540 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-10-15 12:16:01 +02:00
Максим Горпиніч
261130aa6f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-10-15 12:16:00 +02:00
Максим Горпиніч
98526fcd0b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-10-15 12:16:00 +02:00
Dklfajsjfi49wefklsf32
64d1e70d33 Translated using Weblate (Dutch)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-10-15 12:15:59 +02:00
Sylvia van Os
71473f3804 Merge pull request #2114 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.4.3
Bump actions/upload-artifact from 4.4.0 to 4.4.3
2024-10-14 09:41:27 +02:00
Sylvia van Os
f360ee172f Merge pull request #2113 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.2.1
Bump actions/checkout from 4.2.0 to 4.2.1
2024-10-14 09:39:49 +02:00
dependabot[bot]
4940f32fbf Bump actions/upload-artifact from 4.4.0 to 4.4.3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.0 to 4.4.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.0...v4.4.3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 02:53:36 +00:00
dependabot[bot]
b025af8d07 Bump actions/checkout from 4.2.0 to 4.2.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 02:53:35 +00:00
Sylvia van Os
6418ab7cbe Merge pull request #2111 from CatimaLoyalty/create-pull-request/patch-1728793081
Update contributors
2024-10-13 08:32:07 +02:00
TheLastProject
30edf0efcf Update contributors 2024-10-13 04:18:00 +00:00
Sylvia van Os
37b02b13fa Merge pull request #2110 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-12 14:50:37 +02:00
Roger S
05453e92ea Translated using Weblate (German)
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-12 13:47:44 +02:00
J. Lavoie
4c3b830788 Translated using Weblate (Italian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-10-12 13:47:43 +02:00
J. Lavoie
0c706f2e5b Translated using Weblate (French)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-10-12 13:47:43 +02:00
Sylvia van Os
5ebe02fb89 Merge pull request #2109 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-12 09:04:12 +02:00
Roger S
3b8bf99e79 Translated using Weblate (German)
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-11 21:59:29 +00:00
Priit Jõerüüt
916c3d4db8 Translated using Weblate (Estonian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-10-11 21:59:29 +00:00
Peter Dave Hello
b1e89424dc Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 88.3% (121 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2024-10-11 21:59:28 +00:00
Peter Dave Hello
9d2af821d1 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-10-11 21:59:27 +00:00
大王叫我来巡山
e9eee27932 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-10-11 21:59:26 +00:00
大王叫我来巡山
4d23dce932 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-10-11 21:59:26 +00:00
Tim Trek
7277097d59 Translated using Weblate (German)
Currently translated at 99.2% (136 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-11 21:59:26 +00:00
Sylvia van Os
d6bc1f407b Merge pull request #2108 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-10 21:56:45 +02:00
Oğuz Ersen
f002c83cbd Translated using Weblate (Turkish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-10-10 21:00:06 +02:00
109247019824
afcd63805b Translated using Weblate (Bulgarian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-10-10 21:00:06 +02:00
solokot
f5cca4f3fb Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-10-10 21:00:06 +02:00
Roger S
ad2048a72c Translated using Weblate (German)
Currently translated at 98.5% (135 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-10 21:00:06 +02:00
solokot
e1ceb8b6af Translated using Weblate (Russian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-10-10 21:00:06 +02:00
Roger S
a3ce7ba3ad Translated using Weblate (German)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-10-10 21:00:06 +02:00
Sylvia van Os
41f3845f63 Merge pull request #2105 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-10 17:53:45 +02:00
Anonymous
86434d3919 Translated using Weblate (Bengali)
Currently translated at 35.8% (113 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2024-10-10 12:51:24 +02:00
Anonymous
75efd9a733 Translated using Weblate (Icelandic)
Currently translated at 36.8% (116 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/is/
2024-10-10 12:51:24 +02:00
gallegonovato
f5b691d68b Translated using Weblate (Spanish)
Currently translated at 48.9% (67 of 137 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-10-10 12:51:23 +02:00
Anonymous
e9bf7bb547 Translated using Weblate (Slovak)
Currently translated at 98.4% (310 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-10-10 12:51:22 +02:00
Tim Trek
c6b726eb63 Translated using Weblate (German)
Currently translated at 98.5% (134 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-10-10 10:37:29 +02:00
Sylvia van Os
42638e3df6 Merge pull request #2103 from CatimaLoyalty/create-pull-request/patch-1728420476
Update Fastlane changelogs
2024-10-08 23:15:47 +02:00
Sylvia van Os
33a3c7645e Change card with volume buttons at most once per second 2024-10-08 23:15:26 +02:00
TheLastProject
86a0a8d19a Update Fastlane changelogs 2024-10-08 20:47:56 +00:00
Sylvia van Os
a1da4a7ef3 Update CHANGELOG 2024-10-08 22:47:42 +02:00
Sylvia van Os
ecfb7bb188 Merge pull request #2102 from CatimaLoyalty/feature/volumeKeyNavigation
Volume key navigation
2024-10-08 22:44:41 +02:00
Sylvia van Os
bf2047e1d6 Rephrase some settings 2024-10-08 22:23:15 +02:00
Filip Rzuhovský
09dc0e4c15 Implemented card swiping with volume buttons mechanism 2024-10-08 19:48:17 +02:00
Sylvia van Os
eed5bcda30 Merge pull request #2098 from CatimaLoyalty/create-pull-request/patch-1728188277
Update contributors
2024-10-06 12:53:49 +02:00
TheLastProject
d35c9887f6 Update contributors 2024-10-06 04:17:56 +00:00
Sylvia van Os
7eb98c9d4b Merge pull request #2097 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-10-03 17:29:01 +02:00
Hosted Weblate
bc0d89573e Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-10-03 07:15:44 +02:00
Jen
67c8fc7dbd Translated using Weblate (Kannada)
Currently translated at 28.5% (89 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/kn/
2024-10-03 07:15:43 +02:00
Sylvia van Os
d472948201 Merge pull request #2091 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-30 17:14:28 +02:00
Priit Jõerüüt
3d44f6000d Translated using Weblate (Estonian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-09-30 14:34:04 +02:00
Legendbird580
9b2d001c3c Translated using Weblate (Swedish)
Currently translated at 92.3% (288 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-09-30 14:34:04 +02:00
Sylvia van Os
74ae9ee040 Merge pull request #2090 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.2.0
Bump actions/checkout from 4.1.7 to 4.2.0
2024-09-30 08:22:39 +02:00
dependabot[bot]
d1e455f038 Bump actions/checkout from 4.1.7 to 4.2.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.7...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 03:00:18 +00:00
Sylvia van Os
7d49fa98e7 Merge pull request #2089 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-29 18:18:21 +02:00
Eji-san
db59441d11 Translated using Weblate (Indonesian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-09-29 14:07:28 +00:00
Sylvia van Os
5da8afeb7d Merge pull request #2088 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-25 17:22:22 +02:00
Ricky Tigg
7575d7f271 Translated using Weblate (Finnish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-09-25 15:16:36 +02:00
Sylvia van Os
7830502987 Merge pull request #2085 from CatimaLoyalty/create-pull-request/patch-1727159056
Update Gradle to 8.10.2
2024-09-24 17:40:47 +02:00
TheLastProject
a3decdf9ad Update Gradle to 8.10.2 2024-09-24 06:24:15 +00:00
Sylvia van Os
051ece8358 Merge pull request #2084 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.5
Bump peter-evans/create-pull-request from 7.0.2 to 7.0.5
2024-09-23 19:24:07 +02:00
dependabot[bot]
92da7fc877 Bump peter-evans/create-pull-request from 7.0.2 to 7.0.5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.2 to 7.0.5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.2...v7.0.5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 02:16:13 +00:00
Sylvia van Os
727d9ce781 Refactor to allow updating a loyalty card from a bundle (#2051)
This allows us to send any (partial) loyalty card into the edit
activity, granting us greater flexibility in what kind of scan result we
can parse
2024-09-22 10:20:58 +02:00
Sylvia van Os
94cee771bd Merge pull request #2083 from CatimaLoyalty/dependabot/gradle/com.android.application-8.6.1
Bump com.android.application from 8.6.0 to 8.6.1
2024-09-18 08:21:43 +02:00
dependabot[bot]
73db115f02 Bump com.android.application from 8.6.0 to 8.6.1
Bumps com.android.application from 8.6.0 to 8.6.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-18 02:19:53 +00:00
Sylvia van Os
c8aab06d77 Merge pull request #2082 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.2
Bump peter-evans/create-pull-request from 7.0.1 to 7.0.2
2024-09-16 08:38:05 +02:00
dependabot[bot]
be80003860 Bump peter-evans/create-pull-request from 7.0.1 to 7.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 02:18:55 +00:00
Sylvia van Os
639c024e7e Merge pull request #2081 from CatimaLoyalty/create-pull-request/patch-1726373855
Update contributors
2024-09-15 10:40:10 +02:00
TheLastProject
8dc1e9f6b5 Update contributors 2024-09-15 04:17:35 +00:00
Sylvia van Os
a2a4d9ac16 Merge pull request #2080 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-14 21:19:59 +02:00
Nazar
60de179f74 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (136 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-09-14 17:09:34 +02:00
Sylvia van Os
518f384b99 Merge pull request #2078 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-11 17:34:09 +02:00
solokot
a83598676b Translated using Weblate (Russian)
Currently translated at 100.0% (136 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-09-11 11:45:21 +00:00
Sylvia van Os
59ddfe1d05 Merge pull request #2076 from CatimaLoyalty/create-pull-request/patch-1725949366
Update Gradle to 8.10.1
2024-09-10 20:59:49 +02:00
TheLastProject
d6def93b4e Update Gradle to 8.10.1 2024-09-10 06:22:45 +00:00
Sylvia van Os
65d95f4616 Merge pull request #2075 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-7.0.1
Bump peter-evans/create-pull-request from 6.1.0 to 7.0.1
2024-09-09 17:54:15 +02:00
dependabot[bot]
b858f5dc01 Bump peter-evans/create-pull-request from 6.1.0 to 7.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.1.0 to 7.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.1.0...v7.0.1)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 02:29:28 +00:00
Sylvia van Os
648dbe7031 Merge pull request #2074 from CatimaLoyalty/create-pull-request/patch-1725769023
Update contributors
2024-09-08 11:05:41 +02:00
TheLastProject
7b57c73d2a Update contributors 2024-09-08 04:17:03 +00:00
Sylvia van Os
9c2ec91100 Merge pull request #2073 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-07 11:19:14 +02:00
Priit Jõerüüt
c5769d5a81 Translated using Weblate (Estonian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/et/
2024-09-06 23:09:22 +02:00
Sylvia van Os
d3d5f62801 Merge pull request #2070 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.2
Bump com.android.tools:desugar_jdk_libs from 2.1.1 to 2.1.2
2024-09-05 17:48:17 +02:00
Sylvia van Os
bf8146d509 Merge pull request #2072 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-05 17:38:44 +02:00
大王叫我来巡山
fad5e7e238 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (136 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-09-05 12:47:56 +02:00
dependabot[bot]
af79b22f71 Bump com.android.tools:desugar_jdk_libs from 2.1.1 to 2.1.2
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.1 to 2.1.2.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 02:25:30 +00:00
Sylvia van Os
a31afef298 Merge pull request #2069 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-04 18:03:32 +02:00
N. Hao
6096876894 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-09-04 12:09:38 +02:00
Charlie Ringström
0fe3d79103 Translated using Weblate (Swedish)
Currently translated at 91.9% (287 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-09-04 12:09:37 +02:00
Lilith Maria
8b0ae9d61a Translated using Weblate (Lithuanian)
Currently translated at 2.2% (3 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lt/
2024-09-04 12:09:37 +02:00
Lilith Maria
4489b46200 Translated using Weblate (Lithuanian)
Currently translated at 97.1% (303 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2024-09-04 12:09:36 +02:00
Sylvia van Os
1240e8e353 Merge pull request #2067 from CatimaLoyalty/create-pull-request/patch-1725376723
Update feature graphic
2024-09-03 17:19:35 +02:00
TheLastProject
74fa400237 Update feature graphic 2024-09-03 15:18:43 +00:00
Sylvia van Os
cc7fe900d2 Merge pull request #2066 from CatimaLoyalty/fix/generateFeatureGraphicsNoTxt
Fix feature graphic generation failing for languages without title.txt
2024-09-03 17:17:31 +02:00
Sylvia van Os
aab416e62b Fix feature graphic generation failing for languages without title.txt 2024-09-02 23:50:36 +02:00
Sylvia van Os
d924c292bc Merge pull request #2065 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-02 23:41:33 +02:00
Priit Jõerüüt
a251fbfcc6 Translated using Weblate (Estonian)
Currently translated at 1.4% (2 of 136 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/et/
2024-09-02 21:09:37 +00:00
Asaf Cohen
5bea05ee15 Translated using Weblate (Hebrew (Israel))
Currently translated at 31.0% (97 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2024-09-02 21:09:36 +00:00
Sylvia van Os
21c7eee893 Merge pull request #2064 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.2.0
Bump actions/setup-python from 5.1.1 to 5.2.0
2024-09-02 19:26:13 +02:00
Sylvia van Os
c9a5e12352 Merge pull request #2063 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.4.0
Bump actions/upload-artifact from 4.3.6 to 4.4.0
2024-09-02 19:25:56 +02:00
dependabot[bot]
956140c6db Bump actions/setup-python from 5.1.1 to 5.2.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.1 to 5.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.1.1...v5.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 02:55:56 +00:00
dependabot[bot]
fde0b3e412 Bump actions/upload-artifact from 4.3.6 to 4.4.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.6...v4.4.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 02:55:54 +00:00
Sylvia van Os
2e8ba7a185 Merge pull request #2062 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-09-01 22:23:01 +02:00
Xpto
cc27988681 Translated using Weblate (Portuguese)
Currently translated at 3.7% (5 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2024-09-01 20:10:05 +00:00
Sylvia van Os
590af0c276 Merge pull request #2061 from CatimaLoyalty/dependabot/gradle/com.android.application-8.6.0
Bump com.android.application from 8.5.2 to 8.6.0
2024-08-30 17:07:55 +02:00
dependabot[bot]
32fe6b2f77 Bump com.android.application from 8.5.2 to 8.6.0
Bumps com.android.application from 8.5.2 to 8.6.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 02:51:52 +00:00
Sylvia van Os
9f5607016d Merge pull request #2059 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.1
Bump com.android.tools:desugar_jdk_libs from 2.1.0 to 2.1.1
2024-08-29 10:47:03 +02:00
dependabot[bot]
2e6ecdf02d Bump com.android.tools:desugar_jdk_libs from 2.1.0 to 2.1.1
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.1.0 to 2.1.1.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-29 02:32:59 +00:00
Sylvia van Os
ef6cb69fb0 Merge pull request #2057 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.1.0
Bump com.android.tools:desugar_jdk_libs from 2.0.4 to 2.1.0
2024-08-27 08:57:51 +02:00
dependabot[bot]
71504af6b2 Bump com.android.tools:desugar_jdk_libs from 2.0.4 to 2.1.0
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.0.4 to 2.1.0.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-27 02:30:23 +00:00
Sylvia van Os
a3ca084444 Merge pull request #2056 from CatimaLoyalty/create-pull-request/patch-1724559358
Update contributors
2024-08-25 10:52:03 +02:00
TheLastProject
35082be6cd Update contributors 2024-08-25 04:15:57 +00:00
Sylvia van Os
934ddb1bfe Merge pull request #2055 from CatimaLoyalty/fix/1842
Fix about screen text overlaying into arrows
2024-08-24 18:57:57 +02:00
Sylvia van Os
5d0a1d8fb2 Fix about screen text overlaying into arrows 2024-08-24 18:35:36 +02:00
Sylvia van Os
1c8c492400 Release Catima 2.31.1 2024-08-24 14:07:16 +02:00
Sylvia van Os
186db1d419 Merge pull request #2053 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-23 00:06:02 +02:00
Uporabnik Alen
b596628f81 Translated using Weblate (Slovenian)
Currently translated at 82.3% (257 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2024-08-22 23:09:22 +02:00
Sylvia van Os
74aad20d6b Merge pull request #2050 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-19 17:40:23 +02:00
Priit Jõerüüt
e7a50901ea Translated using Weblate (Estonian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-19 15:09:17 +00:00
Sylvia van Os
b7fa0dc70c Merge pull request #2048 from CatimaLoyalty/create-pull-request/patch-1723962057
Update Gradle to 8.10
2024-08-18 11:07:45 +02:00
Sylvia van Os
c19dc78f3e Merge pull request #2047 from CatimaLoyalty/create-pull-request/patch-1723954751
Update contributors
2024-08-18 09:57:18 +02:00
TheLastProject
c7639f0a02 Update Gradle to 8.10 2024-08-18 06:20:57 +00:00
TheLastProject
ad984b2ec4 Update contributors 2024-08-18 04:19:10 +00:00
Sylvia van Os
baa0378fa2 Merge pull request #2046 from CatimaLoyalty/create-pull-request/patch-1723902322
Update Fastlane changelogs
2024-08-17 17:08:52 +02:00
TheLastProject
9f422dc5ac Update Fastlane changelogs 2024-08-17 13:45:21 +00:00
Sylvia van Os
3ab28d8270 Update CHANGELOG 2024-08-17 15:45:08 +02:00
Sylvia van Os
f63950ff3c Merge pull request #2045 from obfusk/patch-9
update obfusk/gradle-update-action to v3.0.0
2024-08-17 12:46:28 +02:00
FC (Fay) Stegerman
b4dd713dab update obfusk/gradle-update-action to v3.0.0 2024-08-15 13:44:42 +00:00
unbiaseduser-github
80e4701d41 Make Back button/gesture not instantly collapse the MainActivity's search view (#2030) 2024-08-14 20:09:46 +02:00
Sylvia van Os
7c7a05f1f8 Merge pull request #2044 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-13 19:19:08 +02:00
Sylvia van Os
6e57d4711a Merge pull request #2043 from CatimaLoyalty/create-pull-request/patch-1723568443
Update locales
2024-08-13 19:18:41 +02:00
Priit Jõerüüt
626c4c956e Translated using Weblate (Estonian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-13 19:02:09 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
522ae07942 Translated using Weblate (Greek)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-08-13 19:02:08 +02:00
TheLastProject
e5b7f723d2 Update locales 2024-08-13 17:00:43 +00:00
Sylvia van Os
1c8830f59c Merge pull request #2041 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-13 19:00:27 +02:00
Sylvia van Os
ad25cf9c9e Remove translated strings no longer in Catima 2024-08-13 18:04:50 +02:00
Priit Jõerüüt
c4c63e5ddc Added translation using Weblate (Estonian) 2024-08-12 23:30:58 +02:00
Priit Jõerüüt
443c858700 Translated using Weblate (Estonian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-12 23:30:57 +02:00
Sylvia van Os
c19b80f991 Merge pull request #2033 from AndreVero/AndreVero-remove-unused-strings-issue-2027
Remove unused strings from string.xml
2024-08-12 23:06:38 +02:00
Sylvia van Os
f3ee88b43c More cleanups 2024-08-12 23:01:27 +02:00
Sylvia van Os
1ac6ee6c59 Merge pull request #2040 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.6
Bump actions/upload-artifact from 4.3.5 to 4.3.6
2024-08-12 18:16:38 +02:00
dependabot[bot]
3f4da811ca Bump actions/upload-artifact from 4.3.5 to 4.3.6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.5 to 4.3.6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.5...v4.3.6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-12 02:25:26 +00:00
Sylvia van Os
598a9dd2da Merge pull request #2037 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-11 13:09:33 +02:00
Priit Jõerüüt
7a7a81d5c4 Translated using Weblate (Estonian)
Currently translated at 41.0% (130 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-11 09:09:56 +00:00
Peter Dave Hello
2730d157d8 Translated using Weblate (Chinese (Traditional))
Currently translated at 86.6% (117 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2024-08-11 09:09:56 +00:00
Peter Dave Hello
55519e487d Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-08-11 09:09:53 +00:00
Sylvia van Os
55fb14b6df Merge pull request #2036 from CatimaLoyalty/create-pull-request/patch-1723349900
Update contributors
2024-08-11 10:45:26 +02:00
TheLastProject
6b8fdd9c5c Update contributors 2024-08-11 04:18:20 +00:00
Sylvia van Os
94b15220ea Merge pull request #2034 from CatimaLoyalty/dependabot/gradle/com.android.application-8.5.2
Bump com.android.application from 8.5.1 to 8.5.2
2024-08-09 08:21:29 +02:00
dependabot[bot]
bbb3be736e Bump com.android.application from 8.5.1 to 8.5.2
Bumps com.android.application from 8.5.1 to 8.5.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-09 02:29:54 +00:00
Sylvia van Os
0355dc6cf3 Merge pull request #2032 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-08 18:51:13 +02:00
Andrii
287918372a Remove unused strings from string.xml 2024-08-08 14:54:49 +01:00
Priit Jõerüüt
6597ec1b6e Translated using Weblate (Estonian)
Currently translated at 23.6% (75 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/et/
2024-08-08 02:09:16 +02:00
Sylvia van Os
3184db27d1 Merge pull request #2031 from CatimaLoyalty/create-pull-request/patch-1723047037
Update locales
2024-08-07 18:12:42 +02:00
TheLastProject
99434e69a7 Update locales 2024-08-07 16:10:36 +00:00
Sylvia van Os
cb0997a0b1 Merge pull request #2029 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-07 18:10:21 +02:00
Priit Jõerüüt
6fa2c71bd3 Added translation using Weblate (Estonian) 2024-08-07 01:57:36 +02:00
Sylvia van Os
2f66317190 Merge pull request #2025 from CatimaLoyalty/dependabot/github_actions/gradle/actions-4
Bump gradle/actions from 3 to 4
2024-08-05 18:11:05 +02:00
Sylvia van Os
c718d27a4c Merge pull request #2024 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.5
Bump actions/upload-artifact from 4.3.4 to 4.3.5
2024-08-05 18:04:04 +02:00
Sylvia van Os
cadb92c4ef Merge pull request #2026 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-05 17:07:33 +02:00
tygyh
16d66f6c90 Translated using Weblate (Swedish)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/sv/
2024-08-05 15:09:31 +02:00
Milo Ivir
5c157888af Translated using Weblate (Croatian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2024-08-05 15:09:30 +02:00
Sylvia van Os
a556899881 Translated using Weblate (Esperanto)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-05 15:09:30 +02:00
하루
3ed6ad8b11 Translated using Weblate (Korean)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2024-08-05 15:09:29 +02:00
Allan Nordhøy
a06887e663 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.2% (305 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-08-05 15:09:28 +02:00
dependabot[bot]
ef9757df75 Bump gradle/actions from 3 to 4
Bumps [gradle/actions](https://github.com/gradle/actions) from 3 to 4.
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](https://github.com/gradle/actions/compare/v3...v4)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 02:32:59 +00:00
dependabot[bot]
03811f1f39 Bump actions/upload-artifact from 4.3.4 to 4.3.5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.3.5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.4...v4.3.5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 02:32:57 +00:00
Sylvia van Os
c1801ae450 Merge pull request #2023 from CatimaLoyalty/create-pull-request/patch-1722776436
Update feature graphic
2024-08-04 15:01:16 +02:00
TheLastProject
24ee045dcf Update feature graphic 2024-08-04 13:00:35 +00:00
Sylvia van Os
06c0ddf6ae Merge pull request #2022 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-04 14:59:31 +02:00
Hosted Weblate
e22a7c3063 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-08-04 08:09:35 +02:00
Amir
b91dcc8e27 Translated using Weblate (Persian)
Currently translated at 35.3% (112 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2024-08-04 08:09:34 +02:00
ed tavinor
496ba82835 Translated using Weblate (Esperanto)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/eo/
2024-08-04 08:09:34 +02:00
ed tavinor
410518e677 Translated using Weblate (Esperanto)
Currently translated at 1.4% (2 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/eo/
2024-08-04 08:09:33 +02:00
ed tavinor
7cafebab7d Translated using Weblate (Esperanto)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-04 08:09:32 +02:00
Sylvia van Os
429e22cc5e Merge pull request #2021 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-02 23:47:05 +02:00
ed tavinor
1edc17fb7e Translated using Weblate (Esperanto)
Currently translated at 75.3% (239 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-02 22:09:36 +02:00
Alexander Kulumbeg
dd3cf771bd Translated using Weblate (Slovak)
Currently translated at 99.2% (134 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2024-08-02 22:09:36 +02:00
Alexander Kulumbeg
eebb5e5cd4 Translated using Weblate (Slovak)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-08-02 22:09:35 +02:00
Sylvia van Os
46fc2aab55 Merge pull request #2019 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-08-01 21:42:05 +02:00
ed tavinor
b765560fff Translated using Weblate (Esperanto)
Currently translated at 40.0% (127 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2024-08-01 21:09:16 +02:00
Sylvia van Os
6a3dd841b0 Merge pull request #2018 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-31 18:58:39 +02:00
Scrambled777
1b899a40a5 Translated using Weblate (Hindi)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-07-31 16:38:12 +02:00
Sylvia van Os
a05769c42d Update fastlane 2024-07-28 13:12:41 +02:00
Sylvia van Os
2c2ff2d1d2 Merge pull request #2016 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-28 13:08:24 +02:00
kompowiec2
045363f138 Translated using Weblate (Polish)
Currently translated at 97.0% (131 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2024-07-28 11:10:32 +02:00
kompowiec2
6860e1deb0 Translated using Weblate (Polish)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-07-28 11:10:31 +02:00
Sylvia van Os
469ed374ad Release Catima 2.31.0 2024-07-26 18:13:40 +02:00
Sylvia van Os
d952f194be Merge pull request #2014 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-25 18:38:43 +02:00
大王叫我来巡山
ccbf4afd44 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-07-25 02:09:51 +00:00
solokot
2b1a950204 Translated using Weblate (Russian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-07-25 02:09:50 +00:00
Sylvia van Os
e930ee8efd Merge pull request #2013 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-24 19:42:31 +02:00
gallegonovato
d469e50985 Translated using Weblate (Spanish)
Currently translated at 48.8% (66 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-07-24 03:28:16 +02:00
Sylvia van Os
39ba630479 Merge pull request #2012 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-23 18:18:13 +02:00
Francisco (F4VSE)
074f84818d Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-07-23 14:10:02 +00:00
Francisco (F4VSE)
dd645a761d Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-07-23 14:10:01 +00:00
grgergo
a12125e26d Translated using Weblate (Hungarian)
Currently translated at 99.3% (315 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-07-23 14:10:00 +00:00
Sylvia van Os
67e82c5d8f Translated using Weblate (Dutch)
Currently translated at 53.3% (72 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-07-23 14:10:00 +00:00
Francisco (F4VSE)
52b30cf988 Translated using Weblate (French)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-07-23 14:09:59 +00:00
Monika
ccfdc5f3b5 Translated using Weblate (Polish)
Currently translated at 99.3% (315 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-07-23 14:09:59 +00:00
Francisco (F4VSE)
339d002529 Translated using Weblate (French)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-07-23 14:09:58 +00:00
Sylvia van Os
5afe0bdc59 Merge pull request #2011 from CatimaLoyalty/create-pull-request/patch-1721672428
Update Fastlane changelogs
2024-07-22 20:22:34 +02:00
TheLastProject
59d3a74206 Update Fastlane changelogs 2024-07-22 18:20:28 +00:00
Sylvia van Os
58d3d29fbe Merge pull request #2010 from CatimaLoyalty/fix/1971
Fix chip contrast in dark mode
2024-07-22 20:20:13 +02:00
Sylvia van Os
c340544886 Fix chip contrast in dark mode 2024-07-22 19:47:01 +02:00
Sylvia van Os
c137e6178a Merge pull request #2009 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-22 19:21:45 +02:00
arbadacarba
98f1fd42f6 Translated using Weblate (Dutch)
Currently translated at 53.3% (72 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-07-22 13:09:52 +00:00
Sylvia van Os
f344a3b125 Translated using Weblate (Dutch)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-07-22 13:09:28 +00:00
Giovanni Donisi
24bdffdce8 Translated using Weblate (Italian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-07-22 13:09:28 +00:00
Sylvia van Os
853f4aabfc Translated using Weblate (German)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-07-22 13:09:27 +00:00
Sylvia van Os
439cd870e5 Translated using Weblate (German)
Currently translated at 95.5% (129 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-07-21 14:43:29 +02:00
arbadacarba
ab47a769ea Translated using Weblate (Dutch)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-07-21 14:43:27 +02:00
SaMuTa
b73b6584c2 Translated using Weblate (Arabic)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-07-21 10:09:57 +00:00
gallegonovato
06f4fb29b4 Translated using Weblate (Spanish)
Currently translated at 48.1% (65 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-07-21 10:09:56 +00:00
arbadacarba
3d19acd434 Translated using Weblate (German)
Currently translated at 95.5% (129 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-07-21 10:09:55 +00:00
arbadacarba
40dd882857 Translated using Weblate (German)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-07-21 10:09:55 +00:00
Sylvia van Os
029f49078e Merge pull request #2007 from CatimaLoyalty/create-pull-request/patch-1721535313
Update contributors
2024-07-21 09:48:37 +02:00
TheLastProject
d5f19877f2 Update contributors 2024-07-21 04:15:12 +00:00
Sylvia van Os
9679b0746b Merge pull request #2006 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-20 13:58:23 +02:00
Scrambled777
55209cbca5 Translated using Weblate (Hindi)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-07-20 08:09:40 +02:00
Scrambled777
63d7ea9b06 Translated using Weblate (Hindi)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-07-20 08:09:39 +02:00
Sylvia van Os
1062d9a302 Merge pull request #2005 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-19 17:08:20 +02:00
André Nunes
30b2243d1e Translated using Weblate (Portuguese (Portugal))
Currently translated at 99.3% (315 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-07-18 13:10:11 +00:00
大王叫我来巡山
9f755c2939 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-07-18 13:10:10 +00:00
IllusiveMan196
375f6d9117 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-07-18 13:10:10 +00:00
solokot
1e3b6f197d Translated using Weblate (Russian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-07-18 13:10:09 +00:00
IllusiveMan196
9cf21f9d75 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-07-18 13:10:09 +00:00
Fqwe1
033168cc8d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-07-18 13:10:08 +00:00
Sylvia van Os
e698240a91 Merge pull request #2003 from CatimaLoyalty/create-pull-request/patch-1721230720
Update locales
2024-07-17 18:51:03 +02:00
TheLastProject
83df2a3262 Update locales 2024-07-17 15:38:40 +00:00
Sylvia van Os
9dce540451 Merge pull request #2002 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-17 17:38:27 +02:00
Lugi
b8f683a335 Translated using Weblate (Serbian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2024-07-17 14:27:16 +02:00
Lugi
9781d9bbd9 Translated using Weblate (Serbian)
Currently translated at 93.3% (296 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2024-07-17 14:09:44 +02:00
Lugi
43f81c5368 Translated using Weblate (Serbian)
Currently translated at 93.0% (295 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sr/
2024-07-17 14:09:43 +02:00
Zero
c702d1523c Translated using Weblate (Czech)
Currently translated at 98.5% (133 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-07-17 14:09:42 +02:00
solokot
4def250361 Translated using Weblate (Russian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-07-17 14:09:41 +02:00
Zero
c34455db3c Translated using Weblate (Czech)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-07-17 14:09:40 +02:00
Sylvia van Os
e252d80de9 Merge pull request #2001 from CatimaLoyalty/create-pull-request/patch-1721143752
Update locales
2024-07-16 18:22:49 +02:00
TheLastProject
60cf1dbf23 Update locales 2024-07-16 15:29:12 +00:00
Sylvia van Os
5839a6b2c5 Merge pull request #2000 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-16 17:29:00 +02:00
Lugi
c0da6a3176 Added translation using Weblate (Serbian) 2024-07-16 12:01:51 +00:00
Jose Delvani
85d5316d1f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-07-16 12:01:51 +00:00
Oğuz Ersen
cb9493eb6e Translated using Weblate (Turkish)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-07-16 12:01:50 +00:00
109247019824
cfb473df8c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-07-16 12:01:50 +00:00
大王叫我来巡山
2ff395f5ef Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-07-16 12:01:49 +00:00
Renko
73fa270fce Translated using Weblate (Romanian)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-16 12:01:49 +00:00
gallegonovato
552d49ea7b Translated using Weblate (Spanish)
Currently translated at 100.0% (317 of 317 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-07-16 12:01:48 +00:00
Sylvia van Os
f1f6dea5e7 Merge pull request #1999 from CatimaLoyalty/create-pull-request/patch-1721069315
Update Fastlane changelogs
2024-07-15 20:51:17 +02:00
TheLastProject
a677b004b3 Update Fastlane changelogs 2024-07-15 18:48:35 +00:00
Sylvia van Os
fd34f59ff9 Update CHANGELOG 2024-07-15 20:48:20 +02:00
Sylvia van Os
0c09707744 Merge pull request #1998 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-15 18:02:24 +02:00
ssantos
142da5b0b6 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-07-15 14:09:49 +02:00
109247019824
80b72c1984 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-07-15 14:09:49 +02:00
Sylvia van Os
e9f87684af Merge pull request #1997 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.1.1
Bump actions/setup-python from 5.1.0 to 5.1.1
2024-07-15 08:23:08 +02:00
dependabot[bot]
5fb2f546b0 Bump actions/setup-python from 5.1.0 to 5.1.1
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-15 02:37:47 +00:00
Sylvia van Os
c234444026 Merge pull request #1996 from CatimaLoyalty/create-pull-request/patch-1720930686
Update contributors
2024-07-14 09:23:54 +02:00
TheLastProject
eda9dfaa10 Update contributors 2024-07-14 04:18:06 +00:00
Sylvia van Os
4f13827ae0 Merge pull request #1934 from CatimaLoyalty/feature/1675
Support setting front or back image as thumbnail
2024-07-13 18:17:31 +02:00
Sylvia van Os
47b076b41d Support setting front or back image as thumbnail 2024-07-13 18:15:05 +02:00
Sylvia van Os
1e40241219 Merge pull request #1995 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-13 14:17:17 +02:00
Fqwe1
796f4c918d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-07-13 11:09:21 +00:00
solokot
ae6ce7f443 Translated using Weblate (Russian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-07-13 11:09:20 +00:00
Sylvia van Os
95189ce5ce Merge pull request #1994 from CatimaLoyalty/create-pull-request/patch-1720765275
Update Gradle to 8.9
2024-07-12 19:09:51 +02:00
TheLastProject
8de78406d5 Update Gradle to 8.9 2024-07-12 06:21:15 +00:00
Sylvia van Os
ea253313d5 Merge pull request #1993 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-12 07:09:46 +02:00
Sylvia van Os
c3413c4340 Merge pull request #1991 from CatimaLoyalty/dependabot/gradle/com.android.application-8.5.1
Bump com.android.application from 8.5.0 to 8.5.1
2024-07-12 07:08:34 +02:00
Leo
d22e6ca984 Translated using Weblate (French)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-07-12 03:24:13 +00:00
dependabot[bot]
9b8ab86219 Bump com.android.application from 8.5.0 to 8.5.1
Bumps com.android.application from 8.5.0 to 8.5.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-12 02:31:50 +00:00
Sylvia van Os
8a9c603725 Merge pull request #1990 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-11 18:57:36 +02:00
ssantos
8f4da1b601 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-07-11 16:09:31 +00:00
yazan abu alenain
ce917be59d Translated using Weblate (Arabic)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-07-11 16:09:31 +00:00
Sylvia van Os
1b1d8788df Translated using Weblate (Romanian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-11 16:09:30 +00:00
Jan Novotny
c126bff23c Translated using Weblate (Czech)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-07-11 16:09:29 +00:00
Renko
64355e0ddc Translated using Weblate (Romanian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-10 16:09:23 +02:00
Diego Beraldin
510b7a0e56 Translated using Weblate (Italian)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-07-10 16:09:22 +02:00
Sylvia van Os
12da47d34a Merge pull request #1988 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.13
Bump org.robolectric:robolectric from 4.12.2 to 4.13
2024-07-09 08:22:23 +02:00
dependabot[bot]
3dca6c1db2 Bump org.robolectric:robolectric from 4.12.2 to 4.13
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.12.2 to 4.13.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.12.2...robolectric-4.13)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-09 02:05:32 +00:00
Sylvia van Os
29aec92a7a Merge pull request #1987 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-08 19:45:36 +02:00
Oğuz Ersen
c373c1f9dd Translated using Weblate (Turkish)
Currently translated at 74.0% (100 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-07-08 19:10:35 +02:00
Sylvia van Os
cba7c77fa2 Merge pull request #1986 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-08 19:04:22 +02:00
Oğuz Ersen
80e3db0b2d Translated using Weblate (Turkish)
Currently translated at 73.3% (99 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-07-08 18:53:38 +02:00
Jose Delvani
4452336aa0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-07-08 18:53:38 +02:00
Scrambled777
d0710a16b6 Translated using Weblate (Hindi)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-07-08 18:53:37 +02:00
Oğuz Ersen
38f603cc0d Translated using Weblate (Turkish)
Currently translated at 72.5% (98 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-07-08 18:53:37 +02:00
Oğuz Ersen
5a6652c864 Translated using Weblate (Turkish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-07-08 18:53:37 +02:00
大王叫我来巡山
59ed3e3fba Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-07-08 18:53:37 +02:00
gallegonovato
870720ad4b Translated using Weblate (Spanish)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-07-08 18:53:37 +02:00
Kachelkaiser
7d7d5280c5 Translated using Weblate (German)
Currently translated at 100.0% (315 of 315 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-07-08 18:53:37 +02:00
Sylvia van Os
a93ee4bbff Merge pull request #1985 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.4
Bump actions/upload-artifact from 4.3.3 to 4.3.4
2024-07-08 07:05:12 +02:00
dependabot[bot]
d9b719103a Bump actions/upload-artifact from 4.3.3 to 4.3.4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.3...v4.3.4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-08 02:35:21 +00:00
Sylvia van Os
c65f488536 Merge pull request #1984 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-07 23:44:55 +02:00
Scrambled777
3c11817edb Translated using Weblate (Hindi)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-07-07 21:10:32 +00:00
solokot
8a5dac9c24 Translated using Weblate (Russian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-07-07 21:10:32 +00:00
Sylvia van Os
968729fbe6 Merge pull request #1983 from CatimaLoyalty/fix/importExportHacks
Fix/import export hacks
2024-07-07 20:00:24 +02:00
Sylvia van Os
8a8d5c65f2 Fix cancelling import/export by tapping away from dialog 2024-07-07 14:06:31 +02:00
Sylvia van Os
80e05a0392 Hack: Don't turn screen off in import/export activity to avoid background kills 2024-07-07 14:06:02 +02:00
Sylvia van Os
2374e998ee Merge pull request #1982 from CatimaLoyalty/create-pull-request/patch-1720325722
Update contributors
2024-07-07 12:09:42 +02:00
TheLastProject
48b6b83fba Update contributors 2024-07-07 04:15:22 +00:00
Sylvia van Os
6eac516d01 Merge pull request #1981 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-06 21:30:57 +02:00
大王叫我来巡山
f1d42ccc77 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (135 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-07-06 20:09:33 +02:00
Renko
68ebf3243f Translated using Weblate (Romanian)
Currently translated at 3.7% (5 of 135 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2024-07-06 20:09:33 +02:00
Renko
f8a93ed5f2 Translated using Weblate (Romanian)
Currently translated at 99.3% (311 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-07-06 20:09:32 +02:00
Sylvia van Os
ce14cd0447 Merge pull request #1976 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-05 17:54:24 +02:00
leccro
ee5ac2785d Translated using Weblate (Persian)
Currently translated at 15.6% (49 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fa/
2024-07-05 17:04:58 +02:00
Sylvia van Os
1c68bfea8d Merge pull request #1968 from CatimaLoyalty/create-pull-request/patch-1719862199
Update Fastlane changelogs
2024-07-01 21:30:24 +02:00
TheLastProject
a097264983 Update Fastlane changelogs 2024-07-01 19:29:59 +00:00
Sylvia van Os
19d5c1144e Merge pull request #1965 from CatimaLoyalty/fix/allow_multiline_store_name_if_needed
Allow store name thumbnails to span multiple lines
2024-07-01 21:29:46 +02:00
Sylvia van Os
c123dd5d42 Allow store name thumbnails to span multiple lines
Allowing spanning multiple lines helps in case the store name doesn't
fit on a single line. However, the store name should fit a single line
if possible because it looks better when the store name isn't split
among lines. Due to limitations in Android's autoSizeTextType system,
this needs a fairly ugly workaround.
2024-07-01 19:42:35 +02:00
Sylvia van Os
3fe0fec801 Merge pull request #1966 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-07-01 17:42:06 +02:00
109247019824
245ff6ade9 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-07-01 00:05:58 +02:00
Sylvia van Os
353cf1daad Merge pull request #1964 from CatimaLoyalty/create-pull-request/patch-1719720956
Update contributors
2024-06-30 10:13:43 +02:00
TheLastProject
2e5dbd5cc1 Update contributors 2024-06-30 04:15:56 +00:00
Sylvia van Os
7d6ce95998 Merge pull request #1963 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-30 00:23:31 +02:00
Jose Delvani
dca9816fbe Translated using Weblate (Portuguese (Brazil))
Currently translated at 2.2% (3 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_BR/
2024-06-29 22:36:07 +02:00
Sylvia van Os
a5eee0a3b1 Update README paths 2024-06-28 20:59:58 +02:00
Sylvia van Os
5d0b890de9 Merge pull request #1958 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-28 17:14:15 +02:00
Jose Delvani
7c6492965f Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-28 05:09:31 +02:00
Sylvia van Os
5f5280e2a6 Merge pull request #1957 from CatimaLoyalty/dependabot/gradle/androidx.test-core-1.6.1
Bump androidx.test:core from 1.6.0 to 1.6.1
2024-06-27 17:40:43 +02:00
dependabot[bot]
220d6cb993 Bump androidx.test:core from 1.6.0 to 1.6.1
Bumps androidx.test:core from 1.6.0 to 1.6.1.

---
updated-dependencies:
- dependency-name: androidx.test:core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-27 02:13:00 +00:00
Sylvia van Os
5f33807560 Merge pull request #1956 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-26 17:54:21 +02:00
Marian Turba
6d64a900f0 Translated using Weblate (Slovak)
Currently translated at 97.0% (130 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2024-06-26 15:09:57 +02:00
Allan Nordhøy
3550c2a9f7 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.8% (303 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-06-26 15:09:56 +02:00
Sylvia van Os
0bdda70761 Merge pull request #1955 from CatimaLoyalty/dependabot/gradle/androidx.test-core-1.6.0
Bump androidx.test:core from 1.5.0 to 1.6.0
2024-06-25 17:52:25 +02:00
dependabot[bot]
01debf1a09 Bump androidx.test:core from 1.5.0 to 1.6.0
Bumps androidx.test:core from 1.5.0 to 1.6.0.

---
updated-dependencies:
- dependency-name: androidx.test:core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-25 02:02:34 +00:00
Sylvia van Os
76df487661 Merge pull request #1953 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.1.0
Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0
2024-06-24 21:58:08 +02:00
dependabot[bot]
73a129b430 Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.5 to 6.1.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.5...v6.1.0)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 02:09:21 +00:00
Sylvia van Os
71afba8ab9 Merge pull request #1951 from CatimaLoyalty/create-pull-request/patch-1719116160
Update contributors
2024-06-23 13:58:06 +02:00
TheLastProject
c0b01fca35 Update contributors 2024-06-23 04:16:00 +00:00
Sylvia van Os
7158de8b81 Merge pull request #1950 from CatimaLoyalty/create-pull-request/patch-1719066500
Update feature graphic
2024-06-22 16:39:03 +02:00
TheLastProject
c1afefb712 Update feature graphic 2024-06-22 14:28:19 +00:00
Sylvia van Os
d924029a5a Merge pull request #1946 from CatimaLoyalty/fix/featuregraphic_generation
Fix kn-IN feature graphic generation
2024-06-22 16:27:19 +02:00
Sylvia van Os
f5d104fa68 Fix kn-IN feature graphic generation 2024-06-22 16:25:33 +02:00
Sylvia van Os
1c0c1c6efc Merge pull request #1941 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-21 21:28:13 +02:00
Sylvia van Os
4d4e449150 Update fastlane 2024-06-20 17:13:09 +02:00
Krisna A. Prayoga
900f92cbd6 Translated using Weblate (Indonesian)
Currently translated at 97.0% (130 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2024-06-19 17:09:45 +00:00
Krisna A. Prayoga
48aab74737 Translated using Weblate (Indonesian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-06-19 17:09:44 +00:00
しいたけ
427aa039d6 Translated using Weblate (Japanese)
Currently translated at 3.7% (5 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ja/
2024-06-19 17:09:43 +00:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
91909e2ce3 Translated using Weblate (Greek)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-06-19 17:09:42 +00:00
Sylvia van Os
967f20edc7 Add missing date to changelog 2024-06-19 18:51:24 +02:00
Sylvia van Os
61d2e9545e Release Catima 2.30.0 2024-06-18 18:01:49 +02:00
Sylvia van Os
b1ea40abeb Merge pull request #1938 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-18 18:00:49 +02:00
Jose Delvani
b898be199c Translated using Weblate (Portuguese (Brazil))
Currently translated at 2.2% (3 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_BR/
2024-06-18 06:09:26 +02:00
Jose Delvani
e82b61ed7e Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/pt_BR/
2024-06-18 06:09:25 +02:00
Jose Delvani
31aef55343 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-18 06:09:24 +02:00
Sylvia van Os
3da7797ecc Merge pull request #1935 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.7
Bump actions/checkout from 4.1.6 to 4.1.7
2024-06-17 07:26:29 +02:00
Sylvia van Os
b677a34942 Merge pull request #1937 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-17 07:24:32 +02:00
Jose Delvani
8275a0da69 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-17 05:47:41 +02:00
Jose Delvani
cc86506868 Added translation using Weblate (Portuguese (Brazil)) 2024-06-17 05:47:41 +02:00
dependabot[bot]
83ee75dc55 Bump actions/checkout from 4.1.6 to 4.1.7
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.6...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-17 02:25:13 +00:00
Sylvia van Os
a8d92c1e69 Merge pull request #1932 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-16 10:34:05 +02:00
Bruno Fernandes
ccf98f9b32 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.4% (308 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-16 07:22:42 +00:00
Jose Delvani
6c17498481 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.4% (308 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-16 07:22:41 +00:00
Sylvia van Os
ce9794f72f Merge pull request #1931 from CatimaLoyalty/create-pull-request/patch-1718511342
Update contributors
2024-06-16 09:13:17 +02:00
TheLastProject
a48ddeef7f Update contributors 2024-06-16 04:15:41 +00:00
Sylvia van Os
864298cee8 Merge pull request #1928 from CatimaLoyalty/create-pull-request/patch-1718441664
Update locales
2024-06-15 11:08:09 +02:00
TheLastProject
63b48685a6 Update locales 2024-06-15 08:54:23 +00:00
Sylvia van Os
37d4c2c552 Merge pull request #1927 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-15 10:54:09 +02:00
Bruno Fernandes
0515f7876b Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.8% (303 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-14 22:09:59 +02:00
grgergo
9e801f0f1c Translated using Weblate (Hungarian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-06-14 22:09:58 +02:00
IllusiveMan196
c7a8d6ddae Translated using Weblate (Ukrainian)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-06-14 22:09:58 +02:00
Kachelkaiser
0f828b5663 Translated using Weblate (German)
Currently translated at 94.0% (126 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-06-14 22:09:57 +02:00
IllusiveMan196
3f28a69d7d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-06-14 22:09:56 +02:00
Cosmin Humeniuc
8980d92263 Translated using Weblate (Romanian)
Currently translated at 99.0% (310 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-06-14 22:09:56 +02:00
Francisco Gabriel Chardin
dd7512cc62 Translated using Weblate (Spanish (Argentina))
Currently translated at 74.1% (232 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es_AR/
2024-06-14 22:09:55 +02:00
Kachelkaiser
3005f7d845 Translated using Weblate (German)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-06-14 22:09:55 +02:00
Sylvia van Os
cbbd90a884 Merge pull request #1926 from CatimaLoyalty/dependabot/gradle/com.android.application-8.5.0
Bump com.android.application from 8.4.2 to 8.5.0
2024-06-14 08:18:08 +02:00
dependabot[bot]
883803d348 Bump com.android.application from 8.4.2 to 8.5.0
Bumps com.android.application from 8.4.2 to 8.5.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-14 03:00:13 +00:00
Sylvia van Os
56b73ef7e2 Merge pull request #1925 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-13 20:24:01 +02:00
Martijn Westerink
b1c98d33e5 Translated using Weblate (Dutch)
Currently translated at 19.4% (26 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-06-13 19:08:13 +02:00
Martijn Westerink
4a4feea1be Translated using Weblate (Dutch)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-06-13 19:08:12 +02:00
Sylvia van Os
ea015b531a Merge pull request #1924 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-12 18:07:58 +02:00
Scrambled777
5b8c40dd8a Translated using Weblate (Hindi)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-06-12 01:04:25 +00:00
Scrambled777
4859499179 Translated using Weblate (Hindi)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-06-12 01:04:24 +00:00
grgergo
0e6cdbbb6b Translated using Weblate (Hungarian)
Currently translated at 99.6% (312 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-06-12 01:04:23 +00:00
Sylvia van Os
cc8c8ead2e Merge pull request #1922 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-11 18:44:04 +02:00
Sylvia van Os
2b6a4ef466 Merge pull request #1921 from CatimaLoyalty/dependabot/gradle/com.android.application-8.4.2
Bump com.android.application from 8.4.1 to 8.4.2
2024-06-11 18:42:55 +02:00
Wei-Cheng Yeh (IID)
a3b9d78463 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/zh_Hant/
2024-06-11 10:09:57 +02:00
ngocanhtve
7873d21644 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-06-11 10:09:56 +02:00
GrassWarlock
2ad1b08de2 Translated using Weblate (Arabic)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-06-11 10:09:55 +02:00
Wei-Cheng Yeh (IID)
4fae252d0a Translated using Weblate (Chinese (Traditional))
Currently translated at 6.7% (9 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2024-06-11 10:09:54 +02:00
Wei-Cheng Yeh (IID)
f89179da21 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-06-11 10:09:54 +02:00
GregoryWarn
b4e63f89ce Translated using Weblate (Italian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-06-11 10:09:53 +02:00
dependabot[bot]
ff872edc4b Bump com.android.application from 8.4.1 to 8.4.2
Bumps com.android.application from 8.4.1 to 8.4.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 02:22:30 +00:00
Sylvia van Os
013258d421 Merge pull request #1919 from CatimaLoyalty/create-pull-request/patch-1717928359
Update locales
2024-06-09 12:29:42 +02:00
TheLastProject
15575e4189 Update locales 2024-06-09 10:19:18 +00:00
Sylvia van Os
3c051cde95 Merge pull request #1918 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-09 12:19:03 +02:00
Hosted Weblate
5d2a173e22 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-06-09 10:10:13 +00:00
Sylvia van Os
a2032ab730 Translated using Weblate (Filipino)
Currently translated at 15.3% (48 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fil/
2024-06-09 10:10:12 +00:00
しいたけ
9e4d8b846c Translated using Weblate (Japanese)
Currently translated at 84.0% (263 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-06-09 10:10:12 +00:00
solokot
7e8dd2dc2e Translated using Weblate (Russian)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-06-09 10:10:11 +00:00
Mael
b73d0f1836 Translated using Weblate (French)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-06-09 10:10:11 +00:00
solokot
b478e54ec0 Translated using Weblate (Russian)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-06-09 10:10:10 +00:00
Sylvia van Os
cf8c6b8c24 Translated using Weblate (Hebrew (Israel))
Currently translated at 29.0% (91 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2024-06-09 10:10:09 +00:00
Mael
d64294284a Translated using Weblate (French)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-06-09 10:10:09 +00:00
Alik Majid
098468e6bd Translated using Weblate (Russian)
Currently translated at 99.3% (311 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-06-09 10:10:08 +00:00
SC
cebc87a197 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-06-09 10:10:07 +00:00
SC
0d3ceb0e61 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-06-09 10:10:07 +00:00
Oğuz Ersen
e017b07337 Translated using Weblate (Turkish)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-06-09 10:10:06 +00:00
大王叫我来巡山
c4ec81f22b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-06-09 10:10:05 +00:00
大王叫我来巡山
c597df056d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-06-09 10:10:05 +00:00
Wendell Nicolas
5517b418ac Translated using Weblate (Filipino)
Currently translated at 15.6% (49 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fil/
2024-06-09 10:10:04 +00:00
拉夫西奧·羅齊奧馬爾
81e7642bb8 Translated using Weblate (Polish)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-06-09 10:10:03 +00:00
Wendell Nicolas
17718d5349 Translated using Weblate (Hebrew (Israel))
Currently translated at 29.0% (91 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2024-06-09 10:10:03 +00:00
gallegonovato
f5ef97fa30 Translated using Weblate (Spanish)
Currently translated at 100.0% (313 of 313 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-06-09 10:10:02 +00:00
Wendell Nicolas
30c6657148 Added translation using Weblate (Filipino) 2024-06-09 10:10:01 +00:00
Sylvia van Os
2b173dc7f6 Merge pull request #1917 from CatimaLoyalty/create-pull-request/patch-1717906588
Update contributors
2024-06-09 11:00:17 +02:00
TheLastProject
cd48a28b5a Update contributors 2024-06-09 04:16:27 +00:00
Sylvia van Os
b7ad5f1f42 Merge pull request #1915 from CatimaLoyalty/create-pull-request/patch-1717619102
Update Fastlane changelogs
2024-06-05 22:25:39 +02:00
TheLastProject
9bf6795328 Update Fastlane changelogs 2024-06-05 20:25:01 +00:00
Sylvia van Os
4364189b3e Update CHANGELOG 2024-06-05 22:24:42 +02:00
Sylvia van Os
40676a365f Merge pull request #1912 from CatimaLoyalty/fix/1907
Support for devices without camera
2024-06-05 22:13:38 +02:00
Sylvia van Os
97314a0436 Rename camera permission denied layout to more logical generic error layout name 2024-06-05 20:07:52 +02:00
Sylvia van Os
d1b93018e3 Show generic zxing errors on the camera error screen 2024-06-05 20:07:46 +02:00
Sylvia van Os
a6b7b227f7 Support for devices without camera
This hides the take photo options for thumbnail and front/back image and
shows a different alert if no camera is available
2024-06-04 18:18:29 +02:00
Sylvia van Os
1c6a5454b8 Merge pull request #1913 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-03 18:55:37 +02:00
Marian Turba
06745becd7 Translated using Weblate (Slovak)
Currently translated at 95.5% (128 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2024-06-03 11:09:59 +02:00
solokot
c172a12956 Translated using Weblate (Russian)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-06-03 11:09:59 +02:00
Marian Turba
c6f18fb7b2 Translated using Weblate (Slovak)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-06-03 11:09:58 +02:00
min7-i
dc3fabbbb9 Translated using Weblate (German)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-06-03 11:09:58 +02:00
Sylvia van Os
905402ebab Merge pull request #1911 from CatimaLoyalty/create-pull-request/patch-1717222760
Update Gradle to 8.8
2024-06-01 09:52:10 +02:00
Sylvia van Os
fbed0d7857 Merge pull request #1910 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-06-01 09:48:00 +02:00
TheLastProject
cc74395297 Update Gradle to 8.8 2024-06-01 06:19:20 +00:00
HackerSinhos
560c55d5db Translated using Weblate (Portuguese (Brazil))
Currently translated at 32.0% (100 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-06-01 05:10:42 +00:00
Sylvia van Os
a45c972a38 Merge pull request #1908 from CatimaLoyalty/dependabot/gradle/androidx.appcompat-appcompat-1.7.0
Bump androidx.appcompat:appcompat from 1.6.1 to 1.7.0
2024-05-31 17:40:00 +02:00
dependabot[bot]
51c1af5ad9 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] <support@github.com>
2024-05-30 02:11:34 +00:00
Sylvia van Os
d537164799 Merge pull request #1906 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-27 19:40:12 +02:00
hugoalh
012910268b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-05-27 14:09:37 +02:00
tabby
74d9068925 Translated using Weblate (Korean)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ko/
2024-05-27 14:09:36 +02:00
Allan Nordhøy
5d68f558a1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.7% (302 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-05-27 14:09:35 +02:00
Sylvia van Os
2164c1a51a Merge pull request #1904 from CatimaLoyalty/create-pull-request/patch-1716696873
Update contributors
2024-05-26 11:27:55 +02:00
TheLastProject
5f180fc289 Update contributors 2024-05-26 04:14:33 +00:00
Sylvia van Os
5be44d9bd2 Merge pull request #1903 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-25 14:41:31 +02:00
Asmodeus
54c9857072 Translated using Weblate (Portuguese (Brazil))
Currently translated at 20.8% (65 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_BR/
2024-05-25 14:09:48 +02:00
Scrambled777
c48ac797f6 Translated using Weblate (Hindi)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-05-25 14:09:47 +02:00
大王叫我来巡山
9180d22629 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-05-25 14:09:47 +02:00
Sylvia van Os
aa0274534c Merge pull request #1902 from obfusk/fix-new-locales-script
new-locales.py: fix weblate pagination
2024-05-24 21:36:24 +02:00
FC (Fay) Stegerman
c97b37f279 run new-locales.py 2024-05-24 21:03:06 +02:00
FC (Fay) Stegerman
14c12533a7 new-locales.py: fix weblate pagination 2024-05-24 21:01:42 +02:00
Sylvia van Os
39f50bad30 Merge pull request #1901 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-24 18:16:32 +02:00
Asmodeus
014061d0a4 Added translation using Weblate (Portuguese (Brazil)) 2024-05-24 13:14:19 +02:00
Sylvia van Os
76c498a7f9 Merge pull request #1899 from CatimaLoyalty/create-pull-request/patch-1716394569
Update Fastlane changelogs
2024-05-22 18:17:23 +02:00
TheLastProject
fa9229c687 Update Fastlane changelogs 2024-05-22 16:16:09 +00:00
Sylvia van Os
182e7ef9a6 Merge pull request #1897 from CatimaLoyalty/fix/threadedImportExport
Run Import/Export on non-UI thread
2024-05-22 18:15:54 +02:00
Sylvia van Os
08e6600880 Lower severity of import/export starting log entries to debug
Co-authored-by: FC (Fay) Stegerman <flx@obfusk.net>
2024-05-22 18:08:37 +02:00
Sylvia van Os
edeb95aee0 Run Import/Export on non-UI thread
This seems to fix Android sometimes throwing
NetworkOnMainThreadException when importing bit files through the
Nextcloud app.

I'm not sure if this is necessary for the export too, but it doesn't
seem to break anything so for consistency it makes sense to also wrap
the exporter into a thread.

This change is suboptimal because it will still block the UI with a
ProgressDialog (which is deprecated) and force the user to wait until
the import/export completes (and will kill the import/export if the app
gets backgrounded) but it should at least fix the most common crash for
most users.
2024-05-21 21:04:25 +02:00
Sylvia van Os
4b1d1f4541 Merge pull request #1896 from CatimaLoyalty/dependabot/gradle/com.android.application-8.4.1
Bump com.android.application from 8.4.0 to 8.4.1
2024-05-21 08:25:15 +02:00
dependabot[bot]
801d3fa8cd ---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 02:19:26 +00:00
Sylvia van Os
d15a46fc6f Fix typo 2024-05-20 20:04:01 +02:00
Sylvia van Os
7f46a267b6 Merge pull request #1895 from CatimaLoyalty/create-pull-request/patch-1716220734
Update Fastlane changelogs
2024-05-20 18:12:04 +02:00
TheLastProject
195cb8d5ee Update Fastlane changelogs 2024-05-20 15:58:53 +00:00
Sylvia van Os
7454a965bc Update CHANGELOG 2024-05-20 17:58:40 +02:00
Sylvia van Os
9ef988c259 Merge pull request #1894 from CatimaLoyalty/feature/showImageTypeInCardIdVield
Show image type on view screen when not viewing barcode
2024-05-20 17:54:09 +02:00
Sylvia van Os
7a2ff0995f Show image type on view screen when not viewing barcode 2024-05-20 17:47:19 +02:00
Sylvia van Os
9b65d3926b Merge pull request #1893 from CatimaLoyalty/create-pull-request/patch-1716210906
Update Fastlane changelogs
2024-05-20 15:20:35 +02:00
TheLastProject
06b3536079 Update Fastlane changelogs 2024-05-20 13:15:06 +00:00
Sylvia van Os
315396fd42 Merge pull request #1892 from CatimaLoyalty/feature/1860
Support for creating a card from shared text
2024-05-20 15:14:53 +02:00
Sylvia van Os
b90c43f667 Support for creating a card from shared text 2024-05-20 14:53:10 +02:00
Aglag257
6d97a29e9c Fix describeContents() in LoyaltyCard Class (#1887) 2024-05-20 13:19:13 +02:00
Sylvia van Os
7f0e2acab9 Merge pull request #1891 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.12.2
Bump org.robolectric:robolectric from 4.12.1 to 4.12.2
2024-05-20 11:52:00 +02:00
Sylvia van Os
be35886c92 Merge pull request #1890 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.6
Bump actions/checkout from 4.1.5 to 4.1.6
2024-05-20 11:51:23 +02:00
dependabot[bot]
73ad9c5365 Bump org.robolectric:robolectric from 4.12.1 to 4.12.2
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.12.1 to 4.12.2.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.12.1...robolectric-4.12.2)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 02:34:37 +00:00
dependabot[bot]
818751ffad Bump actions/checkout from 4.1.5 to 4.1.6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.5...v4.1.6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 02:12:05 +00:00
Sylvia van Os
d5856e7974 Release Catima 2.29.1 2024-05-19 10:53:43 +02:00
Sylvia van Os
2caf3d42f4 Update fastlane 2024-05-18 10:18:33 +02:00
Sylvia van Os
e766743baa Merge pull request #1885 from CatimaLoyalty/fix/properSeparatorFix
Properly fix decimal separator detection logic
2024-05-14 17:06:20 +02:00
Sylvia van Os
facb23f0a5 Properly fix decimal separator detection logic 2024-05-13 21:17:13 +02:00
Sylvia van Os
a2dff0e6bf Merge pull request #1884 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.5
Bump actions/checkout from 4.1.4 to 4.1.5
2024-05-13 18:42:40 +02:00
dependabot[bot]
60c53ec1d1 Bump actions/checkout from 4.1.4 to 4.1.5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.4...v4.1.5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 02:55:49 +00:00
Sylvia van Os
e3c903f773 Merge pull request #1883 from CatimaLoyalty/create-pull-request/patch-1715516406
Update Fastlane changelogs
2024-05-12 15:05:00 +02:00
TheLastProject
955764aa18 Update Fastlane changelogs 2024-05-12 12:20:06 +00:00
Sylvia van Os
ed22aa844f Document balance handling improvements 2024-05-12 14:19:36 +02:00
Sylvia van Os
6b8fc50021 Merge pull request #1878 from CatimaLoyalty/feature/acceptBothSeparators
Disable currency grouping and accept thousand separator as decimal separator
2024-05-12 14:17:58 +02:00
Sylvia van Os
1aed5c36b1 Merge pull request #1882 from CatimaLoyalty/create-pull-request/patch-1715487330
Update contributors
2024-05-12 10:33:39 +02:00
TheLastProject
4690f53be7 Update contributors 2024-05-12 04:15:30 +00:00
Sylvia van Os
29a22926aa Merge pull request #1879 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-10 23:31:27 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
a4da8144c3 Translated using Weblate (Greek)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-05-10 23:24:06 +02:00
Sylvia van Os
84bfa304c4 Disable currency grouping and accept thousand separator as decimal separator 2024-05-10 20:01:39 +02:00
Sylvia van Os
72749015dd Merge pull request #1877 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-09 21:57:52 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
ae5d656a64 Translated using Weblate (Greek)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/el/
2024-05-07 16:07:57 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
d8f2cde9de Translated using Weblate (Greek)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-05-07 16:07:57 +02:00
Sylvia van Os
935a4ae46e Merge pull request #1874 from CatimaLoyalty/create-pull-request/patch-1714882546
Update contributors
2024-05-05 10:37:59 +02:00
TheLastProject
ffecec9cba Update contributors 2024-05-05 04:15:45 +00:00
Sylvia van Os
734845eff0 Merge pull request #1871 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-03 17:03:36 +02:00
Sébastien Delord
bd6b18eea2 Translated using Weblate (French)
Currently translated at 98.4% (130 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-05-03 09:43:43 +02:00
Sylvia van Os
6473bfe84e Merge pull request #1868 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-05-03 08:26:25 +02:00
Sylvia van Os
66fff2d3d9 Merge pull request #1870 from CatimaLoyalty/dependabot/gradle/com.google.android.material-material-1.12.0
Bump com.google.android.material:material from 1.11.0 to 1.12.0
2024-05-03 08:20:50 +02:00
dependabot[bot]
ef1b470f0a 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] <support@github.com>
2024-05-03 02:49:31 +00:00
Milo Ivir
b087d49530 Translated using Weblate (Croatian)
Currently translated at 100.0% (312 of 312 strings)

Co-authored-by: Milo Ivir <mail@milotype.de>
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
Translation: Catima/Android
2024-05-03 02:09:26 +02:00
Sylvia van Os
cd46cd3f8d Merge pull request #1866 from CatimaLoyalty/dependabot/gradle/com.android.application-8.4.0
Bump com.android.application from 8.3.2 to 8.4.0
2024-05-01 18:38:37 +02:00
dependabot[bot]
c44133942a Bump com.android.application from 8.3.2 to 8.4.0
Bumps com.android.application from 8.3.2 to 8.4.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 02:24:02 +00:00
Sylvia van Os
24e40f41a5 Merge pull request #1865 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.4
Bump actions/checkout from 4.1.3 to 4.1.4
2024-04-29 19:22:01 +02:00
Sylvia van Os
43b90587a5 Merge pull request #1864 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.3
Bump actions/upload-artifact from 4.3.2 to 4.3.3
2024-04-29 19:02:36 +02:00
Sylvia van Os
f5b2516492 Merge pull request #1863 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.0.5
Bump peter-evans/create-pull-request from 6.0.4 to 6.0.5
2024-04-29 19:02:11 +02:00
dependabot[bot]
5bec40eb59 Bump actions/checkout from 4.1.3 to 4.1.4
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.3...v4.1.4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 02:12:58 +00:00
dependabot[bot]
6b1cccfdf8 Bump actions/upload-artifact from 4.3.2 to 4.3.3
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.2...v4.3.3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 02:12:56 +00:00
dependabot[bot]
ddf28d7542 Bump peter-evans/create-pull-request from 6.0.4 to 6.0.5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.4 to 6.0.5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.4...v6.0.5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 02:12:53 +00:00
Sylvia van Os
9cf69a3128 Merge pull request #1862 from CatimaLoyalty/create-pull-request/patch-1714277679
Update contributors
2024-04-28 10:22:11 +02:00
Sylvia van Os
8dc62def08 Merge pull request #1861 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-28 10:21:09 +02:00
TheLastProject
ac8b898ccc Update contributors 2024-04-28 04:14:39 +00:00
Young
97e675e476 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.0% (306 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-04-28 04:07:18 +02:00
Sylvia van Os
4b488ce1f7 Merge pull request #1859 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-25 17:37:57 +02:00
solokot
7f5fe8831a Translated using Weblate (Russian)
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-04-25 01:07:38 +02:00
Jesus Aguilar-Andrade
f7ff63301b Translated using Weblate (Spanish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-04-25 01:07:37 +02:00
simosathan9
9bb1602370 Fix balance unexpected rounding and app crashing issue (#1838)
Co-authored-by:  Colette Kerr <colette.m.y.kerr@gmail.com>
2024-04-24 21:41:22 +02:00
Sylvia van Os
40da1d2e16 Merge pull request #1855 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-24 18:37:33 +02:00
Jesus Aguilar-Andrade
8dd61d026c Translated using Weblate (Spanish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-04-24 00:15:47 +02:00
Sylvia van Os
4d0464f729 Merge pull request #1852 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-22 21:32:33 +02:00
vesp
e0f1410c8b Translated using Weblate (Czech)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-04-22 21:07:18 +02:00
Sylvia van Os
2bf7698961 Merge pull request #1847 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.2
Bump actions/upload-artifact from 4.3.1 to 4.3.2
2024-04-22 18:30:47 +02:00
Sylvia van Os
0654a2baef Merge pull request #1846 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.3
Bump actions/checkout from 4.1.1 to 4.1.3
2024-04-22 18:29:56 +02:00
Sylvia van Os
0e785b2ccf Merge pull request #1845 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.0.4
Bump peter-evans/create-pull-request from 6.0.3 to 6.0.4
2024-04-22 18:28:35 +02:00
dependabot[bot]
46088a48f9 Bump actions/upload-artifact from 4.3.1 to 4.3.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.1...v4.3.2)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 02:40:35 +00:00
dependabot[bot]
82acaef96f Bump actions/checkout from 4.1.1 to 4.1.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.1...v4.1.3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 02:40:32 +00:00
dependabot[bot]
8556f4d586 Bump peter-evans/create-pull-request from 6.0.3 to 6.0.4
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.3 to 6.0.4.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.3...v6.0.4)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-22 02:40:29 +00:00
Sylvia van Os
e8308b1069 Merge branch 'main' of github.com:CatimaLoyalty/Android 2024-04-21 12:31:52 +02:00
Sylvia van Os
6516d18cc2 Remove F-Droid buttons
IzzyOnDroid is the recommended source for Catima updates
2024-04-21 12:30:35 +02:00
Sylvia van Os
6dd0105908 Merge pull request #1843 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-21 09:54:37 +02:00
Sylvia van Os
3e27b931b5 Merge pull request #1844 from CatimaLoyalty/create-pull-request/patch-1713672853
Update contributors
2024-04-21 09:53:27 +02:00
TheLastProject
73046e56e5 Update contributors 2024-04-21 04:14:13 +00:00
Nicoara Alex
84c350af90 Translated using Weblate (Romanian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-04-21 04:07:20 +02:00
Sylvia van Os
30bd8d810f Update fastlane 2024-04-20 18:40:48 +02:00
Sylvia van Os
d67b17c58a Release Catima 2.29.0 2024-04-19 18:48:09 +02:00
Sylvia van Os
5033fbba50 Merge pull request #1840 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-19 18:46:39 +02:00
Heimen Stoffels
5e752ecfb4 Translated using Weblate (Dutch)
Currently translated at 13.6% (18 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-04-19 18:39:00 +02:00
Heimen Stoffels
e976bf3ef6 Translated using Weblate (Dutch)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-04-19 18:38:59 +02:00
Sylvia van Os
24ae8d3c4c Merge pull request #1839 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-18 21:04:05 +02:00
LEGEND OG (LEGEND)
26fb9482aa Translated using Weblate (Arabic)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ar/
2024-04-18 20:03:24 +02:00
LEGEND OG (LEGEND)
1a3019b94f Translated using Weblate (Arabic)
Currently translated at 7.5% (10 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ar/
2024-04-18 20:03:24 +02:00
LEGEND OG (LEGEND)
67136b708f Translated using Weblate (Arabic)
Currently translated at 99.6% (311 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-04-18 20:03:24 +02:00
Eji-san
07990cea6f Translated using Weblate (Indonesian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-04-18 20:03:24 +02:00
syntheticbonus
a92895f96e Translated using Weblate (Dutch)
Currently translated at 99.6% (311 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-04-18 20:03:23 +02:00
Aglag257
861df94e69 Translated using Weblate (Greek)
Currently translated at 98.7% (308 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-04-18 20:03:23 +02:00
Sylvia van Os
5efd18dac7 Merge pull request #1836 from CatimaLoyalty/dependabot/gradle/com.github.yalantis-ucrop-2.2.9
Bump com.github.yalantis:ucrop from 2.2.8 to 2.2.9
2024-04-17 19:56:15 +02:00
Sylvia van Os
77fcc8cd7e Merge pull request #1837 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-17 18:09:45 +02:00
tabby
b5e53eb076 Translated using Weblate (Korean)
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ko/
2024-04-17 11:03:50 +02:00
tabby
39fe0a17b8 Translated using Weblate (Korean)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2024-04-17 11:03:50 +02:00
solokot
524278a94c Translated using Weblate (Russian)
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-04-17 11:03:50 +02:00
dependabot[bot]
8d3f36d62c Bump com.github.yalantis:ucrop from 2.2.8 to 2.2.9
Bumps [com.github.yalantis:ucrop](https://github.com/Yalantis/uCrop) from 2.2.8 to 2.2.9.
- [Release notes](https://github.com/Yalantis/uCrop/releases)
- [Commits](https://github.com/Yalantis/uCrop/compare/2.2.8...2.2.9)

---
updated-dependencies:
- dependency-name: com.github.yalantis:ucrop
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-17 02:06:36 +00:00
Sylvia van Os
459b318fdf Merge pull request #1835 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-16 17:30:56 +02:00
Andre Costa
68e7930835 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-04-16 10:02:02 +02:00
Scrambled777
947b3f79be Translated using Weblate (Hindi)
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-04-16 10:02:01 +02:00
Rodolphe Veniel
8070e5564b Translated using Weblate (French)
Currently translated at 97.7% (129 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2024-04-16 10:02:00 +02:00
simosathan9
443a67581e Translated using Weblate (Greek)
Currently translated at 91.6% (286 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-04-16 10:01:59 +02:00
Sylvia van Os
60aaff9f38 Merge pull request #1834 from CatimaLoyalty/dependabot/github_actions/gradle/wrapper-validation-action-3
Bump gradle/wrapper-validation-action from 2 to 3
2024-04-15 20:27:58 +02:00
Sylvia van Os
0464e3dbfe Migrate to new location 2024-04-15 19:05:55 +02:00
Sylvia van Os
6f892e5174 Merge pull request #1831 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-15 17:10:56 +02:00
大王叫我来巡山
187cbb7d67 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-04-15 09:23:02 +02:00
Hendrik
b114b6da81 Translated using Weblate (German)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-04-15 09:23:02 +02:00
dependabot[bot]
1228d55fcb Bump gradle/wrapper-validation-action from 2 to 3
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 2 to 3.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 05:01:40 +00:00
Sylvia van Os
b5c17c9776 Merge pull request #1833 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.0.3
Bump peter-evans/create-pull-request from 6.0.2 to 6.0.3
2024-04-15 07:01:04 +02:00
dependabot[bot]
27ee52b5c0 Bump peter-evans/create-pull-request from 6.0.2 to 6.0.3
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.2...v6.0.3)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 02:07:53 +00:00
Sylvia van Os
ccbbd2555a Merge pull request #1830 from CatimaLoyalty/create-pull-request/patch-1713069410
Update contributors
2024-04-14 10:12:59 +02:00
TheLastProject
d78b7b2fee Update contributors 2024-04-14 04:36:49 +00:00
Sylvia van Os
047639a36e Merge pull request #1829 from CatimaLoyalty/screenshotUpdate
Update screenshots
2024-04-13 18:41:09 +02:00
Sylvia van Os
86b5007ba5 Update screenshots 2024-04-13 18:34:40 +02:00
Sylvia van Os
4879aab701 Merge pull request #1828 from CatimaLoyalty/create-pull-request/patch-1712939446
Update Fastlane changelogs
2024-04-12 18:31:58 +02:00
TheLastProject
da49b651b8 Update Fastlane changelogs 2024-04-12 16:30:45 +00:00
Sylvia van Os
c2e9c0eebc Update CHANGELOG 2024-04-12 18:30:30 +02:00
fynngodau
9ed6bc921d Draw app bar under status bar (#1817)
* Draw app bar under status bar

* Add tint-on-scroll effect to more activites

One remaining problem is the `ListView` in
`barcode_selector_activity.xml`. While it would theoretically be
sufficient to set
`app:layout_behavior="@string/appbar_scrolling_view_behavior"` on
`ListView` if `android:nestedScrollingEnabled="true"` is also set, this
leads to odd visual glitches.

* Appropriate color for tab bar

* Fix remaining tab bar coloring

Remove unused tab group from group activity
2024-04-12 17:22:35 +02:00
Sylvia van Os
d78ecf17e2 Merge pull request #1826 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-11 20:52:34 +02:00
gallegonovato
8aeddf1141 Translated using Weblate (Spanish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-04-11 16:01:52 +02:00
Sylvia van Os
31924276d3 Merge pull request #1819 from fynngodau/about-layout
Improve About layout
2024-04-10 17:18:07 +02:00
Sylvia van Os
3321b11e2a Merge pull request #1821 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-10 08:10:42 +02:00
Sylvia van Os
920379c5af Merge pull request #1822 from CatimaLoyalty/dependabot/gradle/com.android.application-8.3.2
Bump com.android.application from 8.3.1 to 8.3.2
2024-04-10 07:40:23 +02:00
dependabot[bot]
598a4345f0 Bump com.android.application from 8.3.1 to 8.3.2
Bumps com.android.application from 8.3.1 to 8.3.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-10 02:24:46 +00:00
109247019824
ff8013ed44 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-04-10 02:02:09 +02:00
Lionel HANNEQUIN
20b69b4286 Translated using Weblate (French)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-04-10 02:02:09 +02:00
Sylvia van Os
60165bad5c Merge pull request #1820 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-08 23:11:57 +02:00
Balanda Nazarii
149f7ff106 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-04-08 23:01:56 +02:00
Julia Deoniziak
ac699a1c76 Translated using Weblate (Polish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-04-08 23:01:56 +02:00
Fynn Godau
a43c480e0c Improve layout of about screen
* Selectable item ripple background for each row
* Center Donate text in its row
* Don't clip too low when scrolling
2024-04-07 22:48:04 +02:00
Sylvia van Os
6eda7791c6 Merge pull request #1818 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-07 21:16:29 +02:00
Jiri Grönroos
7dc0bf027a Translated using Weblate (Finnish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-04-07 21:01:58 +02:00
solokot
c218518805 Translated using Weblate (Russian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-04-07 21:01:58 +02:00
Sylvia van Os
0505c51ee8 Merge pull request #1816 from CatimaLoyalty/create-pull-request/patch-1712463357
Update contributors
2024-04-07 09:32:59 +02:00
TheLastProject
f29da33bcf Update contributors 2024-04-07 04:15:57 +00:00
Sylvia van Os
5f8e3069b3 Merge pull request #1815 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-07 00:26:16 +02:00
solokot
8d7abddace Translated using Weblate (Russian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-04-06 20:42:21 +02:00
Evgeniy Khramov
39fe61f57e Translated using Weblate (Russian)
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-04-06 20:42:21 +02:00
Mika
176f7a0cc8 Translated using Weblate (Russian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-04-06 20:42:21 +02:00
Sylvia van Os
e9ec9889d4 Merge pull request #1814 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-06 09:55:45 +02:00
Andre Costa
0a161bdf55 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-04-06 07:02:14 +02:00
Andre Costa
e817f190b6 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-04-06 07:02:14 +02:00
phat dang thanh
f88a96cd4f Translated using Weblate (Vietnamese)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-04-06 07:02:13 +02:00
Scrambled777
7cf47935e0 Translated using Weblate (Hindi)
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-04-06 07:02:13 +02:00
Scrambled777
f2844003e8 Translated using Weblate (Hindi)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-04-06 07:02:12 +02:00
Oğuz Ersen
9702fd6ce5 Translated using Weblate (Turkish)
Currently translated at 73.4% (97 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-04-06 07:02:12 +02:00
Oğuz Ersen
577c3f2990 Translated using Weblate (Turkish)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-04-06 07:02:12 +02:00
大王叫我来巡山
bf9216168b Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (132 of 132 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-04-06 07:02:11 +02:00
大王叫我来巡山
95dc2f1235 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-04-06 07:02:11 +02:00
Giovanni Donisi
84503253d2 Translated using Weblate (Italian)
Currently translated at 100.0% (312 of 312 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-04-06 07:02:10 +02:00
Sylvia van Os
5fd48c6707 Merge pull request #1813 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-04-05 08:32:56 +02:00
Stefan Racic
335668c03a Translated using Weblate (Bosnian)
Currently translated at 45.9% (141 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bs/
2024-04-05 05:50:14 +02:00
Sylvia van Os
cba4b6856c Merge pull request #1811 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.12.1
Bump org.robolectric:robolectric from 4.12 to 4.12.1
2024-04-03 08:19:08 +02:00
dependabot[bot]
c345c6cdd1 Bump org.robolectric:robolectric from 4.12 to 4.12.1
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.12 to 4.12.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.12...robolectric-4.12.1)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 02:55:01 +00:00
Sylvia van Os
a1e214e657 Merge pull request #1810 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.1.0
Bump actions/setup-python from 5.0.0 to 5.1.0
2024-04-01 07:41:31 +02:00
Sylvia van Os
ff1654b3f7 Merge pull request #1809 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.12
Bump org.robolectric:robolectric from 4.11.1 to 4.12
2024-04-01 07:40:06 +02:00
dependabot[bot]
12e24abdd6 Bump actions/setup-python from 5.0.0 to 5.1.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 02:37:45 +00:00
dependabot[bot]
33a9d7fbcf Bump org.robolectric:robolectric from 4.11.1 to 4.12
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.11.1 to 4.12.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.11.1...robolectric-4.12)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 02:16:22 +00:00
Dimitrios Papathanasiou
bdff59e628 Minor cleanups in PDF barcode retrieval (#1807) 2024-03-31 12:08:21 +02:00
Sylvia van Os
c1ef5c346a Merge pull request #1808 from CatimaLoyalty/create-pull-request/patch-1711858517
Update contributors
2024-03-31 10:01:21 +02:00
TheLastProject
a573db1be9 Update contributors 2024-03-31 04:15:16 +00:00
Sylvia van Os
84e3e37a44 Merge pull request #1802 from CatimaLoyalty/create-pull-request/patch-1711486318
Update Fastlane changelogs
2024-03-26 22:38:26 +01:00
TheLastProject
f5724dfca0 Update Fastlane changelogs 2024-03-26 20:51:58 +00:00
Sylvia van Os
f848710afa Merge pull request #1795 from CatimaLoyalty/pdfImport
PDF import + multiple barcode support
2024-03-26 21:51:44 +01:00
Sylvia van Os
1e0dc4f541 Merge pull request #1799 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-26 08:45:47 +01:00
Viet Nguyem
470bbf4261 Translated using Weblate (Vietnamese)
Currently translated at 11.4% (15 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-03-26 07:02:08 +01:00
Sylvia van Os
8519e12aa7 Add page number to barcode selector for PDF scan results 2024-03-24 20:31:03 +01:00
Sylvia van Os
026bfaf7a9 Merge pull request #1798 from CatimaLoyalty/create-pull-request/patch-1711274306
Update locales
2024-03-24 11:30:07 +01:00
TheLastProject
4d4e76960f Update locales 2024-03-24 09:58:25 +00:00
Sylvia van Os
3637c37cca Merge pull request #1797 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-24 10:58:14 +01:00
Amir Ghasemi
a5ed6caa5a Added translation using Weblate (Persian) 2024-03-24 10:46:57 +01:00
Sylvia van Os
1429abd94d Update CHANGELOG 2024-03-23 23:55:03 +01:00
Sylvia van Os
0e873b9ea5 Basic selector when multiple barcodes found 2024-03-23 23:54:57 +01:00
Sylvia van Os
cbc8886241 Load barcode from PDF when sharing to Catima 2024-03-23 17:52:07 +01:00
Sylvia van Os
6c7bfb4c50 Initial PDF import through More Options menu 2024-03-23 17:52:07 +01:00
Sylvia van Os
6ed5e52890 Merge pull request #1796 from CatimaLoyalty/create-pull-request/patch-1711174860
Update Gradle to 8.7
2024-03-23 17:51:46 +01:00
TheLastProject
bc1bd88d75 Update Gradle to 8.7 2024-03-23 06:20:59 +00:00
Sylvia van Os
09e1201086 Merge pull request #1794 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-22 08:31:46 +01:00
gallegonovato
df829a4956 Translated using Weblate (Spanish)
Currently translated at 46.5% (61 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-03-22 02:02:22 +01:00
Axus Wizix
46dc163e06 Translated using Weblate (Russian)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-03-22 02:02:22 +01:00
Sylvia van Os
e70b2bdbbd Merge pull request #1792 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-19 21:56:57 +01:00
Tim Trek
c1f8e930bb Translated using Weblate (German)
Currently translated at 93.8% (123 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-03-19 21:40:22 +01:00
Sylvia van Os
c8dd1d8509 Merge pull request #1791 from CatimaLoyalty/dependabot/gradle/com.android.application-8.3.1
Bump com.android.application from 8.3.0 to 8.3.1
2024-03-19 07:23:04 +01:00
dependabot[bot]
e50adc39c5 Bump com.android.application from 8.3.0 to 8.3.1
Bumps com.android.application from 8.3.0 to 8.3.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-19 02:11:33 +00:00
Sylvia van Os
09948b6a21 Merge pull request #1790 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-18 22:11:52 +01:00
solokot
f50e80d24d Translated using Weblate (Russian)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-03-18 21:02:09 +01:00
Sylvia van Os
777512aad7 Merge pull request #1789 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.0.2
Bump peter-evans/create-pull-request from 6.0.1 to 6.0.2
2024-03-18 18:18:03 +01:00
dependabot[bot]
423fd272d4 Bump peter-evans/create-pull-request from 6.0.1 to 6.0.2
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-18 02:08:29 +00:00
Sylvia van Os
969256f130 Merge pull request #1787 from CatimaLoyalty/create-pull-request/patch-1710648875
Update contributors
2024-03-17 09:33:40 +01:00
TheLastProject
702d4af8d9 Update contributors 2024-03-17 04:14:35 +00:00
Sylvia van Os
02696c1328 Merge pull request #1786 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-15 17:53:01 +01:00
Tim Trek
dcffdf3329 Translated using Weblate (German)
Currently translated at 92.3% (121 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-03-15 01:53:02 +01:00
richard01000
4110b5ab48 Translated using Weblate (Romanian)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-03-15 01:53:02 +01:00
Sylvia van Os
dea96069b0 Merge pull request #1785 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-14 18:16:26 +01:00
Allan Nordhøy
04c5cb08f1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.7% (297 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-03-14 07:01:56 +01:00
Sylvia van Os
b37f8943c7 Merge pull request #1784 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-10 14:18:14 +01:00
ngocanhtve
54d4f8b70b Translated using Weblate (Vietnamese)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-03-10 14:02:02 +01:00
unnerving duck
658cc43f86 Translated using Weblate (Finnish)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-03-10 14:02:01 +01:00
Sylvia van Os
958abe5ed7 Merge pull request #1780 from CatimaLoyalty/fix/shortcutFixes
Several fixes for shortcut handling
2024-03-10 13:20:45 +01:00
Sylvia van Os
fa99c2ef7c Several fixes for shortcut handling
- Update the card priority in the dynamic shortcut manager also when the
  card isn't opened from the main screen
- Remove from dynamic shortcut manager when the card gets archived
- Fix icons disappearing of other cards when one card gets removed
2024-03-10 13:00:41 +01:00
Sylvia van Os
2b38f474fd Merge pull request #1781 from CatimaLoyalty/fix/rb
Fix RB failure
2024-03-10 09:23:05 +01:00
Sylvia van Os
5643814e65 Merge pull request #1783 from CatimaLoyalty/create-pull-request/patch-1710044020
Update contributors
2024-03-10 08:51:01 +01:00
TheLastProject
59b588b797 Update contributors 2024-03-10 04:13:40 +00:00
Sylvia van Os
757321930d Fix RB failure
AGP 8.3 includes the commit hash in the build metadata, so for the
official build to be reproducible it needs to be on the same commit as
third-party builds. This commit reorders the instructions to ensure I
will create the commit before building and thus fixes an RB failure in
AGP 8.3+.
2024-03-09 11:42:55 +01:00
Sylvia van Os
03a5a382e9 Release Catima v2.28.0 2024-03-08 18:17:49 +01:00
Sylvia van Os
66a91db8f0 Merge pull request #1776 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-08 18:10:16 +01:00
Marcel Hecko
013dd020c1 Translated using Weblate (Slovak)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-03-08 18:05:24 +01:00
Julia Sugawara
948e469c05 Translated using Weblate (German)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-03-08 05:01:58 +01:00
Sylvia van Os
d4aff16da8 Merge pull request #1774 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-06 19:36:31 +01:00
Sylvia van Os
efa17689b6 Translated using Weblate (Greek)
Currently translated at 89.2% (274 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-03-06 12:37:38 +01:00
Takahiro Namatame
57ab82b2f0 Translated using Weblate (Japanese)
Currently translated at 77.1% (237 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-03-06 10:02:01 +01:00
Giovanni Donisi
4052cec9ba Translated using Weblate (Italian)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-03-06 10:02:00 +01:00
Yohan Denis
3fc1057999 Translated using Weblate (French)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-03-06 10:01:59 +01:00
ΚΩΝΣΤΑΝΤΙΝΟΣ ΠΑΠΑΣ
8458beaab0 Translated using Weblate (Greek)
Currently translated at 89.2% (274 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2024-03-06 10:01:59 +01:00
Sylvia van Os
c04c505368 Merge pull request #1773 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-05 20:20:57 +01:00
Andre Costa
2ee913c833 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-03-05 08:02:17 +01:00
Andre Costa
09074cbc9e Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt_PT/
2024-03-05 08:02:17 +01:00
ngocanhtve
29b79a010b Translated using Weblate (Vietnamese)
Currently translated at 99.6% (306 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-03-05 08:02:17 +01:00
H Tamás
992f2e2e44 Translated using Weblate (Hungarian)
Currently translated at 35.1% (46 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2024-03-05 08:02:17 +01:00
이정희
7cca7154c5 Translated using Weblate (Korean)
Currently translated at 98.3% (302 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2024-03-05 08:02:17 +01:00
Ranforingus
daa7f7a7e2 Translated using Weblate (Dutch)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-03-05 08:02:17 +01:00
gallegonovato
21c1580513 Translated using Weblate (Spanish)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-03-05 08:02:17 +01:00
Sylvia van Os
9c700eb8d0 Merge pull request #1771 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.0.1
Bump peter-evans/create-pull-request from 6.0.0 to 6.0.1
2024-03-04 07:31:39 +01:00
dependabot[bot]
be21ba515a Bump peter-evans/create-pull-request from 6.0.0 to 6.0.1
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.0.0...v6.0.1)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 02:14:36 +00:00
Sylvia van Os
671b0b1228 Merge pull request #1770 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-03 18:13:50 +01:00
Odweta
dd455bfabd Translated using Weblate (Czech)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-03-03 14:02:03 +01:00
solokot
b3294112aa Translated using Weblate (Russian)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-03-03 14:02:02 +01:00
Odweta
baae7ab358 Translated using Weblate (Czech)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-03-03 14:02:02 +01:00
Sylvia van Os
d14d5ef83e Merge pull request #1769 from CatimaLoyalty/create-pull-request/patch-1709439294
Update contributors
2024-03-03 09:24:56 +01:00
TheLastProject
9b92882fc5 Update contributors 2024-03-03 04:14:54 +00:00
Sylvia van Os
ebfe0d0b6c Merge pull request #1768 from CatimaLoyalty/feature/viewPasswordImportExport
Make it possible to view password on export/import dialogs
2024-03-02 13:36:15 +01:00
Sylvia van Os
83a35e02ce Make it possible to view password on export/import dialogs 2024-03-02 13:29:20 +01:00
Sylvia van Os
13ae1f5014 Merge pull request #1767 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-02 10:00:22 +01:00
Scrambled777
4327c45cd3 Translated using Weblate (Hindi)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-03-02 05:01:13 +01:00
Scrambled777
3f4076bc7d Translated using Weblate (Hindi)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-03-02 05:01:13 +01:00
Roblox Lover
1ae09c3dff Translated using Weblate (Arabic)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-03-02 05:01:12 +01:00
H Tamás
daa8127f47 Translated using Weblate (Hungarian)
Currently translated at 33.5% (44 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2024-03-02 05:01:12 +01:00
H Tamás
aadb5334c2 Translated using Weblate (Hungarian)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-03-02 05:01:11 +01:00
Oğuz Ersen
b5b897f7b9 Translated using Weblate (Turkish)
Currently translated at 73.2% (96 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-03-02 05:01:11 +01:00
Oğuz Ersen
273035b209 Translated using Weblate (Turkish)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-03-02 05:01:10 +01:00
109247019824
6867408d14 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-03-02 05:01:09 +01:00
大王叫我来巡山
bf17d12b08 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-03-02 05:01:09 +01:00
大王叫我来巡山
523a602442 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-03-02 05:01:08 +01:00
solokot
103beef323 Translated using Weblate (Russian)
Currently translated at 100.0% (307 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-03-02 05:01:08 +01:00
Sylvia van Os
e700afac60 Merge pull request #1765 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-03-01 08:18:52 +01:00
Sylvia van Os
4e60bc2029 Merge pull request #1764 from CatimaLoyalty/dependabot/gradle/com.android.application-8.3.0
Bump com.android.application from 8.2.2 to 8.3.0
2024-03-01 08:16:55 +01:00
Anonymous
a233db799d Translated using Weblate (Portuguese (Portugal))
Currently translated at 97.3% (299 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2024-03-01 04:12:58 +01:00
Anonymous
c4958ff40d Translated using Weblate (Vietnamese)
Currently translated at 97.3% (299 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-03-01 04:12:58 +01:00
Anonymous
02329e1176 Translated using Weblate (Hungarian)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-03-01 04:12:57 +01:00
Anonymous
480bf8489e Translated using Weblate (Latvian)
Currently translated at 82.4% (253 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2024-03-01 04:12:57 +01:00
Anonymous
6762c342c9 Translated using Weblate (Croatian)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2024-03-01 04:12:57 +01:00
Anonymous
d760e17095 Translated using Weblate (Indonesian)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-03-01 04:12:57 +01:00
Anonymous
3b6d1e1764 Translated using Weblate (Bengali (India))
Currently translated at 88.5% (272 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2024-03-01 04:12:57 +01:00
Anonymous
9250b2b3dc Translated using Weblate (Turkish)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-03-01 04:12:56 +01:00
Anonymous
0c1cdc98e8 Translated using Weblate (Swedish)
Currently translated at 94.7% (291 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2024-03-01 04:12:56 +01:00
Anonymous
a90f000d46 Translated using Weblate (Bulgarian)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-03-01 04:12:56 +01:00
Anonymous
90fe400069 Translated using Weblate (Finnish)
Currently translated at 98.0% (301 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-03-01 04:12:56 +01:00
Anonymous
de7bc3d7ea Translated using Weblate (Korean)
Currently translated at 97.3% (299 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2024-03-01 04:12:28 +01:00
Anonymous
46b1040108 Translated using Weblate (Ukrainian)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-03-01 04:12:25 +01:00
Anonymous
d42908e163 Translated using Weblate (Slovenian)
Currently translated at 85.3% (262 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2024-03-01 04:12:25 +01:00
Anonymous
6468491e04 Translated using Weblate (Slovak)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-03-01 04:12:25 +01:00
Anonymous
1e58cfb5f3 Translated using Weblate (Russian)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-03-01 04:12:25 +01:00
Anonymous
f01c388f0c Translated using Weblate (Polish)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-03-01 04:12:25 +01:00
Anonymous
0e5c84e8f2 Translated using Weblate (Dutch)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-03-01 04:12:25 +01:00
Anonymous
ca733a5404 Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.1% (292 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2024-03-01 04:12:25 +01:00
Anonymous
59a28ebd62 Translated using Weblate (Lithuanian)
Currently translated at 86.6% (266 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2024-03-01 04:12:25 +01:00
Anonymous
d48247f107 Translated using Weblate (Italian)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-03-01 04:12:25 +01:00
Anonymous
d084d5f67b Translated using Weblate (French)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-03-01 04:12:25 +01:00
Anonymous
d11483dcf2 Translated using Weblate (Spanish)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-03-01 04:12:24 +01:00
Anonymous
2386ee30f7 Translated using Weblate (German)
Currently translated at 97.7% (300 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-03-01 04:12:24 +01:00
Anonymous
9899d80719 Translated using Weblate (Czech)
Currently translated at 98.6% (303 of 307 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-03-01 04:12:24 +01:00
dependabot[bot]
e809392191 Bump com.android.application from 8.2.2 to 8.3.0
Bumps com.android.application from 8.2.2 to 8.3.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 02:56:50 +00:00
Sylvia van Os
94d9010731 Merge pull request #1762 from CatimaLoyalty/fix/iconBackground
Fix background colour not being set for images in card view
2024-02-28 19:08:36 +01:00
Sylvia van Os
b160b1dca8 Fix background colour not being set for images in card view 2024-02-28 18:55:28 +01:00
Sylvia van Os
6e2fa6fd22 Merge pull request #1761 from CatimaLoyalty/create-pull-request/patch-1709140863
Update Fastlane changelogs
2024-02-28 18:21:55 +01:00
TheLastProject
2b0a126d3c Update Fastlane changelogs 2024-02-28 17:21:02 +00:00
Sylvia van Os
d8297db010 Merge pull request #1760 from CatimaLoyalty/feature/balanceUpdate
Update spending screen to also support receiving
2024-02-28 18:20:51 +01:00
Sylvia van Os
fd7b72d6e5 Update spending screen to also support receiving 2024-02-28 18:13:59 +01:00
Sylvia van Os
45471910e6 Merge pull request #1759 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-26 10:10:47 +01:00
大王叫我来巡山
bb36804a46 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-02-26 07:02:37 +01:00
大王叫我来巡山
0e2991cb7f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-02-26 07:02:37 +01:00
solokot
efbcd00b55 Translated using Weblate (Russian)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-02-26 07:02:37 +01:00
Sylvia van Os
27e252f68a Merge pull request #1758 from CatimaLoyalty/create-pull-request/patch-1708834494
Update contributors
2024-02-25 09:34:05 +01:00
TheLastProject
d2cdced416 Update contributors 2024-02-25 04:14:54 +00:00
Sylvia van Os
b150ace903 Merge pull request #1757 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-24 16:33:33 +01:00
迎春心情
7697855e0d Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (303 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-02-24 16:02:06 +01:00
solokot
08f4cb32a5 Translated using Weblate (Russian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-02-24 16:02:06 +01:00
Sylvia van Os
eef026ff4f Merge pull request #1756 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-23 18:17:46 +01:00
solokot
3fac41e8b1 Translated using Weblate (Russian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-02-23 14:06:11 +01:00
yue weikai
5c01f638be Translated using Weblate (Chinese (Simplified))
Currently translated at 99.3% (302 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-02-23 14:06:10 +01:00
Alexander Ivanov
9e2d41b821 Translated using Weblate (Russian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-02-23 14:06:09 +01:00
Sylvia van Os
472f837f44 Merge pull request #1755 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-21 18:15:09 +01:00
109247019824
f2d1b9b5c9 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-02-21 17:52:39 +01:00
Jiri Grönroos
621bfa3f99 Translated using Weblate (Finnish)
Currently translated at 99.3% (302 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-02-21 17:52:39 +01:00
Giovanni Donisi
f64703d683 Translated using Weblate (Italian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-02-21 17:52:39 +01:00
Naga
75d1fba8f8 Translated using Weblate (French)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-02-21 17:52:39 +01:00
Sylvia van Os
308a2bbaf3 Merge pull request #1754 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-20 10:09:25 +01:00
Nitin Khalia
4ba752a10e Translated using Weblate (Hindi)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-02-20 09:02:21 +01:00
ikanakova
df826d76e5 Translated using Weblate (Czech)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-02-20 09:02:20 +01:00
Mauro
f70138cd28 Translated using Weblate (Italian)
Currently translated at 99.6% (303 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-02-20 09:02:19 +01:00
ikanakova
ea81304dd5 Translated using Weblate (Czech)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-02-20 09:02:19 +01:00
Sylvia van Os
683ef8cc49 Merge pull request #1752 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-18 19:18:54 +01:00
Sylvia van Os
f9db51c8d7 Use translated title with default subtext if it exists 2024-02-18 19:13:11 +01:00
Vietto
e5de170887 Translated using Weblate (Vietnamese)
Currently translated at 5.3% (7 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-02-18 18:09:33 +01:00
Nitin Khalia
c45761f069 Translated using Weblate (Hindi)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-02-18 18:09:32 +01:00
Oğuz Ersen
65937be5b2 Translated using Weblate (Turkish)
Currently translated at 73.2% (96 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-02-18 18:09:32 +01:00
Oğuz Ersen
b249dd141d Translated using Weblate (Turkish)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-02-18 18:09:31 +01:00
Сергій
f67548d18b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-02-18 18:09:31 +01:00
richard01000
a8b8c10f0f Translated using Weblate (Romanian)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-02-18 18:09:30 +01:00
gallegonovato
3cd0aab25e Translated using Weblate (Spanish)
Currently translated at 100.0% (304 of 304 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-02-18 18:09:30 +01:00
Sylvia van Os
4dcafe0abe Merge pull request #1746 from CatimaLoyalty/fix/1744
Fix feature graphic generation
2024-02-18 16:20:24 +01:00
Sylvia van Os
0de1fcbe9b Fix some failing feature graphic generations 2024-02-18 16:17:11 +01:00
Sylvia van Os
2b8214e144 Merge branch 'main' of github.com:CatimaLoyalty/Android 2024-02-18 14:20:08 +01:00
Sylvia van Os
0300aaa850 chmod +x generate_feature_graphic.sh 2024-02-18 14:19:58 +01:00
Sylvia van Os
2605372e5d Merge pull request #1742 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-18 14:16:32 +01:00
Vietto
72b09506dc Translated using Weblate (Vietnamese)
Currently translated at 2.2% (3 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-02-18 13:54:28 +01:00
Hosted Weblate
14b42e8980 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-02-18 13:54:28 +01:00
Sylvia van Os
7c25bb9b79 Translated using Weblate (Kannada)
Currently translated at 16.0% (21 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/kn/
2024-02-18 13:54:28 +01:00
Sylvia van Os
f3b2e1e1ac Translated using Weblate (Vietnamese)
Currently translated at 1.5% (2 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-02-18 13:54:28 +01:00
Vietto
ef4ad0e197 Translated using Weblate (Vietnamese)
Currently translated at 1.5% (2 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-02-18 13:54:28 +01:00
Vietto
34d8331c50 Translated using Weblate (Vietnamese)
Currently translated at 99.6% (300 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-02-18 13:54:28 +01:00
Sylvia van Os
8430dff21c Translated using Weblate (Romanian)
Currently translated at 1.5% (2 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2024-02-18 13:54:28 +01:00
Sylvia van Os
ba87ee739e Merge pull request #1740 from CatimaLoyalty/feature/nudge_away_manual_entry
Nudge users away from manual entry
2024-02-18 11:34:53 +01:00
Sylvia van Os
41503f912f Nudge users away from manual entry
Manual entry is an useful feature for when you don't have a card to
access. However, some stores use a different card ID than barcode value,
causing users to create cards that won't work.

While I don't want to completely remove this feature, I think it is
helpful to nudge users towards scanning with the camera if possible to
reduce the risk of creating cards that won't work.
2024-02-18 11:28:09 +01:00
Sylvia van Os
fd396b8fc7 Merge pull request #1741 from CatimaLoyalty/create-pull-request/patch-1708229608
Update contributors
2024-02-18 09:09:54 +01:00
TheLastProject
2abc8b8f64 Update contributors 2024-02-18 04:13:27 +00:00
Sylvia van Os
160e61ead4 Merge pull request #1739 from CatimaLoyalty/create-pull-request/patch-1708173432
Update Fastlane changelogs
2024-02-17 13:54:46 +01:00
TheLastProject
c2e8577674 Update Fastlane changelogs 2024-02-17 12:37:12 +00:00
Sylvia van Os
66b8f35994 Merge pull request #1738 from CatimaLoyalty/feature/tweak_photos_tab_edit_view
Improve layout of photos tab in card edit view
2024-02-17 13:37:01 +01:00
Sylvia van Os
b141009350 Improve layout of photos tab in card edit view 2024-02-17 13:30:01 +01:00
Sylvia van Os
0e8dd2fd64 Merge pull request #1737 from CatimaLoyalty/create-pull-request/patch-1708164520
Update Fastlane changelogs
2024-02-17 11:10:38 +01:00
TheLastProject
988336cfec Update Fastlane changelogs 2024-02-17 10:08:39 +00:00
Sylvia van Os
5e3668820b Merge pull request #1736 from CatimaLoyalty/feature/open_card_icon_in_gallery
Open card icon in gallery on touch
2024-02-17 11:08:27 +01:00
Sylvia van Os
81c919448e Open card icon in gallery on touch
If a card icon exists, open it in the gallery, like is done with photos.

While the intended behaviour was for users to use the card icon only as
a general... icon and use the photos tab in the card edit screen to set
photos, a 2 star review I just got on Google Play makes it clear some
people put pictures in there they want to be able to zoom.

While the usage seems limited, as icons are quite small, a simple tap
wasn't bound to anything except telling the user to long-press anyway so
this was very easy to add and felt logical enough to support for
consistency with photos.
2024-02-17 10:53:54 +01:00
Sylvia van Os
23ca0802cb Merge pull request #1735 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-14 17:56:00 +01:00
ikanakova
40c2337054 Translated using Weblate (Czech)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-02-14 12:26:24 +01:00
Sylvia van Os
7db8b1602d Merge pull request #1734 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.1
Bump actions/upload-artifact from 4.3.0 to 4.3.1
2024-02-12 06:55:09 +01:00
dependabot[bot]
32b35382a6 Bump actions/upload-artifact from 4.3.0 to 4.3.1
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.0...v4.3.1)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-12 02:30:41 +00:00
Sylvia van Os
3ec6cbe416 Merge pull request #1733 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-11 11:40:57 +01:00
ngocanhtve
90322f75ce Translated using Weblate (Vietnamese)
Currently translated at 99.6% (300 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-02-10 17:02:07 +01:00
Sylvia van Os
534c4001c1 Merge pull request #1732 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-09 17:53:17 +01:00
IllusiveMan196
e21030aed3 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-02-09 00:55:55 +01:00
IllusiveMan196
d6d12174d5 Translated using Weblate (Ukrainian)
Currently translated at 99.6% (300 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-02-09 00:55:55 +01:00
Sylvia van Os
27e78dbadd Merge pull request #1731 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-08 18:12:15 +01:00
gallegonovato
0d520b48e1 Translated using Weblate (Spanish)
Currently translated at 46.5% (61 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2024-02-08 04:47:03 +01:00
Sylvia van Os
d7a49013ec Merge pull request #1730 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-07 19:42:07 +01:00
akinobu nishi
fc974e2038 Translated using Weblate (Japanese)
Currently translated at 78.4% (236 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-02-07 19:37:21 +01:00
Nikita Karamov
7144f60340 Translated using Weblate (German)
Currently translated at 91.6% (120 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-02-07 19:37:21 +01:00
J. Lavoie
883af7fd10 Translated using Weblate (French)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-02-07 19:37:21 +01:00
Sylvia van Os
fcb2be604c Optimize imports 2024-02-07 19:27:18 +01:00
Sylvia van Os
d24366a3ba Workaround import/export crash by locking orientation
While https://github.com/CatimaLoyalty/Android/issues/513 needs to be
fixed, this at very least prevents a crash with only mild user
inconvenience in a not commonly used activity
2024-02-07 19:18:46 +01:00
Sylvia van Os
a0aa19f26f Merge pull request #1729 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-06 19:20:38 +01:00
richard01000
589f009a65 Translated using Weblate (Romanian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2024-02-06 15:01:54 +01:00
Sylvia van Os
e849fd379e Merge pull request #1728 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-05 19:19:17 +01:00
Sylvia van Os
e28c5e877b Merge pull request #1727 from CatimaLoyalty/dependabot/github_actions/peter-evans/create-pull-request-6.0.0
Bump peter-evans/create-pull-request from 5.0.2 to 6.0.0
2024-02-05 19:04:48 +01:00
Sylvia van Os
ae90b46c05 Merge pull request #1726 from CatimaLoyalty/dependabot/github_actions/gradle/wrapper-validation-action-2
Bump gradle/wrapper-validation-action from 1 to 2
2024-02-05 19:04:26 +01:00
Scrambled777
a8a1158b4b Translated using Weblate (Hindi)
Currently translated at 92.3% (121 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-02-05 09:25:13 +01:00
Scrambled777
8789be5340 Translated using Weblate (Hindi)
Currently translated at 88.5% (116 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-02-05 09:22:27 +01:00
Scrambled777
93af3dbc36 Translated using Weblate (Hindi)
Currently translated at 87.7% (115 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2024-02-05 09:22:27 +01:00
Scrambled777
96c111f0c8 Translated using Weblate (Hindi)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2024-02-05 09:22:27 +01:00
reimu105
89dca33ce8 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2024-02-05 09:22:27 +01:00
dependabot[bot]
f9f1149bb5 Bump peter-evans/create-pull-request from 5.0.2 to 6.0.0
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5.0.2 to 6.0.0.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v5.0.2...v6.0.0)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 02:21:12 +00:00
dependabot[bot]
cfd5fbe3ae Bump gradle/wrapper-validation-action from 1 to 2
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 1 to 2.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 02:21:10 +00:00
Sylvia van Os
028905df42 Merge pull request #1725 from CatimaLoyalty/create-pull-request/patch-1707019984
Update contributors
2024-02-04 09:33:52 +01:00
TheLastProject
3dd74fd674 Update contributors 2024-02-04 04:13:04 +00:00
Sylvia van Os
0af9549d02 Merge pull request #1724 from CatimaLoyalty/create-pull-request/patch-1706940956
Update Gradle to 8.6
2024-02-03 10:18:17 +01:00
Sylvia van Os
a367d24125 Merge pull request #1723 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-03 09:35:12 +01:00
TheLastProject
dfa0c36af5 Update Gradle to 8.6 2024-02-03 06:15:56 +00:00
大王叫我来巡山
66fcad7658 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (131 of 131 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-02-03 06:41:24 +01:00
Sylvia van Os
370ec55df1 Merge pull request #1722 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-02 17:32:18 +01:00
Jiri Grönroos
b03ead95ea Translated using Weblate (Finnish)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-02-02 14:02:02 +01:00
大王叫我来巡山
90e6463688 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-02-02 14:02:02 +01:00
Sylvia van Os
80cfb516c0 Merge pull request #1721 from CatimaLoyalty/create-pull-request/patch-1706816801
Update Fastlane changelogs
2024-02-01 20:51:37 +01:00
TheLastProject
989cf31897 Update Fastlane changelogs 2024-02-01 19:46:40 +00:00
Sylvia van Os
caf9e163df Merge pull request #1720 from CatimaLoyalty/android14
Target Android 14
2024-02-01 20:46:26 +01:00
Sylvia van Os
8363115faf Target Android 14 2024-02-01 20:30:28 +01:00
Sylvia van Os
48cc286b14 Merge pull request #1719 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-02-01 07:02:32 +01:00
Hosted Weblate
07e7b56c9f Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/
2024-02-01 06:07:14 +01:00
Anonymous
4cac19acb9 Translated using Weblate (Lithuanian)
Currently translated at 1.5% (2 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lt/
2024-02-01 06:07:04 +01:00
しいたけ
ed1db31d62 Translated using Weblate (Japanese)
Currently translated at 78.0% (235 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-02-01 06:07:04 +01:00
しいたけ
2a2a711375 Translated using Weblate (Japanese)
Currently translated at 78.4% (236 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-02-01 04:01:55 +01:00
Sylvia van Os
c96cef5298 Update fastlane 2024-01-31 17:36:48 +01:00
Sylvia van Os
8506c05081 Merge pull request #1718 from CatimaLoyalty/dependabot/gradle/com.google.zxing-core-3.5.3
Bump com.google.zxing:core from 3.5.2 to 3.5.3
2024-01-31 08:24:19 +01:00
dependabot[bot]
9adc6d0704 Bump com.google.zxing:core from 3.5.2 to 3.5.3
Bumps [com.google.zxing:core](https://github.com/zxing/zxing) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/zxing/zxing/releases)
- [Changelog](https://github.com/zxing/zxing/blob/master/CHANGES)
- [Commits](https://github.com/zxing/zxing/compare/zxing-3.5.2...zxing-3.5.3)

---
updated-dependencies:
- dependency-name: com.google.zxing:core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-31 02:16:44 +00:00
Sylvia van Os
ca62d542ef Update supported language count 2024-01-30 20:24:06 +01:00
Sylvia van Os
84c343e41f Release Catima v2.27.0 2024-01-30 19:10:40 +01:00
Sylvia van Os
d12283e75d Merge pull request #1716 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-30 18:57:29 +01:00
しいたけ
0297304751 Translated using Weblate (Japanese)
Currently translated at 77.0% (232 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-01-30 18:56:16 +01:00
Sylvia van Os
966846c507 Merge pull request #1714 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-29 18:55:38 +01:00
Oğuz Ersen
48de759eb0 Translated using Weblate (Turkish)
Currently translated at 72.3% (94 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2024-01-29 14:02:16 +01:00
Sylvia van Os
4e23fb4195 Merge pull request #1713 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.3.0
Bump actions/upload-artifact from 4.2.0 to 4.3.0
2024-01-29 06:42:53 +01:00
dependabot[bot]
1cfd04ba67 Bump actions/upload-artifact from 4.2.0 to 4.3.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.2.0...v4.3.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 02:51:02 +00:00
Sylvia van Os
c6f1e0cffe Merge pull request #1574 from obfusk/refactor-navbar-colour
Refactor navbar colour
2024-01-28 12:50:47 +01:00
Sylvia van Os
027d153747 Don't version-guard the background colour fix
All Android versions seem to need this for the main screen
2024-01-28 12:41:52 +01:00
FC (Fay) Stegerman
bd1376e6bf add activityOverridesNavBarColor to not set colour twice 2024-01-28 12:08:30 +01:00
FC (Fay) Stegerman
7fa8ae8697 refactor nav bar colour & colour patching 2024-01-28 12:08:30 +01:00
Sylvia van Os
0b01604c4e Merge pull request #1712 from CatimaLoyalty/create-pull-request/patch-1706415252
Update contributors
2024-01-28 08:53:53 +01:00
TheLastProject
d37dca7e7d Update contributors 2024-01-28 04:14:12 +00:00
Sylvia van Os
5eb2753168 Merge pull request #1711 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-27 23:26:29 +01:00
waffshappen
502e2e5e21 Translated using Weblate (German)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/de/
2024-01-27 21:26:47 +01:00
waffshappen
bbb2c0d81f Translated using Weblate (German)
Currently translated at 92.3% (120 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2024-01-27 21:26:47 +01:00
waffshappen
59e62c2805 Translated using Weblate (German)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-01-27 21:26:47 +01:00
Sylvia van Os
15d9a16ead Merge pull request #1710 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-27 17:29:55 +01:00
abdelbasset jabrane
e99cba7fcb Translated using Weblate (Arabic)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2024-01-27 15:35:52 +01:00
Oğuz Ersen
781b6ecc48 Translated using Weblate (Turkish)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2024-01-27 15:35:52 +01:00
akinobu nishi
ec8536976f Translated using Weblate (Japanese)
Currently translated at 4.6% (6 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ja/
2024-01-27 15:35:52 +01:00
akinobu nishi
2f9101e9f2 Translated using Weblate (Japanese)
Currently translated at 76.0% (229 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2024-01-27 15:35:52 +01:00
Sylvia van Os
0cc2fd44ac Merge pull request #1708 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-25 21:12:41 +01:00
Eva Pelko
6db4cbab9b Translated using Weblate (Croatian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2024-01-25 21:01:55 +01:00
CPavRou
0b2111b6f0 Translated using Weblate (French)
Currently translated at 99.0% (298 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2024-01-25 21:01:55 +01:00
Sylvia van Os
b3f118ef15 Merge pull request #1707 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-24 17:26:52 +01:00
Irham Mustofa
db8a652e5b Translated using Weblate (Indonesian)
Currently translated at 96.9% (126 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2024-01-24 16:02:04 +01:00
Irham Mustofa
d7a4f81eba Translated using Weblate (Indonesian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2024-01-24 16:02:04 +01:00
Zbigniew Kosowski
d0c0694662 Translated using Weblate (Polish)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2024-01-24 16:02:04 +01:00
Sylvia van Os
0fdf79449c Merge pull request #1705 from CatimaLoyalty/dependabot/gradle/com.android.application-8.2.2
Bump com.android.application from 8.2.1 to 8.2.2
2024-01-24 08:17:14 +01:00
dependabot[bot]
cbf8b2d5f0 Bump com.android.application from 8.2.1 to 8.2.2
Bumps com.android.application from 8.2.1 to 8.2.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-24 02:07:05 +00:00
Sylvia van Os
e194cca5f1 Merge pull request #1704 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-22 18:16:50 +01:00
Giovanni Donisi
5d450852e1 Translated using Weblate (Italian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2024-01-22 14:01:51 +01:00
gallegonovato
ce86811d7c Translated using Weblate (Spanish)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2024-01-22 14:01:51 +01:00
Sylvia van Os
9fb3b765e7 Merge pull request #1703 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.2.0
Bump actions/upload-artifact from 4.1.0 to 4.2.0
2024-01-22 07:40:38 +01:00
dependabot[bot]
d02dac2c41 Bump actions/upload-artifact from 4.1.0 to 4.2.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.1.0...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 02:41:23 +00:00
Sylvia van Os
243536d0d1 Merge pull request #1702 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-21 14:04:43 +01:00
Сергій
b258ba8654 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-01-21 10:02:31 +01:00
solokot
5ec87a7a3a Translated using Weblate (Russian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2024-01-21 10:02:31 +01:00
Сергій
c84692db35 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2024-01-21 10:02:30 +01:00
Ronon
efe2a720f4 Translated using Weblate (Slovak)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2024-01-21 10:02:29 +01:00
solokot
8b876f51fc Translated using Weblate (Russian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2024-01-21 10:02:29 +01:00
Nikita Karamov
033de00ad4 Translated using Weblate (German)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2024-01-21 10:02:28 +01:00
Sylvia van Os
81f0e769b8 Merge pull request #1701 from CatimaLoyalty/create-pull-request/patch-1705810453
Update contributors
2024-01-21 07:29:28 +01:00
TheLastProject
dd14533c6c Update contributors 2024-01-21 04:14:13 +00:00
Sylvia van Os
f7c50caeb1 Merge pull request #1700 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-19 17:42:33 +01:00
Nguyễn Xuân Cảm
b00aa74bfe Translated using Weblate (Vietnamese)
Currently translated at 1.5% (2 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2024-01-19 12:00:37 +01:00
Nguyễn Xuân Cảm
944089536f Translated using Weblate (Vietnamese)
Currently translated at 99.3% (299 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2024-01-19 12:00:36 +01:00
Bálint László
266732f744 Translated using Weblate (Hungarian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2024-01-19 12:00:36 +01:00
BananaChad
33ee23a0e1 Translated using Weblate (Dutch)
Currently translated at 13.8% (18 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2024-01-19 12:00:35 +01:00
BananaChad
b064851254 Translated using Weblate (Dutch)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2024-01-19 12:00:34 +01:00
Sylvia van Os
19782fdb9c Merge pull request #1699 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-18 20:15:08 +01:00
109247019824
eb7658c35a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2024-01-18 08:39:27 +01:00
大王叫我来巡山
fff35d7a74 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2024-01-18 08:39:26 +01:00
大王叫我来巡山
ed5506554a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2024-01-18 08:39:26 +01:00
ikanakova
dac7e8cb46 Translated using Weblate (Czech)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2024-01-18 08:39:25 +01:00
ikanakova
5ad27b1b53 Translated using Weblate (Czech)
Currently translated at 100.0% (301 of 301 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2024-01-18 08:39:24 +01:00
Sylvia van Os
ca3c29f5e4 Merge pull request #1698 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-16 21:47:57 +01:00
Jiri Grönroos
935ef20955 Translated using Weblate (Finnish)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2024-01-16 20:06:27 +01:00
Sylvia van Os
86ec70ee72 Merge pull request #1696 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.1.0
Bump actions/upload-artifact from 4.0.0 to 4.1.0
2024-01-15 19:39:08 +01:00
dependabot[bot]
2303caf1be Bump actions/upload-artifact from 4.0.0 to 4.1.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-15 02:39:56 +00:00
Sylvia van Os
ee1e5c0d0e Merge pull request #1695 from CatimaLoyalty/create-pull-request/patch-1705205686
Update contributors
2024-01-14 12:34:09 +01:00
TheLastProject
4bdb5a86ad Update contributors 2024-01-14 04:14:46 +00:00
Sylvia van Os
92ac59a783 Merge pull request #1692 from CatimaLoyalty/1647-2
Only list contributors with at least 5 commits
2024-01-12 12:27:18 +01:00
Sylvia van Os
89ea86e795 Only include contributors with at least 5 commits 2024-01-12 12:17:03 +01:00
Sylvia van Os
ffe6236c2d Support HTML in credits screen 2024-01-12 12:04:26 +01:00
Sylvia van Os
c057e03e97 Merge pull request #1690 from CatimaLoyalty/create-pull-request/patch-1704816632
Update Fastlane changelogs
2024-01-09 21:00:44 +01:00
TheLastProject
372834f60f Update Fastlane changelogs 2024-01-09 16:10:32 +00:00
Sylvia van Os
1265c6d801 Merge pull request #1689 from CatimaLoyalty/feature/1671
Add option to always rotate
2024-01-09 17:10:20 +01:00
Sylvia van Os
2ae0ddd9e7 Add option to always rotate 2024-01-09 17:00:21 +01:00
Sylvia van Os
fba6f3a111 Merge pull request #1687 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-08 19:45:22 +01:00
fsbat0
357b005b15 Translated using Weblate (Tigrinya)
Currently translated at 17.7% (53 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ti/
2024-01-08 14:06:20 +00:00
Sylvia van Os
8df25a301b Merge pull request #1685 from CatimaLoyalty/create-pull-request/patch-1704626162
Update locales
2024-01-07 12:36:46 +01:00
TheLastProject
71c7252458 Update locales 2024-01-07 11:16:02 +00:00
Sylvia van Os
41f8fc2094 Merge pull request #1684 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-07 12:15:46 +01:00
fsbat0
b5752967a2 Added translation using Weblate (Tigrinya) 2024-01-07 06:45:30 +01:00
Sylvia van Os
5ee14c2fe8 Merge pull request #1682 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-06 10:36:22 +01:00
itshog
a34321c680 Translated using Weblate (Italian)
Currently translated at 95.3% (124 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2024-01-06 07:15:24 +00:00
Sylvia van Os
56ed2f454d Merge pull request #1680 from CatimaLoyalty/dependabot/gradle/com.android.application-8.2.1
Bump com.android.application from 8.2.0 to 8.2.1
2024-01-04 21:06:31 +01:00
dependabot[bot]
40ac0d83c5 Bump com.android.application from 8.2.0 to 8.2.1
Bumps com.android.application from 8.2.0 to 8.2.1.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-04 02:56:18 +00:00
Sylvia van Os
b8de73b5b3 Merge pull request #1677 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2024-01-01 13:10:42 +01:00
Сергій
547af33f40 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2024-01-01 12:09:44 +00:00
Sylvia van Os
f1b525396c Merge pull request #1676 from CatimaLoyalty/create-pull-request/patch-1703996032
Update contributors
2023-12-31 13:00:53 +01:00
TheLastProject
50890c4f31 Update contributors 2023-12-31 04:13:52 +00:00
Sylvia van Os
3322133d1e Merge pull request #1673 from CatimaLoyalty/create-pull-request/patch-1703391228
Update contributors
2023-12-26 13:16:13 +01:00
Sylvia van Os
5b6c6b4466 Merge pull request #1674 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-25 14:19:58 +01:00
Sylvia van Os
5f2402dd15 Translated using Weblate (Vietnamese)
Currently translated at 1.5% (2 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2023-12-24 18:11:50 +01:00
TheLastProject
b34533a92a Update contributors 2023-12-24 04:13:47 +00:00
ngocanhtve
c521fae4ee Translated using Weblate (Vietnamese)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/vi/
2023-12-23 17:09:55 +01:00
ngocanhtve
ce47efecb0 Translated using Weblate (Vietnamese)
Currently translated at 0.7% (1 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/vi/
2023-12-23 17:09:55 +01:00
ngocanhtve
133da20f93 Translated using Weblate (Vietnamese)
Currently translated at 98.3% (294 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2023-12-23 17:09:55 +01:00
Sylvia van Os
cee8074232 Merge pull request #1670 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-20 18:21:10 +01:00
Wei-Cheng Yeh (IID)
6f78e2b404 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-12-20 15:09:33 +01:00
Sylvia van Os
b05b46f10a Merge pull request #1667 from CatimaLoyalty/dependabot/github_actions/actions/upload-artifact-4.0.0
Bump actions/upload-artifact from 3.1.3 to 4.0.0
2023-12-18 22:56:07 +01:00
Sylvia van Os
1188e58fb0 Merge pull request #1669 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-18 20:10:45 +01:00
Allan Nordhøy
575150af9e Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.6% (292 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-12-18 04:10:51 +00:00
dependabot[bot]
d82e0bebb6 Bump actions/upload-artifact from 3.1.3 to 4.0.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3.1.3...v4.0.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-18 02:38:21 +00:00
Sylvia van Os
72131a6b2d Merge pull request #1666 from CatimaLoyalty/create-pull-request/patch-1702786546
Update contributors
2023-12-17 11:46:31 +01:00
TheLastProject
b89a13ce70 Update contributors 2023-12-17 04:15:45 +00:00
Sylvia van Os
389a53b2cc Merge pull request #1665 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-15 19:02:47 +01:00
Sylvia van Os
be0f534f66 Translated using Weblate (Esperanto)
Currently translated at 36.7% (110 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2023-12-15 15:11:33 +00:00
ikanakova
36eee3686c Translated using Weblate (Czech)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-12-15 15:11:32 +00:00
H Tamás
5c76cb01bf Translated using Weblate (Hungarian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/hu/
2023-12-15 15:11:32 +00:00
H Tamás
e57cd9eea3 Translated using Weblate (Hungarian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-12-15 15:11:31 +00:00
xiawu240
e795ec6907 Translated using Weblate (Esperanto)
Currently translated at 36.7% (110 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2023-12-15 15:11:30 +00:00
Patricio Carrau
5e69f18b88 Translated using Weblate (Spanish (Argentina))
Currently translated at 66.5% (199 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es_AR/
2023-12-15 15:11:30 +00:00
Sylvia van Os
6bb6d54b6a Merge pull request #1663 from CatimaLoyalty/dependabot/gradle/androidx.exifinterface-exifinterface-1.3.7
Bump androidx.exifinterface:exifinterface from 1.3.6 to 1.3.7
2023-12-14 21:11:31 +01:00
dependabot[bot]
86f049d9a4 Bump androidx.exifinterface:exifinterface from 1.3.6 to 1.3.7
Bumps androidx.exifinterface:exifinterface from 1.3.6 to 1.3.7.

---
updated-dependencies:
- dependency-name: androidx.exifinterface:exifinterface
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-14 02:11:45 +00:00
Sylvia van Os
5cb02ae0f2 Merge pull request #1661 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-12 17:37:50 +01:00
Mitsos Dream
88380878e0 Translated using Weblate (Greek)
Currently translated at 84.6% (253 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2023-12-12 07:05:58 +00:00
Sylvia van Os
59c7341aad Merge pull request #1659 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-5.0.0
Bump actions/setup-python from 4.7.1 to 5.0.0
2023-12-11 18:48:27 +01:00
dependabot[bot]
e3596adae4 Bump actions/setup-python from 4.7.1 to 5.0.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.7.1 to 5.0.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4.7.1...v5.0.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 02:11:54 +00:00
Sylvia van Os
8d697c3414 Merge pull request #1658 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-10 12:21:16 +01:00
Giovanni Donisi
c1b0fead33 Translated using Weblate (Italian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/it/
2023-12-10 05:02:16 +01:00
Sylvia van Os
228b9ecc4d Merge pull request #1655 from CatimaLoyalty/create-pull-request/patch-1701576833
Update contributors
2023-12-03 10:35:37 +01:00
TheLastProject
7c03469e91 Update contributors 2023-12-03 04:13:53 +00:00
Sylvia van Os
c922e0645d Merge pull request #1654 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-12-02 12:13:02 +01:00
bass python
8015cc65b8 Translated using Weblate (Arabic)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-12-02 11:02:43 +00:00
Sylvia van Os
85240fa3d5 Translated using Weblate (Polish)
Currently translated at 80.7% (105 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-12-02 11:02:42 +00:00
bass python
3ed418166d Translated using Weblate (Arabic)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-12-01 10:46:08 +00:00
Sylvia van Os
b4a173d352 Translated using Weblate (Arabic)
Currently translated at 99.6% (298 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-12-01 10:46:08 +00:00
tfuxu
bd57e11f16 Translated using Weblate (Polish)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/pl/
2023-12-01 10:46:07 +00:00
Abdullah Abdullah
d65141ee92 Translated using Weblate (Arabic)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-12-01 10:46:06 +00:00
tfuxu
fc12efff5e Translated using Weblate (Polish)
Currently translated at 80.7% (105 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-12-01 10:46:06 +00:00
Sylvia van Os
bd0879923c Merge pull request #1652 from CatimaLoyalty/dependabot/gradle/com.android.application-8.2.0
Bump com.android.application from 8.1.4 to 8.2.0
2023-12-01 08:26:51 +01:00
dependabot[bot]
d2df924ba5 Bump com.android.application from 8.1.4 to 8.2.0
Bumps com.android.application from 8.1.4 to 8.2.0.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 03:00:22 +00:00
Sylvia van Os
613c92e8c4 Merge pull request #1650 from CatimaLoyalty/create-pull-request/patch-1701325097
Update Gradle to 8.5
2023-11-30 20:54:42 +01:00
TheLastProject
d8429bf305 Update Gradle to 8.5 2023-11-30 06:18:16 +00:00
Sylvia van Os
1c8926887b Put Izzy first 2023-11-29 22:16:18 +01:00
Sylvia van Os
7f03f371e0 Merge pull request #1646 from CatimaLoyalty/create-pull-request/patch-1700972030
Update contributors
2023-11-26 11:03:52 +01:00
TheLastProject
273a39abb7 Update contributors 2023-11-26 04:13:49 +00:00
Sylvia van Os
562b984029 Merge pull request #1645 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-25 09:57:10 +01:00
Vinh Le
74e498c5ab Translated using Weblate (Vietnamese)
Currently translated at 95.3% (285 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2023-11-25 06:01:14 +01:00
Sylvia van Os
4c825c703b Deleted translation using Weblate (Portuguese) 2023-11-23 18:48:56 +01:00
Sylvia van Os
c54af65033 Deleted translation using Weblate (Portuguese) 2023-11-23 18:48:55 +01:00
Weblate
f80dbe9073 Added translation using Weblate (Portuguese) 2023-11-23 04:45:18 +00:00
Weblate
e9a48dca41 Added translation using Weblate (Portuguese) 2023-11-23 04:45:04 +00:00
Sylvia van Os
157c428919 Translated using Weblate (Hindi)
Currently translated at 79.2% (237 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-11-23 04:45:02 +00:00
sravya
a67aec366a Translated using Weblate (Hindi)
Currently translated at 79.2% (237 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-11-22 13:02:26 +01:00
Sylvia van Os
ee12482f6e Merge pull request #1642 from obfusk/fix-pt
fixes for pt -> pt-rPT
2023-11-21 17:42:32 +01:00
Sylvia van Os
c2383fbb40 Merge pull request #1641 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-21 17:41:57 +01:00
FC (Fay) Stegerman
65ab14897f fixes for pt -> pt-rPT 2023-11-21 17:30:26 +01:00
solokot
87ecb3c1b9 Translated using Weblate (Russian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-11-21 17:20:57 +01:00
Sylvia van Os
9dfbc92e92 Move pt to pt-rPT to make Weblate happy 2023-11-21 17:18:36 +01:00
Sylvia van Os
c65303b08b Merge pull request #1638 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-21 17:12:16 +01:00
Weblate
fd8c960c58 Added translation using Weblate (Portuguese (Portugal)) 2023-11-21 04:45:05 +00:00
Weblate
7511ea0c2d Added translation using Weblate (Portuguese (Portugal)) 2023-11-21 04:45:01 +00:00
AlexTECPlayz
4810a3cee1 Translated using Weblate (Romanian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ro/
2023-11-21 01:04:05 +01:00
Matti O
a230d9f877 Translated using Weblate (Finnish)
Currently translated at 99.3% (297 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-11-21 01:04:05 +01:00
AlexTECPlayz
18e699445c Translated using Weblate (Romanian)
Currently translated at 1.5% (2 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2023-11-21 01:04:05 +01:00
AlexTECPlayz
4a5106c38c Translated using Weblate (Romanian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2023-11-21 01:04:05 +01:00
Sylvia van Os
3afde7049e Merge pull request #1637 from CatimaLoyalty/create-pull-request/patch-1700367277
Update contributors
2023-11-19 09:52:32 +01:00
TheLastProject
82a3ae16a6 Update contributors 2023-11-19 04:14:37 +00:00
Sylvia van Os
31995f4b8b Merge pull request #1636 from CatimaLoyalty/dependabot/gradle/com.android.application-8.1.4
Bump com.android.application from 8.1.3 to 8.1.4
2023-11-17 19:49:09 +01:00
dependabot[bot]
b7c444fd8f Bump com.android.application from 8.1.3 to 8.1.4
Bumps com.android.application from 8.1.3 to 8.1.4.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-17 02:14:59 +00:00
Sylvia van Os
58481c842b Merge pull request #1635 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-15 17:21:19 +01:00
SC
5847ff4b7c Translated using Weblate (Portuguese)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-11-15 13:07:18 +01:00
Sylvia van Os
056c255aa6 Merge pull request #1634 from obfusk/patch-8
generate_feature_graphic.sh: remove redundant "|| exit 1"
2023-11-15 08:17:16 +01:00
FC (Fay) Stegerman
9c99b9d0ad generate_feature_graphic.sh: remove redundant "|| exit 1" 2023-11-14 22:50:08 +00:00
Sylvia van Os
d4a9197e60 Merge pull request #1633 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-13 18:21:22 +01:00
Eric
57d7176ac9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-11-13 14:05:09 +01:00
Sylvia van Os
029fa9b5e8 Merge pull request #1632 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-12 13:22:12 +01:00
Denis Shilin
c38a89b48f Translated using Weblate (Russian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ru/
2023-11-12 11:03:13 +01:00
Sylvia van Os
21958442bb Merge pull request #1631 from CatimaLoyalty/create-pull-request/patch-1699762504
Update contributors
2023-11-12 10:23:23 +01:00
TheLastProject
f92ae736b4 Update contributors 2023-11-12 04:15:04 +00:00
Sylvia van Os
548714f778 Merge pull request #1630 from CatimaLoyalty/create-pull-request/patch-1699698892
Update Fastlane changelogs
2023-11-11 11:35:16 +01:00
TheLastProject
1d61a7c0eb Update Fastlane changelogs 2023-11-11 10:34:52 +00:00
Sylvia van Os
6c5a06ce5b Update CHANGELOG 2023-11-11 11:34:37 +01:00
Sylvia van Os
1d4e47b832 Merge pull request #1588 from theimpulson/materialDatePicker
LoyaltCardEditActivity: Migrate to materialdatepicker dialog
2023-11-11 11:32:13 +01:00
Sylvia van Os
cd9ef1c231 Fix build 2023-11-11 11:03:00 +01:00
Sylvia van Os
a1011e0668 Support translating Catima app name in feature graphic (#1623)
* Support translating Catima app name in feature graphic

Co-authored-by: FC (Fay) Stegerman <flx@obfusk.net>
2023-11-11 10:44:31 +01:00
Sylvia van Os
9e7d51c36b Merge pull request #1627 from CatimaLoyalty/dependabot/gradle/com.android.application-8.1.3
Bump com.android.application from 8.1.2 to 8.1.3
2023-11-08 17:08:29 +01:00
Sylvia van Os
0e826a654b Merge pull request #1628 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-08 17:07:30 +01:00
Claus Kruse
40778dd494 Translated using Weblate (Danish)
Currently translated at 36.1% (108 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2023-11-08 10:34:16 +00:00
dependabot[bot]
d7b983f1ca Bump com.android.application from 8.1.2 to 8.1.3
Bumps com.android.application from 8.1.2 to 8.1.3.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-08 02:42:14 +00:00
Sylvia van Os
206f6385ae Merge pull request #1621 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-06 21:48:46 +01:00
Oğuz Ersen
18cba2d702 Translated using Weblate (Turkish)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-11-06 20:34:50 +01:00
Sylvia van Os
847850eeff Merge pull request #1619 from CatimaLoyalty/create-pull-request/patch-1699157613
Update contributors
2023-11-05 09:32:15 +01:00
TheLastProject
107bf5a0f5 Update contributors 2023-11-05 04:13:32 +00:00
Sylvia van Os
d3edde4a43 Merge pull request #1617 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-2.0.4
Bump com.android.tools:desugar_jdk_libs from 2.0.3 to 2.0.4
2023-11-04 11:24:52 +01:00
Sylvia van Os
963f42628f Merge pull request #1618 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-04 00:00:20 +01:00
Rohan H
7d83cf1dfd Translated using Weblate (Marathi)
Currently translated at 40.8% (122 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/mr/
2023-11-03 05:04:02 +00:00
ikanakova
5bb2df98cd Translated using Weblate (Czech)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/cs/
2023-11-03 05:04:01 +00:00
dependabot[bot]
2796a15353 Bump com.android.tools:desugar_jdk_libs from 2.0.3 to 2.0.4
Bumps [com.android.tools:desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 2.0.3 to 2.0.4.
- [Changelog](https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/desugar_jdk_libs/commits)

---
updated-dependencies:
- dependency-name: com.android.tools:desugar_jdk_libs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-03 02:10:05 +00:00
Aayush Gupta
55595159be LoyaltyCardEditActivity: Handle configuration changes for MaterialDatePicker
MaterialDatePicker is final and thus cannot be extended to handle loss of callback
on configuration changes. We aren't using ViewModel as well that would help us to persist
changes till lifecycle.

Fallback to how DatePicker was handling this situation with a couple of more hacks.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-11-02 14:20:54 +05:30
Aayush Gupta
5cab0e3932 LoyaltyCardViewActivityTest: Update test to handle MaterialDatePicker migration
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-11-02 11:39:44 +05:30
Aayush Gupta
4d6c08fc73 LoyaltCardEditActivity: Migrate to materialdatepicker dialog
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-11-02 11:39:44 +05:30
Sylvia van Os
0c147830ee Merge pull request #1616 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-11-01 20:58:10 +01:00
Sylvia van Os
b5a3a4c735 Merge pull request #1615 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.11.1
Bump org.robolectric:robolectric from 4.11 to 4.11.1
2023-11-01 20:57:54 +01:00
gemamur
f867e8cb93 Translated using Weblate (Spanish)
Currently translated at 47.6% (62 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2023-11-01 13:05:06 +01:00
dependabot[bot]
524af89c96 Bump org.robolectric:robolectric from 4.11 to 4.11.1
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.11 to 4.11.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.11...robolectric-4.11.1)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 02:46:07 +00:00
Sylvia van Os
3df4d4783f Merge pull request #1613 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.11
Bump org.robolectric:robolectric from 4.10.3 to 4.11
2023-10-31 18:27:42 +01:00
Sylvia van Os
d0e7187273 Merge pull request #1614 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-31 17:52:22 +01:00
Brian Bentancour
7819460377 Translated using Weblate (Spanish (Argentina))
Currently translated at 66.2% (198 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es_AR/
2023-10-30 06:49:13 +01:00
dependabot[bot]
4396214e7a Bump org.robolectric:robolectric from 4.10.3 to 4.11
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.10.3 to 4.11.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.10.3...robolectric-4.11)

---
updated-dependencies:
- dependency-name: org.robolectric:robolectric
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-30 02:47:44 +00:00
Sylvia van Os
697c6f3f39 Merge pull request #1611 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-29 10:20:22 +01:00
Sylvia van Os
0239e5a89e Merge pull request #1610 from CatimaLoyalty/create-pull-request/patch-1698552879
Update contributors
2023-10-29 09:53:19 +01:00
Neha Reddy
532fae7de5 Translated using Weblate (Kannada)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/kn/
2023-10-29 05:20:08 +00:00
Neha Reddy
135c4498d8 Translated using Weblate (Kannada)
Currently translated at 15.3% (20 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/kn/
2023-10-29 05:20:07 +00:00
OMCM753
7f0e5d9c59 Translated using Weblate (Spanish)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-10-29 05:20:05 +00:00
TheLastProject
cf4eeafce0 Update contributors 2023-10-29 04:14:38 +00:00
Sylvia van Os
8597580d93 Merge pull request #1608 from CatimaLoyalty/create-pull-request/patch-1698425469
Update locales
2023-10-27 18:54:07 +02:00
TheLastProject
e3643328f0 Update locales 2023-10-27 16:51:09 +00:00
Sylvia van Os
e76c8219bb Merge pull request #1607 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-27 18:50:53 +02:00
Rohan H
650ad23e59 Translated using Weblate (Marathi)
Currently translated at 37.1% (111 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/mr/
2023-10-27 09:10:00 +00:00
OMCM753
abc66a0c08 Translated using Weblate (Spanish)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/es/
2023-10-27 09:10:00 +00:00
Abhishek Tiwari
701e1ee5fa Translated using Weblate (Hindi)
Currently translated at 28.4% (37 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2023-10-27 09:09:59 +00:00
pro maxime
8031a02003 Translated using Weblate (Arabic)
Currently translated at 99.3% (297 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-10-27 09:09:57 +00:00
OMCM753
f383758c7d Translated using Weblate (Spanish)
Currently translated at 47.6% (62 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2023-10-27 09:09:57 +00:00
Sylvia van Os
eeb7eddff2 Merge pull request #1606 from CatimaLoyalty/create-pull-request/patch-1698163549
Update feature graphic
2023-10-24 18:06:11 +02:00
Sylvia van Os
1df27e2d4a Merge pull request #1603 from obfusk/new-locales
add workflow to add new locales
2023-10-24 18:05:50 +02:00
TheLastProject
66ffe63a62 Update feature graphic 2023-10-24 16:05:48 +00:00
Sylvia van Os
a963ed20d3 Merge pull request #1605 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-24 18:03:46 +02:00
Camila
c057e7a420 Translated using Weblate (Portuguese)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-10-24 15:03:53 +02:00
FC (Fay) Stegerman
10bab6349a update-locales workflow: also add new locales 2023-10-23 21:03:57 +02:00
Sylvia van Os
e89b612c93 Merge pull request #1602 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.1
Bump actions/checkout from 4.1.0 to 4.1.1
2023-10-23 19:01:41 +02:00
Sylvia van Os
2d99c61d78 Merge pull request #1604 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-23 18:54:49 +02:00
Rohan H
ed2a816656 Translated using Weblate (Marathi)
Currently translated at 32.1% (96 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/mr/
2023-10-23 11:02:12 +00:00
Muhammad Khuirul Huda
a73064ae46 Translated using Weblate (Indonesian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/id/
2023-10-23 11:02:11 +00:00
Fqwe1
b07ac08b69 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/uk/
2023-10-23 11:02:10 +00:00
Mattia Beccari
c5793caaf3 Translated using Weblate (Italian)
Currently translated at 95.3% (124 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-10-23 11:02:10 +00:00
Fqwe1
22fadb1b15 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-10-23 11:02:08 +00:00
dependabot[bot]
5cd2cbb1a2 Bump actions/checkout from 4.1.0 to 4.1.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 02:56:04 +00:00
Sylvia van Os
20ec9f5cc3 Merge pull request #1600 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-22 12:19:45 +02:00
Sylvia van Os
93db0669ff Merge pull request #1599 from CatimaLoyalty/create-pull-request/patch-1697948014
Update contributors
2023-10-22 11:48:04 +02:00
Weblate
7c2eebb20c Added translation using Weblate (Marathi) 2023-10-22 06:28:08 +00:00
Ankur Dahiya
e76a63c34b Translated using Weblate (Hindi)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/hi/
2023-10-22 06:28:04 +00:00
olgacveysel
80cab9ba59 Translated using Weblate (Turkish)
Currently translated at 0.0% (0 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/tr/
2023-10-22 06:28:04 +00:00
Ankur Dahiya
c26ddd9342 Translated using Weblate (Hindi)
Currently translated at 79.2% (237 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-22 06:28:03 +00:00
olgacveysel
78ec649af3 Translated using Weblate (Turkish)
Currently translated at 96.9% (290 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-10-22 06:28:02 +00:00
Rohan H
1ae61cc0b7 Added translation using Weblate (Marathi) 2023-10-22 06:28:02 +00:00
TheLastProject
5616158ff7 Update contributors 2023-10-22 04:13:34 +00:00
Sylvia van Os
554a60cf95 Merge pull request #1598 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-21 09:58:21 +02:00
Kim Seohyun
737a6272a9 Translated using Weblate (Korean)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ko/
2023-10-21 06:03:42 +02:00
109247019824
dc7f3573fe Translated using Weblate (Bulgarian)
Currently translated at 38.4% (50 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2023-10-21 06:03:42 +02:00
Kim Seohyun
4003faa17f Translated using Weblate (Korean)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-10-21 06:03:41 +02:00
Bernardino
4aecb05e17 Translated using Weblate (Italian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-10-21 06:03:41 +02:00
Sylvia van Os
f58eafd2b6 Merge pull request #1597 from CatimaLoyalty/create-pull-request/patch-1697710291
Update feature graphic
2023-10-19 12:22:15 +02:00
TheLastProject
1061bc691a Update feature graphic 2023-10-19 10:11:31 +00:00
Sylvia van Os
734813c29e Merge pull request #1596 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-19 12:09:49 +02:00
Eric
2cdd0f6678 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/zh_Hans/
2023-10-19 06:06:58 +02:00
Kim Seohyun
c65b30189f Translated using Weblate (Korean)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/ko/
2023-10-19 06:06:58 +02:00
Milo Ivir
93db35396a Translated using Weblate (Croatian)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/hr/
2023-10-19 06:06:58 +02:00
Milo Ivir
3d6cf5883e Translated using Weblate (Croatian)
Currently translated at 2.3% (3 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hr/
2023-10-19 06:06:58 +02:00
Milo Ivir
3c316d1878 Translated using Weblate (Croatian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-10-19 06:06:58 +02:00
109247019824
be6d3a460d Translated using Weblate (Bulgarian)
Currently translated at 26.9% (35 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2023-10-19 06:06:58 +02:00
Kim Seohyun
feb93ccb48 Translated using Weblate (Korean)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ko/
2023-10-19 06:06:58 +02:00
Kim Seohyun
6ad0dd1f24 Translated using Weblate (Korean)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-10-19 06:06:58 +02:00
Sylvia van Os
1c936b4b2e Merge pull request #1594 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-17 21:01:24 +02:00
Weblate
3c201a9c29 Added translation using Weblate (Hebrew (Israel)) 2023-10-17 04:04:53 +00:00
Weblate
5ccdc349ff Added translation using Weblate (Chinese (Simplified)) 2023-10-17 04:04:52 +00:00
Weblate
a842f01e32 Added translation using Weblate (Chinese (Traditional)) 2023-10-17 04:04:13 +00:00
Weblate
b3b5960725 Added translation using Weblate (Spanish (Argentina)) 2023-10-17 04:04:11 +00:00
Weblate
781318397c Added translation using Weblate (Slovenian) 2023-10-17 04:04:07 +00:00
Weblate
e7e5cdac22 Added translation using Weblate (Kannada) 2023-10-17 04:04:06 +00:00
Weblate
11bce01405 Added translation using Weblate (Korean) 2023-10-17 04:04:05 +00:00
Weblate
ed84b0fcb9 Added translation using Weblate (Finnish) 2023-10-17 04:04:04 +00:00
Weblate
7f82bc9822 Added translation using Weblate (Swedish) 2023-10-17 04:04:02 +00:00
Weblate
2d40ac0111 Added translation using Weblate (Spanish) 2023-10-17 04:04:01 +00:00
Weblate
81ffee2e3b Added translation using Weblate (Bengali (India)) 2023-10-17 04:04:00 +00:00
Weblate
133e1695f6 Added translation using Weblate (Indonesian) 2023-10-17 04:03:59 +00:00
Weblate
78a8a65ae2 Added translation using Weblate (Arabic) 2023-10-17 04:03:57 +00:00
Weblate
8e28b43ecb Added translation using Weblate (Italian) 2023-10-17 04:03:56 +00:00
Weblate
20062db01e Added translation using Weblate (Polish) 2023-10-17 04:03:55 +00:00
Weblate
42e5a15455 Added translation using Weblate (Malayalam) 2023-10-17 04:03:54 +00:00
Weblate
e61c20c66f Added translation using Weblate (Hindi) 2023-10-17 04:03:53 +00:00
Weblate
8e4ca5fa78 Added translation using Weblate (Hungarian) 2023-10-17 04:03:52 +00:00
Weblate
8e08e863d2 Added translation using Weblate (Croatian) 2023-10-17 04:03:51 +00:00
Weblate
6ad16c4e86 Added translation using Weblate (Icelandic) 2023-10-17 04:03:50 +00:00
Weblate
42fa077099 Added translation using Weblate (Vietnamese) 2023-10-17 04:03:49 +00:00
Weblate
079d16020a Added translation using Weblate (Czech) 2023-10-17 04:03:49 +00:00
Weblate
fab6a42069 Added translation using Weblate (Welsh) 2023-10-17 04:03:28 +00:00
Weblate
c461ce133e Added translation using Weblate (Catalan) 2023-10-17 04:03:17 +00:00
Weblate
d8f3e1f1ef Added translation using Weblate (Occitan) 2023-10-17 04:02:55 +00:00
Weblate
107b576db1 Added translation using Weblate (Japanese) 2023-10-17 04:02:37 +00:00
Weblate
e553d50cb7 Added translation using Weblate (Bosnian) 2023-10-17 04:02:34 +00:00
Weblate
ff83a4a4f3 Added translation using Weblate (Asturian) 2023-10-17 04:02:04 +00:00
Weblate
58ad83caef Added translation using Weblate (Ukrainian) 2023-10-17 04:01:56 +00:00
Weblate
380d961ea4 Added translation using Weblate (Bulgarian) 2023-10-17 04:01:39 +00:00
Weblate
ca4a336b6a Added translation using Weblate (Bengali) 2023-10-17 04:01:37 +00:00
Weblate
5205a69041 Added translation using Weblate (Romanian) 2023-10-17 04:01:36 +00:00
Weblate
013f3d2d4c Added translation using Weblate (Russian) 2023-10-17 04:01:35 +00:00
Weblate
ca3f7a7c28 Added translation using Weblate (Esperanto) 2023-10-17 04:01:34 +00:00
Weblate
b9813c9ccb Added translation using Weblate (Greek) 2023-10-17 04:01:33 +00:00
Weblate
7255571f36 Added translation using Weblate (Danish) 2023-10-17 04:01:27 +00:00
Weblate
a9e6e9d75c Added translation using Weblate (German) 2023-10-17 04:01:16 +00:00
Weblate
4bcdbc62c6 Added translation using Weblate (Lithuanian) 2023-10-17 04:01:14 +00:00
Weblate
c91e92b80b Added translation using Weblate (Latvian) 2023-10-17 04:01:12 +00:00
Weblate
ca2f2c349e Added translation using Weblate (Turkish) 2023-10-17 04:01:11 +00:00
Weblate
420179458d Added translation using Weblate (Luxembourgish) 2023-10-17 06:01:10 +02:00
109247019824
20ffc23487 Translated using Weblate (Bulgarian)
Currently translated at 22.3% (29 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2023-10-17 06:01:10 +02:00
Sylvia van Os
8de5646d07 Merge pull request #1590 from CatimaLoyalty/dependabot/github_actions/TheLastProject/contributors-to-file-action-3.0.2
Bump TheLastProject/contributors-to-file-action from 3.0.1 to 3.0.2
2023-10-16 10:44:50 +02:00
Sylvia van Os
16dbe1572a Merge pull request #1593 from CatimaLoyalty/create-pull-request/patch-1697444721
Update feature graphic
2023-10-16 10:44:29 +02:00
TheLastProject
18f68cdb24 Update feature graphic 2023-10-16 08:25:20 +00:00
Sylvia van Os
147cf544a3 Merge pull request #1592 from CatimaLoyalty/manual_weblate_update
Manual weblate update
2023-10-16 10:23:47 +02:00
Sylvia van Os
a4763d8ed0 Remove translations failing checks 2023-10-16 10:15:36 +02:00
Hosted Weblate
382d86dce6 Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/
2023-10-16 10:04:29 +02:00
Camila
2a2d05dd01 Translated using Weblate (Portuguese)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/pt/
2023-10-16 10:04:29 +02:00
Alyona Akshyata Mohanta
09e6617808 Translated using Weblate (Bengali)
Currently translated at 38.6% (117 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2023-10-16 10:04:27 +02:00
depimomo
f9190ed915 Translated using Weblate (Indonesian)
Currently translated at 96.9% (126 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-10-16 10:00:10 +02:00
Muhammad Khuirul Huda
ea7ca81f1c Translated using Weblate (Indonesian)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-10-16 10:00:10 +02:00
Camila
68e5c36909 Translated using Weblate (Portuguese)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-10-16 10:00:10 +02:00
evelinabe
4e167c79c1 Translated using Weblate (Swedish)
Currently translated at 97.3% (295 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2023-10-16 10:00:10 +02:00
Francisco J. Martín Fernández
9361487af7 Translated using Weblate (Spanish)
Currently translated at 28.4% (37 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2023-10-16 10:00:10 +02:00
Kate O
c80107b870 Translated using Weblate (Polish)
Currently translated at 80.7% (105 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-10-16 10:00:10 +02:00
Alex Tan
52a1cc6549 Translated using Weblate (Japanese)
Currently translated at 73.9% (224 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2023-10-16 10:00:10 +02:00
Kate O
5f34d54b42 Translated using Weblate (Polish)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-10-16 10:00:10 +02:00
Virginie
ec4265504b Translated using Weblate (French)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/fr/
2023-10-16 10:00:10 +02:00
Camila
3f2b140d1f Translated using Weblate (Portuguese)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-10-16 10:00:10 +02:00
Sylvia van Os
4af3695301 Added translation using Weblate (Portuguese) 2023-10-16 10:00:10 +02:00
dependabot[bot]
f5368a4aab Bump TheLastProject/contributors-to-file-action from 3.0.1 to 3.0.2
Bumps [TheLastProject/contributors-to-file-action](https://github.com/thelastproject/contributors-to-file-action) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/thelastproject/contributors-to-file-action/releases)
- [Commits](https://github.com/thelastproject/contributors-to-file-action/compare/v3.0.1...v3.0.2)

---
updated-dependencies:
- dependency-name: TheLastProject/contributors-to-file-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 02:36:13 +00:00
Sylvia van Os
f5059b95d3 Merge pull request #1589 from CatimaLoyalty/removeCopyCardIDs
Remove copy card IDs
2023-10-15 23:57:26 +02:00
Sylvia van Os
85fa0afaa8 Remove copy card IDs 2023-10-15 19:03:33 +02:00
Sylvia van Os
3bcccba6d4 Merge pull request #1587 from CatimaLoyalty/create-pull-request/patch-1697343252
Update contributors
2023-10-15 12:05:54 +02:00
Sylvia van Os
188c2e25a2 Merge pull request #1559 from obfusk/getwindow-null
add null checks for getWindow()
2023-10-15 12:05:15 +02:00
TheLastProject
162622631f Update contributors 2023-10-15 04:14:11 +00:00
FC (Fay) Stegerman
946a426b32 add null checks for getWindow() 2023-10-15 02:55:39 +02:00
Sylvia van Os
354a0f7fc0 Merge pull request #1581 from CatimaLoyalty/feature/updateScreenshots
Update screenshots
2023-10-14 13:13:10 +02:00
Sylvia van Os
6015a944ff Merge pull request #1584 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-14 11:52:41 +02:00
Sylvia van Os
e30320603a Delete broken translation 2023-10-14 11:38:23 +02:00
Muhammad Khuirul Huda
acd644025e Translated using Weblate (Indonesian)
Currently translated at 93.8% (122 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-10-14 11:17:13 +02:00
Muhammad Khuirul Huda
b3e26f532d Translated using Weblate (Indonesian)
Currently translated at 96.0% (291 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-10-14 11:17:12 +02:00
109247019824
3a64b4652f Translated using Weblate (Bulgarian)
Currently translated at 19.2% (25 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2023-10-14 11:17:12 +02:00
Virginie
56f691ca53 Translated using Weblate (French)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-10-14 11:17:12 +02:00
Sylvia van Os
57c770c9ba Translated using Weblate (Romanian)
Currently translated at 44.2% (134 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2023-10-14 11:17:10 +02:00
yourfav-raphi
53c3c85e57 Translated using Weblate (German)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-10-14 11:17:10 +02:00
Virginie
9a02d1bfbc Added translation using Weblate (French) 2023-10-14 11:17:09 +02:00
Virginie
ffbb138986 Translated using Weblate (French)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-10-13 10:36:07 +02:00
MUNTEANU ROVELIU
181e9f082c Translated using Weblate (Romanian)
Currently translated at 44.2% (134 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2023-10-13 10:36:07 +02:00
Virginie
912a4cb955 Translated using Weblate (French)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-10-13 10:36:07 +02:00
Milton Castro
50a1e77500 Translated using Weblate (Spanish)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-10-13 10:36:07 +02:00
Sylvia van Os
aef32d2b95 Merge pull request #1580 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-12 13:50:21 +02:00
Sylvia van Os
d091ccb593 Update screenshots 2023-10-12 13:23:46 +02:00
Robin Liu
6fbbae9f0a Translated using Weblate (Chinese (Traditional))
Currently translated at 98.0% (297 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-10-12 12:56:55 +02:00
Robin Liu
176aa3880e Translated using Weblate (Chinese (Traditional))
Currently translated at 97.6% (296 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-10-12 12:54:36 +02:00
Robin Liu
fcf64c86a6 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.7% (284 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-10-12 12:46:40 +02:00
Robin Liu
b5f6742b12 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.4% (280 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-10-12 12:42:32 +02:00
Allan Nordhøy
26ae92dc84 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.6% (293 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-10-12 12:38:30 +02:00
Allan Nordhøy
c65cdc93a7 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/nb_NO/
2023-10-12 12:30:51 +02:00
Robin Liu
bd85590d39 Translated using Weblate (Chinese (Traditional))
Currently translated at 92.0% (279 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-10-12 12:30:51 +02:00
Allan Nordhøy
e3942b1737 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.0% (291 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-10-12 12:30:51 +02:00
Allan Nordhøy
2dc7fd9a45 Added translation using Weblate (Norwegian Bokmål) 2023-10-12 12:29:23 +02:00
Robin Liu
2b7f8b6bf7 Translated using Weblate (Chinese (Traditional))
Currently translated at 91.7% (278 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-10-12 10:24:15 +00:00
Sylvia van Os
db0619718c Merge pull request #1579 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-12 12:08:46 +02:00
Sylvia van Os
dd19ea6322 Translated using Weblate (Slovak)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2023-10-12 11:59:41 +02:00
Milan Šalka
5d656f9681 Translated using Weblate (Slovak)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2023-10-12 11:56:13 +02:00
109247019824
c2c50664ea Translated using Weblate (Bulgarian)
Currently translated at 10.7% (14 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2023-10-12 11:53:20 +02:00
Sylvia van Os
058eb7dd8b Translated using Weblate (Slovak)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2023-10-12 11:50:26 +02:00
Milan Šalka
7a381f3683 Translated using Weblate (Slovak)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/sk/
2023-10-12 11:16:25 +02:00
Milan Šalka
96b6ca4b3b Translated using Weblate (Slovak)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2023-10-12 11:13:50 +02:00
Milan Šalka
21815db47d Translated using Weblate (Slovak)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2023-10-12 11:13:50 +02:00
Milan Šalka
72f62b9211 Added translation using Weblate (Slovak) 2023-10-12 11:13:50 +02:00
Sylvia van Os
0e61a4584e Merge pull request #1576 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-12 10:46:09 +02:00
Heimen Stoffels
ca0ad17e8e Translated using Weblate (Dutch)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/nl/
2023-10-12 08:39:38 +00:00
Heimen Stoffels
20c4e03343 Translated using Weblate (Dutch)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-10-12 08:39:37 +00:00
Sylvia van Os
4ec4d8a3a6 Translated using Weblate (Dutch)
Currently translated at 100.0% (1 of 1 strings)

Translation: Catima/Android (Debug)
Translate-URL: https://hosted.weblate.org/projects/catima/android-debug/nl/
2023-10-12 08:39:37 +00:00
Anuj Kumar
34d1e94ba4 Translated using Weblate (Hindi)
Currently translated at 66.0% (200 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-12 08:39:36 +00:00
Eric
3ff6a2c269 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-10-12 08:39:35 +00:00
solokot
2327c0a940 Translated using Weblate (Russian)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-10-12 08:39:35 +00:00
Sylvia van Os
520629c075 Merge pull request #1572 from CatimaLoyalty/fix/newNavigationBarButtonColors
Fix navigation bar button colors
2023-10-12 10:39:12 +02:00
Sylvia van Os
48446cdac6 Merge pull request #1573 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-12 00:05:56 +02:00
Sylvia van Os
0e61908265 Added translation using Weblate (Dutch) 2023-10-11 23:45:14 +02:00
109247019824
ead67942f1 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-10-11 23:44:18 +02:00
Slávek Banko
43f36a1c99 Translated using Weblate (Czech)
Currently translated at 100.0% (303 of 303 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-10-11 23:44:17 +02:00
Sylvia van Os
bd7de108b5 Merge pull request #1571 from CatimaLoyalty/fix/appTitleTranslatable
Make app title translatable
2023-10-11 23:13:20 +02:00
Sylvia van Os
ef9a490d0b Make app title translatable 2023-10-11 22:57:29 +02:00
Sylvia van Os
4c26434f41 Fix navigation bar button colors 2023-10-11 21:23:54 +02:00
Sylvia van Os
ffd2eccdbe Merge pull request #1570 from CatimaLoyalty/create-pull-request/patch-1696959980
Update locales
2023-10-10 19:55:15 +02:00
TheLastProject
214ec7d7fb Update locales 2023-10-10 17:46:20 +00:00
Sylvia van Os
269e0a1c2a Merge pull request #1569 from obfusk/add-locales
add locales: vi (enabled), kn (disabled), ml (disabled)
2023-10-10 19:45:59 +02:00
FC (Fay) Stegerman
21c9a63819 add locales: vi (enabled), kn (disabled), ml (disabled) 2023-10-09 23:43:26 +02:00
Sylvia van Os
0121541a9a Merge pull request #1567 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-09 23:24:30 +02:00
Sylvia van Os
48be5390ec Merge pull request #1568 from obfusk/gradle-update-update
update obfusk/gradle-update-action to v2.0.0 & use outputs.version
2023-10-09 23:23:35 +02:00
FC (Fay) Stegerman
ca62ce8bcd update obfusk/gradle-update-action to v2.0.0 & use outputs.version 2023-10-09 22:36:31 +02:00
Yogesh
4ab6d0c5ab Translated using Weblate (Kannada)
Currently translated at 19.8% (60 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/kn/
2023-10-09 16:02:37 +02:00
Sylvia van Os
0c12533a8e Merge pull request #1563 from obfusk/gradle-update
CI: add workflow to update gradle
2023-10-09 09:49:49 +02:00
Sylvia van Os
b983498bbc Merge pull request #1564 from CatimaLoyalty/dependabot/gradle/com.github.spotbugs-5.1.4
Bump com.github.spotbugs from 5.1.3 to 5.1.4
2023-10-09 09:39:22 +02:00
Sylvia van Os
54871a1479 Merge pull request #1565 from CatimaLoyalty/dependabot/github_actions/actions/setup-python-4.7.1
Bump actions/setup-python from 4.7.0 to 4.7.1
2023-10-09 09:39:00 +02:00
dependabot[bot]
5fb911b884 Bump actions/setup-python from 4.7.0 to 4.7.1
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.7.0 to 4.7.1.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4.7.0...v4.7.1)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 02:35:22 +00:00
dependabot[bot]
8f05433ba3 Bump com.github.spotbugs from 5.1.3 to 5.1.4
Bumps com.github.spotbugs from 5.1.3 to 5.1.4.

---
updated-dependencies:
- dependency-name: com.github.spotbugs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 02:08:02 +00:00
FC (Fay) Stegerman
55b5285e62 CI: add workflow to update gradle 2023-10-09 02:22:18 +02:00
Sylvia van Os
4a920e3f83 Merge pull request #1554 from theimpulson/kotlinDSL
Migrate to Kotlin DSL
2023-10-08 16:53:50 +02:00
Sylvia van Os
1979006f2c Merge pull request #1562 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-08 16:02:45 +02:00
Govind S Nair
a2ac7f7c41 Translated using Weblate (Hindi)
Currently translated at 64.5% (195 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-08 13:09:48 +00:00
redha salah
533930771b Translated using Weblate (Arabic)
Currently translated at 97.3% (294 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-10-08 13:09:47 +00:00
Balázs Meskó
4beceeebf2 Translated using Weblate (Hungarian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-10-08 13:09:46 +00:00
Yogesh
f17f788d0b Added translation using Weblate (Kannada) 2023-10-08 13:09:45 +00:00
Sylvia van Os
f6c82035f8 Merge pull request #1561 from theimpulson/gradleUpdate
Bump to latest stable Gradle version
2023-10-08 13:39:33 +02:00
Sylvia van Os
fe9fbbfd57 Merge pull request #1560 from CatimaLoyalty/create-pull-request/patch-1696738468
Update contributors
2023-10-08 11:25:29 +02:00
Aayush Gupta
e2cce91360 Bump to latest stable Gradle version
* Enforce sha256Sum verification (https://gradle.org/release-checksums/)
*  Run ./gradlew wrapper as well

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-10-08 11:22:22 +05:30
Aayush Gupta
9981a64bcd gradle.properties: Sync with official template
* Specify JVM memory to avoid OOM errors
* Drop nonTransitiveRClass and nonFinalResIds as they are true by default

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-10-08 11:17:59 +05:30
Aayush Gupta
757a942ecf Migrate to Kotlin DSL
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-10-08 11:17:52 +05:30
TheLastProject
6954090744 Update contributors 2023-10-08 04:14:28 +00:00
Sylvia van Os
24e18473bd Merge pull request #1558 from CatimaLoyalty/updateDonateLink
Update donate link
2023-10-08 00:29:30 +02:00
Sylvia van Os
207e83a582 Update donate link 2023-10-07 23:52:46 +02:00
Sylvia van Os
6ad1d9497c Merge pull request #1557 from CatimaLoyalty/create-pull-request/patch-1696678504
Update feature graphic
2023-10-07 13:38:58 +02:00
TheLastProject
f728866645 Update feature graphic 2023-10-07 11:35:04 +00:00
Sylvia van Os
f6f904ae39 Merge pull request #1556 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-07 13:33:35 +02:00
Eric
4160909a32 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-10-07 10:14:12 +02:00
Milan Šalka
c990e40d0c Translated using Weblate (Slovak)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2023-10-07 10:14:12 +02:00
Max
d4e0b6d3cf Translated using Weblate (Polish)
Currently translated at 51.5% (67 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-10-07 10:14:12 +02:00
Slávek Banko
0197ae2f58 Translated using Weblate (Czech)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-10-07 10:14:12 +02:00
Skrripy
dcb94f242f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-10-07 10:14:12 +02:00
solokot
ab66304c72 Translated using Weblate (Russian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-10-07 10:14:12 +02:00
Michael Gangolf
ee7d9e2405 Translated using Weblate (German)
Currently translated at 92.3% (120 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-10-07 10:14:12 +02:00
Sylvia van Os
146a4676d5 Merge pull request #1552 from CatimaLoyalty/create-pull-request/patch-1696511388
Update feature graphic
2023-10-05 15:35:09 +02:00
TheLastProject
27da7913cb Update feature graphic 2023-10-05 13:09:48 +00:00
Sylvia van Os
cb1cf607f5 Merge pull request #1551 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-05 15:08:13 +02:00
Sylvia van Os
acf94600f8 Delete garbage translations that would crash the app 2023-10-05 15:00:55 +02:00
Đăng Tú
a41124cc7b Translated using Weblate (Vietnamese)
Currently translated at 95.3% (288 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/vi/
2023-10-05 12:13:16 +00:00
Govind S Nair
0d0564b295 Translated using Weblate (Malayalam)
Currently translated at 26.4% (80 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ml/
2023-10-05 12:13:15 +00:00
Mohit ahlawat
ba7a849c18 Translated using Weblate (Hindi)
Currently translated at 5.3% (7 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2023-10-05 12:13:15 +00:00
Govind S Nair
b3b347cd9b Translated using Weblate (Hindi)
Currently translated at 61.2% (185 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-05 12:13:14 +00:00
Abdullah khan
2efdb5b9bb Translated using Weblate (Hindi)
Currently translated at 61.2% (185 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-05 12:13:13 +00:00
Milo Ivir
c7961feb27 Translated using Weblate (Croatian)
Currently translated at 2.3% (3 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hr/
2023-10-05 12:13:12 +00:00
Milo Ivir
43c092915a Translated using Weblate (Croatian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-10-05 12:13:12 +00:00
Jiri Grönroos
720fbb4eae Translated using Weblate (Finnish)
Currently translated at 98.6% (298 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-10-05 12:13:11 +00:00
Eric
0b888380e5 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-10-05 12:13:09 +00:00
Milan Šalka
8b4fc8c76b Translated using Weblate (Slovak)
Currently translated at 99.2% (129 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2023-10-05 12:13:08 +00:00
Max
b9ade35828 Translated using Weblate (Polish)
Currently translated at 46.1% (60 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-10-05 12:13:05 +00:00
Slávek Banko
c990992f8b Translated using Weblate (Czech)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-10-05 12:13:04 +00:00
Skrripy
4a7907f991 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-10-05 12:13:03 +00:00
Wonchul Kang
6f3bae96ff Translated using Weblate (Korean)
Currently translated at 97.0% (293 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-10-05 12:13:03 +00:00
Michael Gangolf
1a1ea44902 Translated using Weblate (German)
Currently translated at 100.0% (130 of 130 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-10-05 12:13:02 +00:00
Milan Šalka
4c9a560b53 Translated using Weblate (Slovak)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2023-10-05 12:13:01 +00:00
Viviana Y
5cb822b295 Translated using Weblate (Spanish (Argentina))
Currently translated at 29.8% (90 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es_AR/
2023-10-05 12:13:01 +00:00
Sylvia van Os
df7b2ee4d0 Merge pull request #1550 from CatimaLoyalty/create-pull-request/patch-1696502161
Update Fastlane changelogs
2023-10-05 12:55:23 +02:00
TheLastProject
6871c48c8e Update Fastlane changelogs 2023-10-05 10:36:01 +00:00
Sylvia van Os
497458f04c Update CHANGELOG 2023-10-05 12:35:37 +02:00
Sylvia van Os
a196969a93 Merge pull request #1547 from theimpulson/917
CatimaAppCompatActivity: Set navigation bar color on Android 8.1+
2023-10-05 12:33:05 +02:00
Aayush Gupta
76b65b45bc CatimaAppCompatActivity: Set navigation bar color on Android 8.1+
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-10-05 11:19:16 +05:30
Sylvia van Os
eb9935bb83 Clean up contributor guidelines 2023-10-03 22:07:49 +02:00
Sylvia van Os
98c595696d Merge pull request #1535 from theimpulson/1498
Migrate to from OnBackPressed to OnBackPressedDispatcher
2023-10-02 20:37:23 +02:00
Sylvia van Os
d484e83f47 Merge pull request #1545 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-02 12:56:14 +02:00
Sylvia van Os
19093b462c Merge pull request #1538 from CatimaLoyalty/create-pull-request/patch-1696175280
Update feature graphic
2023-10-02 12:55:50 +02:00
ngdangtu
8488352e77 Added translation using Weblate (Vietnamese) 2023-10-02 12:31:18 +02:00
Mohit ahlawat
38522564cf Translated using Weblate (Hindi)
Currently translated at 3.8% (5 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2023-10-02 05:04:56 +00:00
Mohit ahlawat
e8e15b5432 Translated using Weblate (Hindi)
Currently translated at 54.6% (165 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-02 05:04:55 +00:00
Milo Ivir
a032fc06a3 Translated using Weblate (Croatian)
Currently translated at 92.3% (279 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-10-02 05:04:54 +00:00
Govind S Nair
a9d55f129b Added translation using Weblate (Malayalam) 2023-10-02 05:04:53 +00:00
Sylvia van Os
84b35aa464 Merge pull request #1544 from CatimaLoyalty/dependabot/gradle/com.android.application-8.1.2
Bump com.android.application from 8.1.1 to 8.1.2
2023-10-01 20:47:59 +02:00
Sylvia van Os
54342c4ee0 Merge pull request #1543 from CatimaLoyalty/dependabot/gradle/androidx.preference-preference-1.2.1
Bump androidx.preference:preference from 1.2.0 to 1.2.1
2023-10-01 20:46:16 +02:00
Sylvia van Os
b89050b03c Merge pull request #1542 from CatimaLoyalty/dependabot/github_actions/actions/checkout-4.1.0
Bump actions/checkout from 4.0.0 to 4.1.0
2023-10-01 20:45:24 +02:00
dependabot[bot]
37eac1b9b7 Bump com.android.application from 8.1.1 to 8.1.2
Bumps com.android.application from 8.1.1 to 8.1.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 18:38:24 +00:00
dependabot[bot]
e4b287b3c2 Bump androidx.preference:preference from 1.2.0 to 1.2.1
Bumps androidx.preference:preference from 1.2.0 to 1.2.1.

---
updated-dependencies:
- dependency-name: androidx.preference:preference
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 18:38:19 +00:00
dependabot[bot]
7cef3c4a53 Bump actions/checkout from 4.0.0 to 4.1.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 18:36:17 +00:00
Sylvia van Os
6b39470890 Merge pull request #1541 from CatimaLoyalty/fix/dependabot
Work around https://github.com/dependabot/dependabot-core/issues/6888
2023-10-01 20:35:52 +02:00
Sylvia van Os
5f184db48d Work around https://github.com/dependabot/dependabot-core/issues/6888 2023-10-01 19:18:08 +02:00
Sylvia van Os
96c430dd8c Merge pull request #1540 from CatimaLoyalty/create-pull-request/patch-1696176353
Update Fastlane changelogs
2023-10-01 18:23:01 +02:00
TheLastProject
be662f2e67 Update Fastlane changelogs 2023-10-01 16:05:52 +00:00
Sylvia van Os
3fdd4559b6 Update CHANGELOG 2023-10-01 18:05:29 +02:00
Sylvia van Os
ecf9c0d1e2 Merge pull request #1526 from CatimaLoyalty/fix/showArchiveGroupBug
Fix incorrect UI updates when toggling showing archive if all cards in group are in archive
2023-10-01 18:04:49 +02:00
TheLastProject
67903c21d4 Update feature graphic 2023-10-01 15:47:59 +00:00
Sylvia van Os
5924c8616c Merge pull request #1537 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-10-01 17:46:46 +02:00
Mohit ahlawat
0f2f430b7f Translated using Weblate (Hindi)
Currently translated at 3.1% (4 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hi/
2023-10-01 17:18:45 +02:00
Sajal Agarwal
4a99bad8be Translated using Weblate (Hindi)
Currently translated at 54.3% (164 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-01 17:18:45 +02:00
Michael Gangolf
9964fa5943 Translated using Weblate (German)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-10-01 17:18:44 +02:00
Eryk Michalak
b6860a8634 Translated using Weblate (Polish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-10-01 17:18:44 +02:00
Ziad OUALHADJ
cc0ef2dc0e Translated using Weblate (Italian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-10-01 17:18:43 +02:00
Michael Gangolf
351504dc5f Translated using Weblate (German)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-10-01 17:18:43 +02:00
Aayush Gupta
b2494d8fdc test: Migrate to from OnBackPressed to OnBackPressedDispatcher
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-10-01 19:32:16 +05:30
Aayush Gupta
aea1ea0cbf Migrate to from OnBackPressed to OnBackPressedDispatcher
Closes: https://github.com/CatimaLoyalty/Android/issues/1498

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2023-10-01 18:51:06 +05:30
Sajal Agarwal
ff9f22e4bd Translated using Weblate (Hindi)
Currently translated at 53.9% (163 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-10-01 08:40:43 +00:00
Sylvia van Os
fb13e0ab30 Translated using Weblate (Ukrainian)
Currently translated at 99.6% (301 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-10-01 08:40:42 +00:00
Sylvia van Os
443685c26e Translated using Weblate (English)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2023-10-01 08:40:41 +00:00
Skrripy
bd362f1ac0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-10-01 08:40:41 +00:00
Shams Sami
b23606ed3b Translated using Weblate (English)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2023-10-01 08:40:40 +00:00
Sylvia van Os
2344b6367f Merge pull request #1533 from CatimaLoyalty/create-pull-request/patch-1696133596
Update contributors
2023-10-01 10:37:20 +02:00
TheLastProject
394f15bed8 Update contributors 2023-10-01 04:13:15 +00:00
Sylvia van Os
83d7422b9c Merge pull request #1532 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-30 17:44:50 +02:00
Slávek Banko
a7246cf786 Translated using Weblate (Czech)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-09-30 13:01:13 +00:00
Slávek Banko
7abcd5b0cd Translated using Weblate (Czech)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-09-30 13:01:12 +00:00
Sylvia van Os
a2b224df9b Merge pull request #1529 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-29 17:22:16 +02:00
solokot
4542da4c38 Translated using Weblate (Russian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-09-29 14:00:25 +02:00
Heimen Stoffels
3c92c53164 Translated using Weblate (Dutch)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-09-29 14:00:25 +02:00
Sylvia van Os
b326778219 Merge pull request #1527 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-28 17:51:25 +02:00
Mateus Souza
81e16d95ac Translated using Weblate (Portuguese)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-09-28 06:44:59 +02:00
Mateus Souza
ef18bbdf7c Translated using Weblate (Portuguese)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-09-28 06:44:58 +02:00
109247019824
6562a0177b Translated using Weblate (Bulgarian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-09-28 06:44:58 +02:00
Eric
275a427355 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-09-28 06:44:57 +02:00
Skrripy
ce6a79f03d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-09-28 06:44:57 +02:00
solokot
dc792c8425 Translated using Weblate (Russian)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-09-28 06:44:57 +02:00
J. Lavoie
680d2173d1 Translated using Weblate (French)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-09-28 06:44:57 +02:00
gallegonovato
e95a20b971 Translated using Weblate (Spanish)
Currently translated at 100.0% (302 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-09-28 06:44:57 +02:00
kb01guy
56de06abac Translated using Weblate (German)
Currently translated at 98.6% (298 of 302 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-09-28 06:44:57 +02:00
Sylvia van Os
d66176e628 Fix incorrect UI updates when toggling showing archive if all cards in group are in archive
The callback used by the display options menu bypassed the card counter.
This used to work fine as the visible count used to remain the same but
when toggling the visibility of archived cards was added to the display
menu this caused the UI to get stuck with a wrong idea of how many cards
are visible.
2023-09-27 17:52:44 +02:00
1128 changed files with 10140 additions and 3061 deletions

View File

@@ -2,9 +2,29 @@ version: 2
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- google
- gradlePluginPortal
- jitpack
- mavenCentral
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
# Workaround for https://github.com/dependabot/dependabot-core/issues/6888
registries:
google:
type: maven-repository
url: "https://dl.google.com/dl/android/maven2/"
gradlePluginPortal:
type: maven-repository
url: "https://plugins.gradle.org/m2/"
jitpack:
type: maven-repository
url: "https://jitpack.io/"
mavenCentral:
type: maven-repository
url: "https://repo1.maven.org/maven2/"

View File

@@ -28,11 +28,14 @@ env:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
api-level: [ 21, 34 ]
steps:
- uses: actions/checkout@v4.0.0
- uses: actions/checkout@v4.2.2
- name: Fail on bad translations
run: if grep -ri "&lt;xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
- uses: gradle/wrapper-validation-action@v1
- uses: gradle/actions/wrapper-validation@v4
- name: set up OpenJDK 17
run: |
sudo apt-get update
@@ -44,11 +47,22 @@ jobs:
run: ./gradlew lintRelease
- name: Run unit tests
run: timeout 5m ./gradlew testReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew testReleaseUnitTest; }
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run instrumented tests
uses: ReactiveCircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
script: ./gradlew connectedCheck
- name: SpotBugs
run: ./gradlew spotbugsRelease
- name: Archive test results
if: always()
uses: actions/upload-artifact@v3.1.3
uses: actions/upload-artifact@v4.4.3
with:
name: test-results
name: test-results-api${{ matrix.api-level }}
path: app/build/reports

View File

@@ -27,15 +27,15 @@ jobs:
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.2.2
- name: Setup Python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v5.3.0
with:
python-version: '3.x'
- name: Run converter script
run: python .scripts/changelog_to_fastlane.py
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
uses: peter-evans/create-pull-request@v7.0.5
with:
title: "Update Fastlane changelogs"
commit-message: "Update Fastlane changelogs"

View File

@@ -25,14 +25,15 @@ jobs:
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v4.0.0
uses: actions/checkout@v4.2.2
- name: Update contributors
id: update_contributors
uses: TheLastProject/contributors-to-file-action@v3.0.1
uses: TheLastProject/contributors-to-file-action@v3.2.0
with:
file_in_repo: app/src/main/res/raw/contributors.txt
min_commit_count: 5
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
uses: peter-evans/create-pull-request@v7.0.5
with:
title: "Update contributors"
commit-message: "Update contributors"

View File

@@ -6,6 +6,7 @@ on:
- main
paths:
- 'fastlane/**/title.txt'
- '.scripts/generate_feature_graphic/**'
permissions:
actions: none
checks: none
@@ -24,7 +25,7 @@ jobs:
generate-feature-graphic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
- uses: actions/checkout@v4.2.2
- name: Install requirements
run: |
sudo apt-get update
@@ -36,41 +37,9 @@ jobs:
find .scripts/generate_feature_graphic/fonts -name '*.ttf' -exec cp {} "$HOME/.fonts" \;
fc-cache
- name: Generate featureGraphic.png for each language
run: |
for lang in fastlane/metadata/android/*; do
pushd "$lang"
# Place temporary copy for editing if needed
cp ../../../../.scripts/generate_feature_graphic/featureGraphic.svg featureGraphic.svg
# Extract text after 'Catima - '
export subtext="$(grep -oP '(?<=Catima \S ).*' title.txt || true)"
# If there is subtext, change the .svg accordingly
if [ -n "$subtext" ]; then
perl -pi -e 's/Loyalty Card Wallet/$ENV{subtext}/' featureGraphic.svg
# Set correct font for language if needed (Lexend Deca has limited support)
# We specifically need the Serif version because of the 200 weight
case "$(basename "$lang")" in
bg|el-GR|ru-RU|uk) sed -i "s/Lexend Deca/Noto Serif/" featureGraphic.svg ;;
ja-JP) sed -i "s/Lexend Deca/Noto Serif CJK JP/" featureGraphic.svg ;;
ko) sed -i "s/Lexend Deca/Noto Serif CJK KR/" featureGraphic.svg ;;
zh-CN) sed -i "s/Lexend Deca/Noto Serif CJK SC/" featureGraphic.svg ;;
zh-TW) sed -i "s/Lexend Deca/Noto Serif CJK TC/" featureGraphic.svg ;;
*) ;;
esac
fi
# Ensure images directory exists
mkdir -p images
# Generate .png
convert featureGraphic.svg images/featureGraphic.png
# Optimize .png
optipng images/featureGraphic.png
# Remove metadata (timestamps) from .png
mat2 --inplace images/featureGraphic.png
# Remove temporary .svg
rm featureGraphic.svg
popd
done
run: .scripts/generate_feature_graphic/generate_feature_graphic.sh
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
uses: peter-evans/create-pull-request@v7.0.5
with:
title: "Update feature graphic"
commit-message: "Update feature graphic"

33
.github/workflows/gradle-update.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
name: Gradle update
on:
workflow_dispatch:
schedule:
- cron: '3 6 * * *'
permissions:
actions: none
checks: none
contents: write
deployments: none
discussions: none
id-token: none
issues: none
packages: none
pages: none
pull-requests: write
repository-projects: none
security-events: none
statuses: none
jobs:
gradle-update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.2
- uses: obfusk/gradle-update-action@v3.0.0
id: gradle-update
- uses: gradle/actions/wrapper-validation@v4
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7.0.5
with:
title: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
commit-message: "Update Gradle to ${{ steps.gradle-update.outputs.version }}"
branch-suffix: timestamp

View File

@@ -5,6 +5,7 @@ on:
branches:
- main
paths:
- app/src/main/res/values-*/strings.xml
- app/src/main/res/values/settings.xml
permissions:
actions: none
@@ -24,11 +25,13 @@ jobs:
update-locales:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
- uses: actions/checkout@v4.2.2
- name: Add new locales
run: .scripts/new-locales.py
- name: Update locales
run: .scripts/locales.py
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
uses: peter-evans/create-pull-request@v7.0.5
with:
title: "Update locales"
commit-message: "Update locales"

26
.gitignore vendored
View File

@@ -1,13 +1,25 @@
# Android Studio generated (superseded/unused rules commented out)
*.iml
.gradle
local.properties
.idea/
/local.properties
#/.idea/caches
#/.idea/libraries
#/.idea/modules.xml
#/.idea/workspace.xml
#/.idea/navEditor.xml
#/.idea/assetWizardSettings.xml
.DS_Store
build/
captures/
**/release
**/debug
app/*.log
/build
/captures
.externalNativeBuild
.cxx
#local.properties
# Android extras
/app/*.log
/app/build
/app/release
/.idea
# Bundle
/.bundle/

View File

@@ -0,0 +1,60 @@
#!/bin/bash
set -euo pipefail
script_location="$(dirname "$(readlink -f "$0")")"
for lang in "$script_location/../../fastlane/metadata/android/"*; do
# Skip languages without title.txt
if [ ! -f "$lang/title.txt" ]; then
continue
fi
pushd "$lang"
# Place temporary copy for editing if needed
cp "$script_location/featureGraphic.svg" featureGraphic.svg
if grep -q — title.txt; then
# Try splitting title.txt on — (em dash)
IFS='—' read -r appname subtext < title.txt
elif grep -q title.txt; then
# No result, try splitting title.txt on (en dash)
IFS='' read -r appname subtext < title.txt
elif grep -q - title.txt; then
# No result, try splitting on - (dash)
IFS='-' read -r appname subtext < title.txt
else
# No result, use the full title as app name and default subtext
appname=$(< title.txt)
subtext="Loyalty Card Wallet"
fi
export appname=${appname%% }
export subtext=${subtext## }
# If the appname isn't Catima or there is subtext, change the .svg accordingly
if [ "$appname" != "Catima" ] || [ -n "$subtext" ]; then
perl -pi -e 's/Catima/$ENV{appname}/' featureGraphic.svg
perl -pi -e 's/Loyalty Card Wallet/$ENV{subtext}/' featureGraphic.svg
# Set correct font or font size for language if needed
# (Lexend Deca has limited support and some characters are big)
# We specifically need the Serif version because of the 200 weight
case "$(basename "$lang")" in
bg|el-GR|ru-RU|uk) sed -i "s/Lexend Deca/Noto Serif/" featureGraphic.svg ;;
hi-IN) sed -i -e "s/Yesteryear/Noto Serif Devanagari/" -e "s/Lexend Deca/Noto Serif Devanagari/" featureGraphic.svg ;;
ja-JP) sed -i "s/Lexend Deca/Noto Serif CJK JP/" featureGraphic.svg ;;
kn-IN) sed -i -e 's/font-size="150"/font-size="100"/' -e "s/Yesteryear/Noto Serif Kannada/" featureGraphic.svg ;;
ko) sed -i "s/Lexend Deca/Noto Serif CJK KR/" featureGraphic.svg ;;
zh-CN) sed -i "s/Lexend Deca/Noto Serif CJK SC/" featureGraphic.svg ;;
zh-TW) sed -i "s/Lexend Deca/Noto Serif CJK TC/" featureGraphic.svg ;;
*) ;;
esac
fi
# Ensure images directory exists
mkdir -p images
# Generate .png
convert featureGraphic.svg images/featureGraphic.png
# Optimize .png
optipng images/featureGraphic.png
# Remove metadata (timestamps) from .png
mat2 --inplace images/featureGraphic.png
# Remove temporary .svg
rm featureGraphic.svg
popd
done

View File

@@ -19,12 +19,12 @@ res = ", ".join(f'"{loc}"' for loc in locales)
sed = [
"sed",
"-i",
f"s/resourceConfigurations .*/resourceConfigurations += [{res}]/",
"app/build.gradle"
f"s/resourceConfigurations .*/resourceConfigurations += listOf({res})/",
"app/build.gradle.kts"
]
subprocess.run(sed, check=True)
with open("app/src/main/res/xml/locales_config.xml", "w") as fh:
with open("app/src/main/res/xml/locales_config.xml", "w", encoding="utf-8") as fh:
fh.write('<?xml version="1.0" encoding="utf-8"?>\n')
fh.write('<locale-config xmlns:android="http://schemas.android.com/apk/res/android">\n')
fh.write(' <locale android:name="en-US" />\n')

132
.scripts/new-locales.py Executable file
View File

@@ -0,0 +1,132 @@
#!/usr/bin/python3
import glob
import re
from typing import Iterator, List, Tuple
import requests
MIN_PERCENT = 90
NOT_LANGS = ("night", "w600dp")
REPLACE_CODES = {
"el": "el-rGR",
"id": "in-rID",
"ro": "ro-rRO",
"zh_Hans": "zh-rCN",
"zh_Hant": "zh-rTW",
}
STATS_URL = "https://hosted.weblate.org/api/components/catima/catima/statistics/"
class Error(Exception):
pass
def get_weblate_langs() -> List[Tuple[str, int]]:
url = STATS_URL
results = []
for _ in range(16): # avoid endless loops just in case
r = requests.get(url, timeout=5)
r.raise_for_status()
data = r.json()
for lang in data["results"]:
if lang["code"] != "en":
code = REPLACE_CODES.get(lang["code"], lang["code"]).replace("_", "-r")
results.append((code, round(lang["translated_percent"])))
url = data["next"]
if not url:
return sorted(results)
if not url.split("?")[0] == STATS_URL:
raise Error(f"Unexpected next URL: {url}")
raise Error("Too many pages")
def get_dir_langs() -> List[str]:
results = []
for d in glob.glob("app/src/main/res/values-*"):
code = d.split("-", 1)[1]
if code not in NOT_LANGS:
results.append(code)
return sorted(results)
def get_xml_langs() -> List[Tuple[str, bool]]:
results = []
in_section = False
with open("app/src/main/res/values/settings.xml", encoding="utf-8") as fh:
for line in fh:
if not in_section and 'name="locale_values"' in line:
in_section = True
elif in_section:
if "string-array" in line:
break
disabled = "<!--" in line
if m := re.search(r">(.*)<", line):
if m[1] != "en":
results.append((m[1], disabled))
return sorted(results)
def update_xml_langs(langs: List[Tuple[str, bool]]) -> None:
lines: List[str] = []
in_section = False
with open("app/src/main/res/values/settings.xml", encoding="utf-8") as fh:
for line in fh:
if not in_section and 'name="locale_values"' in line:
in_section = True
elif in_section:
if "string-array" in line:
in_section = False
lines.extend(_lang_lines(langs))
else:
continue
lines.append(line)
with open("app/src/main/res/values/settings.xml", "w", encoding="utf-8") as fh:
for line in lines:
fh.write(line)
def _lang_lines(langs: List[Tuple[str, bool]]) -> Iterator[str]:
yield " <item />\n"
for lang, disabled in sorted(langs + [("en", False)]):
if disabled:
yield f" <!-- <item>{lang}</item> -->\n"
else:
yield f" <item>{lang}</item>\n"
def main() -> None:
web_langs = get_weblate_langs()
dir_langs = get_dir_langs()
xml_langs = get_xml_langs()
web_codes = set(code for code, _ in web_langs)
dir_codes = set(dir_langs)
xml_codes = set(code for code, _ in xml_langs)
if diff := web_codes - dir_codes:
print(f"WARNING: Weblate codes w/o dir: {diff}")
if diff := xml_codes - dir_codes:
print(f"WARNING: XML codes w/o dir: {diff}")
percentages = dict(web_langs)
all_langs = xml_langs[:]
# add new langs as disabled
for code in dir_codes - xml_codes:
all_langs.append((code, True))
# enable disabled langs if they are at least MIN_PERCENT translated now
updated_langs = sorted(
(code, percentages[code] < MIN_PERCENT if disabled else disabled)
for code, disabled in all_langs
)
if updated_langs != xml_langs:
print("Updating...")
update_xml_langs(updated_langs)
if __name__ == "__main__":
main()

View File

@@ -1,9 +1,65 @@
# Changelog
## Unreleased - 132
## v2.33.0 - 141 (2024-11-19)
- Change default column on wide screens to 4
- Allow overriding column counts for portrait and landscape in settings
- Keep main screen search filter when rotating screen or opening a card
- Limit max length of note display on main screen
## v2.32.1 - 140 (2024-10-29)
- Fix text wrapping on add dialog
## v2.32.0 - 139 (2024-10-28)
- Option to navigate cards using the volume buttons
- Fix Stocard import
- Fix "Import cancelled" message appearing after successful import
## v2.31.1 - 138 (2024-08-24)
- Fix back gesture on main screen dismissing keyboard and search on Android 13+
## v2.31.0 - 137 (2024-07-26)
- Allow long store names in preview to split over multiple lines
- Option to use front of back image in thumbnail menu
- Minor import/export fixes
- Minor UI fixes
## v2.30.0 - 136 (2024-06-18)
- Support for creating a card when sharing plain text
- Display image type instead of barcode below images
- Fix possible crash when trying to import a backup from the Nextcloud app
- Improved support for devices without camera
## v2.29.1 - 135 (2024-05-19)
- Various fixes and improvements to balance handling
## v2.29.0 - 134 (2024-04-19)
- Support for scanning PDF files for barcodes
- Support for image files with multiple barcodes
- Minor UI fixes
## v2.28.0 - 133 (2024-03-08)
- Target Android 14
- Open card icon in gallery on touch
- Improve design of Photos tab in edit view
- Update spending screen to also support receiving
## v2.27.0 - 132 (2024-01-30)
- Refine "Add card" workflow
- Validation flow improvements
- Fix edge case causing invalid UI state when toggling showing archive
- Use theme or card colour for navigation bar (Android 8.1+)
- Updated validity and expiry date selector
- Add option to always rotate (ignoring system settings)
## v2.26.0 - 131 (2023-09-14)

View File

@@ -1,13 +1,15 @@
How to Submit Patches to the Catima Project
===============================================================================
https://github.com/TheLastProject/Catima
# How to Submit Patches to the Catima Project
This document is intended to act as a guide to help you contribute to the
Catima project. It is not perfect, and there will always be exceptions
Catima project. It is not perfect, and there will always be exceptions
to the rules described here, but by following the instructions below you
should have a much easier time getting your work merged with the upstream
project.
When contributing, you certify that you agree to and have the rights to submit
your contribution under the project's license and understand that git will
store your name and email address in project history indefinitely.
## Translation Changes
Translation changes are managed through [Weblate](https://hosted.weblate.org/projects/catima/).
@@ -57,44 +59,6 @@ if you can describe/include a reproducer for the problem in the description as
well as instructions on how to test for the bug and verify that it has been
fixed.
### Sign Your Work
The sign-off is a simple line at the end of the patch description, which
certifies that you wrote it or otherwise have the right to pass it on as an
open-source patch. The "Developer's Certificate of Origin" pledge is taken
from the Linux Kernel and the rules are pretty simple:
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
... then you just add a line to the bottom of your patch description, with
your real name, saying:
Signed-off-by: Random J Developer <random@developer.example.org>
### Submit Patch(es) for Review
Finally, you will need to submit your patches so that they can be reviewed

View File

@@ -1,29 +1,32 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
CFPropertyList (3.0.7)
base64
nkf
rexml
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.824.0)
aws-sdk-core (3.181.1)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-eventstream (1.3.0)
aws-partitions (1.998.0)
aws-sdk-core (3.211.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.134.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (1.95.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.169.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.10.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
@@ -32,12 +35,11 @@ GEM
declarative (0.0.20)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.103.0)
faraday (1.10.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -58,22 +60,22 @@ GEM
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.215.1)
fastimage (2.3.1)
fastlane (2.225.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
@@ -82,9 +84,11 @@ GEM
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
@@ -93,10 +97,10 @@ GEM
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3)
@@ -105,11 +109,13 @@ GEM
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.49.0)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.1)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -117,62 +123,63 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.7.1)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
google-cloud-errors (1.4.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.8.0)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
http-cookie (1.0.7)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
mini_magick (4.12.0)
json (2.7.5)
jwt (2.9.3)
base64
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
multipart-post (2.4.1)
nanaimo (0.4.0)
naturally (2.2.1)
optparse (0.1.1)
nkf (0.2.0)
optparse (0.5.0)
os (1.1.4)
plist (3.7.0)
public_suffix (5.0.3)
rake (13.0.6)
plist (3.7.1)
public_suffix (6.0.1)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.6)
rexml (3.3.9)
rouge (2.0.7)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.18.0)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
@@ -180,28 +187,25 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.4.2)
webrick (1.8.1)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.22.0)
xcodeproj (1.26.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
@@ -214,4 +218,4 @@ DEPENDENCIES
fastlane
BUNDLED WITH
2.3.26
2.5.16

View File

@@ -1,146 +0,0 @@
import com.github.spotbugs.snom.SpotBugsTask
plugins {
id 'com.android.application'
id 'com.github.spotbugs'
}
spotbugs {
ignoreFailures = false
effort = 'max'
excludeFilter = file("./config/spotbugs/exclude.xml")
reportsDir = file("$buildDir/reports/spotbugs/")
}
android {
compileSdk 33
defaultConfig {
applicationId "me.hackerchick.catima"
minSdk 21
targetSdk 33
versionCode 131
versionName "2.26.0"
vectorDrawables.useSupportLibrary true
multiDexEnabled true
resourceConfigurations += ["ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "fi", "fr", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt", "ro-rRO", "ru", "sk", "sl", "sv", "tr", "uk", "zh-rTW", "zh-rCN"]
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue "string", "app_name", "Catima"
}
debug {
applicationIdSuffix ".debug"
resValue "string", "app_name", "Catima Debug"
}
}
buildFeatures {
viewBinding true
}
bundle {
language {
enableSplit = false
}
}
compileOptions {
encoding "UTF-8"
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
sourceSets {
test {
resources.srcDirs += ['src/test/res']
}
}
// Starting with Android Studio 3 Robolectric is unable to find resources.
// The following allows it to find the resources.
testOptions {
unitTests {
all {
testLogging {
events 'started', 'passed', 'skipped', 'failed'
}
}
includeAndroidResources true
}
}
lint {
lintConfig file('lint.xml')
}
namespace 'protect.card_locker'
}
dependencies {
// AndroidX
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.exifinterface:exifinterface:1.3.6'
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'com.google.android.material:material:1.9.0'
implementation 'com.github.yalantis:ucrop:2.2.8'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
// Splash Screen
implementation 'androidx.core:core-splashscreen:1.0.1'
// Third-party
implementation 'com.journeyapps:zxing-android-embedded:4.3.0@aar'
implementation 'com.google.zxing:core:3.5.2'
implementation 'org.apache.commons:commons-csv:1.9.0'
implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'net.lingala.zip4j:zip4j:2.11.5'
// SpotBugs
implementation 'io.wcm.tooling.spotbugs:io.wcm.tooling.spotbugs.annotations:1.0.0'
// Testing
testImplementation 'androidx.test:core:1.5.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.robolectric:robolectric:4.10.3'
}
tasks.withType(SpotBugsTask) {
description 'Run spotbugs'
group 'verification'
//classes = fileTree('build/intermediates/javac/debug/compileDebugJavaWithJavac/classes')
//source = fileTree('src/main/java')
//classpath = files()
reports {
xml.enabled = false
html.enabled = true
}
}
tasks.register('copyRawResFiles', Copy) {
from layout.projectDirectory.file("../CHANGELOG.md"),
layout.projectDirectory.file("../PRIVACY.md")
into layout.projectDirectory.dir("src/main/res/raw")
rename { String fileName -> fileName.toLowerCase() }
}
project.afterEvaluate {
tasks.each { task ->
if (task != copyRawResFiles) {
task.dependsOn(copyRawResFiles)
}
}
}

156
app/build.gradle.kts Normal file
View File

@@ -0,0 +1,156 @@
import com.android.build.gradle.internal.tasks.factory.dependsOn
import com.github.spotbugs.snom.SpotBugsTask
plugins {
id("com.android.application")
id("com.github.spotbugs")
}
spotbugs {
ignoreFailures.set(false)
setEffort("max")
excludeFilter.set(file("./config/spotbugs/exclude.xml"))
reportsDir.set(layout.buildDirectory.file("reports/spotbugs/").get().asFile)
}
android {
namespace = "protect.card_locker"
compileSdk = 34
defaultConfig {
applicationId = "me.hackerchick.catima"
minSdk = 21
targetSdk = 34
versionCode = 141
versionName = "2.33.0"
vectorDrawables.useSupportLibrary = true
multiDexEnabled = true
resourceConfigurations += listOf("ar", "bg", "bn", "bn-rIN", "bs", "cs", "da", "de", "el-rGR", "en", "eo", "es", "es-rAR", "et", "fi", "fr", "gl", "he-rIL", "hi", "hr", "hu", "in-rID", "is", "it", "ja", "ko", "lt", "lv", "nb-rNO", "nl", "oc", "pl", "pt-rBR", "pt-rPT", "ro-rRO", "ru", "sk", "sl", "sr", "sv", "tr", "uk", "vi", "zh-rCN", "zh-rTW")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android.txt"),
"proguard-rules.pro"
)
}
debug {
applicationIdSuffix = ".debug"
}
}
buildFeatures {
buildConfig = true
viewBinding = true
}
bundle {
language {
enableSplit = false
}
}
compileOptions {
encoding = "UTF-8"
// Flag to enable support for the new language APIs
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
sourceSets {
getByName("test") {
resources.srcDirs("src/test/res")
}
}
// Starting with Android Studio 3 Robolectric is unable to find resources.
// The following allows it to find the resources.
testOptions.unitTests.isIncludeAndroidResources = true
tasks.withType<Test>().configureEach {
testLogging {
events("started", "passed", "skipped", "failed")
}
}
lint {
lintConfig = file("lint.xml")
}
}
dependencies {
// AndroidX
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("androidx.constraintlayout:constraintlayout:2.2.0")
implementation("androidx.exifinterface:exifinterface:1.3.7")
implementation("androidx.palette:palette:1.0.0")
implementation("androidx.preference:preference:1.2.1")
implementation("com.google.android.material:material:1.12.0")
implementation("com.github.yalantis:ucrop:2.2.9")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.3")
// Splash Screen
implementation("androidx.core:core-splashscreen:1.0.1")
// Third-party
implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar")
implementation("com.google.zxing:core:3.5.3")
implementation("org.apache.commons:commons-csv:1.9.0")
implementation("com.jaredrummler:colorpicker:1.1.0")
implementation("net.lingala.zip4j:zip4j:2.11.5")
// SpotBugs
implementation("io.wcm.tooling.spotbugs:io.wcm.tooling.spotbugs.annotations:1.0.0")
// Testing
val androidXTestVersion = "1.6.1"
val junitVersion = "4.13.2"
testImplementation("androidx.test:core:$androidXTestVersion")
testImplementation("junit:junit:$junitVersion")
testImplementation("org.robolectric:robolectric:4.14")
androidTestImplementation("androidx.test:core:$androidXTestVersion")
androidTestImplementation("junit:junit:$junitVersion")
androidTestImplementation("androidx.test.ext:junit:1.2.1")
androidTestImplementation("androidx.test:runner:$androidXTestVersion")
androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
}
tasks.withType<SpotBugsTask>().configureEach {
description = "Run spotbugs"
group = "verification"
//classes = fileTree("build/intermediates/javac/debug/compileDebugJavaWithJavac/classes")
//source = fileTree("src/main/java")
//classpath = files()
reports.maybeCreate("xml").required.set(false)
reports.maybeCreate("html").required.set(true)
}
tasks.register("copyRawResFiles", Copy::class) {
from(
layout.projectDirectory.file("../CHANGELOG.md"),
layout.projectDirectory.file("../PRIVACY.md")
)
into(layout.projectDirectory.dir("src/main/res/raw"))
rename { it.lowercase() }
}.also {
tasks.preBuild.dependsOn(it)
tasks.getByName<Delete>("clean") {
val filesNamesToDelete = listOf("CHANGELOG", "PRIVACY")
filesNamesToDelete.forEach { fileName ->
delete(layout.projectDirectory.file("src/main/res/raw/${fileName.lowercase()}.md"))
}
}
}

View File

@@ -2,7 +2,7 @@
# By default, the flags in this file are appended to flags specified
# in /Users/brarcher/Library/Android/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
# directive in build.gradle.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

View File

@@ -0,0 +1,67 @@
package protect.card_locker;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withChild;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertEquals;
import androidx.appcompat.widget.Toolbar;
import androidx.test.core.app.ActivityScenario;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.uiautomator.UiDevice;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class MainActivitySearchViewTest {
@Test
public void whenSearchViewIsExpandedAndBackIsPressedThenMenuItemShouldNotBeCollapsed() {
String query = "random arbitrary text";
try (ActivityScenario<MainActivity> mainActivityScenario = ActivityScenario.launch(MainActivity.class)) {
mainActivityScenario.onActivity(this::makeSearchMenuItemVisible);
onView(withId(R.id.action_search)).perform(click());
onView(withId(androidx.appcompat.R.id.search_src_text)).perform(typeText(query));
pressBack();
onView(withId(androidx.appcompat.R.id.search_src_text)).check(matches(withText(query)));
mainActivityScenario.onActivity(activity -> assertEquals(query, activity.mFilter));
}
}
@Test
public void whenSearchViewIsExpandedThenItShouldOnlyBeCollapsedWhenBackIsPressedTwice() {
try (ActivityScenario<MainActivity> mainActivityScenario = ActivityScenario.launch(MainActivity.class)) {
mainActivityScenario.onActivity(this::makeSearchMenuItemVisible);
onView(withId(R.id.action_search)).perform(click());
pressBack();
onView(withId(androidx.appcompat.R.id.search_src_text)).check(matches(isDisplayed()));
pressBack();
onView(withId(android.R.id.content)).check(matches(is(not(withChild(withId(androidx.appcompat.R.id.search_src_text))))));
}
}
private void makeSearchMenuItemVisible(MainActivity activity) {
Toolbar toolbar = activity.findViewById(R.id.toolbar);
toolbar.getMenu().findItem(R.id.action_search).setVisible(true);
}
private void pressBack() {
UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()).pressBack();
}
}

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">تصحيح Catima</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Αποσφαλμάτωση Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Depuración de Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Débogage de Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Depuración de Catima</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">कैटिमा डीबग</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ಕ್ಯಾಟಿಮಾ ಡೀಬಗ್</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima 디버그</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima-avlusing</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima-foutopsporing</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Depuração do Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Depuração Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Depanare Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Отладка Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Hata Ayaklama</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Gỡ lỗi Catima</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima 调试</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Catima 除錯版</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name">Catima Debug</string>
</resources>

View File

@@ -16,7 +16,7 @@
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
@@ -24,6 +24,7 @@
<application
android:name=".LoyaltyCardLockerApplication"
android:allowBackup="true"
android:enableOnBackInvokedCallback="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
@@ -32,7 +33,6 @@
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.App.Starting">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -43,7 +43,9 @@
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
<data android:mimeType="image/*" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>
<activity
@@ -111,10 +113,12 @@
android:name=".preferences.SettingsActivity"
android:label="@string/settings"
android:theme="@style/AppTheme.NoActionBar" />
<!-- FIXME: locked screenOrientation is a workaround for https://github.com/CatimaLoyalty/Android/issues/1715, remove when https://github.com/CatimaLoyalty/Android/issues/513 is fixed -->
<activity
android:name=".ImportExportActivity"
android:label="@string/importExport"
android:exported="true"
android:screenOrientation="locked"
android:theme="@style/AppTheme.NoActionBar">
<!-- ZIP Intent Filter -->
@@ -179,7 +183,8 @@
android:resource="@xml/file_provider_paths" />
</provider>
<service android:name=".CardsOnPowerScreenService" android:label="@string/app_name"
android:permission="android.permission.BIND_CONTROLS" android:exported="true">
android:permission="android.permission.BIND_CONTROLS" android:exported="true"
tools:targetApi="r">
<intent-filter>
<action android:name="android.service.controls.ControlsProviderService" />
</intent-filter>

View File

@@ -7,11 +7,11 @@ import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import protect.card_locker.databinding.AboutActivityBinding;
public class AboutActivity extends CatimaAppCompatActivity {
@@ -43,7 +43,7 @@ public class AboutActivity extends CatimaAppCompatActivity {
binding.privacy.setTag("https://catima.app/privacy-policy/");
binding.reportError.setTag("https://github.com/CatimaLoyalty/Android/issues");
binding.rate.setTag("https://play.google.com/store/apps/details?id=me.hackerchick.catima");
binding.donate.setTag("https://catima.app/contribute/#donating");
binding.donate.setTag("https://catima.app/donate");
boolean installedFromGooglePlay = Utils.installedFromGooglePlay(this);
// Hide Google Play rate button if not on Google Play
@@ -98,11 +98,7 @@ public class AboutActivity extends CatimaAppCompatActivity {
}
private void showCredits() {
new MaterialAlertDialogBuilder(this)
.setTitle(R.string.credits)
.setMessage(content.getContributorInfo())
.setPositiveButton(R.string.ok, null)
.show();
showHTML(R.string.credits, content.getContributorInfo(), null);
}
private void showHistory(View view) {
@@ -117,7 +113,7 @@ public class AboutActivity extends CatimaAppCompatActivity {
showHTML(R.string.privacy_policy, content.getPrivacyInfo(), view);
}
private void showHTML(@StringRes int title, final Spanned text, View view) {
private void showHTML(@StringRes int title, final Spanned text, @Nullable View view) {
int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
TextView textView = new TextView(this);
textView.setText(text);
@@ -125,12 +121,21 @@ public class AboutActivity extends CatimaAppCompatActivity {
ScrollView scrollView = new ScrollView(this);
scrollView.addView(textView);
scrollView.setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0);
new MaterialAlertDialogBuilder(this)
// Create dialog
MaterialAlertDialogBuilder materialAlertDialogBuilder = new MaterialAlertDialogBuilder(this);
materialAlertDialogBuilder
.setTitle(title)
.setView(scrollView)
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view))
.show();
.setPositiveButton(R.string.ok, null);
// Add View online button if an URL is linked to this view
if (view != null && view.getTag() != null) {
materialAlertDialogBuilder.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view));
}
// Show dialog
materialAlertDialogBuilder.show();
}
private void openExternalBrowser(View view) {

View File

@@ -129,19 +129,19 @@ public class AboutContent {
return result.toString();
}
public String getContributorInfo() {
public Spanned getContributorInfo() {
StringBuilder contributorInfo = new StringBuilder();
contributorInfo.append(getCopyright());
contributorInfo.append("\n\n");
contributorInfo.append("<br/><br/>");
contributorInfo.append(context.getString(R.string.app_copyright_old));
contributorInfo.append("\n\n");
contributorInfo.append(HtmlCompat.fromHtml(String.format(context.getString(R.string.app_contributors), getContributors()), HtmlCompat.FROM_HTML_MODE_COMPACT));
contributorInfo.append("\n\n");
contributorInfo.append(HtmlCompat.fromHtml(String.format(context.getString(R.string.app_libraries), getThirdPartyLibraries()), HtmlCompat.FROM_HTML_MODE_COMPACT));
contributorInfo.append("\n\n");
contributorInfo.append(HtmlCompat.fromHtml(String.format(context.getString(R.string.app_resources), getUsedThirdPartyAssets()), HtmlCompat.FROM_HTML_MODE_COMPACT));
contributorInfo.append("<br/><br/>");
contributorInfo.append(String.format(context.getString(R.string.app_contributors), getContributors()));
contributorInfo.append("<br/><br/>");
contributorInfo.append(String.format(context.getString(R.string.app_libraries), getThirdPartyLibraries()));
contributorInfo.append("<br/><br/>");
contributorInfo.append(String.format(context.getString(R.string.app_resources), getUsedThirdPartyAssets()));
return contributorInfo.toString();
return HtmlCompat.fromHtml(contributorInfo.toString(), HtmlCompat.FROM_HTML_MODE_COMPACT);
}
public Spanned getHistoryInfo() {

View File

@@ -12,12 +12,12 @@ import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
import com.google.zxing.BarcodeFormat;
import java.util.ArrayList;
import androidx.appcompat.widget.Toolbar;
import protect.card_locker.databinding.BarcodeSelectorActivityBinding;
/**
@@ -71,7 +71,7 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements
});
final Bundle b = getIntent().getExtras();
final String initialCardId = b != null ? b.getString("initialCardId") : null;
final String initialCardId = b != null ? b.getString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID) : null;
if (initialCardId != null) {
cardId.setText(initialCardId);

View File

@@ -1,15 +1,23 @@
package protect.card_locker;
public class BarcodeValues {
private final String mFormat;
private final String mContent;
import androidx.annotation.Nullable;
public BarcodeValues(String format, String content) {
public class BarcodeValues {
@Nullable
private final CatimaBarcode mFormat;
private final String mContent;
private String mNote;
public BarcodeValues(@Nullable CatimaBarcode format, String content) {
mFormat = format;
mContent = content;
}
public String format() {
public void setNote(String note) {
mNote = note;
}
public @Nullable CatimaBarcode format() {
return mFormat;
}
@@ -17,7 +25,5 @@ public class BarcodeValues {
return mContent;
}
public boolean isEmpty() {
return mFormat == null && mContent == null;
}
}
public String note() { return mNote; }
}

View File

@@ -0,0 +1,6 @@
package protect.card_locker;
public interface BarcodeValuesListDisambiguatorCallback {
void onUserChoseBarcode(BarcodeValues barcodeValues);
void onUserDismissedSelector();
}

View File

@@ -12,15 +12,15 @@ import androidx.appcompat.widget.Toolbar;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import protect.card_locker.databinding.SimpleToolbarListActivityBinding;
import protect.card_locker.databinding.CardShortcutConfigureActivityBinding;
import protect.card_locker.preferences.Settings;
/**
* The configuration screen for creating a shortcut.
*/
public class CardShortcutConfigure extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
private SimpleToolbarListActivityBinding binding;
private CardShortcutConfigureActivityBinding binding;
static final String TAG = "Catima";
private SQLiteDatabase mDatabase;
private LoyaltyCardCursorAdapter mAdapter;
@@ -28,7 +28,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
binding = SimpleToolbarListActivityBinding.inflate(getLayoutInflater());
binding = CardShortcutConfigureActivityBinding.inflate(getLayoutInflater());
mDatabase = new DBHelper(this).getReadableDatabase();
// Set the result to CANCELED. This will cause nothing to happen if the
@@ -47,21 +47,26 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
finish();
}
final RecyclerView cardList = binding.list;
GridLayoutManager layoutManager = (GridLayoutManager) cardList.getLayoutManager();
if (layoutManager != null) {
layoutManager.setSpanCount(getResources().getInteger(R.integer.main_view_card_columns));
}
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
mAdapter = new LoyaltyCardCursorAdapter(this, cardCursor, this, null);
cardList.setAdapter(mAdapter);
binding.list.setAdapter(mAdapter);
}
@Override
protected void onResume() {
super.onResume();
var layoutManager = (GridLayoutManager) binding.list.getLayoutManager();
if (layoutManager != null) {
var settings = new Settings(this);
layoutManager.setSpanCount(settings.getPreferredColumnCount());
}
}
private void onClickAction(int position) {
Cursor selected = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
selected.moveToPosition(position);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(selected);
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(selected);
Log.d(TAG, "Creating shortcut for card " + loyaltyCard.store + "," + loyaltyCard.id);

View File

@@ -15,13 +15,13 @@ import android.service.controls.actions.ControlAction;
import android.service.controls.templates.StatelessTemplate;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import java.util.List;
import java.util.concurrent.Flow;
import java.util.function.Consumer;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
@RequiresApi(Build.VERSION_CODES.R)
public class CardsOnPowerScreenService extends ControlsProviderService {
@@ -42,10 +42,10 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
Cursor loyaltyCardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.Unarchived);
return subscriber -> {
while (loyaltyCardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(loyaltyCardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(loyaltyCardCursor);
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", card.id);
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, card.id);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
subscriber.onNext(
new Control.StatelessBuilder(PREFIX + card.id, pendingIntent)
@@ -73,7 +73,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
if (card != null) {
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", card.id);
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, card.id);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
control = new Control.StatefulBuilder(controlId, pendingIntent)
.setTitle(card.store)
@@ -129,7 +129,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
consumer.accept(ControlAction.RESPONSE_OK);
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", controlIdToCardId(controlId));
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, controlIdToCardId(controlId));
startActivity(openIntent);
closePowerScreenOnAndroid11();

View File

@@ -5,6 +5,7 @@ import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -13,6 +14,8 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.WindowInsetsControllerCompat;
public class CatimaAppCompatActivity extends AppCompatActivity {
protected boolean activityOverridesNavBarColor = false;
@Override
protected void attachBaseContext(Context base) {
// Apply chosen language
@@ -30,20 +33,31 @@ public class CatimaAppCompatActivity extends AppCompatActivity {
super.onPostCreate(savedInstanceState);
// material 3 designer does not consider status bar colors
// XXX changing this in onCreate causes issues with the splash screen activity, so doing this here
boolean darkMode = Utils.isDarkModeEnabled(this);
if (Build.VERSION.SDK_INT >= 23) {
View decorView = getWindow().getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(getWindow(), decorView);
wic.setAppearanceLightStatusBars(!darkMode);
getWindow().setStatusBarColor(Color.TRANSPARENT);
} else {
// icons are always white back then
getWindow().setStatusBarColor(darkMode ? Color.TRANSPARENT : Color.argb(127, 0, 0, 0));
Window window = getWindow();
if (window != null) {
boolean darkMode = Utils.isDarkModeEnabled(this);
if (Build.VERSION.SDK_INT >= 23) {
View decorView = window.getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView);
wic.setAppearanceLightStatusBars(!darkMode);
window.setStatusBarColor(Color.TRANSPARENT);
} else {
// icons are always white back then
window.setStatusBarColor(darkMode ? Color.TRANSPARENT : Color.argb(127, 0, 0, 0));
}
}
// XXX android 9 and below has a nasty rendering bug if the theme was patched earlier
Utils.postPatchColors(this);
}
@Override
protected void onResume() {
super.onResume();
if (!activityOverridesNavBarColor) {
Utils.setNavigationBarColor(this, null, Utils.resolveBackgroundColor(this), !Utils.isDarkModeEnabled(this));
}
}
protected void enableToolbarBackButton() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {

View File

@@ -1,5 +1,7 @@
package protect.card_locker;
import androidx.annotation.NonNull;
import com.google.zxing.BarcodeFormat;
import java.util.Arrays;
@@ -45,15 +47,15 @@ public class CatimaBarcode {
mBarcodeFormat = barcodeFormat;
}
public static CatimaBarcode fromBarcode(BarcodeFormat barcodeFormat) {
public static CatimaBarcode fromBarcode(@NonNull BarcodeFormat barcodeFormat) {
return new CatimaBarcode(barcodeFormat);
}
public static CatimaBarcode fromName(String name) {
public static CatimaBarcode fromName(@NonNull String name) {
return new CatimaBarcode(BarcodeFormat.valueOf(name));
}
public static CatimaBarcode fromPrettyName(String prettyName) {
public static CatimaBarcode fromPrettyName(@NonNull String prettyName) {
try {
return new CatimaBarcode(barcodeFormats.get(barcodePrettyNames.indexOf(prettyName)));
} catch (IndexOutOfBoundsException e) {

View File

@@ -4,22 +4,24 @@ import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import androidx.core.util.Consumer;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
public class CatimaCaptureManager extends CaptureManager {
private final Context mContext;
private final Consumer<String> mErrorCallback;
public CatimaCaptureManager(Activity activity, DecoratedBarcodeView barcodeView) {
public CatimaCaptureManager(Activity activity, DecoratedBarcodeView barcodeView, Consumer<String> errorCallback) {
super(activity, barcodeView);
mContext = activity.getApplicationContext();
mErrorCallback = errorCallback;
}
@Override
protected void displayFrameworkBugMessageAndExit(String message) {
// We don't want to exit, as we also have a enter from card image and add manually button here
// So we show a toast instead
Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
// So, instead, we call our error callback
mErrorCallback.accept(message);
}
}

View File

@@ -332,7 +332,7 @@ public class DBHelper extends SQLiteOpenHelper {
Set<String> files = new HashSet<>();
Cursor cardCursor = getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor);
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
String name = Utils.getCardImageFileName(card.id, imageLocationType);
if (Utils.retrieveCardImageAsFile(context, name).exists()) {
@@ -542,7 +542,7 @@ public class DBHelper extends SQLiteOpenHelper {
if (data.getCount() == 1) {
data.moveToFirst();
card = LoyaltyCard.toLoyaltyCard(data);
card = LoyaltyCard.fromCursor(data);
}
data.close();

View File

@@ -8,14 +8,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import protect.card_locker.databinding.GroupLayoutBinding;
import protect.card_locker.preferences.Settings;
public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListItemViewHolder> {
public final Context mContext;

View File

@@ -1,38 +1,36 @@
package protect.card_locker;
import android.Manifest;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.textfield.TextInputLayout;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import protect.card_locker.async.TaskHandler;
import protect.card_locker.databinding.ImportExportActivityBinding;
import protect.card_locker.importexport.DataFormat;
@@ -83,15 +81,21 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
Log.e(TAG, "Activity returned NULL uri");
return;
}
try {
OutputStream writer = getContentResolver().openOutputStream(uri);
Log.e(TAG, "Starting file export with: " + result.toString());
startExport(writer, uri, exportPassword.toCharArray(), true);
} catch (IOException e) {
Log.e(TAG, "Failed to export file: " + result.toString(), e);
onExportComplete(new ImportExportResult(ImportExportResultType.GenericFailure, result.toString()), uri);
}
// Running this in a thread prevents Android from throwing a NetworkOnMainThreadException for large files
// FIXME: This is still suboptimal, because showing that the export started is delayed until the network request finishes
new Thread() {
@Override
public void run() {
try {
OutputStream writer = getContentResolver().openOutputStream(uri);
Log.d(TAG, "Starting file export with: " + result);
startExport(writer, uri, exportPassword.toCharArray(), true);
} catch (IOException e) {
Log.e(TAG, "Failed to export file: " + result, e);
onExportComplete(new ImportExportResult(ImportExportResultType.GenericFailure, result.toString()), uri);
}
}
}.start();
});
fileOpenLauncher = registerForActivityResult(new ActivityResultContracts.GetContent(), result -> {
if (result == null) {
@@ -126,16 +130,19 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
builder.setTitle(R.string.exportPassword);
FrameLayout container = new FrameLayout(ImportExportActivity.this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = 50;
params.rightMargin = 50;
final TextInputLayout textInputLayout = new TextInputLayout(ImportExportActivity.this);
textInputLayout.setEndIconMode(TextInputLayout.END_ICON_PASSWORD_TOGGLE);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(50, 10, 50, 0);
textInputLayout.setLayoutParams(params);
final EditText input = new EditText(ImportExportActivity.this);
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
input.setLayoutParams(params);
input.setHint(R.string.exportPasswordHint);
container.addView(input);
textInputLayout.addView(input);
container.addView(textInputLayout);
builder.setView(container);
builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
exportPassword = input.getText().toString();
@@ -148,7 +155,6 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
});
builder.setNegativeButton(R.string.cancel, (dialogInterface, i) -> dialogInterface.cancel());
builder.show();
});
// Check that there is a file manager available
@@ -158,17 +164,28 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
// Check that there is an app that data can be imported from
Button importApplication = binding.importOptionApplicationButton;
importApplication.setOnClickListener(v -> chooseImportType(true, null));
// FIXME: The importer/exporter is currently quite broken
// To prevent the screen from turning off during import/export and some devices killing Catima as it's no longer foregrounded, force the screen to stay on here
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
private void openFileForImport(Uri uri, char[] password) {
try {
InputStream reader = getContentResolver().openInputStream(uri);
Log.e(TAG, "Starting file import with: " + uri.toString());
startImport(reader, uri, importDataFormat, password, true);
} catch (IOException e) {
Log.e(TAG, "Failed to import file: " + uri.toString(), e);
onImportComplete(new ImportExportResult(ImportExportResultType.GenericFailure, e.toString()), uri, importDataFormat);
}
// Running this in a thread prevents Android from throwing a NetworkOnMainThreadException for large files
// FIXME: This is still suboptimal, because showing that the import started is delayed until the network request finishes
new Thread() {
@Override
public void run() {
try {
InputStream reader = getContentResolver().openInputStream(uri);
Log.d(TAG, "Starting file import with: " + uri);
startImport(reader, uri, importDataFormat, password, true);
} catch (IOException e) {
Log.e(TAG, "Failed to import file: " + uri, e);
onImportComplete(new ImportExportResult(ImportExportResultType.GenericFailure, e.toString()), uri, importDataFormat);
}
}
}.start();
}
private void chooseImportType(boolean choosePicker,
@@ -320,9 +337,21 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setTitle(R.string.passwordRequired);
final EditText input = new EditText(this);
FrameLayout container = new FrameLayout(ImportExportActivity.this);
final TextInputLayout textInputLayout = new TextInputLayout(ImportExportActivity.this);
textInputLayout.setEndIconMode(TextInputLayout.END_ICON_PASSWORD_TOGGLE);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(50, 10, 50, 0);
textInputLayout.setLayoutParams(params);
final EditText input = new EditText(ImportExportActivity.this);
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
builder.setView(input);
input.setHint(R.string.exportPasswordHint);
textInputLayout.addView(input);
container.addView(textInputLayout);
builder.setView(container);
builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
openFileForImport(uri, input.getText().toString().toCharArray());

View File

@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
@@ -90,16 +91,16 @@ public class ImportExportTask implements CompatCallable<ImportExportResult> {
progress = new ProgressDialog(activity);
progress.setTitle(doImport ? R.string.importing : R.string.exporting);
progress.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
ImportExportTask.this.stop();
}
});
progress.setOnCancelListener(dialog -> cancel());
progress.setOnDismissListener(dialog -> cancel());
progress.show();
}
private void cancel() {
ImportExportTask.this.stop();
}
protected ImportExportResult doInBackground(Void... nothing) {
final SQLiteDatabase database = new DBHelper(activity).getWritableDatabase();
ImportExportResult result;

View File

@@ -1,85 +1,217 @@
package protect.card_locker;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Date;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class LoyaltyCard implements Parcelable {
public final int id;
public final String store;
public final String note;
@Nullable
public final Date validFrom;
@Nullable
public final Date expiry;
public final BigDecimal balance;
@Nullable
public final Currency balanceType;
public final String cardId;
@Nullable
public final String barcodeId;
@Nullable
public final CatimaBarcode barcodeType;
@Nullable
public final Integer headerColor;
public final int starStatus;
public final int archiveStatus;
public final long lastUsed;
public int zoomLevel;
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class LoyaltyCard implements Parcelable {
public int id;
public String store;
public String note;
@Nullable
public Date validFrom;
@Nullable
public Date expiry;
public BigDecimal balance;
@Nullable
public Currency balanceType;
public String cardId;
@Nullable
public String barcodeId;
@Nullable
public CatimaBarcode barcodeType;
@Nullable
public Integer headerColor;
public int starStatus;
public long lastUsed;
public int zoomLevel;
public int archiveStatus;
public static final String BUNDLE_LOYALTY_CARD_ID = "loyaltyCardId";
public static final String BUNDLE_LOYALTY_CARD_STORE = "loyaltyCardStore";
public static final String BUNDLE_LOYALTY_CARD_NOTE = "loyaltyCardNote";
public static final String BUNDLE_LOYALTY_CARD_VALID_FROM = "loyaltyCardValidFrom";
public static final String BUNDLE_LOYALTY_CARD_EXPIRY = "loyaltyCardExpiry";
public static final String BUNDLE_LOYALTY_CARD_BALANCE = "loyaltyCardBalance";
public static final String BUNDLE_LOYALTY_CARD_BALANCE_TYPE = "loyaltyCardBalanceType";
public static final String BUNDLE_LOYALTY_CARD_CARD_ID = "loyaltyCardCardId";
public static final String BUNDLE_LOYALTY_CARD_BARCODE_ID = "loyaltyCardBarcodeId";
public static final String BUNDLE_LOYALTY_CARD_BARCODE_TYPE = "loyaltyCardBarcodeType";
public static final String BUNDLE_LOYALTY_CARD_HEADER_COLOR = "loyaltyCardHeaderColor";
public static final String BUNDLE_LOYALTY_CARD_STAR_STATUS = "loyaltyCardStarStatus";
public static final String BUNDLE_LOYALTY_CARD_LAST_USED = "loyaltyCardLastUsed";
public static final String BUNDLE_LOYALTY_CARD_ZOOM_LEVEL = "loyaltyCardZoomLevel";
public static final String BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS = "loyaltyCardArchiveStatus";
/**
* Create a loyalty card object with default values
*/
public LoyaltyCard() {
setId(-1);
setStore("");
setNote("");
setValidFrom(null);
setExpiry(null);
setBalance(new BigDecimal("0"));
setBalanceType(null);
setCardId("");
setBarcodeId(null);
setBarcodeType(null);
setHeaderColor(null);
setStarStatus(0);
setLastUsed(Utils.getUnixTime());
setZoomLevel(100);
setArchiveStatus(0);
}
/**
* Create a new loyalty card
*
* @param id
* @param store
* @param note
* @param validFrom
* @param expiry
* @param balance
* @param balanceType
* @param cardId
* @param barcodeId
* @param barcodeType
* @param headerColor
* @param starStatus
* @param lastUsed
* @param zoomLevel
* @param archiveStatus
*/
public LoyaltyCard(final int id, final String store, final String note, @Nullable final Date validFrom,
@Nullable final Date expiry, final BigDecimal balance, @Nullable final Currency balanceType,
final String cardId, @Nullable final String barcodeId, @Nullable final CatimaBarcode barcodeType,
@Nullable final Integer headerColor, final int starStatus,
final long lastUsed, final int zoomLevel, final int archiveStatus) {
setId(id);
setStore(store);
setNote(note);
setValidFrom(validFrom);
setExpiry(expiry);
setBalance(balance);
setBalanceType(balanceType);
setCardId(cardId);
setBarcodeId(barcodeId);
setBarcodeType(barcodeType);
setHeaderColor(headerColor);
setStarStatus(starStatus);
setLastUsed(lastUsed);
setZoomLevel(zoomLevel);
setArchiveStatus(archiveStatus);
}
public void setId(int id) {
this.id = id;
}
public void setStore(@NonNull String store) {
this.store = store;
}
public void setNote(@NonNull String note) {
this.note = note;
}
public void setValidFrom(@Nullable Date validFrom) {
this.validFrom = validFrom;
}
public void setExpiry(@Nullable Date expiry) {
this.expiry = expiry;
}
public void setBalance(@NonNull BigDecimal balance) {
this.balance = balance;
}
public void setBalanceType(@Nullable Currency balanceType) {
this.balanceType = balanceType;
}
public void setCardId(@NonNull String cardId) {
this.cardId = cardId;
}
public void setBarcodeId(@Nullable String barcodeId) {
this.barcodeId = barcodeId;
}
public void setBarcodeType(@Nullable CatimaBarcode barcodeType) {
this.barcodeType = barcodeType;
}
public void setHeaderColor(@Nullable Integer headerColor) {
this.headerColor = headerColor;
}
public void setStarStatus(int starStatus) {
if (starStatus != 0 && starStatus != 1) {
throw new IllegalArgumentException("starStatus must be 0 or 1");
}
this.starStatus = starStatus;
}
public void setLastUsed(long lastUsed) {
this.lastUsed = lastUsed;
}
public void setZoomLevel(int zoomLevel) {
if (zoomLevel < 0 || zoomLevel > 100) {
throw new IllegalArgumentException("zoomLevel must be in range 0-100");
}
this.zoomLevel = zoomLevel;
}
public void setArchiveStatus(int archiveStatus) {
if (archiveStatus != 0 && archiveStatus != 1) {
throw new IllegalArgumentException("archiveStatus must be 0 or 1");
}
this.archiveStatus = archiveStatus;
}
protected LoyaltyCard(Parcel in) {
id = in.readInt();
store = in.readString();
note = in.readString();
setId(in.readInt());
setStore(Objects.requireNonNull(in.readString()));
setNote(Objects.requireNonNull(in.readString()));
long tmpValidFrom = in.readLong();
validFrom = tmpValidFrom != -1 ? new Date(tmpValidFrom) : null;
setValidFrom(tmpValidFrom > 0 ? new Date(tmpValidFrom) : null);
long tmpExpiry = in.readLong();
expiry = tmpExpiry != -1 ? new Date(tmpExpiry) : null;
balance = (BigDecimal) in.readValue(BigDecimal.class.getClassLoader());
balanceType = (Currency) in.readValue(Currency.class.getClassLoader());
cardId = in.readString();
barcodeId = in.readString();
setExpiry(tmpExpiry > 0 ? new Date(tmpExpiry) : null);
setBalance((BigDecimal) in.readValue(BigDecimal.class.getClassLoader()));
setBalanceType((Currency) in.readValue(Currency.class.getClassLoader()));
setCardId(Objects.requireNonNull(in.readString()));
setBarcodeId(in.readString());
String tmpBarcodeType = in.readString();
barcodeType = !tmpBarcodeType.isEmpty() ? CatimaBarcode.fromName(tmpBarcodeType) : null;
setBarcodeType((tmpBarcodeType != null && !tmpBarcodeType.isEmpty()) ? CatimaBarcode.fromName(tmpBarcodeType) : null);
int tmpHeaderColor = in.readInt();
headerColor = tmpHeaderColor != -1 ? tmpHeaderColor : null;
starStatus = in.readInt();
lastUsed = in.readLong();
zoomLevel = in.readInt();
archiveStatus = in.readInt();
setHeaderColor(tmpHeaderColor != -1 ? tmpHeaderColor : null);
setStarStatus(in.readInt());
setLastUsed(in.readLong());
setZoomLevel(in.readInt());
setArchiveStatus(in.readInt());
}
@Override
public void writeToParcel(Parcel parcel, int i) {
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeInt(id);
parcel.writeString(store);
parcel.writeString(note);
@@ -97,51 +229,171 @@ public class LoyaltyCard implements Parcelable {
parcel.writeInt(archiveStatus);
}
public static LoyaltyCard toLoyaltyCard(Cursor cursor) {
public static LoyaltyCard fromBundle(Bundle bundle, boolean requireFull) {
// Grab default card
LoyaltyCard loyaltyCard = new LoyaltyCard();
// Update from bundle
loyaltyCard.updateFromBundle(bundle, requireFull);
// Return updated version
return loyaltyCard;
}
public void updateFromBundle(Bundle bundle, boolean requireFull) {
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ID)) {
setId(bundle.getInt(BUNDLE_LOYALTY_CARD_ID));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ID);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_STORE)) {
setStore(Objects.requireNonNull(bundle.getString(BUNDLE_LOYALTY_CARD_STORE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_STORE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_NOTE)) {
setNote(Objects.requireNonNull(bundle.getString(BUNDLE_LOYALTY_CARD_NOTE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_NOTE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_VALID_FROM)) {
long tmpValidFrom = bundle.getLong(BUNDLE_LOYALTY_CARD_VALID_FROM);
setValidFrom(tmpValidFrom > 0 ? new Date(tmpValidFrom) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_VALID_FROM);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_EXPIRY)) {
long tmpExpiry = bundle.getLong(BUNDLE_LOYALTY_CARD_EXPIRY);
setExpiry(tmpExpiry > 0 ? new Date(tmpExpiry) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_EXPIRY);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BALANCE)) {
setBalance(new BigDecimal(bundle.getString(BUNDLE_LOYALTY_CARD_BALANCE)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BALANCE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BALANCE_TYPE)) {
String tmpBalanceType = bundle.getString(BUNDLE_LOYALTY_CARD_BALANCE_TYPE);
setBalanceType(tmpBalanceType != null ? Currency.getInstance(tmpBalanceType) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BALANCE_TYPE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_CARD_ID)) {
setCardId(Objects.requireNonNull(bundle.getString(BUNDLE_LOYALTY_CARD_CARD_ID)));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_CARD_ID);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BARCODE_ID)) {
setBarcodeId(bundle.getString(BUNDLE_LOYALTY_CARD_BARCODE_ID));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BARCODE_ID);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_BARCODE_TYPE)) {
String tmpBarcodeType = bundle.getString(BUNDLE_LOYALTY_CARD_BARCODE_TYPE);
setBarcodeType(tmpBarcodeType != null ? CatimaBarcode.fromName(tmpBarcodeType) : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_BARCODE_TYPE);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_HEADER_COLOR)) {
int tmpHeaderColor = bundle.getInt(BUNDLE_LOYALTY_CARD_HEADER_COLOR);
setHeaderColor(tmpHeaderColor != -1 ? tmpHeaderColor : null);
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_HEADER_COLOR);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_STAR_STATUS)) {
setStarStatus(bundle.getInt(BUNDLE_LOYALTY_CARD_STAR_STATUS));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_STAR_STATUS);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_LAST_USED)) {
setLastUsed(bundle.getLong(BUNDLE_LOYALTY_CARD_LAST_USED));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_LAST_USED);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL)) {
setZoomLevel(bundle.getInt(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ZOOM_LEVEL);
}
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS)) {
setArchiveStatus(bundle.getInt(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS));
} else if (requireFull) {
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS);
}
}
public Bundle toBundle() {
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_LOYALTY_CARD_ID, id);
bundle.putString(BUNDLE_LOYALTY_CARD_STORE, store);
bundle.putString(BUNDLE_LOYALTY_CARD_NOTE, note);
if (validFrom != null) {
bundle.putLong(BUNDLE_LOYALTY_CARD_VALID_FROM, validFrom.getTime());
}
if (expiry != null) {
bundle.putLong(BUNDLE_LOYALTY_CARD_EXPIRY, expiry.getTime());
}
bundle.putString(BUNDLE_LOYALTY_CARD_BALANCE, balance.toString());
if (balanceType != null) {
bundle.putString(BUNDLE_LOYALTY_CARD_BALANCE_TYPE, balanceType.toString());
}
bundle.putString(BUNDLE_LOYALTY_CARD_CARD_ID, cardId);
bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_ID, barcodeId);
if (barcodeType != null) {
bundle.putString(BUNDLE_LOYALTY_CARD_BARCODE_TYPE, barcodeType.name());
}
if (headerColor != null) {
bundle.putInt(BUNDLE_LOYALTY_CARD_HEADER_COLOR, headerColor);
}
bundle.putInt(BUNDLE_LOYALTY_CARD_STAR_STATUS, starStatus);
bundle.putLong(BUNDLE_LOYALTY_CARD_LAST_USED, lastUsed);
bundle.putInt(BUNDLE_LOYALTY_CARD_ZOOM_LEVEL, zoomLevel);
bundle.putInt(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS, archiveStatus);
return bundle;
}
public static LoyaltyCard fromCursor(Cursor cursor) {
// id
int id = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ID));
// store
String store = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STORE));
// note
String note = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.NOTE));
// validFrom
long validFromLong = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.VALID_FROM));
Date validFrom = validFromLong > 0 ? new Date(validFromLong) : null;
// expiry
long expiryLong = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXPIRY));
Date expiry = expiryLong > 0 ? new Date(expiryLong) : null;
// balance
BigDecimal balance = new BigDecimal(cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE)));
String cardId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID));
String barcodeId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ID));
int starred = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS));
long lastUsed = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.LAST_USED));
int zoomLevel = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ZOOM_LEVEL));
int archived = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS));
int barcodeTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE);
// balanceType
int balanceTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE_TYPE);
Currency balanceType = !cursor.isNull(balanceTypeColumn) ? Currency.getInstance(cursor.getString(balanceTypeColumn)) : null;
// cardId
String cardId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID));
// barcodeId
int barcodeIdColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_ID);
String barcodeId = !cursor.isNull(barcodeIdColumn) ? cursor.getString(barcodeIdColumn) : null;
// barcodeType
int barcodeTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE);
CatimaBarcode barcodeType = !cursor.isNull(barcodeTypeColumn) ? CatimaBarcode.fromName(cursor.getString(barcodeTypeColumn)) : null;
// headerColor
int headerColorColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR);
Integer headerColor = !cursor.isNull(headerColorColumn) ? cursor.getInt(headerColorColumn) : null;
// starStatus
int starStatus = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS));
// lastUsed
long lastUsed = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.LAST_USED));
// zoomLevel
int zoomLevel = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ZOOM_LEVEL));
// archiveStatus
int archiveStatus = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS));
CatimaBarcode barcodeType = null;
Currency balanceType = null;
Date validFrom = null;
Date expiry = null;
Integer headerColor = null;
if (cursor.isNull(barcodeTypeColumn) == false) {
barcodeType = CatimaBarcode.fromName(cursor.getString(barcodeTypeColumn));
}
if (cursor.isNull(balanceTypeColumn) == false) {
balanceType = Currency.getInstance(cursor.getString(balanceTypeColumn));
}
if (validFromLong > 0) {
validFrom = new Date(validFromLong);
}
if (expiryLong > 0) {
expiry = new Date(expiryLong);
}
if (cursor.isNull(headerColorColumn) == false) {
headerColor = cursor.getInt(headerColorColumn);
}
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starred, lastUsed, zoomLevel, archived);
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed, zoomLevel, archiveStatus);
}
public static boolean isDuplicate(final LoyaltyCard a, final LoyaltyCard b) {
@@ -164,7 +416,7 @@ public class LoyaltyCard implements Parcelable {
@Override
public int describeContents() {
return id;
return 0;
}
@NonNull

View File

@@ -15,13 +15,6 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.color.MaterialColors;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
@@ -29,7 +22,15 @@ import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.color.MaterialColors;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.ArrayList;
import protect.card_locker.databinding.LoyaltyCardLayoutBinding;
import protect.card_locker.preferences.Settings;
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
private int mCurrentSelectedIndex = -1;
@@ -79,7 +80,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
public LoyaltyCard getCard(int position) {
mCursor.moveToPosition(position);
return LoyaltyCard.toLoyaltyCard(mCursor);
return LoyaltyCard.fromCursor(mCursor);
}
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
@@ -87,7 +88,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
boolean showDivider = false;
inputHolder.mDivider.setVisibility(View.GONE);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(inputCursor);
Bitmap icon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
if (mLoyaltyCardListDisplayOptions.showingNameBelowThumbnail() && icon != null) {
@@ -111,20 +112,19 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
}
if (mLoyaltyCardListDisplayOptions.showingValidity() && loyaltyCard.validFrom != null) {
inputHolder.setExtraField(inputHolder.mValidFromField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.validFrom), Utils.isNotYetValid(loyaltyCard.validFrom) ? Color.RED : null, showDivider);
inputHolder.setExtraField(inputHolder.mValidFromField, DateFormat.getDateInstance(DateFormat.MEDIUM).format(loyaltyCard.validFrom), Utils.isNotYetValid(loyaltyCard.validFrom) ? Color.RED : null, showDivider);
} else {
inputHolder.setExtraField(inputHolder.mValidFromField, null, null, false);
}
if (mLoyaltyCardListDisplayOptions.showingValidity() && loyaltyCard.expiry != null) {
inputHolder.setExtraField(inputHolder.mExpiryField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry), Utils.hasExpired(loyaltyCard.expiry) ? Color.RED : null, showDivider);
inputHolder.setExtraField(inputHolder.mExpiryField, DateFormat.getDateInstance(DateFormat.MEDIUM).format(loyaltyCard.expiry), Utils.hasExpired(loyaltyCard.expiry) ? Color.RED : null, showDivider);
} else {
inputHolder.setExtraField(inputHolder.mExpiryField, null, null, false);
}
inputHolder.mCardIcon.setContentDescription(loyaltyCard.store);
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText);
inputHolder.setIconBackgroundColor(Utils.getHeaderColor(mContext, loyaltyCard));
inputHolder.mIconBackgroundColor = Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText, new Settings(mContext).getPreferredColumnCount());
inputHolder.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0, itemSelected(inputCursor.getPosition()));
@@ -193,7 +193,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
int i;
for (i = 0; i < mSelectedItems.size(); i++) {
mCursor.moveToPosition(mSelectedItems.keyAt(i));
result.add(LoyaltyCard.toLoyaltyCard(mCursor));
result.add(LoyaltyCard.fromCursor(mCursor));
}
return result;
@@ -339,16 +339,5 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
mArchivedBackground.invalidate();
}
public void setIconBackgroundColor(int color) {
mIconBackgroundColor = color;
mCardIcon.setBackgroundColor(color);
}
}
public int dpToPx(int dp, Context mContext) {
Resources r = mContext.getResources();
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics());
return px;
}
}

View File

@@ -2,8 +2,6 @@ package protect.card_locker;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
@@ -29,33 +27,34 @@ import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import androidx.exifinterface.media.ExifInterface;
import androidx.fragment.app.DialogFragment;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.datepicker.CalendarConstraints;
import com.google.android.material.datepicker.DateValidatorPointBackward;
import com.google.android.material.datepicker.DateValidatorPointForward;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayout;
import com.jaredrummler.android.colorpicker.ColorPickerDialog;
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener;
@@ -74,7 +73,6 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Currency;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -94,6 +92,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
private final String STATE_TAB_INDEX = "savedTab";
private final String STATE_TEMP_CARD = "tempLoyaltyCard";
private final String STATE_TEMP_CARD_FIELD = "tempLoyaltyCardField";
private final String STATE_REQUESTED_IMAGE = "requestedImage";
private final String STATE_FRONT_IMAGE_UNSAVED = "frontImageUnsaved";
private final String STATE_BACK_IMAGE_UNSAVED = "backImageUnsaved";
@@ -105,6 +104,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
private final String STATE_ICON_REMOVED = "iconRemoved";
private final String STATE_OPEN_SET_ICON_MENU = "openSetIconMenu";
private static final String PICK_DATE_REQUEST_KEY = "pick_date_request";
private static final String NEWLY_PICKED_DATE_ARGUMENT_KEY = "newly_picked_date";
private final String TEMP_CAMERA_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_camera_image.jpg";
private final String TEMP_CROP_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_crop_image.png";
private final Bitmap.CompressFormat TEMP_CROP_IMAGE_FORMAT = Bitmap.CompressFormat.PNG;
@@ -125,9 +127,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public static final String BUNDLE_DUPLICATE_ID = "duplicateId";
public static final String BUNDLE_UPDATE = "update";
public static final String BUNDLE_OPEN_SET_ICON_MENU = "openSetIconMenu";
public static final String BUNDLE_CARDID = "cardId";
public static final String BUNDLE_BARCODEID = "barcodeId";
public static final String BUNDLE_BARCODETYPE = "barcodeType";
public static final String BUNDLE_ADDGROUP = "addGroup";
TabLayout tabs;
@@ -160,15 +159,11 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
boolean updateLoyaltyCard;
boolean duplicateFromLoyaltyCardId;
boolean openSetIconMenu;
String cardId;
String barcodeId;
String barcodeType;
String addGroup;
Uri importLoyaltyCardUri = null;
SQLiteDatabase mDatabase;
ImportURIHelper importUriHelper;
boolean hasChanged = false;
String tempStoredOldBarcodeValue = null;
@@ -181,7 +176,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
HashMap<String, Currency> currencies = new HashMap<>();
HashMap<String, String> currencySymbols = new HashMap<>();
LoyaltyCard tempLoyaltyCard;
LoyaltyCard tempLoyaltyCard = new LoyaltyCard();
LoyaltyCardField tempLoyaltyCardField;
ActivityResultLauncher<Uri> mPhotoTakerLauncher;
ActivityResultLauncher<Intent> mPhotoPickerLauncher;
@@ -212,53 +208,112 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
super.attachBaseContext(base);
}
private static LoyaltyCard updateTempState(LoyaltyCard loyaltyCard, LoyaltyCardField fieldName, Object value) {
return new LoyaltyCard(
(int) (fieldName == LoyaltyCardField.id ? value : loyaltyCard.id),
(String) (fieldName == LoyaltyCardField.store ? value : loyaltyCard.store),
(String) (fieldName == LoyaltyCardField.note ? value : loyaltyCard.note),
(Date) (fieldName == LoyaltyCardField.validFrom ? value : loyaltyCard.validFrom),
(Date) (fieldName == LoyaltyCardField.expiry ? value : loyaltyCard.expiry),
(BigDecimal) (fieldName == LoyaltyCardField.balance ? value : loyaltyCard.balance),
(Currency) (fieldName == LoyaltyCardField.balanceType ? value : loyaltyCard.balanceType),
(String) (fieldName == LoyaltyCardField.cardId ? value : loyaltyCard.cardId),
(String) (fieldName == LoyaltyCardField.barcodeId ? value : loyaltyCard.barcodeId),
(CatimaBarcode) (fieldName == LoyaltyCardField.barcodeType ? value : loyaltyCard.barcodeType),
(Integer) (fieldName == LoyaltyCardField.headerColor ? value : loyaltyCard.headerColor),
(int) (fieldName == LoyaltyCardField.starStatus ? value : loyaltyCard.starStatus),
0, // Unimportant, always set to null in doSave so the DB updates it to the current timestamp
100, // Unimportant, not updated in doSave, defaults to 100 for new cards
(int) (fieldName == LoyaltyCardField.archiveStatus ? value : loyaltyCard.archiveStatus)
);
}
protected void updateTempState(LoyaltyCardField fieldName, Object value) {
tempLoyaltyCard = updateTempState(tempLoyaltyCard, fieldName, value);
if (initDone && (fieldName == LoyaltyCardField.cardId || fieldName == LoyaltyCardField.barcodeId || fieldName == LoyaltyCardField.barcodeType)) {
generateBarcode();
}
protected void setLoyaltyCardStore(@NonNull String store) {
tempLoyaltyCard.setStore(store);
hasChanged = true;
}
private void extractIntentFields(Intent intent) {
protected void setLoyaltyCardNote(@NonNull String note) {
tempLoyaltyCard.setNote(note);
hasChanged = true;
}
protected void setLoyaltyCardValidFrom(@Nullable Date validFrom) {
tempLoyaltyCard.setValidFrom(validFrom);
hasChanged = true;
}
protected void setLoyaltyCardExpiry(@Nullable Date expiry) {
tempLoyaltyCard.setExpiry(expiry);
hasChanged = true;
}
protected void setLoyaltyCardBalance(@NonNull BigDecimal balance) {
tempLoyaltyCard.setBalance(balance);
hasChanged = true;
}
protected void setLoyaltyCardBalanceType(@Nullable Currency balanceType) {
tempLoyaltyCard.setBalanceType(balanceType);
hasChanged = true;
}
protected void setLoyaltyCardCardId(@NonNull String cardId) {
tempLoyaltyCard.setCardId(cardId);
generateBarcode();
hasChanged = true;
}
protected void setLoyaltyCardBarcodeId(@Nullable String barcodeId) {
tempLoyaltyCard.setBarcodeId(barcodeId);
generateBarcode();
hasChanged = true;
}
protected void setLoyaltyCardBarcodeType(@Nullable CatimaBarcode barcodeType) {
tempLoyaltyCard.setBarcodeType(barcodeType);
generateBarcode();
hasChanged = true;
}
protected void setLoyaltyCardHeaderColor(@Nullable Integer headerColor) {
tempLoyaltyCard.setHeaderColor(headerColor);
hasChanged = true;
}
/* Extract intent fields and return if code should keep running */
private boolean extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
addGroup = b != null ? b.getString(BUNDLE_ADDGROUP) : null;
openSetIconMenu = b != null && b.getBoolean(BUNDLE_OPEN_SET_ICON_MENU, false);
loyaltyCardId = b != null ? b.getInt(BUNDLE_ID) : 0;
updateLoyaltyCard = b != null && b.getBoolean(BUNDLE_UPDATE, false);
duplicateFromLoyaltyCardId = b != null && b.getBoolean(BUNDLE_DUPLICATE_ID, false);
openSetIconMenu = b != null && b.getBoolean(BUNDLE_OPEN_SET_ICON_MENU, false);
cardId = b != null ? b.getString(BUNDLE_CARDID) : null;
barcodeId = b != null ? b.getString(BUNDLE_BARCODEID) : null;
barcodeType = b != null ? b.getString(BUNDLE_BARCODETYPE) : null;
addGroup = b != null ? b.getString(BUNDLE_ADDGROUP) : null;
importLoyaltyCardUri = intent.getData();
// If we have to import a loyalty card, do so
if (updateLoyaltyCard || duplicateFromLoyaltyCardId) {
tempLoyaltyCard = DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId);
if (tempLoyaltyCard == null) {
Log.w(TAG, "Could not lookup loyalty card " + loyaltyCardId);
Toast.makeText(this, R.string.noCardExistsError, Toast.LENGTH_LONG).show();
finish();
return false;
}
} else if (importLoyaltyCardUri != null) {
try {
tempLoyaltyCard = new ImportURIHelper(this).parse(importLoyaltyCardUri);
} catch (InvalidObjectException ex) {
Toast.makeText(this, R.string.failedParsingImportUriError, Toast.LENGTH_LONG).show();
finish();
return false;
}
}
// If the intent contains any loyalty card fields, override those fields in our current temp card
if (b != null) {
tempLoyaltyCard.updateFromBundle(b, false);
}
Log.d(TAG, "Edit activity: id=" + loyaltyCardId
+ ", updateLoyaltyCard=" + updateLoyaltyCard);
return true;
}
@Override
@@ -267,6 +322,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
tabs = binding.tabs;
savedInstanceState.putInt(STATE_TAB_INDEX, tabs.getSelectedTabPosition());
savedInstanceState.putParcelable(STATE_TEMP_CARD, tempLoyaltyCard);
savedInstanceState.putSerializable(STATE_TEMP_CARD_FIELD, tempLoyaltyCardField);
savedInstanceState.putInt(STATE_REQUESTED_IMAGE, mRequestedImage);
Object cardImageFrontObj = cardImageFront.getTag();
@@ -302,6 +358,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
onRestoring = true;
tempLoyaltyCard = savedInstanceState.getParcelable(STATE_TEMP_CARD);
tempLoyaltyCardField = (LoyaltyCardField) savedInstanceState.getSerializable(STATE_TEMP_CARD_FIELD);
super.onRestoreInstanceState(savedInstanceState);
tabs = binding.tabs;
tabs.selectTab(tabs.getTabAt(savedInstanceState.getInt(STATE_TAB_INDEX)));
@@ -328,9 +385,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
mDatabase = new DBHelper(this).getWritableDatabase();
extractIntentFields(getIntent());
importUriHelper = new ImportURIHelper(this);
if (!extractIntentFields(getIntent())) {
return;
}
for (Currency currency : Currency.getAvailableCurrencies()) {
currencies.put(currency.getSymbol(), currency);
@@ -365,7 +422,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String storeName = s.toString().trim();
updateTempState(LoyaltyCardField.store, storeName);
setLoyaltyCardStore(storeName);
generateIcon(storeName);
if (storeName.length() == 0) {
@@ -379,7 +436,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
noteFieldEdit.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
updateTempState(LoyaltyCardField.note, s.toString());
setLoyaltyCardNote(s.toString());
}
});
@@ -387,25 +444,12 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
addDateFieldTextChangedListener(expiryField, R.string.never, R.string.chooseExpiryDate, LoyaltyCardField.expiry);
DatePickerFragment.registerDatePickListener(this, (textFieldToEdit, newDate) -> {
switch (textFieldToEdit) {
case validFrom:
formatDateField(this, validFromField, newDate);
updateTempState(LoyaltyCardField.validFrom, newDate);
break;
case expiry:
formatDateField(this, expiryField, newDate);
updateTempState(LoyaltyCardField.expiry, newDate);
break;
default:
throw new AssertionError("Unexpected field: " + textFieldToEdit);
}
});
setMaterialDatePickerResultListener();
balanceField.setOnFocusChangeListener((v, hasFocus) -> {
if (!hasFocus && !onResuming && !onRestoring) {
if (balanceField.getText().toString().isEmpty()) {
updateTempState(LoyaltyCardField.balance, BigDecimal.valueOf(0));
setLoyaltyCardBalance(BigDecimal.valueOf(0));
}
balanceField.setText(Utils.formatBalanceWithoutCurrencySymbol(tempLoyaltyCard.balance, tempLoyaltyCard.balanceType));
@@ -418,7 +462,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
if (onResuming || onRestoring) return;
try {
BigDecimal balance = Utils.parseBalance(s.toString(), tempLoyaltyCard.balanceType);
updateTempState(LoyaltyCardField.balance, balance);
setLoyaltyCardBalance(balance);
balanceField.setError(null);
validBalance = true;
} catch (ParseException e) {
@@ -440,7 +484,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
currency = currencies.get(s.toString());
}
updateTempState(LoyaltyCardField.balanceType, currency);
setLoyaltyCardBalanceType(currency);
if (tempLoyaltyCard.balance != null && !onResuming && !onRestoring) {
balanceField.setText(Utils.formatBalanceWithoutCurrencySymbol(tempLoyaltyCard.balance, currency));
@@ -499,7 +543,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
updateTempState(LoyaltyCardField.cardId, s.toString());
setLoyaltyCardCardId(s.toString());
if (s.length() == 0) {
cardIdFieldView.setError(getString(R.string.field_must_not_be_empty));
@@ -524,7 +568,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
// request to update it to match the card id (if changed)
tempStoredOldBarcodeValue = null;
updateTempState(LoyaltyCardField.barcodeId, null);
setLoyaltyCardBarcodeId(null);
} else if (s.toString().equals(getString(R.string.setBarcodeId))) {
if (!lastValue.toString().equals(getString(R.string.setBarcodeId))) {
barcodeIdField.setText(lastValue);
@@ -562,7 +606,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
input.requestFocus();
} else {
updateTempState(LoyaltyCardField.barcodeId, s.toString());
setLoyaltyCardBarcodeId(s.toString());
}
}
@@ -581,12 +625,12 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!s.toString().isEmpty()) {
if (s.toString().equals(getString(R.string.noBarcode))) {
updateTempState(LoyaltyCardField.barcodeType, null);
setLoyaltyCardBarcodeType(null);
} else {
try {
CatimaBarcode barcodeFormat = CatimaBarcode.fromPrettyName(s.toString());
updateTempState(LoyaltyCardField.barcodeType, barcodeFormat);
setLoyaltyCardBarcodeType(barcodeFormat);
if (!barcodeFormat.isSupported()) {
Toast.makeText(LoyaltyCardEditActivity.this, getString(R.string.unsupportedBarcodeType), Toast.LENGTH_LONG).show();
@@ -654,11 +698,22 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
Log.d("barcode card id editor", "barcode and card id editor picker returned without an intent");
return;
}
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, getApplicationContext());
cardId = barcodeValues.content();
barcodeType = barcodeValues.format();
barcodeId = "";
List<BarcodeValues> barcodeValuesList = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, getApplicationContext());
Utils.makeUserChooseBarcodeFromList(this, barcodeValuesList, new BarcodeValuesListDisambiguatorCallback() {
@Override
public void onUserChoseBarcode(BarcodeValues barcodeValues) {
setLoyaltyCardCardId(barcodeValues.content());
setLoyaltyCardBarcodeType(barcodeValues.format());
setLoyaltyCardBarcodeId("");
}
@Override
public void onUserDismissedSelector() {
}
});
}
});
@@ -678,16 +733,17 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
if (bitmap != null) {
if (requestedFrontImage()) {
mFrontImageRemoved = false;
mFrontImageUnsaved = true;
setCardImage(cardImageFront, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_BIG), true);
} else if (requestedBackImage()) {
mBackImageRemoved = false;
mBackImageUnsaved = true;
setCardImage(cardImageBack, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_BIG), true);
} else {
mIconRemoved = false;
mIconUnsaved = true;
setCardImage(thumbnail, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_SMALL), false);
thumbnail.setBackgroundColor(Color.TRANSPARENT);
setColorFromIcon();
setThumbnailImage(Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_SMALL));
}
Log.d("cropper", "mRequestedImage: " + mRequestedImage);
mCropperFinishedType = mRequestedImage;
@@ -705,6 +761,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
});
mCropperOptions = new UCrop.Options();
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
askBeforeQuitIfChanged();
}
});
}
// ucrop 2.2.6 initial aspect ratio is glitched when 0x0 is used as the initial ratio option
@@ -778,37 +841,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
@SuppressLint("DefaultLocale")
@Override
public void onResume() {
protected void onResume() {
super.onResume();
Log.i(TAG, "To view card: " + loyaltyCardId);
onResuming = true;
if (tempLoyaltyCard == null) {
if (updateLoyaltyCard || duplicateFromLoyaltyCardId) {
tempLoyaltyCard = DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId);
if (tempLoyaltyCard == null) {
Log.w(TAG, "Could not lookup loyalty card " + loyaltyCardId);
Toast.makeText(this, R.string.noCardExistsError, Toast.LENGTH_LONG).show();
finish();
return;
}
} else if (importLoyaltyCardUri != null) {
try {
tempLoyaltyCard = importUriHelper.parse(importLoyaltyCardUri);
} catch (InvalidObjectException ex) {
Toast.makeText(this, R.string.failedParsingImportUriError, Toast.LENGTH_LONG).show();
finish();
return;
}
} else {
// New card, use default values
tempLoyaltyCard = new LoyaltyCard(-1, "", "", null, null, new BigDecimal("0"), null, "", null, null, null, 0, Utils.getUnixTime(), 100,0);
}
}
if (!initDone) {
if (updateLoyaltyCard) {
setTitle(R.string.editCardTitle);
@@ -824,7 +863,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
setCardImage(cardImageBack, Utils.retrieveCardImage(this, tempLoyaltyCard.id, ImageLocationType.back), true);
}
if (!mIconUnsaved && !croppedIcon() && !mIconRemoved) {
setCardImage(thumbnail, Utils.retrieveCardImage(this, tempLoyaltyCard.id, ImageLocationType.icon), false);
setThumbnailImage(Utils.retrieveCardImage(this, tempLoyaltyCard.id, ImageLocationType.icon));
}
} else {
setTitle(R.string.addCardTitle);
@@ -837,7 +876,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
setCardImage(cardImageBack, Utils.loadTempImage(this, TEMP_UNSAVED_BACK_IMAGE_NAME), true);
}
if (mIconUnsaved && !croppedIcon()) {
setCardImage(thumbnail, Utils.loadTempImage(this, TEMP_UNSAVED_ICON_NAME), false);
setThumbnailImage(Utils.loadTempImage(this, TEMP_UNSAVED_ICON_NAME));
}
}
@@ -857,7 +896,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
// which can cause issues when switching locale because it parses the balance and e.g. the decimal separator may have changed.
formatBalanceCurrencyField(tempLoyaltyCard.balanceType);
BigDecimal balance = tempLoyaltyCard.balance == null ? new BigDecimal("0") : tempLoyaltyCard.balance;
tempLoyaltyCard = updateTempState(tempLoyaltyCard, LoyaltyCardField.balance, balance);
setLoyaltyCardBalance(balance);
balanceField.setText(Utils.formatBalanceWithoutCurrencySymbol(tempLoyaltyCard.balance, tempLoyaltyCard.balanceType));
validBalance = true;
Log.d(TAG, "Setting balance to " + balance);
@@ -904,35 +943,30 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
if (tempLoyaltyCard.headerColor == null) {
// If name is set, pick colour relevant for name. Otherwise pick randomly
updateTempState(LoyaltyCardField.headerColor, tempLoyaltyCard.store.isEmpty() ? Utils.getRandomHeaderColor(this) : Utils.getHeaderColor(this, tempLoyaltyCard));
setLoyaltyCardHeaderColor(tempLoyaltyCard.store.isEmpty() ? Utils.getRandomHeaderColor(this) : Utils.getHeaderColor(this, tempLoyaltyCard));
}
// Update from intent
if (barcodeType != null) {
// Fix up some fields
if (tempLoyaltyCard.barcodeType != null) {
try {
barcodeTypeField.setText(CatimaBarcode.fromName(barcodeType).prettyName());
barcodeTypeField.setText(tempLoyaltyCard.barcodeType.prettyName());
} catch (IllegalArgumentException e) {
barcodeTypeField.setText(getString(R.string.noBarcode));
}
}
if (cardId != null) {
cardIdFieldView.setText(cardId);
if (tempLoyaltyCard.cardId != null) {
cardIdFieldView.setText(tempLoyaltyCard.cardId);
}
if (barcodeId != null) {
if (!barcodeId.isEmpty()) {
barcodeIdField.setText(barcodeId);
if (tempLoyaltyCard.barcodeId != null) {
if (!tempLoyaltyCard.barcodeId.isEmpty()) {
barcodeIdField.setText(tempLoyaltyCard.barcodeId);
} else {
barcodeIdField.setText(getString(R.string.sameAsCardId));
}
}
// Empty intent values
barcodeType = null;
cardId = null;
barcodeId = null;
// Initialization has finished
if (!initDone) {
initDone = true;
@@ -953,9 +987,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
generateIcon(storeFieldEdit.getText().toString().trim());
// It can't be null because we set it in updateTempState but SpotBugs insists it can be
// NP_NULL_ON_SOME_PATH: Possible null pointer dereference and
// NP_NULL_PARAM_DEREF: Method call passes null for non-null parameter
Integer headerColor = tempLoyaltyCard.headerColor;
if (headerColor != null) {
thumbnail.setOnClickListener(new ChooseCardImage());
@@ -979,7 +1010,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
if (icon != null && (icon instanceof Bitmap)) {
int headerColor = Utils.getHeaderColorFromImage((Bitmap) icon, Utils.getHeaderColor(this, tempLoyaltyCard));
updateTempState(LoyaltyCardField.headerColor, headerColor);
setLoyaltyCardHeaderColor(headerColor);
thumbnailEditIcon.setBackgroundColor(Utils.needsDarkForeground(headerColor) ? Color.BLACK : Color.WHITE);
thumbnailEditIcon.setColorFilter(Utils.needsDarkForeground(headerColor) ? Color.WHITE : Color.BLACK);
@@ -988,6 +1019,22 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
}
protected void setThumbnailImage(@Nullable Bitmap bitmap) {
setCardImage(thumbnail, bitmap, false);
if (bitmap == null) {
generateIcon(storeFieldEdit.getText().toString().trim());
} else {
thumbnail.setBackgroundColor(Color.TRANSPARENT);
setColorFromIcon();
}
if (tempLoyaltyCard.headerColor != null) {
thumbnailEditIcon.setBackgroundColor(Utils.needsDarkForeground(tempLoyaltyCard.headerColor) ? Color.BLACK : Color.WHITE);
thumbnailEditIcon.setColorFilter(Utils.needsDarkForeground(tempLoyaltyCard.headerColor) ? Color.WHITE : Color.BLACK);
}
}
protected void setCardImage(ImageView imageView, Bitmap bitmap, boolean applyFallback) {
imageView.setTag(bitmap);
@@ -1011,19 +1058,28 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().equals(getString(defaultOptionStringId))) {
dateField.setTag(null);
updateTempState(loyaltyCardField, null);
switch (loyaltyCardField) {
case validFrom:
setLoyaltyCardValidFrom(null);
break;
case expiry:
setLoyaltyCardExpiry(null);
break;
default:
throw new AssertionError("Unexpected field: " + loyaltyCardField);
}
} else if (s.toString().equals(getString(chooseDateOptionStringId))) {
if (!lastValue.toString().equals(getString(chooseDateOptionStringId))) {
dateField.setText(lastValue);
}
DialogFragment datePickerFragment = DatePickerFragment.newInstance(
showDatePicker(
loyaltyCardField,
(Date) dateField.getTag(),
// if the expiry date is being set, set date picker's minDate to the 'valid from' date
loyaltyCardField == LoyaltyCardField.expiry ? (Date) validFromField.getTag() : null,
// if the 'valid from' date is being set, set date picker's maxDate to the expiry date
loyaltyCardField == LoyaltyCardField.validFrom ? (Date) expiryField.getTag() : null);
datePickerFragment.show(getSupportFragmentManager(), "datePicker");
loyaltyCardField == LoyaltyCardField.validFrom ? (Date) expiryField.getTag() : null
);
}
}
@@ -1064,11 +1120,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
}
@Override
public void onBackPressed() {
askBeforeQuitIfChanged();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@@ -1233,7 +1284,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), ScanActivity.class);
final Bundle b = new Bundle();
b.putString(LoyaltyCardEditActivity.BUNDLE_CARDID, cardIdFieldView.getText().toString());
b.putString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID, cardIdFieldView.getText().toString());
i.putExtras(b);
mCardIdAndBarCodeEditorLauncher.launch(i);
}
@@ -1320,6 +1371,28 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
return null;
});
if (v.getId() == R.id.thumbnail) {
if (cardImageFront.getTag() instanceof Bitmap) {
cardOptions.put(getString(R.string.useFrontImage), () -> {
mIconRemoved = false;
mIconUnsaved = true;
setThumbnailImage(Utils.resizeBitmap((Bitmap) cardImageFront.getTag(), Utils.BITMAP_SIZE_SMALL));
return null;
});
}
if (cardImageBack.getTag() instanceof Bitmap) {
cardOptions.put(getString(R.string.useBackImage), () -> {
mIconRemoved = false;
mIconUnsaved = true;
setThumbnailImage(Utils.resizeBitmap((Bitmap) cardImageBack.getTag(), Utils.BITMAP_SIZE_SMALL));
return null;
});
}
}
int titleResource;
if (v.getId() == R.id.frontImageHolder) {
@@ -1360,17 +1433,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
// We don't need to set or check the dialogId since it's only used for that single dialog
@Override
public void onColorSelected(int dialogId, int color) {
// Save new colour
setLoyaltyCardHeaderColor(color);
// Unset image if set
setCardImage(thumbnail, null, false);
mIconRemoved = true;
mIconUnsaved = false;
updateTempState(LoyaltyCardField.headerColor, color);
thumbnailEditIcon.setBackgroundColor(Utils.needsDarkForeground(color) ? Color.BLACK : Color.WHITE);
thumbnailEditIcon.setColorFilter(Utils.needsDarkForeground(color) ? Color.WHITE : Color.BLACK);
generateIcon(storeFieldEdit.getText().toString().trim());
setThumbnailImage(null);
}
// ColorPickerDialogListener callback
@@ -1379,103 +1448,106 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
// Nothing to do, no change made
}
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
private void showDatePicker(
LoyaltyCardField loyaltyCardField,
@Nullable Date selectedDate,
@Nullable Date minDate,
@Nullable Date maxDate
) {
// Create a new instance of MaterialDatePicker and return it
long startDate = minDate != null ? minDate.getTime() : getDefaultMinDateOfDatePicker();
long endDate = maxDate != null ? maxDate.getTime() : getDefaultMaxDateOfDatePicker();
public interface OnDatePickListener {
void onDatePicked(@NonNull LoyaltyCardField textFieldToEdit, @NonNull Date newDate);
CalendarConstraints.DateValidator dateValidator;
switch (loyaltyCardField) {
case validFrom:
dateValidator = DateValidatorPointBackward.before(endDate);
break;
case expiry:
dateValidator = DateValidatorPointForward.from(startDate);
break;
default:
throw new AssertionError("Unexpected field: " + loyaltyCardField);
}
private static final String TEXT_FIELD_TO_EDIT_ARGUMENT_KEY = "text_field_to_edit";
private static final String CURRENT_DATE_ARGUMENT_KEY = "current_date";
private static final String MIN_DATE_ARGUMENT_KEY = "min_date";
private static final String MAX_DATE_ARGUMENT_KEY = "max_date";
private static final String PICK_DATE_REQUEST_KEY = "pick_date_request";
private static final String NEWLY_PICKED_DATE_ARGUMENT_KEY = "newly_picked_date";
CalendarConstraints calendarConstraints = new CalendarConstraints.Builder()
.setValidator(dateValidator)
.setStart(startDate)
.setEnd(endDate)
.build();
LoyaltyCardField textFieldEdit;
@Nullable
Date minDate;
@Nullable
Date maxDate;
public static DatePickerFragment newInstance(@NonNull LoyaltyCardField textField, @Nullable Date currentDate, @Nullable Date minDate, @Nullable Date maxDate) {
Bundle args = new Bundle();
args.putSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY, textField);
args.putSerializable(CURRENT_DATE_ARGUMENT_KEY, currentDate);
args.putSerializable(MIN_DATE_ARGUMENT_KEY, minDate);
args.putSerializable(MAX_DATE_ARGUMENT_KEY, maxDate);
DatePickerFragment fragment = new DatePickerFragment();
fragment.setArguments(args);
return fragment;
// Use the selected date as the default date in the picker
final Calendar calendar = Calendar.getInstance();
if (selectedDate != null) {
calendar.setTime(selectedDate);
}
public static void registerDatePickListener(@NonNull AppCompatActivity activity, @NonNull OnDatePickListener listener) {
activity.getSupportFragmentManager().setFragmentResultListener(
PICK_DATE_REQUEST_KEY,
activity,
(requestKey, result) -> listener.onDatePicked(
(LoyaltyCardField) Objects.requireNonNull(result.getSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY)),
(Date) Objects.requireNonNull(result.getSerializable(NEWLY_PICKED_DATE_ARGUMENT_KEY))));
}
MaterialDatePicker<Long> materialDatePicker = MaterialDatePicker.Builder.datePicker()
.setSelection(calendar.getTimeInMillis())
.setCalendarConstraints(calendarConstraints)
.build();
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle args = requireArguments();
textFieldEdit = (LoyaltyCardField) args.getSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY);
minDate = (Date) args.getSerializable(MIN_DATE_ARGUMENT_KEY);
maxDate = (Date) args.getSerializable(MAX_DATE_ARGUMENT_KEY);
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
Date date = (Date) args.getSerializable(CURRENT_DATE_ARGUMENT_KEY);
if (date != null) {
c.setTime(date);
// Required to handle configuration changes
// See https://github.com/material-components/material-components-android/issues/1688
tempLoyaltyCardField = loyaltyCardField;
getSupportFragmentManager().addFragmentOnAttachListener((fragmentManager, fragment) -> {
if (fragment instanceof MaterialDatePicker && Objects.equals(fragment.getTag(), PICK_DATE_REQUEST_KEY)) {
((MaterialDatePicker<Long>) fragment).addOnPositiveButtonClickListener(selection -> {
Bundle args = new Bundle();
args.putLong(NEWLY_PICKED_DATE_ARGUMENT_KEY, selection);
getSupportFragmentManager().setFragmentResult(PICK_DATE_REQUEST_KEY, args);
});
}
});
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
materialDatePicker.show(getSupportFragmentManager(), PICK_DATE_REQUEST_KEY);
}
// Create a new instance of DatePickerDialog and return it
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
datePickerDialog.getDatePicker().setMinDate(minDate != null ? minDate.getTime() : getDefaultMinDateOfDatePicker());
datePickerDialog.getDatePicker().setMaxDate(maxDate != null ? maxDate.getTime() : getDefaultMaxDateOfDatePicker());
return datePickerDialog;
// Required to handle configuration changes
// See https://github.com/material-components/material-components-android/issues/1688
private void setMaterialDatePickerResultListener() {
MaterialDatePicker<Long> fragment = (MaterialDatePicker<Long>) getSupportFragmentManager().findFragmentByTag(PICK_DATE_REQUEST_KEY);
if (fragment != null) {
fragment.addOnPositiveButtonClickListener(selection -> {
Bundle args = new Bundle();
args.putLong(NEWLY_PICKED_DATE_ARGUMENT_KEY, selection);
getSupportFragmentManager().setFragmentResult(PICK_DATE_REQUEST_KEY, args);
});
}
private long getDefaultMinDateOfDatePicker() {
Calendar minDateCalendar = Calendar.getInstance();
minDateCalendar.set(1970, 0, 1);
return minDateCalendar.getTimeInMillis();
}
getSupportFragmentManager().setFragmentResultListener(
PICK_DATE_REQUEST_KEY,
this,
(requestKey, result) -> {
long selection = result.getLong(NEWLY_PICKED_DATE_ARGUMENT_KEY);
private long getDefaultMaxDateOfDatePicker() {
Calendar maxDateCalendar = Calendar.getInstance();
maxDateCalendar.set(2100, 11, 31);
return maxDateCalendar.getTimeInMillis();
}
Date newDate = new Date(selection);
switch (tempLoyaltyCardField) {
case validFrom:
formatDateField(LoyaltyCardEditActivity.this, validFromField, newDate);
setLoyaltyCardValidFrom(newDate);
break;
case expiry:
formatDateField(LoyaltyCardEditActivity.this, expiryField, newDate);
setLoyaltyCardExpiry(newDate);
break;
default:
throw new AssertionError("Unexpected field: " + tempLoyaltyCardField);
}
}
);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar c = new GregorianCalendar();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, day);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
private long getDefaultMinDateOfDatePicker() {
Calendar minDateCalendar = Calendar.getInstance();
minDateCalendar.set(1970, 0, 1);
return minDateCalendar.getTimeInMillis();
}
long unixTime = c.getTimeInMillis();
Date date = new Date(unixTime);
Bundle result = new Bundle();
result.putSerializable(TEXT_FIELD_TO_EDIT_ARGUMENT_KEY, textFieldEdit);
result.putSerializable(NEWLY_PICKED_DATE_ARGUMENT_KEY, date);
getParentFragmentManager().setFragmentResult(PICK_DATE_REQUEST_KEY, result);
}
private long getDefaultMaxDateOfDatePicker() {
Calendar maxDateCalendar = Calendar.getInstance();
maxDateCalendar.set(2100, 11, 31);
return maxDateCalendar.getTimeInMillis();
}
private void doSave() {
@@ -1551,8 +1623,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
e.printStackTrace();
}
Log.i(TAG, "Set " + loyaltyCardId + " to " + cardId + " (update: " + updateLoyaltyCard + ")");
DBHelper.setLoyaltyCardGroups(mDatabase, loyaltyCardId, selectedGroups);
ShortcutHelper.updateShortcuts(this, DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId));
@@ -1650,10 +1720,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
private void generateBarcode() {
if (tempLoyaltyCard == null) {
return;
}
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
String cardIdString = tempLoyaltyCard.barcodeId != null ? tempLoyaltyCard.barcodeId : tempLoyaltyCard.cardId;

View File

@@ -3,6 +3,7 @@ package protect.card_locker;
import android.app.Application;
import androidx.appcompat.app.AppCompatDelegate;
import protect.card_locker.preferences.Settings;
public class LoyaltyCardLockerApplication extends Application {

View File

@@ -1,7 +1,6 @@
package protect.card_locker;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.ColorStateList;
@@ -20,7 +19,7 @@ import android.text.method.DigitsKeyListener;
import android.text.style.ForegroundColorSpan;
import android.text.util.Linkify;
import android.util.Log;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -38,19 +37,17 @@ import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.FileProvider;
import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.widget.TextViewCompat;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -63,7 +60,6 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Currency;
import java.util.Date;
import java.util.List;
import java.util.function.Predicate;
@@ -102,9 +98,35 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
static final String STATE_IMAGEINDEX = "imageIndex";
static final String STATE_FULLSCREEN = "isFullscreen";
static final String BUNDLE_ID = "id";
static final String BUNDLE_CARDLIST = "cardList";
static final String BUNDLE_TRANSITION_RIGHT = "transition_right";
final private TaskHandler mTasks = new TaskHandler();
Runnable barcodeImageGenerationFinishedCallback;
private long initTime = System.currentTimeMillis();
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (settings.useVolumeKeysForNavigation()) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// Navigate to the previous card
if (initTime < (System.currentTimeMillis() - 1000)) {
prevNextCard(false);
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
// Navigate to the next card
if (initTime < (System.currentTimeMillis() - 1000)) {
prevNextCard(true);
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
public void onMainImageTap() {
// If we're in fullscreen, leave fullscreen
if (isFullscreen) {
@@ -112,22 +134,25 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
ImageType imageType = imageTypes.get(mainImageIndex);
// If the barcode is shown, switch to fullscreen layout
if (imageTypes.get(mainImageIndex) == ImageType.BARCODE) {
if (imageType == ImageType.BARCODE) {
setFullscreen(true);
return;
}
// If this is an image, open it in the gallery.
openCurrentMainImageInGallery();
openImageInGallery(imageType);
}
private void openCurrentMainImageInGallery() {
ImageType wantedImageType = imageTypes.get(mainImageIndex);
private void openImageInGallery(ImageType imageType) {
File file = null;
switch (wantedImageType) {
switch (imageType) {
case ICON:
file = Utils.retrieveCardImageAsFile(this, loyaltyCardId, ImageLocationType.icon);
break;
case IMAGE_FRONT:
file = Utils.retrieveCardImageAsFile(this, loyaltyCardId, ImageLocationType.front);
break;
@@ -175,6 +200,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
enum ImageType {
NONE,
ICON,
BARCODE,
IMAGE_FRONT,
IMAGE_BACK
@@ -182,8 +208,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
loyaltyCardId = b != null ? b.getInt("id") : 0;
cardList = b != null ? b.getIntegerArrayList("cardList") : null;
loyaltyCardId = b != null ? b.getInt(BUNDLE_ID) : 0;
cardList = b != null ? b.getIntegerArrayList(BUNDLE_CARDLIST) : null;
Log.d(TAG, "View activity: id=" + loyaltyCardId);
}
@@ -209,7 +235,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return;
}
int transitionRight = incomingIntentExtras.getInt("transition_right", -1);
int transitionRight = incomingIntentExtras.getInt(BUNDLE_TRANSITION_RIGHT, -1);
if (transitionRight == 1) {
// right side transition
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
@@ -228,7 +254,9 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
settings = new Settings(this);
String cardOrientation = settings.getCardViewOrientation();
if (cardOrientation.equals(getString(R.string.settings_key_lock_on_opening_orientation))) {
if (cardOrientation.equals(getString(R.string.settings_key_follow_sensor_orientation))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} else if (cardOrientation.equals(getString(R.string.settings_key_lock_on_opening_orientation))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
} else if (cardOrientation.equals(getString(R.string.settings_key_portrait_orientation))) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
@@ -300,7 +328,13 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
binding.bottomAppBarNextButton.setOnClickListener(view -> prevNextCard(true));
binding.bottomAppBarUpdateBalanceButton.setOnClickListener(view -> showBalanceUpdateDialog());
binding.iconContainer.setOnClickListener(view -> Toast.makeText(LoyaltyCardViewActivity.this, R.string.icon_header_click_text, Toast.LENGTH_LONG).show());
binding.iconContainer.setOnClickListener(view -> {
if (Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon) != null) {
openImageInGallery(ImageType.ICON);
} else {
Toast.makeText(LoyaltyCardViewActivity.this, R.string.icon_header_click_text, Toast.LENGTH_LONG).show();
}
});
binding.iconContainer.setOnLongClickListener(view -> {
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle bundle = new Bundle();
@@ -322,6 +356,17 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
return true;
});
binding.fullscreenImage.setOnClickListener(view -> onMainImageTap());
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (isFullscreen) {
setFullscreen(false);
} else {
finish();
}
}
});
}
private SpannableStringBuilder padSpannableString(SpannableStringBuilder spannableStringBuilder) {
@@ -400,7 +445,11 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
private void showBalanceUpdateDialog() {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
// Header
builder.setTitle(R.string.updateBalanceTitle);
// Layout
FrameLayout container = new FrameLayout(this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
@@ -418,61 +467,91 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
currentTextview.setText(getString(R.string.currentBalanceSentence, Utils.formatBalance(this, loyaltyCard.balance, loyaltyCard.balanceType)));
layout.addView(currentTextview);
TextView updateTextView = new TextView(this);
updateTextView.setText(getString(R.string.newBalanceSentence, Utils.formatBalance(this, loyaltyCard.balance, loyaltyCard.balanceType)));
layout.addView(updateTextView);
final TextInputEditText input = new TextInputEditText(this);
Context dialogContext = this;
input.setInputType(InputType.TYPE_CLASS_NUMBER);
input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
input.setKeyListener(DigitsKeyListener.getInstance("0123456789,."));
input.setHint(R.string.updateBalanceHint);
input.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal newBalance;
try {
newBalance = calculateNewBalance(loyaltyCard.balance, loyaltyCard.balanceType, s.toString());
} catch (ParseException e) {
input.setTag(null);
updateTextView.setText(getString(R.string.newBalanceSentence, Utils.formatBalance(dialogContext, loyaltyCard.balance, loyaltyCard.balanceType)));
return;
}
// Save new balance into this element
input.setTag(newBalance);
updateTextView.setText(getString(R.string.newBalanceSentence, Utils.formatBalance(dialogContext, newBalance, loyaltyCard.balanceType)));
}
});
layout.addView(input);
layout.setLayoutParams(params);
container.addView(layout);
// Set layout
builder.setView(container);
builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
// Grab calculated balance from input field
BigDecimal newBalance = (BigDecimal) input.getTag();
if (newBalance == null) {
return;
// Buttons
builder.setPositiveButton(R.string.spend, (dialogInterface, i) -> {
// Calculate and update balance
try {
BigDecimal balanceChange = Utils.parseBalance(input.getText().toString(), loyaltyCard.balanceType);
BigDecimal newBalance = loyaltyCard.balance.subtract(balanceChange).max(new BigDecimal(0));
DBHelper.updateLoyaltyCardBalance(database, loyaltyCardId, newBalance);
} catch (ParseException e) {
Toast.makeText(getApplicationContext(), R.string.amountParsingFailed, Toast.LENGTH_LONG).show();
}
// Actually update balance
DBHelper.updateLoyaltyCardBalance(database, loyaltyCardId, newBalance);
// Reload UI
// Reload state
this.onResume();
// Show new balance
Toast.makeText(getApplicationContext(), getString(R.string.newBalanceSentence, Utils.formatBalance(this, loyaltyCard.balance, loyaltyCard.balanceType)), Toast.LENGTH_LONG).show();
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
builder.setNegativeButton(R.string.receive, (dialogInterface, i) -> {
// Calculate and update balance
try {
BigDecimal balanceChange = Utils.parseBalance(input.getText().toString(), loyaltyCard.balanceType);
BigDecimal newBalance = loyaltyCard.balance.add(balanceChange);
DBHelper.updateLoyaltyCardBalance(database, loyaltyCardId, newBalance);
} catch (ParseException e) {
Toast.makeText(getApplicationContext(), R.string.amountParsingFailed, Toast.LENGTH_LONG).show();
}
// Reload state
this.onResume();
// Show new balance
Toast.makeText(getApplicationContext(), getString(R.string.newBalanceSentence, Utils.formatBalance(this, loyaltyCard.balance, loyaltyCard.balanceType)), Toast.LENGTH_LONG).show();
});
builder.setNeutralButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
// Now that the dialog exists, we can bind something that affects the buttons
input.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
BigDecimal balanceChange;
try {
balanceChange = Utils.parseBalance(s.toString(), loyaltyCard.balanceType);
} catch (ParseException e) {
input.setError(getString(R.string.amountParsingFailed));
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
return;
}
input.setError(null);
if (balanceChange.equals(new BigDecimal(0))) {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
} else {
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(true);
}
}
});
dialog.show();
// Disable buttons (must be done **after** dialog is shown to prevent crash
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
// Set focus on input field
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
input.requestFocus();
}
private BigDecimal calculateNewBalance(BigDecimal currentBalance, Currency currency, String unparsedSubtraction) throws ParseException {
BigDecimal subtraction = Utils.parseBalance(unparsedSubtraction, currency);
return currentBalance.subtract(subtraction).max(new BigDecimal(0));
}
private void setBottomAppBarButtonState() {
if (!loyaltyCard.note.isEmpty() || !loyaltyCardGroups.isEmpty() || hasBalance(loyaltyCard) || loyaltyCard.validFrom != null || loyaltyCard.expiry != null) {
binding.bottomAppBarInfoButton.setVisibility(View.VISIBLE);
@@ -520,8 +599,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Restart activity with new card id and index
Intent intent = getIntent();
Bundle b = intent.getExtras();
b.putInt("id", loyaltyCardId);
b.putInt("transition_right", transitionRight ? 1 : 0);
b.putInt(BUNDLE_ID, loyaltyCardId);
b.putInt(BUNDLE_TRANSITION_RIGHT, transitionRight ? 1 : 0);
intent.putExtras(b);
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
@@ -544,7 +623,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
@Override
public void onResume() {
protected void onResume() {
activityOverridesNavBarColor = true;
super.onResume();
Log.i(TAG, "To view card: " + loyaltyCardId);
@@ -598,10 +678,15 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
cardIdString = loyaltyCard.cardId;
barcodeIdString = loyaltyCard.barcodeId;
binding.cardIdView.setText(loyaltyCard.cardId);
binding.mainImageDescription.setText(loyaltyCard.cardId);
// Display full text on click in case it doesn't fit in a single line
binding.cardIdView.setOnClickListener(v -> {
binding.mainImageDescription.setOnClickListener(v -> {
if (mainImageIndex != 0) {
// Don't show cardId dialog, we're displaying something else
return;
}
TextView cardIdView = new TextView(LoyaltyCardViewActivity.this);
cardIdView.setText(loyaltyCard.cardId);
cardIdView.setTextIsSelectable(true);
@@ -622,7 +707,11 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
int darkenedColor = ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.1f);
binding.barcodeScaler.setProgressTintList(ColorStateList.valueOf(darkenedColor));
binding.barcodeScaler.setThumbTintList(ColorStateList.valueOf(darkenedColor));
// Set bottomAppBar and system navigation bar color
binding.bottomAppBar.setBackgroundColor(darkenedColor);
Utils.setNavigationBarColor(null, window, darkenedColor, Utils.needsDarkForeground(darkenedColor));
int complementaryColor = Utils.getComplementaryColor(darkenedColor);
binding.fabEdit.setBackgroundTintList(ColorStateList.valueOf(complementaryColor));
Drawable editButtonIcon = binding.fabEdit.getDrawable();
@@ -631,7 +720,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
binding.fabEdit.setImageDrawable(editButtonIcon);
Bitmap icon = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon);
Utils.setIconOrTextWithBackground(this, loyaltyCard, icon, binding.iconImage, binding.iconText);
Utils.setIconOrTextWithBackground(this, loyaltyCard, icon, binding.iconImage, binding.iconText, 1);
// If the background is very bright, we should use dark icons
backgroundNeedsDarkIcons = Utils.needsDarkForeground(backgroundHeaderColor);
@@ -676,6 +765,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
DBHelper.updateLoyaltyCardLastUsed(database, loyaltyCard.id);
invalidateOptionsMenu();
ShortcutHelper.updateShortcuts(this, loyaltyCard);
}
private void setStateBasedOnImageTypes() {
@@ -704,16 +795,6 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
imageButton.setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(backgroundNeedsDarkIcons ? Color.BLACK : Color.WHITE, BlendModeCompat.SRC_ATOP));
}
@Override
public void onBackPressed() {
if (isFullscreen) {
setFullscreen(false);
return;
}
super.onBackPressed();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.card_view_menu, menu);
@@ -785,6 +866,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
DBHelper.updateLoyaltyCardArchiveStatus(database, loyaltyCardId, 1);
Toast.makeText(LoyaltyCardViewActivity.this, R.string.archived, Toast.LENGTH_LONG).show();
ShortcutHelper.removeShortcut(LoyaltyCardViewActivity.this, loyaltyCardId);
// Re-init loyaltyCard with new data from DB
onResume();
invalidateOptionsMenu();
@@ -876,7 +959,9 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
if (imageTypes.isEmpty()) {
barcodeRenderTarget.setVisibility(View.GONE);
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
binding.mainImageDescription.setTextColor(MaterialColors.getColor(binding.mainImageDescription, com.google.android.material.R.attr.colorOnSurfaceVariant));
binding.mainImageDescription.setText(loyaltyCard.cardId);
return;
}
@@ -885,7 +970,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
if (wantedImageType == ImageType.BARCODE) {
barcodeRenderTarget.setBackgroundColor(Color.WHITE);
binding.mainCardView.setCardBackgroundColor(Color.WHITE);
binding.cardIdView.setTextColor(getResources().getColor(R.color.md_theme_light_onSurfaceVariant));
binding.mainImageDescription.setTextColor(getResources().getColor(R.color.md_theme_light_onSurfaceVariant));
if (waitForResize) {
redrawBarcodeAfterResize(!isFullscreen);
@@ -893,18 +978,23 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
drawBarcode(!isFullscreen);
}
binding.mainImageDescription.setText(loyaltyCard.cardId);
barcodeRenderTarget.setContentDescription(getString(R.string.barcodeImageDescriptionWithType, format.prettyName()));
} else if (wantedImageType == ImageType.IMAGE_FRONT) {
barcodeRenderTarget.setImageBitmap(frontImageBitmap);
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
binding.mainImageDescription.setTextColor(MaterialColors.getColor(binding.mainImageDescription, com.google.android.material.R.attr.colorOnSurfaceVariant));
binding.mainImageDescription.setText(getString(R.string.frontImageDescription));
barcodeRenderTarget.setContentDescription(getString(R.string.frontImageDescription));
} else if (wantedImageType == ImageType.IMAGE_BACK) {
barcodeRenderTarget.setImageBitmap(backImageBitmap);
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
binding.mainImageDescription.setTextColor(MaterialColors.getColor(binding.mainImageDescription, com.google.android.material.R.attr.colorOnSurfaceVariant));
binding.mainImageDescription.setText(getString(R.string.backImageDescription));
barcodeRenderTarget.setContentDescription(getString(R.string.backImageDescription));
} else {
throw new IllegalArgumentException("Unknown image type: " + wantedImageType);
@@ -1055,10 +1145,14 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Set Android to fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().setDecorFitsSystemWindows(false);
if (getWindow().getInsetsController() != null) {
getWindow().getInsetsController().hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
getWindow().getInsetsController().setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
Window window = getWindow();
if (window != null) {
window.setDecorFitsSystemWindows(false);
WindowInsetsController wic = window.getInsetsController();
if (wic != null) {
wic.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
wic.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
}
}
} else {
setFullscreenModeSdkLessThan30();
@@ -1085,10 +1179,14 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
// Unset fullscreen mode
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().setDecorFitsSystemWindows(true);
if (getWindow().getInsetsController() != null) {
getWindow().getInsetsController().show(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
getWindow().getInsetsController().setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_DEFAULT);
Window window = getWindow();
if (window != null) {
window.setDecorFitsSystemWindows(true);
WindowInsetsController wic = window.getInsetsController();
if (wic != null) {
wic.show(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
wic.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_DEFAULT);
}
}
} else {
unsetFullscreenModeSdkLessThan30();
@@ -1100,19 +1198,25 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
@SuppressWarnings("deprecation")
private void unsetFullscreenModeSdkLessThan30() {
getWindow().getDecorView().setSystemUiVisibility(
getWindow().getDecorView().getSystemUiVisibility()
& ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
& ~View.SYSTEM_UI_FLAG_FULLSCREEN
);
Window window = getWindow();
if (window != null) {
window.getDecorView().setSystemUiVisibility(
window.getDecorView().getSystemUiVisibility()
& ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
& ~View.SYSTEM_UI_FLAG_FULLSCREEN
);
}
}
@SuppressWarnings("deprecation")
private void setFullscreenModeSdkLessThan30() {
getWindow().getDecorView().setSystemUiVisibility(
getWindow().getDecorView().getSystemUiVisibility()
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
);
Window window = getWindow();
if (window != null) {
window.getDecorView().setSystemUiVisibility(
window.getDecorView().getSystemUiVisibility()
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
);
}
}
}

View File

@@ -2,15 +2,12 @@ package protect.card_locker;
import android.app.Activity;
import android.app.SearchManager;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.CursorIndexOutOfBoundsException;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -22,28 +19,32 @@ import android.view.View;
import android.widget.CheckBox;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.SearchView;
import androidx.core.splashscreen.SplashScreen;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import protect.card_locker.databinding.ContentMainBinding;
import protect.card_locker.databinding.MainActivityBinding;
import protect.card_locker.databinding.SortingOptionBinding;
import protect.card_locker.preferences.Settings;
import protect.card_locker.preferences.SettingsActivity;
public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
@@ -53,6 +54,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
public static final String RESTART_ACTIVITY_INTENT = "restart_activity_intent";
private static final int MEDIUM_SCALE_FACTOR_DIP = 460;
static final String STATE_SEARCH_QUERY = "SEARCH_QUERY";
private SQLiteDatabase mDatabase;
private LoyaltyCardCursorAdapter mAdapter;
@@ -60,6 +62,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private SearchView mSearchView;
private int mLoyaltyCardCount = 0;
protected String mFilter = "";
private String currentQuery = "";
private String finalQuery = "";
protected Object mGroup = null;
protected DBHelper.LoyaltyCardOrder mOrder = DBHelper.LoyaltyCardOrder.Alpha;
protected DBHelper.LoyaltyCardOrderDirection mOrderDirection = DBHelper.LoyaltyCardOrderDirection.Ascending;
@@ -69,9 +73,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private View mNoMatchingCardsText;
private View mNoGroupCardsText;
private TabLayout groupsTabLayout;
private Runnable mSwapLoyaltyCardListCursor;
private Runnable mUpdateLoyaltyCardListRunnable;
private ActivityResultLauncher<Intent> mBarcodeScannerLauncher;
private ActivityResultLauncher<Intent> mSettingsLauncher;
@@ -89,35 +91,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public boolean onActionItemClicked(ActionMode inputMode, MenuItem inputItem) {
if (inputItem.getItemId() == R.id.action_copy_to_clipboard) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
String clipboardData;
int cardCount = mAdapter.getSelectedItemCount();
if (cardCount == 1) {
clipboardData = mAdapter.getSelectedItems().get(0).cardId;
} else {
StringBuilder cardIds = new StringBuilder();
for (int i = 0; i < cardCount; i++) {
LoyaltyCard loyaltyCard = mAdapter.getSelectedItems().get(i);
cardIds.append(loyaltyCard.store + ": " + loyaltyCard.cardId);
if (i < (cardCount - 1)) {
cardIds.append("\n");
}
}
clipboardData = cardIds.toString();
}
ClipData clip = ClipData.newPlainText(getString(R.string.card_ids_copied), clipboardData);
clipboard.setPrimaryClip(clip);
Toast.makeText(MainActivity.this, cardCount > 1 ? R.string.copy_to_clipboard_multiple_toast : R.string.copy_to_clipboard_toast, Toast.LENGTH_LONG).show();
inputMode.finish();
return true;
} else if (inputItem.getItemId() == R.id.action_share) {
if (inputItem.getItemId() == R.id.action_share) {
final ImportURIHelper importURIHelper = new ImportURIHelper(MainActivity.this);
try {
importURIHelper.startShareIntent(mAdapter.getSelectedItems());
@@ -179,6 +153,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
Log.d(TAG, "Archiving card: " + loyaltyCard.id);
DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id, 1);
ShortcutHelper.removeShortcut(MainActivity.this, loyaltyCard.id);
updateLoyaltyCardList(false);
inputMode.finish();
invalidateOptionsMenu();
@@ -223,12 +198,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
protected void onCreate(Bundle inputSavedInstanceState) {
extractIntentFields(getIntent());
SplashScreen.installSplashScreen(this);
super.onCreate(inputSavedInstanceState);
// We should extract the share intent after we called the super.onCreate as it may need to spawn a dialog window and the app needs to be initialized to not crash
extractIntentFields(getIntent());
binding = MainActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.app_name);
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
groupsTabLayout = binding.groups;
@@ -236,13 +211,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mDatabase = new DBHelper(this).getWritableDatabase();
mSwapLoyaltyCardListCursor = () -> {
Group group = null;
if (mGroup != null) {
group = (Group) mGroup;
}
mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection, mAdapter.showingArchivedCards() ? DBHelper.LoyaltyCardArchiveFilter.All : DBHelper.LoyaltyCardArchiveFilter.Unarchived));
mUpdateLoyaltyCardListRunnable = () -> {
updateLoyaltyCardList(false);
};
groupsTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@@ -277,44 +247,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mNoGroupCardsText = contentMainBinding.noGroupCardsText;
mCardList = contentMainBinding.list;
mAdapter = new LoyaltyCardCursorAdapter(this, null, this, mSwapLoyaltyCardListCursor);
mAdapter = new LoyaltyCardCursorAdapter(this, null, this, mUpdateLoyaltyCardListRunnable);
mCardList.setAdapter(mAdapter);
registerForContextMenu(mCardList);
mGroup = null;
updateLoyaltyCardList(true);
/*
* This was added for Huawei, but Huawei is just too much of a fucking pain.
* Just leaving this commented out if needed for the future idk
* https://twitter.com/SylvieLorxu/status/1379437902741012483
*
// Show privacy policy on first run
SharedPreferences privacyPolicyShownPref = getApplicationContext().getSharedPreferences(
getString(R.string.sharedpreference_privacy_policy_shown),
Context.MODE_PRIVATE);
if (privacyPolicyShownPref.getInt(getString(R.string.sharedpreference_privacy_policy_shown), 0) == 0) {
SharedPreferences.Editor privacyPolicyShownPrefEditor = privacyPolicyShownPref.edit();
privacyPolicyShownPrefEditor.putInt(getString(R.string.sharedpreference_privacy_policy_shown), 1);
privacyPolicyShownPrefEditor.apply();
new AlertDialog.Builder(this)
.setTitle(R.string.privacy_policy)
.setMessage(R.string.privacy_policy_popup_text)
.setPositiveButton(R.string.accept, null)
.setNegativeButton(R.string.privacy_policy, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
openPrivacyPolicy();
}
})
.setIcon(android.R.drawable.ic_dialog_info)
.show();
}
*/
mBarcodeScannerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
// Exit early if the user cancelled the scan (pressed back/home)
if (result.getResultCode() != RESULT_OK) {
@@ -322,11 +258,11 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
Intent intent = result.getData();
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, this);
List<BarcodeValues> barcodeValuesList = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, this);
Bundle inputBundle = intent.getExtras();
String group = inputBundle != null ? inputBundle.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) : null;
processBarcodeValues(barcodeValues, group);
processBarcodeValuesList(barcodeValuesList, group, false);
});
mSettingsLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
@@ -337,6 +273,17 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
}
});
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (mSearchView != null && !mSearchView.isIconified()) {
mSearchView.setIconified(true);
} else {
finish();
}
}
});
}
@Override
@@ -351,7 +298,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
if (mSearchView != null && !mSearchView.isIconified()) {
mFilter = mSearchView.getQuery().toString();
}
// Start of active tab logic
updateTabGroups(groupsTabLayout);
@@ -409,16 +355,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mBarcodeScannerLauncher.launch(intent);
});
addButton.bringToFront();
}
@Override
public void onBackPressed() {
if (mSearchView != null && !mSearchView.isIconified()) {
mSearchView.setIconified(true);
return;
var layoutManager = (GridLayoutManager) mCardList.getLayoutManager();
if (layoutManager != null) {
var settings = new Settings(this);
layoutManager.setSpanCount(settings.getPreferredColumnCount());
}
super.onBackPressed();
}
private void displayCardSetupOptions(Menu menu, boolean shouldShow) {
@@ -432,7 +374,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
private void updateLoyaltyCardList(boolean updateCount) {
mSwapLoyaltyCardListCursor.run();
Group group = null;
if (mGroup != null) {
group = (Group) mGroup;
}
mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection, mAdapter.showingArchivedCards() ? DBHelper.LoyaltyCardArchiveFilter.All : DBHelper.LoyaltyCardArchiveFilter.Unarchived));
if (updateCount) {
updateLoyaltyCardCount();
@@ -475,63 +422,62 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
}
private void processBarcodeValues(BarcodeValues barcodeValues, String group) {
if (barcodeValues.isEmpty()) {
private void processBarcodeValuesList(List<BarcodeValues> barcodeValuesList, String group, boolean closeAppOnNoBarcode) {
if (barcodeValuesList.isEmpty()) {
throw new IllegalArgumentException("barcodesValues may not be empty");
}
Intent newIntent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle newBundle = new Bundle();
newBundle.putString(LoyaltyCardEditActivity.BUNDLE_BARCODETYPE, barcodeValues.format());
newBundle.putString(LoyaltyCardEditActivity.BUNDLE_CARDID, barcodeValues.content());
if (group != null) {
newBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, group);
}
newIntent.putExtras(newBundle);
startActivity(newIntent);
Utils.makeUserChooseBarcodeFromList(MainActivity.this, barcodeValuesList, new BarcodeValuesListDisambiguatorCallback() {
@Override
public void onUserChoseBarcode(BarcodeValues barcodeValues) {
CatimaBarcode barcodeType = barcodeValues.format();
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle bundle = new Bundle();
bundle.putString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID, barcodeValues.content());
bundle.putString(LoyaltyCard.BUNDLE_LOYALTY_CARD_BARCODE_TYPE, barcodeType != null ? barcodeType.name() : null);
bundle.putString(LoyaltyCard.BUNDLE_LOYALTY_CARD_BARCODE_ID, null);
if (group != null) {
bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, group);
}
intent.putExtras(bundle);
startActivity(intent);
}
@Override
public void onUserDismissedSelector() {
if (closeAppOnNoBarcode) {
finish();
}
}
});
}
private void onSharedIntent(Intent intent) {
String receivedAction = intent.getAction();
String receivedType = intent.getType();
// Check if an image was shared to us
// Check if an image or file was shared to us
if (Intent.ACTION_SEND.equals(receivedAction)) {
if (!receivedType.startsWith("image/")) {
List<BarcodeValues> barcodeValuesList;
if (receivedType.equals("text/plain")) {
barcodeValuesList = Collections.singletonList(new BarcodeValues(null, intent.getStringExtra(Intent.EXTRA_TEXT)));
} else if (receivedType.startsWith("image/")) {
barcodeValuesList = Utils.retrieveBarcodesFromImage(this, intent.getParcelableExtra(Intent.EXTRA_STREAM));
} else if (receivedType.equals("application/pdf")) {
barcodeValuesList = Utils.retrieveBarcodesFromPdf(this, intent.getParcelableExtra(Intent.EXTRA_STREAM));
} else {
Log.e(TAG, "Wrong mime-type");
return;
}
BarcodeValues barcodeValues;
Bitmap bitmap;
Uri data = intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (data == null) {
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
if (barcodeValuesList.isEmpty()) {
finish();
return;
}
try {
bitmap = Utils.retrieveImageFromUri(this, data);
} catch (IOException e) {
Log.e(TAG, "Error getting data from image file");
e.printStackTrace();
Toast.makeText(this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
finish();
return;
}
barcodeValues = Utils.getBarcodeFromBitmap(bitmap);
if (barcodeValues.isEmpty()) {
Log.i(TAG, "No barcode found in image file");
Toast.makeText(this, R.string.noBarcodeFound, Toast.LENGTH_LONG).show();
finish();
return;
}
processBarcodeValues(barcodeValues, null);
processBarcodeValuesList(barcodeValuesList, null, true);
}
}
@@ -566,6 +512,24 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
@Override
// Saving currentQuery to finalQuery for user, this will be used to restore search history, happens when user clicks a card from list
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
finalQuery = currentQuery;
// Putting the query also into outState for later use in onRestoreInstanceState when rotating screen
if (mSearchView != null) {
outState.putString(STATE_SEARCH_QUERY, finalQuery);
}
}
@Override
// Restoring instance state when rotation of screen happens with the goal to restore search query for user
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
finalQuery = savedInstanceState.getString(STATE_SEARCH_QUERY, "");
}
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
getMenuInflater().inflate(R.menu.main_menu, inputMenu);
@@ -574,15 +538,42 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
if (searchManager != null) {
mSearchView = (SearchView) inputMenu.findItem(R.id.action_search).getActionView();
MenuItem searchMenuItem = inputMenu.findItem(R.id.action_search);
mSearchView = (SearchView) searchMenuItem.getActionView();
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setSubmitButtonEnabled(false);
mSearchView.setOnCloseListener(() -> {
invalidateOptionsMenu();
return false;
});
/*
* On Android 13 and later, pressing Back while the search view is open hides the keyboard
* and collapses the search view at the same time.
* This brings back the old behavior on Android 12 and lower: pressing Back once
* hides the keyboard, press again while keyboard is hidden to collapse the search view.
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(@NonNull MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(@NonNull MenuItem item) {
if (mSearchView.hasFocus()) {
mSearchView.clearFocus();
return false;
}
currentQuery = "";
mFilter = "";
updateLoyaltyCardList(false);
return true;
}
});
}
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
@@ -592,7 +583,21 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public boolean onQueryTextChange(String newText) {
mFilter = newText;
// New logic to ensure search history after coming back from picked card - user will see the last search query
if (newText.isEmpty()) {
if(!finalQuery.isEmpty()){
// Setting the query text for user after coming back from picked card from finalQuery
mSearchView.setQuery(finalQuery, false);
}
else if(!currentQuery.isEmpty()){
// Else if is needed in case user deletes search - expected behaviour is to show all cards
currentQuery = "";
mSearchView.setQuery(currentQuery, false);
}
} else {
// Setting search query each time user changes the text in search to temporary variable to be used later in finalQuery String which will be used to restore search history
currentQuery = newText;
}
TabLayout.Tab currentTab = groupsTabLayout.getTabAt(groupsTabLayout.getSelectedTabPosition());
mGroup = currentTab != null ? currentTab.getTag() : null;
@@ -601,6 +606,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
return true;
}
});
// Check if we came from a picked card back to search, in that case we want to show the search view with previous search query
if(!finalQuery.isEmpty()){
// Expand the search view to show the query
searchMenuItem.expandActionView();
// Setting the query text to empty String due to behaviour of onQueryTextChange after coming back from picked card - onQueryTextChange is called automatically without users interaction
finalQuery = "";
mSearchView.setQuery(currentQuery, false);
}
}
return super.onCreateOptionsMenu(inputMenu);
@@ -611,7 +624,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
int id = inputItem.getItemId();
if (id == android.R.id.home) {
onBackPressed();
getOnBackPressedDispatcher().onBackPressed();
}
if (id == R.id.action_display_options) {
@@ -817,18 +830,16 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
Intent intent = new Intent(this, LoyaltyCardViewActivity.class);
intent.setAction("");
final Bundle b = new Bundle();
b.putInt("id", loyaltyCard.id);
b.putInt(LoyaltyCardViewActivity.BUNDLE_ID, loyaltyCard.id);
ArrayList<Integer> cardList = new ArrayList<>();
for (int i = 0; i < mAdapter.getItemCount(); i++) {
cardList.add(mAdapter.getCard(i).id);
}
b.putIntegerArrayList("cardList", cardList);
b.putIntegerArrayList(LoyaltyCardViewActivity.BUNDLE_CARDLIST, cardList);
intent.putExtras(b);
ShortcutHelper.updateShortcuts(MainActivity.this, loyaltyCard);
startActivity(intent);
}
}

View File

@@ -13,6 +13,12 @@ import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
@@ -20,11 +26,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.RecyclerView;
import protect.card_locker.databinding.ActivityManageGroupBinding;
public class ManageGroupActivity extends CatimaAppCompatActivity implements ManageGroupCursorAdapter.CardAdapterListener {
@@ -133,6 +134,13 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
// this setText is here because content_main.xml is reused from main activity
noGroupCardsText.setText(getResources().getText(R.string.noGiftCardsGroup));
updateLoyaltyCardList();
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
leaveWithoutSaving();
}
});
}
private ArrayList<Integer> adapterStateToIntegerArray(HashMap<Integer, Boolean> adapterState) {
@@ -210,14 +218,9 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
}
}
@Override
public void onBackPressed() {
leaveWithoutSaving();
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
getOnBackPressedDispatcher().onBackPressed();
return true;
}

View File

@@ -33,7 +33,7 @@ public class ManageGroupCursorAdapter extends LoyaltyCardCursorAdapter {
@Override
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(inputCursor);
Boolean overlayValue = mInGroupOverlay.get(loyaltyCard.id);
if ((overlayValue != null ? overlayValue : isLoyaltyCardInGroup(loyaltyCard.id))) {
mAnimationItemsIndex.put(inputCursor.getPosition(), true);

View File

@@ -14,17 +14,17 @@ import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.List;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.List;
import protect.card_locker.databinding.ManageGroupsActivityBinding;
public class ManageGroupsActivity extends CatimaAppCompatActivity implements GroupCursorAdapter.GroupAdapterListener {
@@ -71,11 +71,6 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
updateGroupList();
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
private void updateGroupList() {
mAdapter.swapCursor(DBHelper.getGroupCursor(mDatabase));
@@ -248,4 +243,4 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
AlertDialog dialog = builder.create();
dialog.show();
}
}
}

View File

@@ -24,6 +24,8 @@ import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
@@ -32,7 +34,6 @@ import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -43,6 +44,8 @@ import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import protect.card_locker.databinding.CustomBarcodeScannerBinding;
@@ -63,6 +66,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
private static final int COMPAT_SCALE_FACTOR_DIP = 320;
private static final int PERMISSION_SCAN_ADD_FROM_IMAGE = 100;
private static final int PERMISSION_SCAN_ADD_FROM_PDF = 101;
private CaptureManager capture;
private DecoratedBarcodeView barcodeScannerView;
@@ -74,13 +78,15 @@ public class ScanActivity extends CatimaAppCompatActivity {
private ActivityResultLauncher<Intent> manualAddLauncher;
// can't use the pre-made contract because that launches the file manager for image type instead of gallery
private ActivityResultLauncher<Intent> photoPickerLauncher;
private ActivityResultLauncher<Intent> pdfPickerLauncher;
static final String STATE_SCANNER_ACTIVE = "scannerActive";
private boolean mScannerActive = true;
private boolean mHasError = false;
private void extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
cardId = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_CARDID) : null;
cardId = b != null ? b.getString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID) : null;
addGroup = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) : null;
Log.d(TAG, "Scan activity: id=" + cardId);
}
@@ -100,17 +106,44 @@ public class ScanActivity extends CatimaAppCompatActivity {
manualAddLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.SELECT_BARCODE_REQUEST, result.getResultCode(), result.getData()));
photoPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_IMAGE_FILE, result.getResultCode(), result.getData()));
pdfPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_PDF_FILE, result.getResultCode(), result.getData()));
customBarcodeScannerBinding.fabOtherOptions.setOnClickListener(view -> {
setScannerActive(false);
ArrayList<HashMap<String, Object>> list = new ArrayList<>();
String[] texts = new String[]{
getString(R.string.addWithoutBarcode),
getString(R.string.addManually),
getString(R.string.addFromImage),
getString(R.string.addFromPdfFile),
};
Object[] icons = new Object[]{
R.drawable.baseline_block_24,
R.drawable.ic_edit,
R.drawable.baseline_image_24,
R.drawable.baseline_picture_as_pdf_24,
};
String[] columns = new String[]{"text", "icon"};
for (int i = 0; i < texts.length; i++) {
HashMap<String, Object> map = new HashMap<>();
map.put(columns[0], texts[i]);
map.put(columns[1], icons[i]);
list.add(map);
}
ListAdapter adapter = new SimpleAdapter(
ScanActivity.this,
list,
R.layout.alertdialog_row_with_icon,
columns,
new int[]{R.id.textView, R.id.imageView}
);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(ScanActivity.this);
builder.setTitle(getString(R.string.add_a_card_in_a_different_way));
builder.setItems(
new CharSequence[]{
getString(R.string.addWithoutBarcode),
getString(R.string.addManually),
getString(R.string.addFromImage)
},
builder.setAdapter(
adapter,
(dialogInterface, i) -> {
switch (i) {
case 0:
@@ -122,6 +155,9 @@ public class ScanActivity extends CatimaAppCompatActivity {
case 2:
addFromImage();
break;
case 3:
addFromPdfFile();
break;
default:
throw new IllegalArgumentException("Unknown 'Add a card in a different way' dialog option");
}
@@ -135,7 +171,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
// Even though we do the actual decoding with the barcodeScannerView
// CaptureManager needs to be running to show the camera and scanning bar
capture = new CatimaCaptureManager(this, barcodeScannerView);
capture = new CatimaCaptureManager(this, barcodeScannerView, this::onCaptureManagerError);
Intent captureIntent = new Intent();
Bundle captureIntentBundle = new Bundle();
captureIntentBundle.putBoolean(Intents.Scan.BEEP_ENABLED, false);
@@ -172,9 +208,14 @@ public class ScanActivity extends CatimaAppCompatActivity {
capture.onResume();
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
showCameraPermissionMissingText(false);
if (!Utils.deviceHasCamera(this)) {
showCameraError(getString(R.string.noCameraFoundGuideText), false);
} else if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
showCameraPermissionMissingText();
} else {
hideCameraError();
}
scaleScreen();
}
@@ -269,14 +310,26 @@ public class ScanActivity extends CatimaAppCompatActivity {
private void handleActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
List<BarcodeValues> barcodeValuesList = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
if (barcodeValues.isEmpty()) {
if (barcodeValuesList.isEmpty()) {
setScannerActive(true);
return;
}
returnResult(barcodeValues.content(), barcodeValues.format());
Utils.makeUserChooseBarcodeFromList(this, barcodeValuesList, new BarcodeValuesListDisambiguatorCallback() {
@Override
public void onUserChoseBarcode(BarcodeValues barcodeValues) {
CatimaBarcode barcodeType = barcodeValues.format();
returnResult(barcodeValues.content(), barcodeType != null ? barcodeType.name() : null);
}
@Override
public void onUserDismissedSelector() {
setScannerActive(true);
}
});
}
private void addWithoutBarcode() {
@@ -316,7 +369,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
// Buttons
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
returnResult(input.getText().toString(), "");
returnResult(input.getText().toString(), null);
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
@@ -344,42 +397,79 @@ public class ScanActivity extends CatimaAppCompatActivity {
}
public void addManually() {
Intent i = new Intent(getApplicationContext(), BarcodeSelectorActivity.class);
if (cardId != null) {
final Bundle b = new Bundle();
b.putString("initialCardId", cardId);
i.putExtras(b);
}
manualAddLauncher.launch(i);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(ScanActivity.this);
builder.setTitle(R.string.add_manually_warning_title);
builder.setMessage(R.string.add_manually_warning_message);
builder.setPositiveButton(R.string.continue_, (dialog, which) -> {
Intent i = new Intent(getApplicationContext(), BarcodeSelectorActivity.class);
if (cardId != null) {
final Bundle b = new Bundle();
b.putString(LoyaltyCard.BUNDLE_LOYALTY_CARD_CARD_ID, cardId);
i.putExtras(b);
}
manualAddLauncher.launch(i);
});
builder.setNegativeButton(R.string.cancel, (dialog, which) -> setScannerActive(true));
builder.setOnCancelListener(dialog -> setScannerActive(true));
builder.show();
}
public void addFromImage() {
PermissionUtils.requestStorageReadPermission(this, PERMISSION_SCAN_ADD_FROM_IMAGE);
}
private void addFromImageAfterPermission() {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
Intent contentIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentIntent.setType("image/*");
public void addFromPdfFile() {
PermissionUtils.requestStorageReadPermission(this, PERMISSION_SCAN_ADD_FROM_PDF);
}
Intent chooserIntent = Intent.createChooser(photoPickerIntent, getString(R.string.addFromImage));
private void addFromImageOrFileAfterPermission(String mimeType, ActivityResultLauncher<Intent> launcher, int chooserText, int errorMessage) {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType(mimeType);
Intent contentIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentIntent.setType(mimeType);
Intent chooserIntent = Intent.createChooser(photoPickerIntent, getString(chooserText));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { contentIntent });
try {
photoPickerLauncher.launch(chooserIntent);
launcher.launch(chooserIntent);
} catch (ActivityNotFoundException e) {
setScannerActive(true);
Toast.makeText(getApplicationContext(), R.string.failedLaunchingPhotoPicker, Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), errorMessage, Toast.LENGTH_LONG).show();
Log.e(TAG, "No activity found to handle intent", e);
}
}
private void showCameraPermissionMissingText(boolean show) {
customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedClickableArea.setOnClickListener(show ? v -> {
public void onCaptureManagerError(String errorMessage) {
if (mHasError) {
// We're already showing an error, ignore this new error
return;
}
showCameraError(errorMessage, false);
}
private void showCameraPermissionMissingText() {
showCameraError(getString(R.string.noCameraPermissionDirectToSystemSetting), true);
}
private void showCameraError(String message, boolean setOnClick) {
customBarcodeScannerBinding.cameraErrorLayout.cameraErrorMessage.setText(message);
setCameraErrorState(true, setOnClick);
}
private void hideCameraError() {
setCameraErrorState(false, false);
}
private void setCameraErrorState(boolean visible, boolean setOnClick) {
mHasError = visible;
customBarcodeScannerBinding.cameraErrorLayout.cameraErrorClickableArea.setOnClickListener(visible && setOnClick ? v -> {
navigateToSystemPermissionSetting();
} : null);
customBarcodeScannerBinding.cardInputContainer.setBackgroundColor(show ? obtainThemeAttribute(com.google.android.material.R.attr.colorSurface) : Color.TRANSPARENT);
customBarcodeScannerBinding.cameraPermissionDeniedLayout.getRoot().setVisibility(show ? View.VISIBLE : View.GONE);
customBarcodeScannerBinding.cardInputContainer.setBackgroundColor(visible ? obtainThemeAttribute(com.google.android.material.R.attr.colorSurface) : Color.TRANSPARENT);
customBarcodeScannerBinding.cameraErrorLayout.getRoot().setVisibility(visible ? View.VISIBLE : View.GONE);
}
private void scaleScreen() {
@@ -389,8 +479,8 @@ public class ScanActivity extends CatimaAppCompatActivity {
float mediumSizePx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,MEDIUM_SCALE_FACTOR_DIP,getResources().getDisplayMetrics());
boolean shouldScaleSmaller = screenHeight < mediumSizePx;
customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedIcon.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
customBarcodeScannerBinding.cameraPermissionDeniedLayout.cameraPermissionDeniedTitle.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
customBarcodeScannerBinding.cameraErrorLayout.cameraErrorIcon.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
customBarcodeScannerBinding.cameraErrorLayout.cameraErrorTitle.setVisibility(shouldScaleSmaller ? View.GONE : View.VISIBLE);
}
private int obtainThemeAttribute(int attribute) {
@@ -416,10 +506,18 @@ public class ScanActivity extends CatimaAppCompatActivity {
boolean granted = grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (requestCode == CaptureManager.getCameraPermissionReqCode()) {
showCameraPermissionMissingText(!granted);
} else if (requestCode == PERMISSION_SCAN_ADD_FROM_IMAGE) {
if (granted) {
addFromImageAfterPermission();
hideCameraError();
} else {
showCameraPermissionMissingText();
}
} else if (requestCode == PERMISSION_SCAN_ADD_FROM_IMAGE || requestCode == PERMISSION_SCAN_ADD_FROM_PDF) {
if (granted) {
if (requestCode == PERMISSION_SCAN_ADD_FROM_IMAGE) {
addFromImageOrFileAfterPermission("image/*", photoPickerLauncher, R.string.addFromImage, R.string.failedLaunchingPhotoPicker);
} else {
addFromImageOrFileAfterPermission("application/pdf", pdfPickerLauncher, R.string.addFromPdfFile, R.string.failedLaunchingFileManager);
}
} else {
setScannerActive(true);
Toast.makeText(this, R.string.storageReadPermissionRequired, Toast.LENGTH_LONG).show();

View File

@@ -8,6 +8,11 @@ import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.IconCompat;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
@@ -15,11 +20,6 @@ import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.IconCompat;
class ShortcutHelper {
// Android documentation says that no more than 5 shortcuts
// are supported. However, that may be too many, as not all
@@ -43,6 +43,11 @@ class ShortcutHelper {
* used card shortcut is discarded.
*/
static void updateShortcuts(Context context, LoyaltyCard card) {
if (card.archiveStatus == 1) {
// Don't add archived card to menu
return;
}
LinkedList<ShortcutInfoCompat> list = new LinkedList<>(ShortcutManagerCompat.getDynamicShortcuts(context));
SQLiteDatabase database = new DBHelper(context).getReadableDatabase();
@@ -108,18 +113,7 @@ class ShortcutHelper {
* shortcut exists.
*/
static void removeShortcut(Context context, int cardId) {
List<ShortcutInfoCompat> list = ShortcutManagerCompat.getDynamicShortcuts(context);
String shortcutId = Integer.toString(cardId);
for (int index = 0; index < list.size(); index++) {
if (list.get(index).getId().equals(shortcutId)) {
list.remove(index);
break;
}
}
ShortcutManagerCompat.setDynamicShortcuts(context, list);
ShortcutManagerCompat.removeDynamicShortcuts(context, Collections.singletonList(Integer.toString(cardId)));
}
static @NotNull
@@ -139,8 +133,7 @@ class ShortcutHelper {
// one replace it.
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_SINGLE_TOP);
final Bundle bundle = new Bundle();
bundle.putInt("id", loyaltyCard.id);
bundle.putBoolean("view", true);
bundle.putInt(LoyaltyCardViewActivity.BUNDLE_ID, loyaltyCard.id);
intent.putExtras(bundle);
Bitmap iconBitmap = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);

View File

@@ -7,19 +7,20 @@ import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.textview.MaterialTextView;
import com.yalantis.ucrop.UCropActivity;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.ColorUtils;
import androidx.core.view.WindowInsetsControllerCompat;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.textview.MaterialTextView;
import com.yalantis.ucrop.UCropActivity;
public class UCropWrapper extends UCropActivity {
public static final String UCROP_TOOLBAR_TYPEFACE_STYLE = "ucop_toolbar_typeface_style";
@@ -27,15 +28,18 @@ public class UCropWrapper extends UCropActivity {
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
boolean darkMode = Utils.isDarkModeEnabled(this);
Window window = getWindow();
// setup status bar to look like the rest of the app
if (Build.VERSION.SDK_INT >= 23) {
View decorView = getWindow().getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(getWindow(), decorView);
wic.setAppearanceLightStatusBars(!darkMode);
if (window != null) {
View decorView = window.getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView);
wic.setAppearanceLightStatusBars(!darkMode);
}
} else {
// icons are always white back then
if (!darkMode) {
getWindow().setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), getWindow().getStatusBarColor()));
if (window != null && !darkMode) {
window.setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), window.getStatusBarColor()));
}
}

View File

@@ -12,8 +12,12 @@ import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.ImageDecoder;
import android.graphics.Matrix;
import android.graphics.pdf.PdfRenderer;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.net.Uri;
import android.os.Build;
import android.os.ParcelFileDescriptor;
import android.provider.MediaStore;
import android.text.Layout;
import android.text.Spanned;
@@ -22,20 +26,25 @@ import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RawRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.graphics.ColorUtils;
import androidx.core.os.LocaleListCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.core.widget.TextViewCompat;
import androidx.exifinterface.media.ExifInterface;
import androidx.palette.graphics.Palette;
import com.google.android.material.color.DynamicColors;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
@@ -43,6 +52,8 @@ import com.google.zxing.NotFoundException;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.multi.GenericMultipleBarcodeReader;
import com.google.zxing.multi.MultipleBarcodeReader;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
@@ -57,10 +68,13 @@ import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Currency;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -80,12 +94,13 @@ public class Utils {
public static final int SELECT_BARCODE_REQUEST = 2;
public static final int BARCODE_SCAN = 3;
public static final int BARCODE_IMPORT_FROM_IMAGE_FILE = 4;
public static final int CARD_IMAGE_FROM_CAMERA_FRONT = 5;
public static final int CARD_IMAGE_FROM_CAMERA_BACK = 6;
public static final int CARD_IMAGE_FROM_CAMERA_ICON = 7;
public static final int CARD_IMAGE_FROM_FILE_FRONT = 8;
public static final int CARD_IMAGE_FROM_FILE_BACK = 9;
public static final int CARD_IMAGE_FROM_FILE_ICON = 10;
public static final int BARCODE_IMPORT_FROM_PDF_FILE = 5;
public static final int CARD_IMAGE_FROM_CAMERA_FRONT = 6;
public static final int CARD_IMAGE_FROM_CAMERA_BACK = 7;
public static final int CARD_IMAGE_FROM_CAMERA_ICON = 8;
public static final int CARD_IMAGE_FROM_FILE_FRONT = 9;
public static final int CARD_IMAGE_FROM_FILE_BACK = 10;
public static final int CARD_IMAGE_FROM_FILE_ICON = 11;
public static final String CARD_IMAGE_FILENAME_REGEX = "^(card_)(\\d+)(_(?:front|back|icon)\\.png)$";
@@ -128,6 +143,91 @@ public class Utils {
return ColorUtils.calculateLuminance(backgroundColor) > LUMINANCE_MIDPOINT;
}
static public List<BarcodeValues> retrieveBarcodesFromImage(Context context, Uri uri) {
Log.i(TAG, "Received image file with possible barcode");
if (uri == null) {
Log.e(TAG, "Uri did not contain any data");
Toast.makeText(context, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
Bitmap bitmap;
try {
bitmap = retrieveImageFromUri(context, uri);
} catch (IOException e) {
Log.e(TAG, "Error getting data from image file");
e.printStackTrace();
Toast.makeText(context, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
List<BarcodeValues> barcodesFromBitmap = getBarcodesFromBitmap(bitmap);
if (barcodesFromBitmap.isEmpty()) {
Log.i(TAG, "No barcode found in image file");
Toast.makeText(context, R.string.noBarcodeFound, Toast.LENGTH_LONG).show();
}
return barcodesFromBitmap;
}
static public List<BarcodeValues> retrieveBarcodesFromPdf(Context context, Uri uri) {
Log.i(TAG, "Received PDF file with possible barcode");
if (uri == null) {
Log.e(TAG, "Uri did not contain any data");
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
return new ArrayList<>();
}
ParcelFileDescriptor parcelFileDescriptor = null;
PdfRenderer renderer = null;
List<BarcodeValues> barcodesFromPdfPages = new ArrayList<>();
try {
parcelFileDescriptor = context.getContentResolver().openFileDescriptor(uri, "r");
if (parcelFileDescriptor != null) {
renderer = new PdfRenderer(parcelFileDescriptor);
// Loop over all pages to find barcodes
Bitmap renderedPage;
for (int i = 0; i < renderer.getPageCount(); i++) {
PdfRenderer.Page page = renderer.openPage(i);
renderedPage = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
page.render(renderedPage, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
List<BarcodeValues> barcodesFromPage = getBarcodesFromBitmap(renderedPage);
for (BarcodeValues barcodeValues : barcodesFromPage) {
barcodeValues.setNote(String.format(context.getString(R.string.pageWithNumber), i+1));
barcodesFromPdfPages.add(barcodeValues);
}
}
}
} catch (IOException e) {
Log.e(TAG, "Error reading PDF file", e);
Toast.makeText(context, R.string.errorReadingFile, Toast.LENGTH_LONG).show();
} finally {
// Resource handling
if (renderer != null) {
renderer.close();
}
if (parcelFileDescriptor != null) {
try {
parcelFileDescriptor.close();
} catch (IOException e) {
Log.e(TAG, "Error closing ParcelFileDescriptor", e);
}
}
}
if (barcodesFromPdfPages.isEmpty()) {
Log.i(TAG, "No barcode found in pdf file");
Toast.makeText(context, R.string.noBarcodeFound, Toast.LENGTH_LONG).show();
}
return barcodesFromPdfPages;
}
/**
* Returns the Barcode format and content based on the result of an activity.
* It shows toasts to notify the end-user as needed itself and will return an empty
@@ -139,45 +239,20 @@ public class Utils {
* @param context
* @return BarcodeValues
*/
static public BarcodeValues parseSetBarcodeActivityResult(int requestCode, int resultCode, Intent intent, Context context) {
static public List<BarcodeValues> parseSetBarcodeActivityResult(int requestCode, int resultCode, Intent intent, Context context) {
String contents;
String format;
if (resultCode != Activity.RESULT_OK) {
return new BarcodeValues(null, null);
return new ArrayList<>();
}
if (requestCode == Utils.BARCODE_IMPORT_FROM_IMAGE_FILE) {
Log.i(TAG, "Received image file with possible barcode");
return retrieveBarcodesFromImage(context, intent.getData());
}
Uri data = intent.getData();
if (data == null) {
Log.e(TAG, "Intent did not contain any data");
Toast.makeText(context, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
return new BarcodeValues(null, null);
}
Bitmap bitmap;
try {
bitmap = retrieveImageFromUri(context, data);
} catch (IOException e) {
Log.e(TAG, "Error getting data from image file");
e.printStackTrace();
Toast.makeText(context, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
return new BarcodeValues(null, null);
}
BarcodeValues barcodeFromBitmap = getBarcodeFromBitmap(bitmap);
if (barcodeFromBitmap.isEmpty()) {
Log.i(TAG, "No barcode found in image file");
Toast.makeText(context, R.string.noBarcodeFound, Toast.LENGTH_LONG).show();
}
Log.i(TAG, "Read barcode id: " + barcodeFromBitmap.content());
Log.i(TAG, "Read format: " + barcodeFromBitmap.format());
return barcodeFromBitmap;
if (requestCode == Utils.BARCODE_IMPORT_FROM_PDF_FILE) {
return retrieveBarcodesFromPdf(context, intent.getData());
}
if (requestCode == Utils.BARCODE_SCAN || requestCode == Utils.SELECT_BARCODE_REQUEST) {
@@ -193,7 +268,7 @@ public class Utils {
Log.i(TAG, "Read barcode id: " + contents);
Log.i(TAG, "Read format: " + format);
return new BarcodeValues(format, contents);
return Collections.singletonList(new BarcodeValues(format != null ? CatimaBarcode.fromName(format) : null, contents));
}
throw new UnsupportedOperationException("Unknown request code for parseSetBarcodeActivityResult");
@@ -213,22 +288,22 @@ public class Utils {
return MediaStore.Images.Media.getBitmap(context.getContentResolver(), data);
}
static public BarcodeValues getBarcodeFromBitmap(Bitmap bitmap) {
static public List<BarcodeValues> getBarcodesFromBitmap(Bitmap bitmap) {
// This function is vulnerable to OOM, so we try again with a smaller bitmap is we get OOM
for (int i = 0; i < 10; i++) {
try {
return Utils.getBarcodeFromBitmapReal(bitmap);
return Utils.getBarcodesFromBitmapReal(bitmap);
} catch (OutOfMemoryError e) {
Log.w(TAG, "Ran OOM in getBarcodeFromBitmap! Trying again with smaller picture! Retry " + i + " of 10.");
Log.w(TAG, "Ran OOM in getBarcodesFromBitmap! Trying again with smaller picture! Retry " + i + " of 10.");
bitmap = Bitmap.createScaledBitmap(bitmap, (int) Math.round(0.75 * bitmap.getWidth()), (int) Math.round(0.75 * bitmap.getHeight()), false);
}
}
// Give up
return new BarcodeValues(null, null);
return new ArrayList<>();
}
static private BarcodeValues getBarcodeFromBitmapReal(Bitmap bitmap) {
static private List<BarcodeValues> getBarcodesFromBitmapReal(Bitmap bitmap) {
// In order to decode it, the Bitmap must first be converted into a pixel array...
int[] intArray = new int[bitmap.getWidth() * bitmap.getHeight()];
bitmap.getPixels(intArray, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
@@ -237,15 +312,63 @@ public class Utils {
LuminanceSource source = new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
List<BarcodeValues> barcodeValuesList = new ArrayList<>();
try {
Result barcodeResult = new MultiFormatReader().decode(binaryBitmap);
MultiFormatReader multiFormatReader = new MultiFormatReader();
MultipleBarcodeReader multipleBarcodeReader = new GenericMultipleBarcodeReader(multiFormatReader);
return new BarcodeValues(barcodeResult.getBarcodeFormat().name(), barcodeResult.getText());
Result[] barcodeResults = multipleBarcodeReader.decodeMultiple(binaryBitmap);
for (Result barcodeResult : barcodeResults) {
Log.i(TAG, "Read barcode id: " + barcodeResult.getText());
Log.i(TAG, "Read format: " + barcodeResult.getBarcodeFormat().name());
barcodeValuesList.add(new BarcodeValues(CatimaBarcode.fromBarcode(barcodeResult.getBarcodeFormat()), barcodeResult.getText()));
}
return barcodeValuesList;
} catch (NotFoundException e) {
return new BarcodeValues(null, null);
return barcodeValuesList;
}
}
static public void makeUserChooseBarcodeFromList(Context context, List<BarcodeValues> barcodeValuesList, BarcodeValuesListDisambiguatorCallback callback) {
// If there is only one choice, consider it chosen
if (barcodeValuesList.size() == 1) {
callback.onUserChoseBarcode(barcodeValuesList.get(0));
return;
}
// Ask user to choose a barcode
// TODO: This should contain an image of the barcode in question to help users understand the choice they're making
CharSequence[] barcodeDescriptions = new CharSequence[barcodeValuesList.size()];
for (int i = 0; i < barcodeValuesList.size(); i++) {
BarcodeValues barcodeValues = barcodeValuesList.get(i);
CatimaBarcode catimaBarcode = barcodeValues.format();
String barcodeContent = barcodeValues.content();
// Shorten overly long barcodes
if (barcodeContent.length() > 22) {
barcodeContent = barcodeContent.substring(0, 20) + "";
}
if (barcodeValues.note() != null) {
barcodeDescriptions[i] = String.format("%s: %s (%s)", barcodeValues.note(), catimaBarcode != null ? catimaBarcode.prettyName() : context.getString(R.string.noBarcode), barcodeContent);
} else {
barcodeDescriptions[i] = String.format("%s (%s)", catimaBarcode != null ? catimaBarcode.prettyName() : context.getString(R.string.noBarcode), barcodeContent);
}
}
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context);
builder.setTitle(context.getString(R.string.multipleBarcodesFoundPleaseChooseOne));
builder.setItems(
barcodeDescriptions,
(dialogInterface, i) -> callback.onUserChoseBarcode(barcodeValuesList.get(i))
);
builder.setOnCancelListener(dialogInterface -> callback.onUserDismissedSelector());
builder.show();
}
static public Boolean isNotYetValid(Date validFromDate) {
// The note in `hasExpired` does not apply here, since the bug was fixed before this feature was added.
return validFromDate.after(getStartOfToday().getTime());
@@ -273,6 +396,7 @@ public class Utils {
static public String formatBalance(Context context, BigDecimal value, Currency currency) {
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setGroupingUsed(false);
if (currency == null) {
numberFormat.setMaximumFractionDigits(0);
@@ -280,6 +404,7 @@ public class Utils {
}
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
currencyFormat.setGroupingUsed(false);
currencyFormat.setCurrency(currency);
currencyFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());
currencyFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits());
@@ -289,6 +414,7 @@ public class Utils {
static public String formatBalanceWithoutCurrencySymbol(BigDecimal value, Currency currency) {
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setGroupingUsed(false);
if (currency == null) {
numberFormat.setMaximumFractionDigits(0);
@@ -301,19 +427,72 @@ public class Utils {
return numberFormat.format(value);
}
private static final double LargestPreciseDouble = (double) (1l << 53);
static{
assert (LargestPreciseDouble + 1.0) == LargestPreciseDouble;
assert (LargestPreciseDouble - 1.0) != LargestPreciseDouble;
}
private static BigDecimal fromParsed(Number parsed){
if(parsed instanceof BigDecimal)
return (BigDecimal) parsed;
final double d = parsed.doubleValue();
if(d >= LargestPreciseDouble)
return new BigDecimal(parsed.longValue());
return new BigDecimal(d);
}
static public BigDecimal parseBalance(String value, Currency currency) throws ParseException {
// This function expects the input string to not have any grouping (thousand separators).
// It will refuse to work otherwise
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setGroupingUsed(false);
if (numberFormat instanceof DecimalFormat) {
((DecimalFormat) numberFormat).setParseBigDecimal(true);
}
if (currency == null) {
numberFormat.setMaximumFractionDigits(0);
} else {
numberFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());
numberFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits());
int fractionDigits = currency.getDefaultFractionDigits();
numberFormat.setMinimumFractionDigits(fractionDigits);
numberFormat.setMaximumFractionDigits(fractionDigits);
if (numberFormat instanceof DecimalFormat) {
// If the string contains both thousand separators and decimals separators, fail hard
DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) numberFormat).getDecimalFormatSymbols();
char decimalSeparator = decimalFormatSymbols.getDecimalSeparator();
// Translate all non-digits to decimal separators, failing if we find more than 1.
// We loop over the codepoints to make sure eastern arabic numerals are not mistakenly
// treated as a separator.
boolean separatorFound = false;
StringBuilder translatedValue = new StringBuilder();
for (int i = 0; i < value.length();) {
int character = value.codePointAt(i);
if (Character.isDigit(character)) {
translatedValue.append(value.charAt(i));
} else {
if (separatorFound) {
throw new ParseException("Contains multiple separators", i);
}
separatorFound = true;
translatedValue.append(decimalSeparator);
}
i += Character.charCount(character);
}
value = translatedValue.toString();
}
}
Log.d(TAG, numberFormat.parse(value).toString());
return new BigDecimal(numberFormat.parse(value).toString());
return fromParsed(numberFormat.parse(value));
}
static public byte[] bitmapToByteArray(Bitmap bitmap) {
@@ -663,13 +842,31 @@ public class Utils {
}
}
// XXX android 9 and below has issues with patched theme where the background becomes a
// rendering mess
// use after views are inflated
// Force correct color
// Fixes OLED dark mode in MainActivity
public static void postPatchColors(AppCompatActivity activity) {
activity.findViewById(android.R.id.content).setBackgroundColor(resolveBackgroundColor(activity));
}
// Either pass an Activity on which to call getWindow() or an existing Window (may be null) returned by that function.
public static void setNavigationBarColor(@Nullable AppCompatActivity activity, @Nullable Window window, int color, boolean useLightBars) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
if (window == null && activity != null) {
window = activity.getWindow();
}
if (window != null) {
View decorView = window.getDecorView();
WindowInsetsControllerCompat wic = new WindowInsetsControllerCompat(window, decorView);
wic.setAppearanceLightNavigationBars(useLightBars);
window.setNavigationBarColor(color);
}
}
}
public static int resolveBackgroundColor(AppCompatActivity activity) {
TypedValue typedValue = new TypedValue();
activity.getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true);
activity.findViewById(android.R.id.content).setBackgroundColor(typedValue.data);
return typedValue.data;
}
public static int getHeaderColorFromImage(Bitmap image, int fallback) {
@@ -727,23 +924,48 @@ public class Utils {
.replaceAll("(?<!href=\")\\b(https?://[\\w@#%&+=:?/.-]*[\\w@#%&+=:?/-])", "<a href=\"$1\">$1</a>");
}
public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage) {
/**
* Sets an icon or text with background on the given ImageView and/or TextView, including background colour.
*
* @param context Android context
* @param loyaltyCard Loyalty Card
* @param icon Bitmap of the icon to set, or null
* @param backgroundOrIcon ImageView to draw the icon and background on to
* @param textWhenNoImage TextView to write the loyalty card name into if icon is null
* @return background colour
*/
public static int setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage, int columnCount) {
int headerColor = getHeaderColor(context, loyaltyCard);
backgroundOrIcon.setImageBitmap(icon);
backgroundOrIcon.setBackgroundColor(headerColor);
if (icon != null) {
Log.d("onResume", "setting icon image");
textWhenNoImage.setVisibility(View.GONE);
backgroundOrIcon.setImageBitmap(icon);
backgroundOrIcon.setBackgroundColor(Color.TRANSPARENT);
} else {
// Manually calculate how many lines will be needed
// This is necessary because Android's auto sizing will split over lines way before reaching the minimum font size and store names split over multiple lines are harder to scan with a quick glance so we should try to prevent it
// Because we have to write the text before we can actually know the exact laid out size (trying to delay this causes bugs where the autosize fails) we have to take some... weird shortcuts
// At this point textWhenNoImage.getWidth() still returns 0, so we cheat by calculating the whole width of the screen and then dividing it by the amount of columns
int columnWidth = Resources.getSystem().getDisplayMetrics().widthPixels / columnCount;
// Calculate how wide a character is and calculate how many characters fit in a line
// text size is generally based on height, so setting 1:1 as width may be fishy
int characterWidth = TextViewCompat.getAutoSizeMinTextSize(textWhenNoImage);
int maxWidthPerLine = columnWidth - textWhenNoImage.getPaddingStart() - textWhenNoImage.getPaddingEnd();
// Set number of lines based on what could fit at most
int fullTextWidth = loyaltyCard.store.length() * characterWidth;
int maxLines = (fullTextWidth / maxWidthPerLine) + 1;
textWhenNoImage.setMaxLines(maxLines);
// Actually set the text and colour
textWhenNoImage.setVisibility(View.VISIBLE);
int headerColor = getHeaderColor(context, loyaltyCard);
backgroundOrIcon.setImageBitmap(null);
backgroundOrIcon.setBackgroundColor(headerColor);
textWhenNoImage.setText(loyaltyCard.store);
textWhenNoImage.setTextColor(Utils.needsDarkForeground(headerColor) ? Color.BLACK : Color.WHITE);
}
return headerColor;
}
public static boolean installedFromGooglePlay(Context context) {
@@ -814,4 +1036,12 @@ public class Utils {
return false;
});
}
public static boolean deviceHasCamera(Context context) {
try {
return ((CameraManager) context.getSystemService(Context.CAMERA_SERVICE)).getCameraIdList().length > 0;
} catch (CameraAccessException e) {
return false;
}
}
}

View File

@@ -64,7 +64,7 @@ public class CatimaExporter implements Exporter {
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
// For each card
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor);
// For each image
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
@@ -142,7 +142,7 @@ public class CatimaExporter implements Exporter {
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor);
printer.printRecord(card.id,
card.store,
@@ -176,7 +176,7 @@ public class CatimaExporter implements Exporter {
Cursor cardCursor2 = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor2.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor2);
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor2);
for (Group group : DBHelper.getLoyaltyCardGroups(database, card.id)) {
printer.printRecord(card.id, group._id);

View File

@@ -9,8 +9,9 @@ import androidx.annotation.NonNull;
import com.google.zxing.BarcodeFormat;
import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.io.inputstream.ZipInputStream;
import net.lingala.zip4j.model.LocalFileHeader;
import net.lingala.zip4j.model.FileHeader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
@@ -20,9 +21,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
@@ -130,11 +129,9 @@ public class StocardImporter implements Importer {
throw new FormatException("Issue parsing CSV data", e);
}
InputStream input = new FileInputStream(inputFile);
ZipInputStream zipInputStream = new ZipInputStream(input, password);
zipData = importZIP(zipInputStream, zipData);
zipInputStream.close();
input.close();
ZipFile zipFile = new ZipFile(inputFile, password);
zipData = importZIP(zipFile, zipData);
zipFile.close();
if (zipData.cards.keySet().size() == 0) {
throw new FormatException("Couldn't find any loyalty cards in this Stocard export.");
@@ -144,7 +141,7 @@ public class StocardImporter implements Importer {
saveAndDeduplicate(context, database, importedData);
}
public ZIPData importZIP(ZipInputStream zipInputStream, final ZIPData zipData) throws IOException, FormatException, JSONException {
public ZIPData importZIP(ZipFile zipFile, final ZIPData zipData) throws IOException, FormatException, JSONException {
Map<String, StocardRecord> cards = zipData.cards;
Map<String, StocardProvider> providers = zipData.providers;
@@ -152,9 +149,8 @@ public class StocardImporter implements Importer {
String[] cardBaseName = null;
String customProviderId = "";
String cardName = "";
LocalFileHeader localFileHeader;
while ((localFileHeader = zipInputStream.getNextEntry()) != null) {
String fileName = localFileHeader.getFileName();
for (FileHeader fileHeader : zipFile.getFileHeaders()) {
String fileName = fileHeader.getFileName();
String[] nameParts = fileName.split("/");
if (nameParts.length < 2) {
@@ -162,6 +158,7 @@ public class StocardImporter implements Importer {
}
String userId = nameParts[1];
ZipInputStream zipInputStream = zipFile.getInputStream(fileHeader);
if (customProvidersBaseName == null) {
// FIXME: can we use the points-account/statement/content.json balance info somehow?
@@ -302,6 +299,8 @@ public class StocardImporter implements Importer {
} else if (!fileName.endsWith("/")) {
Log.d(TAG, "Unknown or unused file " + fileName + ", skipping...");
}
zipInputStream.close();
}
return new ZIPData(cards, providers);

View File

@@ -1,20 +1,26 @@
package protect.card_locker.preferences;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import android.content.Context;
import android.content.SharedPreferences;
import java.util.Locale;
import android.util.Log;
import androidx.annotation.IntegerRes;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.preference.PreferenceManager;
import java.util.Locale;
import protect.card_locker.R;
import protect.card_locker.Utils;
public class Settings {
private static final String TAG = "Catima";
private final Context mContext;
private SharedPreferences mSettings;
private final SharedPreferences mSettings;
public Settings(Context context) {
mContext = context.getApplicationContext();
@@ -41,10 +47,11 @@ public class Settings {
return mSettings.getBoolean(getResString(keyId), defaultValue);
}
@Nullable
public Locale getLocale() {
String value = getString(R.string.settings_key_locale, "");
if (value.length() == 0) {
if (value.isEmpty()) {
return null;
}
@@ -90,4 +97,23 @@ public class Settings {
public String getColor() {
return getString(R.string.setting_key_theme_color, mContext.getResources().getString(R.string.settings_key_system_theme));
}
public int getPreferredColumnCount() {
var defaultSymbol = mContext.getResources().getString(R.string.settings_key_automatic_column_count);
var defaultColumnCount = mContext.getResources().getInteger(R.integer.main_view_card_columns);
var orientation = mContext.getResources().getConfiguration().orientation;
var columnCountPrefKey = orientation == ORIENTATION_PORTRAIT ? R.string.setting_key_column_count_portrait : R.string.setting_key_column_count_landscape;
var columnCountSetting = getString(columnCountPrefKey, defaultSymbol);
try {
// the pref may be unset or explicitly set to default
return columnCountSetting.equals(defaultSymbol) ? defaultColumnCount : Integer.parseInt(columnCountSetting);
} catch (NumberFormatException nfe) {
Log.e(TAG, "Failed to parseInt the column count pref", nfe);
return defaultColumnCount;
}
}
public boolean useVolumeKeysForNavigation() {
return getBoolean(R.string.settings_key_use_volume_keys_navigation, false);
}
}

Some files were not shown because too many files have changed in this diff Show More