Compare commits

..
Author SHA1 Message Date
Sylvia van Os 7f64449167 Codedump 2023-09-27 22:54:03 +02:00
Sylvia van Os 488c542cd5 Merge remote-tracking branch 'weblate/main' 2023-09-26 20:05:45 +02:00
Sylvia van Os 0e0693bdad Fix changelog to fastlane action 2023-09-26 19:57:12 +02:00
TheScientistPT 86267a2e38 Translated using Weblate (Portuguese)
Currently translated at 98.3% (294 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-09-26 19:55:16 +02:00
Sylvia van Os e2171856ff Update CHANGELOG 2023-09-26 19:32:39 +02:00
Sylvia van Os 3c3a37a9e8 Merge pull request #1524 from CatimaLoyalty/betterDefaultCardColours
Better default card colours
2023-09-26 19:30:59 +02:00
Sylvia van Os 573da1e4ff New add card workflow (#1512) 2023-09-26 19:30:35 +02:00
Sylvia van OsandFC Stegerman 1f70446bce Fix typo
Co-authored-by: FC (Fay) Stegerman <flx@obfusk.net>
2023-09-25 22:22:40 +02:00
TheScientistPT ff4ef15dfc Translated using Weblate (Portuguese)
Currently translated at 98.3% (294 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-09-25 22:01:46 +02:00
Sylvia van Os 926f3adb18 Remove default card colour which uses wrong foreground colour 2023-09-24 15:44:26 +02:00
Sylvia van Os 4b2d981cc6 Add test to ensure colours have white foreground 2023-09-24 15:44:22 +02:00
Sylvia van Os 93d5c5e03e Link feature graphic to homepage 2023-09-24 15:13:11 +02:00
Sylvia van Os 475f071575 Merge pull request #1522 from CatimaLoyalty/create-pull-request/patch-1695546611
Update feature graphic
2023-09-24 11:18:57 +02:00
TheLastProject f77fa88ced Update feature graphic 2023-09-24 09:10:11 +00:00
Sand Smith 7fe5c18cb8 Translated using Weblate (Chinese (Traditional))
Currently translated at 94.9% (284 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-09-24 11:03:13 +02:00
109247019824 7e16798b33 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-09-24 11:03:13 +02:00
Jiri Grönroos 3edfb68bd7 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-09-24 11:03:13 +02:00
Eric 4f307af6bd Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-09-24 11:03:13 +02:00
Skrripy 08848af908 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-09-24 11:03:13 +02:00
Skrripy f4e9b85ae3 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-09-24 11:03:12 +02:00
HudobniVolk 73ccb0ce65 Translated using Weblate (Slovenian)
Currently translated at 91.6% (274 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-09-24 11:02:27 +02:00
Sylvia van Os 15c5ee7f2c Merge pull request #1521 from CatimaLoyalty/create-pull-request/patch-1695528761
Update contributors
2023-09-24 09:42:31 +02:00
Sand Smith f08be0d13f Translated using Weblate (Chinese (Traditional))
Currently translated at 94.9% (284 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-09-24 06:03:21 +00:00
109247019824 aa115e36fd Translated using Weblate (Bulgarian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-09-24 06:03:20 +00:00
Jiri Grönroos cfa45013f4 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-09-24 06:03:19 +00:00
Eric cca01ae5a3 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-09-24 06:03:18 +00:00
Skrripy 44af31f6d4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-09-24 06:03:17 +00:00
Skrripy 8fb076421a 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-09-24 06:03:05 +00:00
HudobniVolk 89f8ca1387 Translated using Weblate (Slovenian)
Currently translated at 91.6% (274 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-09-24 06:03:04 +00:00
TheLastProject fddb462618 Update contributors 2023-09-24 04:12:40 +00:00
Sylvia van Os 97343515a3 Consistency: may not/cannot -> must not 2023-09-23 18:11:42 +02:00
Sylvia van Os dcbd2aa390 Merge pull request #1514 from CatimaLoyalty/improveValidation
Improve validation
2023-09-22 22:32:21 +02:00
Sylvia van Os 12e7aaa615 Trim spaces in store name 2023-09-22 22:02:15 +02:00
Sylvia van Os 50f93b87f5 Cleanups 2023-09-22 21:18:52 +02:00
Sylvia van Os b4cefbc15e Merge pull request #1517 from CatimaLoyalty/returnToLastViewAfterEdit
Return to last view after edit
2023-09-22 21:04:17 +02:00
Sylvia van Os 4ce17c3742 Merge pull request #1520 from obfusk/rm-unused-setgroupnameerror
ManageGroupsActivity: rm unused setGroupNameError()
2023-09-22 20:55:57 +02:00
FC Stegerman 5035b83ae1 ManageGroupsActivity: rm unused setGroupNameError() 2023-09-22 20:13:32 +02:00
Sylvia van Os dc327a3e24 Merge pull request #1519 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-21 19:03:08 +02:00
solokot 4ddceb83d5 Translated using Weblate (Russian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-09-21 15:44:20 +02:00
Heimen Stoffels 31048218af Translated using Weblate (Dutch)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-09-21 15:44:20 +02:00
Slávek Banko 6e3a9ca380 Translated using Weblate (Czech)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-09-21 15:44:20 +02:00
lassr8 09134f4c5f Translated using Weblate (Spanish)
Currently translated at 28.6% (37 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2023-09-21 05:03:56 +02:00
Sylvia van Os 89c9271726 Improve permission string 2023-09-20 18:11:08 +02:00
Sylvia van Os 473f8e6b72 Fix barcode not showing when returning and changing from none to some barcode 2023-09-19 20:45:34 +02:00
Sylvia van Os 8310f09641 Hide keyboard when switching back to view view 2023-09-19 19:40:13 +02:00
Sylvia van Os 31b9123a8f Don't close view activity when entering edit activity 2023-09-19 19:39:33 +02:00
Sylvia van Os cc4aed6773 Update Fastlane 2023-09-18 19:30:20 +02:00
Sylvia van Os a868aac579 Merge pull request #1515 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-18 19:24:37 +02:00
Áron Dubovszky da48eec787 Translated using Weblate (Hungarian)
Currently translated at 98.6% (295 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-09-18 19:00:19 +02:00
Sylvia van Os 4aa56a55fe Balance validation fixes
Remove old string which may sometimes display "does not seem like a
valid balance." and default to 0 as balance if field is emptied.
2023-09-17 17:59:42 +02:00
Sylvia van Os c3daa1cc86 Remove no longer used strings 2023-09-17 17:37:24 +02:00
Sylvia van Os 00d08d741c Don't regenerate barcode if value is empty 2023-09-17 17:37:24 +02:00
Sylvia van Os 2f33be6b3c Improve validation
If a field is empty when it shouldn't be, show it at the correct UI
element and focus
2023-09-17 17:37:21 +02:00
Sylvia van Os d54a3127a6 Improve create group dialog
Don't show error from the start, disable OK button unless state is okay
2023-09-17 16:39:57 +02:00
Sylvia van Os 40ecf46b40 Merge branch 'main' of github.com:CatimaLoyalty/Android 2023-09-17 12:21:09 +02:00
Sylvia van Os dd9b6a8fed Update fastlane 2023-09-17 12:21:02 +02:00
Sylvia van Os 194e1d5c26 Merge pull request #1513 from CatimaLoyalty/create-pull-request/patch-1694923968
Update contributors
2023-09-17 10:10:28 +02:00
TheLastProject 9360f2a1e0 Update contributors 2023-09-17 04:12:47 +00:00
Sylvia van Os 2030b6b08d Release Catima 2.26.0 2023-09-14 20:10:38 +02:00
Sylvia van Os 0b2ad13df9 Merge pull request #1508 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-14 19:52:19 +02:00
Kristoffer Grundström dbc60c39b1 Translated using Weblate (Swedish)
Currently translated at 98.3% (294 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2023-09-14 19:45:37 +02:00
Alexandra Moroz 7db52fe1db Translated using Weblate (Romanian)
Currently translated at 45.8% (137 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2023-09-14 19:45:37 +02:00
J. Lavoie f8bcfd6bdf 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-09-14 19:45:37 +02:00
J. Lavoie 16f79b4e23 Translated using Weblate (French)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-09-14 19:45:37 +02:00
J. Lavoie b1273a1c8a Translated using Weblate (German)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-09-14 19:45:37 +02:00
Sylvia van Os d127d7fce5 Merge pull request #1507 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-13 18:05:24 +02:00
sarami 0aaa4120c7 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-09-13 10:52:44 +02:00
Lionel HANNEQUIN 9a11669e6d Translated using Weblate (French)
Currently translated at 99.6% (298 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-09-13 10:52:44 +02:00
FC Stegerman 3e7859b265 Translated using Weblate (German)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-09-13 10:52:44 +02:00
Sylvia van Os 34a3f79f9c Update compat 2023-09-11 20:21:59 +02:00
Sylvia van Os 8b8737fa23 Update actions 2023-09-11 19:48:39 +02:00
Sylvia van Os cf1a53f1b4 Limit permissions for CI jobs where possible 2023-09-10 20:52:56 +02:00
Sylvia van Os fea4c63840 Allow triggering workflows manually 2023-09-10 12:03:27 +02:00
Sylvia van Os d0881151fe Update contributors-to-file to v3 2023-09-10 11:58:51 +02:00
Sylvia van Os e692d27973 Merge pull request #1499 from obfusk/locale-res
app locale improvements
2023-09-10 11:37:50 +02:00
Sylvia van Os c16a5bc6f6 Merge pull request #1504 from CatimaLoyalty/create-pull-request/patch-1694329960
Update contributors
2023-09-10 09:16:13 +02:00
TheLastProject df765410d8 Update contributors 2023-09-10 07:12:39 +00:00
Sylvia van Os 0b5e10040d Merge pull request #1503 from CatimaLoyalty/create-pull-request/patch-1694245801
Update feature graphic
2023-09-09 11:13:11 +02:00
TheLastProject 9ff6d78345 Update feature graphic 2023-09-09 07:50:00 +00:00
Sylvia van Os 7a35cba4de Merge pull request #1502 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-09 09:48:46 +02:00
Mykola Skira cbfe761cb8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-09-09 02:54:22 +02:00
Ziad OUALHADJ e0256d07a5 Translated using Weblate (French)
Currently translated at 99.2% (128 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-09-09 02:54:22 +02:00
Mykola Skira 39caf35ae5 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-09-09 02:54:22 +02:00
FC Stegerman 704a420e5e disable ast & lb again 2023-09-07 23:39:39 +02:00
Sylvia van Os f2605ca7f2 Fix Weblate oops 2023-09-07 20:00:24 +02:00
Sylvia van Os c75657c58a Merge pull request #1500 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-06 18:47:53 +02:00
Govind S Nair 63ec0cf098 Translated using Weblate (Hindi)
Currently translated at 56.8% (170 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2023-09-06 16:30:19 +02:00
Sex Garo 589b532e9f 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-09-06 16:30:18 +02:00
EngageIndo 4c9e057394 Translated using Weblate (Indonesian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-09-06 16:30:18 +02:00
Sabrina f7f4156a78 Translated using Weblate (Korean)
Currently translated at 97.6% (292 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-09-06 16:30:17 +02:00
Sylvia van Os f9f235af5c Translated using Weblate (German)
Currently translated at 99.3% (297 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-09-06 16:30:11 +02:00
essys f6c74a7da5 Translated using Weblate (German)
Currently translated at 99.3% (297 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-09-06 16:30:11 +02:00
FC Stegerman 1367e29bd4 disable languages < 29% translated 2023-09-05 02:56:38 +02:00
FC Stegerman f025d72a11 add comment about locales to settings.xml 2023-09-05 02:49:13 +02:00
FC Stegerman 30f2eb1fb9 CI: add update-locales workflow 2023-09-05 02:46:45 +02:00
FC Stegerman e8c2e6ecd0 add all langs & rm empty ones 2023-09-05 02:42:30 +02:00
FC Stegerman 025be0e5e3 add & use .scripts/locales.py for localeConfig 2023-09-05 02:17:20 +02:00
FC Stegerman b9f380a2b8 s/zh-TW/zh-rTW/ 2023-09-05 02:16:55 +02:00
pesta007 b2632a03b7 Translated using Weblate (Arabic)
Currently translated at 91.9% (275 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-09-04 06:57:46 +02:00
Jean-Luc Tibaux ad4275ae45 Translated using Weblate (German)
Currently translated at 98.6% (295 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-09-04 06:57:46 +02:00
Sylvia van Os 2376517858 Merge pull request #1495 from CatimaLoyalty/create-pull-request/patch-1693725203
Update contributors
2023-09-03 10:22:47 +02:00
TheLastProject a666885b22 Update contributors 2023-09-03 07:13:23 +00:00
FC (Fay) Stegerman 62d4b3ab0d feature graphic: only run on title.txt changes & clean png (#1494) 2023-09-03 02:07:35 +02:00
Sylvia van Os e20ac7738b Merge pull request #1492 from CatimaLoyalty/create-pull-request/patch-1693693712
Update feature graphic
2023-09-03 01:30:10 +02:00
TheLastProject cef64004d1 Update feature graphic 2023-09-02 22:28:32 +00:00
Sylvia van Os 35d2408a0e Merge pull request #1491 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-03 00:27:08 +02:00
michaelpratana 1055ba1ca0 Translated using Weblate (Indonesian)
Currently translated at 98.6% (295 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-09-02 23:57:25 +02:00
solokot 2bbdb873cc Translated using Weblate (Russian)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-09-02 23:57:25 +02:00
Ziad OUALHADJ b22d76ac02 Translated using Weblate (French)
Currently translated at 97.6% (126 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-09-02 23:57:25 +02:00
Daniel Sych 6975688b9f Translated using Weblate (Polish)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-09-02 23:57:25 +02:00
Heimen Stoffels 310800f28a Translated using Weblate (Dutch)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-09-02 23:57:25 +02:00
Ziad OUALHADJ 525fdf064c 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-09-02 23:57:25 +02:00
gallegonovato 5f74f1fbb5 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-09-02 23:57:25 +02:00
Sylvia van Os 5caae534fc Don't run the changelog job unnecessarily 2023-09-01 19:47:58 +02:00
Sylvia van Os 9ebd312c08 Merge pull request #1488 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-09-01 19:46:53 +02:00
Sylvia van Os 9e77b671e0 Merge pull request #1490 from CatimaLoyalty/fix/ci_updates
CI cleanups
2023-09-01 19:42:40 +02:00
Sylvia van Os 7a361c9afe CI cleanups 2023-09-01 19:41:03 +02:00
Sylvia van Os 6ef86ef29b Merge pull request #1489 from CatimaLoyalty/feature/generatedFeatureGraphic
Feature/generated feature graphic
2023-09-01 19:26:22 +02:00
Sylvia van Os b9bf8e166a Programmatically generate feature graphic
Also use Noto as font for languages not supported by Lexend Deca and
move the text slightly futher down for better looks in CJK languages
2023-09-01 19:25:51 +02:00
Eric 3d55c2c82c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-09-01 13:40:44 +02:00
Eric ef56aea88d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-09-01 13:40:39 +02:00
J. Lavoie 40a3fa7b5b Translated using Weblate (French)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-09-01 13:40:38 +02:00
Younes Bouhouche 184d2aeebd Translated using Weblate (Arabic)
Currently translated at 91.3% (273 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-08-31 20:11:37 +02:00
Oğuz Ersen 8f6603dc79 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-08-31 20:11:37 +02:00
109247019824 68b53467d0 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-08-31 20:11:37 +02:00
Slávek Banko 9c401c7e85 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-08-31 20:11:37 +02:00
solokot 3b0440b9fa Translated using Weblate (Russian)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-08-31 20:11:37 +02:00
Heimen Stoffels cd148d2bb0 Translated using Weblate (Dutch)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-08-31 20:11:37 +02:00
Allan Nordhøy 487cffac30 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (297 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-08-31 20:11:37 +02:00
Slávek Banko 0ab557e29c Translated using Weblate (Czech)
Currently translated at 100.0% (299 of 299 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-08-31 20:11:37 +02:00
Ziad OUALHADJ 05125f86cd New feature graphic 2023-08-31 19:52:19 +02:00
Sylvia van Os b35ccd7d58 Merge pull request #1487 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-31 19:34:53 +02:00
Younes Bouhouche eab6538f1c Translated using Weblate (Arabic)
Currently translated at 92.6% (276 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-08-31 09:53:07 +02:00
Sylvia van Os 53753690aa Merge pull request #1486 from CatimaLoyalty/create-pull-request/patch-1693340314
Update Fastlane changelogs
2023-08-29 22:21:01 +02:00
TheLastProject c42a02e532 Update Fastlane changelogs 2023-08-29 20:18:34 +00:00
Sylvia van Os 2d75ebe395 Update CHANGELOG 2023-08-29 22:18:14 +02:00
FC (Fay) Stegerman 8ba860f6c3 embed history/privacy policy/license in app (#1346) 2023-08-29 21:57:49 +02:00
Sylvia van Os 68a638e93e Merge pull request #1485 from CatimaLoyalty/create-pull-request/patch-1693328819
Update Fastlane changelogs
2023-08-29 19:08:04 +02:00
TheLastProject 306e413d94 Update Fastlane changelogs 2023-08-29 17:06:59 +00:00
Sylvia van Os c57aefa5a3 Update CHANGELOG 2023-08-29 19:06:43 +02:00
Quang Trung 5668fb1152 Android 13 per app language support (#1447) 2023-08-29 19:06:07 +02:00
Sylvia van Os d62de3d641 Merge pull request #1484 from obfusk/copyright
About: explicitly mention contributors' copyright
2023-08-28 20:20:44 +02:00
FC Stegerman 727eb13a6f remove app_copyright_fmt when identical to untranslated original 2023-08-28 20:12:36 +02:00
FC Stegerman 4ebbe758e3 About: explicitly mention contributors' copyright 2023-08-28 19:28:39 +02:00
Sylvia van Os c6071263e0 Merge pull request #1483 from CatimaLoyalty/create-pull-request/patch-1693170785
Update Fastlane changelogs
2023-08-27 23:13:24 +02:00
TheLastProject ecb861c9a1 Update Fastlane changelogs 2023-08-27 21:13:05 +00:00
Sylvia van Os 4cf16d92d4 Merge pull request #1482 from obfusk/patch-6
fix typo in CHANGELOG.md
2023-08-27 23:12:47 +02:00
FC (Fay) Stegerman 8fde18c46a fix typo in CHANGELOG.md 2023-08-27 20:58:23 +00:00
Sylvia van Os f63eca0747 Merge pull request #1481 from CatimaLoyalty/create-pull-request/patch-1693169829
Update Fastlane changelogs
2023-08-27 22:57:20 +02:00
TheLastProject 5053d63a33 Update Fastlane changelogs 2023-08-27 20:57:09 +00:00
Sylvia van Os 4d08613b3c Update CHANGELOG 2023-08-27 22:56:52 +02:00
Sylvia van Os 715df432a9 Move archive mode into a display option (#1477) 2023-08-27 22:55:45 +02:00
Sylvia van Os 92802fd467 Merge pull request #1480 from CatimaLoyalty/create-pull-request/patch-1693120402
Update contributors
2023-08-27 22:27:52 +02:00
TheLastProject f0a6593c1a Update contributors 2023-08-27 07:13:21 +00:00
Sylvia van Os 86c4e46293 Merge pull request #1474 from CatimaLoyalty/dependabot/gradle/com.github.spotbugs-5.1.3
Bump com.github.spotbugs from 5.1.2 to 5.1.3
2023-08-25 20:09:08 +02:00
Sylvia van Os 2d4fa0fd85 Release Catima 2.25.3 2023-08-25 18:23:57 +02:00
Sylvia van Os 42863418a4 Merge pull request #1475 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-23 17:53:21 +02:00
Aya Ichrak ac4ccf2635 Translated using Weblate (Arabic)
Currently translated at 92.9% (277 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-08-23 16:53:52 +02:00
Sylvia van Os 89762864ff Translated using Weblate (Arabic)
Currently translated at 92.6% (276 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-08-23 11:52:22 +02:00
ChaoticNeutralCzech 22b8f4b387 Translated using Weblate (Czech)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-08-23 11:52:22 +02:00
Osama ALSHBIBI aebb0e84dc Translated using Weblate (Arabic)
Currently translated at 92.6% (276 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-08-23 11:52:21 +02:00
IllusiveMan196 b75862532c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-08-23 11:52:21 +02:00
Sylvia van Os f30fa04d56 Add chat badge 2023-08-22 20:02:29 +02:00
Sylvia van Os 053b51f086 Merge pull request #1476 from CatimaLoyalty/create-pull-request/patch-1692514045
Update contributors
2023-08-20 08:50:28 +02:00
TheLastProject f8960d9a1e Update contributors 2023-08-20 06:47:25 +00:00
dependabot[bot] eb84900fab Bump com.github.spotbugs from 5.1.2 to 5.1.3
Bumps com.github.spotbugs from 5.1.2 to 5.1.3.

---
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-08-16 02:54:47 +00:00
Sylvia van Os 8949166ed1 Merge pull request #1473 from CatimaLoyalty/create-pull-request/patch-1691910455
Update contributors
2023-08-13 11:19:16 +02:00
TheLastProject 23c437580a Update contributors 2023-08-13 07:07:35 +00:00
Sylvia van Os 3e46e84b5d Merge pull request #1472 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-11 08:22:05 +02:00
solokot 3146e25a46 Translated using Weblate (Russian)
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-08-11 07:51:46 +02:00
Sylvia van Os dc7b1b032b Merge pull request #1471 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-10 09:07:11 +02:00
Eric 18716fb333 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-08-10 00:52:13 +02:00
Slávek Banko 5879b8716b Translated using Weblate (Czech)
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-08-10 00:52:13 +02:00
Sylvia van Os 970e4b4a31 Merge pull request #1470 from CatimaLoyalty/dependabot/gradle/com.github.spotbugs-5.1.2
Bump com.github.spotbugs from 5.1.1 to 5.1.2
2023-08-09 08:12:10 +02:00
dependabot[bot] b25e07d37a Bump com.github.spotbugs from 5.1.1 to 5.1.2
Bumps com.github.spotbugs from 5.1.1 to 5.1.2.

---
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-08-09 02:17:50 +00:00
Sylvia van Os c1041a09f5 Merge pull request #1469 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-08 18:07:33 +02:00
Clxff H3r4ld0 a4a70f44e0 Translated using Weblate (Indonesian)
Currently translated at 95.3% (122 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-08-08 17:52:18 +02:00
しいたけ 2e52e7b231 Translated using Weblate (Japanese)
Currently translated at 78.1% (233 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2023-08-08 17:52:18 +02:00
skauVictor a7b1864c6b Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-08-08 17:52:18 +02:00
Sylvia van Os ee3af751fe Merge pull request #1468 from CatimaLoyalty/create-pull-request/patch-1691305961
Update contributors
2023-08-06 09:35:54 +02:00
TheLastProject 34698c7bdd Update contributors 2023-08-06 07:12:41 +00:00
Sylvia van Os a45875ef25 Merge pull request #1465 from CatimaLoyalty/create-pull-request/patch-1691229717
Update Fastlane changelogs
2023-08-05 12:02:09 +02:00
TheLastProject c4df103c02 Update Fastlane changelogs 2023-08-05 10:01:57 +00:00
Sylvia van Os 44211accc9 Update CHANGELOG 2023-08-05 12:01:41 +02:00
Sylvia van Os 7be1ee99ca Merge pull request #1463 from obfusk/fix-colorpicker
LoyaltyCardEditActivity: fix color picker dialog crash & bug
2023-08-05 12:00:49 +02:00
FC Stegerman b83dbb3a87 StocardImporter: refactor (#1443)
* StocardImporter: refactor

* StocardImporter: trim CSV fields

* LoyaltyCard: add .toString()

* StocardRecord: add .toString()

* StocardImporter: handle usages better

* StocardImporter: use label

* ImportExportTest: add importStocard2 + stocard2.zip

* StocardImporter: iterate over card map in key order

* StocardImporter: cleanup, handle label better, use providers file

* make spotbugs happy

* StocardImporter: can't use providersFileName, list known files, log unknown

* StocardImporter: fix regex, log properly, s/Provider/Store/

* StocardImporter: test /usages/ timestamp, nicer if/else flow

* StocardImporter: fix label usage

* StocardImporter: remove label prefix, improve error
2023-08-05 11:52:59 +02:00
FC Stegerman 7e3a5a9831 LoyaltyCardEditActivity: fix wrong balance parse after locale changes (#1454) 2023-08-05 11:29:59 +02:00
Sylvia van Os 1b2f939c5a Merge pull request #1462 from CatimaLoyalty/dependabot/gradle/com.github.spotbugs-5.1.1
Bump com.github.spotbugs from 5.1.0 to 5.1.1
2023-08-04 23:50:07 +02:00
FC Stegerman 29919851f5 LoyaltyCardEditActivity: fix color picker dialog crash & bug 2023-08-04 04:15:45 +02:00
dependabot[bot] b255cd63de Bump com.github.spotbugs from 5.1.0 to 5.1.1
Bumps com.github.spotbugs from 5.1.0 to 5.1.1.

---
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-08-04 02:13:47 +00:00
Sylvia van Os 5d022ee1d1 Merge pull request #1460 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-02 18:23:57 +02:00
Montazer Al-Taiee ecd8fe6d43 Translated using Weblate (Arabic)
Currently translated at 92.6% (276 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-08-02 15:07:57 +02:00
Eric 340046905d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-08-02 15:07:57 +02:00
Slávek Banko aba6dc9070 Translated using Weblate (Czech)
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-08-02 15:07:57 +02:00
Sylvia van Os 7e75f86aba Merge pull request #1459 from CatimaLoyalty/dependabot/gradle/com.github.spotbugs-5.1.0
Bump com.github.spotbugs from 5.0.14 to 5.1.0
2023-08-01 08:23:55 +02:00
Sylvia van Os 8c021141b0 Merge pull request #1458 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-08-01 08:23:19 +02:00
dependabot[bot] 1739ac827a Bump com.github.spotbugs from 5.0.14 to 5.1.0
Bumps com.github.spotbugs from 5.0.14 to 5.1.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 02:59:27 +00:00
Reza Almanda 2c8bbd3f44 Translated using Weblate (Indonesian)
Currently translated at 95.2% (121 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-08-01 03:16:37 +02:00
Slávek Banko 2afad63f31 Translated using Weblate (Czech)
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-08-01 03:16:37 +02:00
Sylvia van Os e4d2196892 Merge pull request #1457 from CatimaLoyalty/create-pull-request/patch-1690827013
Update Fastlane changelogs
2023-07-31 20:10:25 +02:00
TheLastProject b26aced825 Update Fastlane changelogs 2023-07-31 18:10:12 +00:00
Sylvia van Os a9625fc1cf Update CHANGELOG 2023-07-31 20:09:54 +02:00
Sylvia van Os d86fb9475f Merge pull request #1452 from obfusk/fix-date-rotate
LoyaltyCardEditActivity: fix state loss on rotation for dates
2023-07-31 20:08:40 +02:00
Sylvia van Os b6ea845236 Merge pull request #1456 from CatimaLoyalty/dependabot/gradle/com.google.zxing-core-3.5.2
Bump com.google.zxing:core from 3.5.1 to 3.5.2
2023-07-31 19:22:18 +02:00
dependabot[bot] 1e88e0c1cc Bump com.google.zxing:core from 3.5.1 to 3.5.2
Bumps [com.google.zxing:core](https://github.com/zxing/zxing) from 3.5.1 to 3.5.2.
- [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.1...zxing-3.5.2)

---
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>
2023-07-31 02:58:42 +00:00
Sylvia van Os 72b8781eec Merge pull request #1455 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-30 13:22:12 +02:00
Reza Almanda dd8c63b088 Translated using Weblate (Indonesian)
Currently translated at 95.2% (121 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-07-30 13:08:02 +02:00
Eric ec9affd8c3 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-30 13:08:02 +02:00
Sylvia van Os 605e9711fa Translated using Weblate (Polish)
Currently translated at 36.2% (46 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-07-30 13:08:02 +02:00
FC Stegerman 6dfbb169df LoyaltyCardEditActivity: fix noDataLossOnResumeOrRotate test 2023-07-29 21:30:08 +02:00
FC Stegerman f671c6b0d1 LoyaltyCardEditActivity: fix state loss on rotation for dates 2023-07-29 21:14:51 +02:00
Sylvia van Os b98ee46566 Merge pull request #1451 from obfusk/fix-divider
only show divider with name/note + extra field
2023-07-29 16:52:20 +02:00
FC Stegerman 3353cf288f only show divider with name/note + extra field 2023-07-29 15:49:09 +02:00
Sylvia van Os a408f8d727 Release Catima 2.25.2 2023-07-27 19:14:44 +02:00
Sylvia van Os 2d7bb02d1a Update fastlane 2023-07-27 19:07:10 +02:00
Sylvia van Os 38c8e38ed6 Merge pull request #1446 from CatimaLoyalty/create-pull-request/patch-1690299279
Update Fastlane changelogs
2023-07-25 17:35:15 +02:00
TheLastProject 28b95b8f75 Update Fastlane changelogs 2023-07-25 15:34:39 +00:00
Sylvia van Os c1ebbdb997 Update CHANGELOG.md 2023-07-25 17:34:22 +02:00
Sylvia van Os fadba7a11c Merge pull request #1445 from obfusk/stocard-csv
add python script & update stocard csv
2023-07-24 20:54:41 +02:00
FC Stegerman fd61434565 move stocard readme & script 2023-07-24 20:35:25 +02:00
Sylvia van Os 398dff4b3c Merge pull request #1444 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-24 19:35:57 +02:00
FC Stegerman 5c95b750b2 rename to dump_stocard_stores.py 2023-07-24 18:24:42 +02:00
FC Stegerman 9851c0a2fa update stocard_stores.csv 2023-07-24 18:22:03 +02:00
FC Stegerman c121f846c5 add stocard_stores.py script 2023-07-24 18:17:57 +02:00
ChengCheng c20ba027cf Added translation using Weblate (Chinese (Literary)) 2023-07-24 11:42:49 +02:00
Kamborio e5dd26b8ee Translated using Weblate (Spanish)
Currently translated at 29.1% (37 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2023-07-24 11:41:46 +02:00
Danylo Lystopadov 3b449464ac Translated using Weblate (Ukrainian)
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-07-24 11:41:46 +02:00
Danylo Lystopadov 3f4d4e38cd Translated using Weblate (Ukrainian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-07-24 11:41:46 +02:00
Sylvia van Os 30ccd03686 Merge pull request #1442 from obfusk/usages-len
StocardImporter: check usages is not empty just in case
2023-07-23 21:57:48 +02:00
FC Stegerman 5493947c28 StocardImporter: check usages is not empty just in case 2023-07-23 20:56:24 +02:00
Sylvia van Os 4172903b42 Merge pull request #1441 from CatimaLoyalty/stocard_20230721
Update Stocard importer
2023-07-23 16:48:53 +02:00
Sylvia van Os 00b1368176 Fix image import 2023-07-23 16:29:55 +02:00
Sylvia van Os 09fee5628f Read usage-statistics/content.json file for lastUsed data 2023-07-23 14:28:14 +02:00
Sylvia van Os 7a7a2f8361 Read input_provider_name in field if available 2023-07-23 14:25:56 +02:00
Sylvia van Os a9ced56023 Include newer Stocard export 2023-07-23 14:01:59 +02:00
Sylvia van Os a4af171598 Small credits dialog tweak 2023-07-23 13:06:16 +02:00
Sylvia van Os 164c82a779 Merge pull request #1440 from CatimaLoyalty/create-pull-request/patch-1690096427
Update contributors
2023-07-23 10:01:30 +02:00
TheLastProject 608c3ab863 Update contributors 2023-07-23 07:13:47 +00:00
Sylvia van Os 379a71c7ad Merge pull request #1439 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-22 17:21:15 +02:00
Jiri Grönroos ee6a6dffcf Translated using Weblate (Finnish)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-07-22 17:08:30 +02:00
solokot 1d6a393914 Translated using Weblate (Russian)
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-07-22 17:08:30 +02:00
Tim Trek 5c4a905ac0 Translated using Weblate (German)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-07-22 17:08:30 +02:00
Sylvia van Os 91ce71ea68 Merge pull request #1438 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-22 10:42:18 +02:00
Eric f07ac3e026 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-22 03:11:31 +02:00
Slávek Banko 649f2c47b4 Translated using Weblate (Czech)
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-22 03:11:31 +02:00
Milan Šalka 62dcc373ed Translated using Weblate (Slovak)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2023-07-22 03:11:31 +02:00
Wiktor e9b04adec6 Translated using Weblate (Polish)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-07-22 03:11:31 +02:00
Sylvia van Os 636be16bdd Merge pull request #1436 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-20 17:26:50 +02:00
Sylvia van Os 5ad28f37b8 Merge pull request #1437 from CatimaLoyalty/feature/elevatedMainScreen
Small main screen layout tweaks
2023-07-20 17:26:17 +02:00
Sylvia van Os 5ff6059e86 Small main screen layout tweaks 2023-07-20 16:59:39 +02:00
Balázs Meskó b9df712394 Translated using Weblate (Hungarian)
Currently translated at 33.0% (42 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-07-20 13:07:59 +02:00
Eric 790fd7e48f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-20 13:07:59 +02:00
Slávek Banko bb43266a01 Translated using Weblate (Czech)
Currently translated at 100.0% (127 of 127 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-20 13:07:58 +02:00
Sylvia van Os 450cfce84a Merge pull request #1434 from obfusk/refactor-importer-part-2
refactor importer part 2
2023-07-19 21:17:22 +02:00
Sylvia van Os 6cef56b38b Merge pull request #1435 from CatimaLoyalty/create-pull-request/patch-1689792805
Update Fastlane changelogs
2023-07-19 20:53:53 +02:00
TheLastProject fbb7cf7e9c Update Fastlane changelogs 2023-07-19 18:53:24 +00:00
Sylvia van Os 9ab2a6a5b2 Update CHANGELOG 2023-07-19 20:53:06 +02:00
Quang Trung 682fc8303c Fix crash on configuration changes in DatePickerFragment (#1431) 2023-07-19 20:52:25 +02:00
FC Stegerman aa1274566b refactor FidmeImporter 2023-07-19 01:25:00 +02:00
FC Stegerman d8cd581cb0 refactor StocardImporter 2023-07-19 01:10:39 +02:00
FC Stegerman 2cd00f9103 refactor VoucherVaultImporter 2023-07-19 00:24:09 +02:00
Sylvia van Os ae07f94b25 Merge pull request #1433 from obfusk/test-bitmaps
use JPGs instead of LetterBitmap b/c of partial robolectric Canvas support
2023-07-18 23:53:15 +02:00
FC Stegerman 22d671263a JPGs instead of LetterBitmap (robolectric missing Canvas support) 2023-07-18 23:27:44 +02:00
Sylvia van Os 227f30361f Try to fix autoclose for real 2023-07-17 21:15:14 +02:00
Sylvia van Os b964652b83 Merge pull request #1429 from CatimaLoyalty/create-pull-request/patch-1689620901
Update Fastlane changelogs
2023-07-17 21:09:32 +02:00
TheLastProject f926ffa1d0 Update Fastlane changelogs 2023-07-17 19:08:21 +00:00
Sylvia van Os d03b8b5635 Merge branch 'main' of github.com:CatimaLoyalty/Android 2023-07-17 21:08:02 +02:00
Sylvia van Os 4e5fea7a52 Update CHANGELOG 2023-07-17 21:07:54 +02:00
Sylvia van Os 95cb6c0a08 Merge pull request #1422 from obfusk/refactor-importer-part-1
refactor importer part 1
2023-07-17 21:06:00 +02:00
FC StegermanandSylvia van Os d350d0b2c7 CatimaImporter: add comment about card group import
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2023-07-17 20:42:36 +02:00
FC StegermanandSylvia van Os ac0f6f6f3e Utils.getRenamedCardImageFileName(): add javadoc
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2023-07-17 20:35:02 +02:00
FC StegermanandSylvia van Os ab030ba002 LocaltyCard.isDuplicate(): reformat & add comments
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2023-07-17 20:23:52 +02:00
Sylvia van Os 93103c8c6d Merge branch 'main' of github.com:CatimaLoyalty/Android 2023-07-17 18:36:28 +02:00
Sylvia van Os 576ec1e6de Release Catima 2.25.1 2023-07-17 18:35:50 +02:00
Sylvia van Os b602ce5d78 Merge pull request #1426 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-17 18:29:08 +02:00
Cabrito 0ecd38ed1c Translated using Weblate (Portuguese)
Currently translated at 100.0% (126 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-07-17 18:03:59 +02:00
Cabrito d48e02463c Translated using Weblate (Portuguese)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-07-17 18:03:59 +02:00
Sylvia van Os b9d9c8d2e3 Use chevron-style up/down icons in groups layout 2023-07-16 21:34:03 +02:00
FC Stegerman 3ae665b70f DBHelper: add note to DEFAULT_ZOOM_LEVEL 2023-07-16 20:16:01 +02:00
FC Stegerman 9cf9959b6b add importExistingCardsAfterModification test 2023-07-16 19:53:41 +02:00
FC Stegerman d11e2c166b Utils.copyToTempFile(): use try for resource management 2023-07-16 18:29:38 +02:00
FC Stegerman f783be7a4f importer: handle inputFile errors better 2023-07-16 18:16:41 +02:00
FC Stegerman 9ee96b88e8 CatimaImporter: add .close() 2023-07-16 18:04:26 +02:00
FC Stegerman ba896fc1db DBHelper: don't use DEFAULT_ZOOM_LEVEL in migration 2023-07-16 18:02:52 +02:00
Sylvia van Os 47f1ea80b6 Merge pull request #1424 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-16 15:14:48 +02:00
Projjal Moitra b5efa28e85 Translated using Weblate (Bengali (India))
Currently translated at 96.3% (287 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-07-16 15:05:41 +02:00
solokot d456a8920d Translated using Weblate (Russian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-07-16 15:05:41 +02:00
Sylvia van Os 4ef0c96b29 Merge pull request #1423 from CatimaLoyalty/create-pull-request/patch-1689492043
Update contributors
2023-07-16 10:03:08 +02:00
TheLastProject 343c77f9e3 Update contributors 2023-07-16 07:20:43 +00:00
FC Stegerman 1425d4af58 CatimaImporter: add saveAndDeduplicate() & refactor 2023-07-16 05:08:44 +02:00
FC Stegerman 48510494eb Utils: split off CARD_IMAGE_FILENAME_REGEX 2023-07-16 05:05:44 +02:00
FC Stegerman d5d53b241a Utils: add getRenamedCardImageFileName() 2023-07-16 04:44:24 +02:00
FC Stegerman 901c2d8154 LoyaltyCard: fix isDuplicate() 2023-07-16 04:43:27 +02:00
FC Stegerman 84d7e15b5c LoyaltyCard: add isDuplicate(); Utils: add equals() 2023-07-16 03:29:31 +02:00
FC Stegerman b8fa4d7060 DBHelper: add DEFAULT_ZOOM_LEVEL 2023-07-16 03:12:29 +02:00
FC Stegerman da9e3bb6b2 CatimaImporter: read ZIP twice, get checksums 2023-07-16 02:23:54 +02:00
FC Stegerman 3a5973a04d Utils: add checksum() 2023-07-16 02:13:34 +02:00
Sylvia van Os 673e64924b Add security policy 2023-07-16 01:25:53 +02:00
FC Stegerman 5f99f2b17e Utils: add imageFiles() 2023-07-16 00:57:00 +02:00
FC Stegerman bf05103955 import: copy ZIP, use File instead of InputStream 2023-07-16 00:45:18 +02:00
Sylvia van Os 5ea6155c39 Merge pull request #1421 from obfusk/patch-5
revert s/Frie/Gratis/ in nb-rNO translation
2023-07-14 20:07:25 +02:00
FC Stegerman abb1cd29f0 revert s/Frie/Gratis/ in nb-rNO translation 2023-07-14 17:31:56 +00:00
Sylvia van Os 52363cdff4 Merge pull request #1420 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-14 17:52:25 +02:00
Bottan Hermawan ac4f4e3a9a Translated using Weblate (Indonesian)
Currently translated at 95.2% (120 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-07-14 16:53:20 +02:00
Bottan Hermawan 555387e20d Translated using Weblate (Indonesian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-07-14 16:53:20 +02:00
Sylvia van Os 70ae8ff167 Merge pull request #1419 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-13 19:03:47 +02:00
Balázs Meskó 86512532f1 Translated using Weblate (Hungarian)
Currently translated at 30.9% (39 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-07-13 14:45:59 +02:00
Eric ebf6318aa2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (126 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-13 14:45:59 +02:00
Slávek Banko fd482a4cba Translated using Weblate (Czech)
Currently translated at 100.0% (126 of 126 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-13 14:45:59 +02:00
Erik Spjelkavik 54d91dc8a1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.3% (296 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-07-13 14:45:59 +02:00
J. Lavoie 9fa7fe388f Translated using Weblate (French)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-07-13 14:45:59 +02:00
Kamborio 1415d8da3e Translated using Weblate (Spanish)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-07-13 14:45:59 +02:00
J. Lavoie 0ad5de18e1 Translated using Weblate (German)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-07-13 14:45:59 +02:00
Sylvia van Os 9659a2a2cd Merge pull request #1418 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-12 17:12:10 +02:00
Giovanni Donisi 1dd894bd27 Translated using Weblate (Italian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-07-12 16:52:59 +02:00
Sylvia van Os 0d9151294e Merge pull request #1416 from CatimaLoyalty/create-pull-request/patch-1689096450
Update Fastlane changelogs
2023-07-11 19:31:39 +02:00
Sylvia van Os 09dda99afc Merge pull request #1415 from obfusk/fix-shortcuts
ShortcutHelper: trim after skipping missing cards
2023-07-11 19:31:18 +02:00
TheLastProject a4fb91b9aa Update Fastlane changelogs 2023-07-11 17:27:30 +00:00
Sylvia van Os 036b821b28 Update CHANGELOG 2023-07-11 19:27:12 +02:00
Sylvia van Os 479a35657f Merge pull request #1414 from obfusk/fix-shortcuts
ShortcutHelper: skip outdated cards that no longer exist
2023-07-11 19:19:14 +02:00
FC Stegerman eca9d1c74c ShortcutHelper: trim after skipping missing cards 2023-07-11 19:18:41 +02:00
FC Stegerman 95055f1ce6 ShortcutHelper: skip outdated cards that no longer exist 2023-07-11 18:14:34 +02:00
Sylvia van Os f4a5ae74d6 Release Catima 2.25.0 2023-07-09 18:31:06 +02:00
Sylvia van Os 16952186c7 Merge pull request #1411 from joserebelo/permissions-conflict-fix
Fix content provider permissions conflict
2023-07-09 15:55:02 +02:00
José Rebelo 7d12279b0d Fix content provider permissions conflict 2023-07-09 14:03:34 +01:00
Sylvia van Os 15a49344a3 Merge pull request #1409 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-09 13:35:10 +02:00
Eric ff15ce0615 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-09 13:13:46 +02:00
Slávek Banko 57144c4cd1 Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-09 13:13:46 +02:00
Allan Nordhøy 50387f55d4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.9% (295 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-07-09 13:13:46 +02:00
Sylvia van Os 0fa07d3d0b Merge pull request #1408 from CatimaLoyalty/create-pull-request/patch-1688886665
Update contributors
2023-07-09 09:34:07 +02:00
TheLastProject 05516f88fc Update contributors 2023-07-09 07:11:04 +00:00
Sylvia van Os 841a5e3ddb Merge pull request #1407 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-08 18:22:17 +02:00
Kis Dominik 2889b45c51 Translated using Weblate (Hungarian)
Currently translated at 31.2% (39 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-07-08 17:53:57 +02:00
Kis Dominik 9ebb53b224 Translated using Weblate (Hungarian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-07-08 17:53:56 +02:00
109247019824 14b8b3bd7a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-07-08 17:53:56 +02:00
Sylvia van Os 3e4c3e9852 Merge pull request #1406 from CatimaLoyalty/create-pull-request/patch-1688747814
Update Fastlane changelogs
2023-07-07 18:41:25 +02:00
TheLastProject fa417cdfe5 Update Fastlane changelogs 2023-07-07 16:36:53 +00:00
Sylvia van Os a9863d1921 Update CHANGELOG 2023-07-07 18:36:36 +02:00
Sylvia van Os f2b7a63a02 Merge pull request #1404 from joserebelo/import-trailing-slash
Fix parse of import URI with trailing slash
2023-07-07 18:35:25 +02:00
Sylvia van Os 8e0a40ee3f Merge pull request #1405 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-07 17:35:54 +02:00
enescan201 21064803eb Translated using Weblate (Turkish)
Currently translated at 61.6% (77 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2023-07-07 12:53:18 +02:00
enescan201 031b751a9d Translated using Weblate (Turkish)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-07-07 12:53:18 +02:00
109247019824 bb9b640aa5 Translated using Weblate (Bulgarian)
Currently translated at 96.6% (288 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-07-07 12:53:18 +02:00
Eric 1681d077b6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-07 12:53:18 +02:00
yangyangdaji 3500444e0c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-07-07 12:53:18 +02:00
Slávek Banko e05ebbe607 Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-07 12:53:18 +02:00
solokot b3bb20c795 Translated using Weblate (Russian)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-07-07 12:53:18 +02:00
solokot b0315f279a Translated using Weblate (Russian)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-07-07 12:53:18 +02:00
Heimen Stoffels 9e788cb604 Translated using Weblate (Dutch)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-07-07 12:53:17 +02:00
Slávek Banko 090f3dc80b Translated using Weblate (Czech)
Currently translated at 100.0% (298 of 298 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-07-07 12:53:17 +02:00
Sylvia van Os e4f2f8f46b Remove unused imports 2023-07-05 21:57:20 +02:00
Eric e5ecd59569 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-07-05 17:18:24 +02:00
tjw123hh 441ae9587e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-07-05 17:18:23 +02:00
Slávek Banko 0c1e16592d Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-07-05 17:18:00 +02:00
solokot 02659f840e Translated using Weblate (Russian)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-07-05 17:17:59 +02:00
Heimen Stoffels eca5ec10d3 Translated using Weblate (Dutch)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-07-05 17:17:43 +02:00
J. Lavoie dbc8df018d Translated using Weblate (Italian)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-07-05 17:17:25 +02:00
J. Lavoie 874b887da1 Translated using Weblate (French)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-07-05 17:17:08 +02:00
J. Lavoie 5367324219 Translated using Weblate (German)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-07-05 17:16:41 +02:00
Slávek Banko 6df58e0574 Translated using Weblate (Czech)
Currently translated at 100.0% (292 of 292 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-07-05 17:16:18 +02:00
José Rebelo c8b6328cc6 Fix parse of import URI with trailing slash 2023-07-05 13:05:47 +01:00
Sylvia van Os 90616214f0 Merge pull request #1403 from CatimaLoyalty/create-pull-request/patch-1688507089
Update Fastlane changelogs
2023-07-04 23:44:59 +02:00
TheLastProject e3bce7eb50 Update Fastlane changelogs 2023-07-04 21:44:49 +00:00
Sylvia van Os b2d1660cf8 Update CHANGELOG 2023-07-04 23:44:33 +02:00
Sylvia van Os 3de24bb6f0 Merge pull request #1402 from CatimaLoyalty/feature/improveSettingsScreen
Reorganize settings screen
2023-07-04 23:43:33 +02:00
Sylvia van Os b4e403d214 Reorganize settings screen 2023-07-04 23:30:46 +02:00
Sylvia van Os b66351ab58 Fix needs info autoclose 2023-07-04 21:01:36 +02:00
Sylvia van Os c9d775f426 Merge pull request #1401 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-04 20:53:24 +02:00
notlin4 6d4af3d86b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-07-04 08:52:51 +02:00
Sylvia van Os 37803bd906 Merge pull request #1400 from CatimaLoyalty/create-pull-request/patch-1688410909
Update Fastlane changelogs
2023-07-03 21:08:22 +02:00
TheLastProject f3fcea7ab1 Update Fastlane changelogs 2023-07-03 19:01:49 +00:00
Sylvia van Os 9a67ea039c Update CHANGELOG 2023-07-03 21:01:33 +02:00
José Rebelo bf94d208bd Introduce read-only ContentProvider for cards (#1121) 2023-07-03 20:59:39 +02:00
Sylvia van Os 28c0b488e6 Merge pull request #1399 from CatimaLoyalty/create-pull-request/patch-1688280270
Update contributors
2023-07-02 13:02:55 +02:00
TheLastProject dc926bbfe7 Update contributors 2023-07-02 06:44:30 +00:00
Sylvia van Os 00d5fa4c2d Merge pull request #1398 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-07-02 00:06:18 +02:00
Giacomo Alessandroni 9aca91fb86 Translated using Weblate (Italian)
Currently translated at 77.6% (97 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-07-01 23:53:28 +02:00
Sylvia van Os bdab8624b5 Merge pull request #1390 from obfusk/timeout
CI: on retry, stop gradle daemon and timeout
2023-07-01 15:05:03 +02:00
Sylvia van Os 9bdfe64c79 Merge pull request #1397 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-30 11:54:05 +02:00
Tomislav Kraljević f5f7e40219 Translated using Weblate (Croatian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-06-30 10:53:48 +02:00
Sylvia van Os 2f51e7db68 Merge pull request #1396 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-28 13:07:22 +02:00
Eric 2cb9846f42 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-06-28 12:52:55 +02:00
Sylvia van Os 1dbe46b97e Merge pull request #1395 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-26 23:17:40 +02:00
Projjal Moitra 7e5611b062 Translated using Weblate (Bengali (India))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-06-26 20:53:09 +02:00
Sylvia van Os d3a7acd9ab Merge pull request #1393 from CatimaLoyalty/create-pull-request/patch-1687677398
Update contributors
2023-06-25 09:38:20 +02:00
TheLastProject c023a9787d Update contributors 2023-06-25 07:16:38 +00:00
Sylvia van Os 6de0ed6956 Merge pull request #1391 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-24 18:57:03 +02:00
ayuyydev aa5f0a7bf8 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-06-24 15:53:29 +02:00
Slávek Banko 6dd5bd957c Translated using Weblate (Czech)
Currently translated at 100.0% (125 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-24 15:53:28 +02:00
Michael Moroni c69df5edfd Translated using Weblate (Italian)
Currently translated at 62.4% (78 of 125 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-06-24 15:53:28 +02:00
FC Stegerman 758d034c31 CI: on retry, stop gradle daemon and timeout 2023-06-24 00:29:51 +02:00
Sylvia van Os 7bcf82a619 Merge pull request #1386 from obfusk/data-matrix-not-square
CatimaBarcode: DATA_MATRIX is not always square
2023-06-23 23:16:02 +02:00
FC Stegerman fd755185b9 BarcodeImageWriterTask: treat DATA_MATRIX as 1D for max width 2023-06-23 22:23:12 +02:00
FC Stegerman 0ac57be5f1 CatimaBarcode: DATA_MATRIX is not always square 2023-06-23 22:21:42 +02:00
Sylvia van Os bb929a48ea Merge pull request #1388 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-23 17:48:12 +02:00
Hosam Elzubair 218850be33 Translated using Weblate (Arabic)
Currently translated at 3.2% (4 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ar/
2023-06-23 14:58:05 +02:00
notlin4 ec07cceced Translated using Weblate (Chinese (Traditional))
Currently translated at 95.4% (274 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-06-23 14:58:05 +02:00
yangyangdaji 71ac1c5dad Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-06-23 14:58:05 +02:00
yangyangdaji b16ecfbb2c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-06-23 14:58:05 +02:00
남현정 c64bfbabc0 Translated using Weblate (Korean)
Currently translated at 97.5% (121 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ko/
2023-06-23 14:58:05 +02:00
남현정 fc8073f717 Translated using Weblate (Korean)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-06-23 14:58:05 +02:00
Sylvia van Os 7f56617a3c Merge pull request #1385 from CatimaLoyalty/create-pull-request/patch-1687468237
Update Fastlane changelogs
2023-06-22 23:10:53 +02:00
TheLastProject f5dc2930b5 Update Fastlane changelogs 2023-06-22 21:10:37 +00:00
Sylvia van Os 4bdc0fef70 Update CHANGELOG 2023-06-22 23:10:21 +02:00
Sylvia van Os 2f3c96b97c Merge pull request #1359 from obfusk/barcode-rendering
Improve barcode rendering (square codes & padding)
2023-06-22 23:09:23 +02:00
FC Stegerman 6ff11e22e1 Improve barcode rendering (square codes & padding) 2023-06-22 21:41:33 +02:00
Sylvia van Os 0b188f2ba7 Merge pull request #1371 from obfusk/currency-symbols
LoyaltyCardEditActivity: work around Currency.getSymbol() bug
2023-06-22 19:58:17 +02:00
Sylvia van Os 827d5ba3f9 Merge pull request #1384 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-22 07:06:53 +02:00
IllusiveMan196 05fea6e208 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-06-22 02:53:45 +02:00
Sylvia van Os 6064d29cb0 Merge pull request #1383 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-20 20:54:46 +02:00
Oğuz Ersen 0a92daa77a Translated using Weblate (Turkish)
Currently translated at 99.6% (286 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-06-20 19:49:45 +02:00
Slávek Banko bb065aead4 Translated using Weblate (Czech)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-20 19:49:45 +02:00
Michael Moroni 56467c2680 Translated using Weblate (Italian)
Currently translated at 59.6% (74 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-06-20 19:49:45 +02:00
solokot 1941db1e52 Translated using Weblate (Russian)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-06-20 19:49:45 +02:00
Allan Nordhøy c595981996 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.9% (284 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-06-20 19:49:45 +02:00
Michael Moroni 0145a820de Translated using Weblate (Italian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-06-20 19:49:45 +02:00
Sylvia van Os 224ab7f2e7 Release Catima v2.24.2 2023-06-18 18:15:55 +02:00
Sylvia van Os 1b47a62c70 Merge pull request #1380 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-18 16:48:15 +02:00
Sylvia van Os f241bad3e4 Fix broken translation 2023-06-18 16:42:40 +02:00
Viktor Broov c8657870af Translated using Weblate (Esperanto)
Currently translated at 37.6% (108 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2023-06-18 16:38:07 +02:00
Sylvia van Os 0ed7a0a6e1 Merge pull request #1378 from CatimaLoyalty/create-pull-request/patch-1687070038
Update contributors
2023-06-18 10:25:47 +02:00
TheLastProject 325330c542 Update contributors 2023-06-18 06:33:57 +00:00
Sylvia van Os 2506f60348 Merge pull request #1377 from CatimaLoyalty/create-pull-request/patch-1686995327
Update Fastlane changelogs
2023-06-17 11:51:42 +02:00
TheLastProject 5bf6f52425 Update Fastlane changelogs 2023-06-17 09:48:47 +00:00
Sylvia van Os fb1728e5de Update CHANGELOG 2023-06-17 11:48:32 +02:00
Sylvia van Os d321f733c1 Merge pull request #1376 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-16 21:00:30 +02:00
SC 8ff46f8754 Translated using Weblate (Portuguese)
Currently translated at 95.9% (118 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-06-16 20:51:09 +02:00
SC a061978c93 Translated using Weblate (Portuguese)
Currently translated at 97.9% (281 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-06-16 20:51:09 +02:00
solokot f3bfc9b278 Translated using Weblate (Russian)
Currently translated at 100.0% (123 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-06-16 20:51:09 +02:00
gallegonovato 43ebe5e029 Translated using Weblate (Spanish)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-06-16 20:51:09 +02:00
Sylvia van Os 2357f4d430 Merge pull request #1375 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-15 23:35:41 +02:00
Pierre NIKOLOV 7869feb3a1 Translated using Weblate (French)
Currently translated at 98.3% (121 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-06-14 05:54:10 +02:00
Sylvia van Os 53ce856c33 Merge pull request #1372 from obfusk/rtl-buttons
LoyaltyCardViewActivity: RTL fixes for buttons
2023-06-13 23:53:04 +02:00
Sylvia van Os aa321a71ad Merge pull request #1370 from obfusk/sort-rtl
sorting_option.xml: RTL fix
2023-06-13 19:35:16 +02:00
Sylvia van Os f721237fbc Merge pull request #1373 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-13 19:29:43 +02:00
FC Stegerman 194a7ae365 improve button bar RTL handling using linear layouts 2023-06-12 15:26:21 +02:00
Slávek Banko 1aa1d8bcc1 Translated using Weblate (Czech)
Currently translated at 100.0% (123 of 123 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-12 10:54:13 +02:00
FC Stegerman a8355f609b LoyaltyCardViewActivity: RTL fixes for buttons 2023-06-11 23:09:47 +02:00
FC Stegerman 7c766d0832 LoyaltyCardEditActivity: work around Currency.getSymbol() bug 2023-06-11 17:30:19 +02:00
FC Stegerman 3abe99470e sorting_option.xml: RTL fix 2023-06-11 15:34:42 +02:00
Sylvia van Os 6937342226 Release Catima 2.24.1 2023-06-11 10:57:10 +02:00
Sylvia van Os e229aa9565 Merge pull request #1368 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-11 10:52:29 +02:00
Sabri Ünal 5fd629bdbc Translated using Weblate (Turkish)
Currently translated at 98.2% (282 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-06-11 10:44:09 +02:00
109247019824 4c261e1e04 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-06-11 10:44:09 +02:00
Tymofii Lytvynenko c8be038b81 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-06-11 10:44:08 +02:00
Kacper Małecki 268b4cf827 Translated using Weblate (Polish)
Currently translated at 98.9% (284 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-06-11 10:44:08 +02:00
Daniele Tricoli ada8fd9bd4 Translated using Weblate (Italian)
Currently translated at 98.6% (283 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-06-11 10:44:07 +02:00
Sylvia van Os 285c3d6a38 Merge pull request #1367 from CatimaLoyalty/create-pull-request/patch-1686465528
Update contributors
2023-06-11 09:32:15 +02:00
TheLastProject 07efe99630 Update contributors 2023-06-11 06:38:48 +00:00
Sylvia van Os a7d3a1c30d Merge pull request #1365 from CatimaLoyalty/create-pull-request/patch-1686414904
Update Fastlane changelogs
2023-06-10 18:38:26 +02:00
Sylvia van Os fcc995397f Merge pull request #1364 from obfusk/about-rtl
about_activity: make _sub layout consistent (fixes RTL)
2023-06-10 18:38:11 +02:00
TheLastProject cef0d037f7 Update Fastlane changelogs 2023-06-10 16:35:03 +00:00
Sylvia van Os 6e390717da Make header colour code more consistent (#1363)
- Ensure a header colour is picked for the main screen
- Simplify all different header colour code pickers into a single code
  path
2023-06-10 18:34:49 +02:00
FC Stegerman f785586c71 about_activity: make _sub layout consistent (fixes RTL) 2023-06-10 16:44:05 +02:00
Sylvia van Os e66c5e36fb Release Catima 2.24.0 2023-06-10 10:44:42 +02:00
Sylvia van Os fd0ca37a6a Merge branch 'main' of github.com:CatimaLoyalty/Android 2023-06-08 20:26:39 +02:00
Sylvia van Os e926a397a7 Add missing dates to CHANGELOG 2023-06-08 20:26:31 +02:00
Sylvia van Os 4f9a6b307f Merge pull request #1358 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-08 19:59:39 +02:00
Clxff H3r4ld0 df60f6adc2 Translated using Weblate (Indonesian)
Currently translated at 93.4% (114 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-06-08 16:49:14 +02:00
Clxff H3r4ld0 d6287a3cf1 Translated using Weblate (Indonesian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-06-08 16:49:14 +02:00
Sylvia van Os 7f81d727f0 Merge pull request #1357 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-07 18:37:15 +02:00
Sylvia van Os 03239f0cab Fix dark mode rendering glitch (#1355) 2023-06-07 18:35:30 +02:00
Sylvia van Os 4b6497cba2 Merge pull request #1356 from obfusk/gha-ubuntu-openjdk
CI: use OpenJDK 17 from Ubuntu
2023-06-07 18:31:29 +02:00
109247019824 99008291fb Translated using Weblate (Bulgarian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-06-07 15:49:23 +02:00
solokot 079049722c Translated using Weblate (Russian)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-06-07 15:49:23 +02:00
FineFindus 73200e1ac3 Translated using Weblate (German)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-06-07 15:49:23 +02:00
frablock 39b816ddb1 Translated using Weblate (French)
Currently translated at 99.1% (121 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-06-07 15:49:23 +02:00
Hubert Maciejewicz be43c1633d Translated using Weblate (Polish)
Currently translated at 98.6% (283 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-06-07 15:49:23 +02:00
J. Lavoie f6c9613731 Translated using Weblate (French)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-06-07 15:49:23 +02:00
FineFindus 99de8cffd8 Translated using Weblate (German)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-06-07 15:49:23 +02:00
FC Stegerman a867265c66 CI: use OpenJDK 17 from Ubuntu 2023-06-07 13:19:40 +02:00
Sylvia van Os f43df37c80 Merge pull request #1353 from obfusk/patch-4
CI: add 5m timeout (before retry) to unit test that gets stuck
2023-06-06 23:31:39 +02:00
FC Stegerman cb70b1229f CI: add 5m timeout (before retry) to unit test that gets stuck 2023-06-05 18:58:58 +00:00
Ziad OUALHADJ b0b54a1065 Fixed the sorting option to match the other filters 2023-06-05 20:22:07 +02:00
Sylvia van Os 4ccfa7fb84 Merge pull request #1352 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-05 19:35:12 +02:00
Sylvia van Os 9932b10652 Fix broken translation 2023-06-05 19:15:18 +02:00
Mai Tnt 60fe6a13ff Translated using Weblate (Croatian)
Currently translated at 97.9% (281 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-06-05 12:22:44 +02:00
Slávek Banko 0bf30f08a1 Translated using Weblate (Czech)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-05 12:22:43 +02:00
solokot 112fca041b Translated using Weblate (Russian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-06-05 12:22:38 +02:00
Heimen Stoffels 59af5cb07b Translated using Weblate (Dutch)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-06-05 12:22:38 +02:00
Slávek Banko 9182837ae8 Translated using Weblate (Czech)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-06-05 12:22:37 +02:00
Mr. Adil 3f3d85c8b6 Translated using Weblate (Bengali)
Currently translated at 31.7% (89 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2023-06-05 09:53:14 +02:00
Jason Li 29c068df47 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (121 of 121 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-06-05 09:53:13 +02:00
Jason Li 03a480f3b9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-06-05 09:53:13 +02:00
Slávek Banko 0feb0fcd16 Translated using Weblate (Czech)
Currently translated at 100.0% (121 of 121 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-06-05 09:53:13 +02:00
J. Lavoie 7f1a221fec Translated using Weblate (Italian)
Currently translated at 99.6% (279 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-06-05 09:53:13 +02:00
J. Lavoie 7b52338669 Translated using Weblate (French)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-06-05 09:53:13 +02:00
J. Lavoie 0a2925eafa Translated using Weblate (German)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-06-05 09:53:13 +02:00
Sylvia van Os 92f37376a6 Merge pull request #1351 from obfusk/patch-3
README: explicitly say "OpenJDK 17", not just "Java 17"
2023-06-04 22:00:20 +02:00
FC Stegerman 08fbc30a29 README: explicitly say "OpenJDK 17", not just "Java 17" 2023-06-04 19:07:43 +00:00
Sylvia van Os 91dbcf339f Catima uses Java 17 to build 2023-06-04 20:59:26 +02:00
Sylvia van Os 24fe6886c9 Lower fullscreen bottom padding to reduce the chance of overlapping UI elements
Partially fixes https://github.com/CatimaLoyalty/Android/issues/1332
2023-06-04 19:20:00 +02:00
Sylvia van Os 270546d022 Update screenshots 2023-06-04 19:00:59 +02:00
Sylvia van Os fe278324f3 Merge pull request #1349 from CatimaLoyalty/create-pull-request/patch-1685896355
Update Fastlane changelogs
2023-06-04 18:34:52 +02:00
TheLastProject c7c18a0a14 Update Fastlane changelogs 2023-06-04 16:32:35 +00:00
Sylvia van Os d6fcb71722 Merge pull request #1347 from CatimaLoyalty/feature/detailSettings
Support selecting exactly which details to view in main view
2023-06-04 18:32:20 +02:00
Sylvia van Os 32ce1e02aa Smaller store name font on main screen 2023-06-04 18:14:23 +02:00
Sylvia van Os 8a8faac201 Merge pull request #1345 from obfusk/dialog-top-padding
add top content padding to dialogs
2023-06-04 16:11:31 +02:00
Sylvia van Os 2793f38d19 Move store name below card image 2023-06-04 14:55:26 +02:00
Sylvia van Os 654e3f7843 Improve text readability on icon 2023-06-04 11:20:17 +02:00
Sylvia van Os 2a6fe92b1b Support selecting exactly which details to view in main view 2023-06-04 11:06:35 +02:00
Sylvia van Os b3cd102332 Merge pull request #1348 from CatimaLoyalty/create-pull-request/patch-1685860707
Update contributors
2023-06-04 11:03:31 +02:00
TheLastProject e12bfa81dc Update contributors 2023-06-04 06:38:26 +00:00
FC Stegerman e859e7849d add top content padding to dialogs 2023-06-03 23:14:49 +02:00
Sylvia van Os 7a4c9ce84f Release Catima 2.23.3 2023-06-03 17:12:27 +02:00
Sylvia van Os 6419ca7d11 Merge pull request #1341 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-03 15:59:03 +02:00
Clxff H3r4ld0 d1b23c712a Translated using Weblate (Indonesian)
Currently translated at 94.1% (113 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-06-03 15:44:42 +02:00
Sabri Ünal ef5b525401 Translated using Weblate (Turkish)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-06-03 15:44:42 +02:00
frablock a8d5cb9ef8 Translated using Weblate (French)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-06-03 15:44:42 +02:00
Sylvia van Os 42090310d4 Merge pull request #1340 from CatimaLoyalty/create-pull-request/patch-1685795604
Update Fastlane changelogs
2023-06-03 14:34:32 +02:00
TheLastProject 9d8da2a451 Update Fastlane changelogs 2023-06-03 12:33:24 +00:00
Sylvia van Os fb488af2b7 Fix barcode being invisible on square screens
See https://github.com/CatimaLoyalty/Android/issues/1339
2023-06-03 14:33:04 +02:00
Sylvia van Os 71052c9f69 Merge pull request #1338 from CatimaLoyalty/create-pull-request/patch-1685789977
Update Fastlane changelogs
2023-06-03 13:00:10 +02:00
TheLastProject 2a285f6d21 Update Fastlane changelogs 2023-06-03 10:59:37 +00:00
Sylvia van Os e668ae7d9d Update CHANGELOG 2023-06-03 12:59:20 +02:00
Sylvia van Os 4a197c542a Merge pull request #1329 from obfusk/patch-2
make checkBox_reverse font size match sort type radio buttons
2023-06-03 12:58:44 +02:00
Sylvia van Os 720c6b6510 Merge pull request #1337 from obfusk/view-card-id
LoyaltyCardViewActivity: use "Card ID" as title for dialog
2023-06-02 20:24:14 +02:00
FC Stegerman d932ebb9f2 LoyaltyCardViewActivity: use "Card ID" as title for dialog 2023-06-02 20:17:04 +02:00
Poorva Patidar 77b6d8724b Made barcode value text Selectable (#1331) 2023-06-02 19:57:51 +02:00
Swayam Khare 5ff002da51 Added margin to EditText in AlertDialog (#1328) 2023-06-02 19:47:23 +02:00
Sylvia van Os 16b3fbdf9c Merge pull request #1334 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-06-02 08:32:18 +02:00
109247019824 4f11eceb3b Translated using Weblate (Bulgarian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-06-02 06:47:46 +02:00
Eryk Michalak c11d777bcc Translated using Weblate (Polish)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-06-02 06:47:46 +02:00
Sylvia van Os 49cda90ac6 Merge pull request #1330 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-31 21:13:11 +02:00
Balázs Meskó 63e4f4fd0d Translated using Weblate (Hungarian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-05-31 20:49:42 +02:00
109247019824 c44845582c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-05-31 20:49:42 +02:00
solokot b0771d3b01 Translated using Weblate (Russian)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-05-31 20:49:42 +02:00
FC Stegerman 285a7a9aa7 make checkBox_reverse font size match sort type radio buttons 2023-05-31 15:40:04 +00:00
Sylvia van Os 818c5e1643 Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-30 18:54:50 +02:00
Sylvia van Os 7ffaf65635 Use regular title in info dialog 2023-05-30 18:54:42 +02:00
Sylvia van Os bf50dcbaf3 Merge pull request #1321 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-30 18:25:02 +02:00
Balanda Nazarii 3e83035cf6 Translated using Weblate (Ukrainian)
Currently translated at 98.3% (118 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-05-30 13:24:00 +02:00
Sylvia van Os e921aab322 Release Catima 2.23.2 2023-05-30 12:59:21 +02:00
Sylvia van Os 1ea125d7f9 Merge pull request #1317 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-30 12:48:13 +02:00
Sylvia van Os c828ec516c Merge pull request #1319 from CatimaLoyalty/create-pull-request/patch-1685442708
Update Fastlane changelogs
2023-05-30 12:32:31 +02:00
TheLastProject 5704ce1381 Update Fastlane changelogs 2023-05-30 10:31:47 +00:00
Sylvia van Os ca33184e81 Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-30 12:31:31 +02:00
Sylvia van Os 82db76f3a9 Fix long barcode values causing barcode to scale down to nothing 2023-05-30 12:31:21 +02:00
Sylvia van Os ab6955cf9b Fix set icon menu sometimes re-opening after returning from image cropper 2023-05-30 12:29:55 +02:00
Enol P a1c81c3223 Translated using Weblate (Asturian)
Currently translated at 0.8% (1 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ast/
2023-05-30 12:06:46 +02:00
Enol P 43e7114f16 Translated using Weblate (Asturian)
Currently translated at 30.3% (85 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ast/
2023-05-30 12:06:46 +02:00
Slávek Banko d1b84097f6 Translated using Weblate (Czech)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-05-30 12:06:45 +02:00
solokot 2c9b3896c9 Translated using Weblate (Russian)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-05-30 12:06:40 +02:00
Heimen Stoffels 3dbee69847 Translated using Weblate (Dutch)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-05-30 12:06:39 +02:00
Slávek Banko 4f9414ab4f Translated using Weblate (Czech)
Currently translated at 100.0% (280 of 280 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-05-30 12:06:39 +02:00
Enol P 5a4043bf90 Added translation using Weblate (Asturian) 2023-05-30 02:00:59 +02:00
Balanda Nazarii f742639925 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-05-30 00:10:19 +02:00
Eryk Michalak e50cca781e Translated using Weblate (Polish)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-05-30 00:10:19 +02:00
Sylvia van Os 1abff7c900 Merge pull request #1316 from CatimaLoyalty/create-pull-request/patch-1685381842
Update Fastlane changelogs
2023-05-29 19:40:10 +02:00
TheLastProject 8f24fcee96 Update Fastlane changelogs 2023-05-29 17:37:22 +00:00
Sylvia van Os f3e1bfc503 Improve button styling in Groups screen 2023-05-29 19:37:03 +02:00
Sylvia van Os 65e3b87df4 Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-29 18:20:08 +02:00
Sylvia van Os 2dbe9ebb8a Fix text and icon alignment on home screen 2023-05-29 18:06:49 +02:00
Sylvia van Os ccfbe1f679 Merge pull request #1315 from CatimaLoyalty/create-pull-request/patch-1685369384
Update Fastlane changelogs
2023-05-29 16:27:57 +02:00
TheLastProject 3a4467db83 Update Fastlane changelogs 2023-05-29 14:09:44 +00:00
Sylvia van Os 419d28163e Long-press card icon in view activity to change it 2023-05-29 16:09:27 +02:00
Sylvia van Os 89483c4c4e Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-28 21:18:24 +02:00
Sylvia van Os 4e921eb5d7 Update fastlane 2023-05-28 21:18:16 +02:00
Sylvia van Os 0cf266c6f1 Merge pull request #1314 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-28 14:24:58 +02:00
Slávek Banko 20f9f971a1 Translated using Weblate (Czech)
Currently translated at 100.0% (119 of 119 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-05-28 12:49:56 +02:00
Heimen Stoffels 0150ca81cf Translated using Weblate (Dutch)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-05-28 12:49:56 +02:00
Sylvia van Os 4fd6092f8d Merge pull request #1313 from CatimaLoyalty/create-pull-request/patch-1685258004
Update contributors
2023-05-28 10:33:47 +02:00
TheLastProject a488003e4a Update contributors 2023-05-28 07:13:23 +00:00
Sylvia van Os 9e0e8bab75 Release Catima 2.23.1 2023-05-27 17:53:03 +02:00
Sylvia van Os 0eca05d656 Merge pull request #1310 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-27 12:45:32 +02:00
Sylvia van Os 1c5d102a59 Fix lint 2023-05-27 12:39:20 +02:00
Eudes-alencar 400d0f4e22 Translated using Weblate (Portuguese)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-05-27 12:31:19 +02:00
Clxff H3r4ld0 4c0593d333 Translated using Weblate (Indonesian)
Currently translated at 94.0% (111 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-05-27 12:31:19 +02:00
Eudes-alencar 87d82b1b6d Translated using Weblate (Portuguese)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-05-27 12:31:19 +02:00
WaldiS 8ea4a3309d Translated using Weblate (Polish)
Currently translated at 99.6% (287 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-05-27 12:31:19 +02:00
Sylvia van Os 18088b30bd Delete unused resources 2023-05-25 22:43:58 +02:00
Sylvia van Os 875309bc5e Merge pull request #1309 from CatimaLoyalty/create-pull-request/patch-1685044413
Update Fastlane changelogs
2023-05-25 22:04:46 +02:00
TheLastProject 95520a7051 Update Fastlane changelogs 2023-05-25 19:53:32 +00:00
Sylvia van Os ab9391db38 Update libraries
It seems Material 1.9.0 slightly changes some paddings, so created new
screenshots
2023-05-25 21:52:38 +02:00
Sylvia van Os e43e4b37ae Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-25 21:28:47 +02:00
Sylvia van Os f2d856b661 Actually properly remove font scale setting 2023-05-25 21:20:32 +02:00
Sylvia van Os 8c6c5fb767 Merge pull request #1308 from obfusk/patch-1
fix typo in RELEASE_STEPS.md
2023-05-25 21:10:41 +02:00
FC Stegerman bb4ec8f8be fix typo in RELEASE_STEPS.md 2023-05-25 18:55:53 +00:00
Sylvia van Os e5fd277198 Release Catima 2.23.0 2023-05-25 19:01:37 +02:00
Sylvia van Os 93b089c646 Merge pull request #1306 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-25 18:12:36 +02:00
Clxff Heraldo 5e37a9b89f Translated using Weblate (Indonesian)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-05-25 18:05:27 +02:00
Slávek Banko 27cc7b9008 Translated using Weblate (Czech)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-05-25 18:05:27 +02:00
Slávek Banko 0749bbd432 Translated using Weblate (Czech)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-05-25 18:05:27 +02:00
Sylvia van Os 9b1e0537c9 Merge pull request #1305 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-24 18:00:00 +02:00
Balázs Meskó 3b2b45f08f Translated using Weblate (Hungarian)
Currently translated at 25.4% (30 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-05-24 13:50:37 +02:00
Milo Ivir 60a5e60ae0 Translated using Weblate (Croatian)
Currently translated at 2.5% (3 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hr/
2023-05-24 13:50:37 +02:00
Milo Ivir 77513d5528 Translated using Weblate (Croatian)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2023-05-24 13:50:37 +02:00
丛林意志 15fa483490 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-05-24 13:50:37 +02:00
SilverFS 40ba47d60c Translated using Weblate (Dutch)
Currently translated at 11.8% (14 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2023-05-24 13:50:37 +02:00
solokot 986327d141 Translated using Weblate (Russian)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-05-24 13:50:37 +02:00
Jean Mareilles 36f0dde3b2 Translated using Weblate (French)
Currently translated at 99.1% (117 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-05-24 13:50:37 +02:00
Giovanni Donisi f0a695a616 Translated using Weblate (Italian)
Currently translated at 99.6% (287 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-05-24 13:50:37 +02:00
Jean Mareilles 810b0f3c14 Translated using Weblate (French)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-05-24 13:50:37 +02:00
Mateo Gomez fcf08a8900 Translated using Weblate (Spanish)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-05-24 13:50:37 +02:00
Sylvia van Os 939bf6a788 Merge pull request #1304 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-22 20:15:09 +02:00
Minecraft boom 935f899d0f Translated using Weblate (Arabic)
Currently translated at 97.2% (280 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-05-22 06:54:30 +02:00
Balázs Meskó 6c8d79ef36 Translated using Weblate (Hungarian)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-05-22 06:54:30 +02:00
Oğuz Ersen 178707b482 Translated using Weblate (Turkish)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-05-22 06:54:30 +02:00
109247019824 0f2c9cb63d Translated using Weblate (Bulgarian)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-05-22 06:54:30 +02:00
丛林意志 0869a00f0c Translated using Weblate (Chinese (Simplified))
Currently translated at 99.1% (117 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2023-05-22 06:54:30 +02:00
丛林意志 b63b8c4ea7 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-05-22 06:54:30 +02:00
solokot 76d77a2af4 Translated using Weblate (Russian)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-05-22 06:54:30 +02:00
Heimen Stoffels dade0b7a54 Translated using Weblate (Dutch)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-05-22 06:54:30 +02:00
Artūras Kalenda 68801d6958 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (288 of 288 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2023-05-22 06:54:30 +02:00
Sylvia van Os 5c3ec85043 Merge pull request #1303 from CatimaLoyalty/create-pull-request/patch-1684674032
Update Fastlane changelogs
2023-05-21 15:02:20 +02:00
TheLastProject 6332e396cb Update Fastlane changelogs 2023-05-21 13:00:31 +00:00
Sylvia van Os 7f022feb6a Fix crash when using "Take a photo" with disabled camera app 2023-05-21 15:00:11 +02:00
Sylvia van Os 1fa8487474 Bump AGP 2023-05-21 14:48:20 +02:00
Sylvia van Os 0e040a73eb Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-05-21 14:34:51 +02:00
Sylvia van Os 65acb885af Fix crash on disabled camera app 2023-05-21 14:34:39 +02:00
Sylvia van Os ee28957cbd Merge pull request #1302 from CatimaLoyalty/create-pull-request/patch-1684649320
Update contributors
2023-05-21 09:23:27 +02:00
TheLastProject 0e9f4d9f2b Update contributors 2023-05-21 06:08:39 +00:00
Sylvia van Os 58974cf738 Merge pull request #1301 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-20 13:32:23 +02:00
Balázs Meskó c56c931a70 Translated using Weblate (Hungarian)
Currently translated at 15.2% (18 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-05-20 11:53:50 +02:00
Quentin PAGÈS c83e8b6682 Translated using Weblate (Occitan)
Currently translated at 34.8% (100 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/oc/
2023-05-20 11:53:50 +02:00
109247019824 449ab86b5a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-05-20 11:53:50 +02:00
solokot 8f18bbe0ac Translated using Weblate (Russian)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-05-20 11:53:50 +02:00
Altons 992e61b88a Translated using Weblate (French)
Currently translated at 97.4% (115 of 118 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-05-20 11:53:50 +02:00
solokot 47b92fb38c Translated using Weblate (Russian)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-05-20 11:53:50 +02:00
Heimen Stoffels b9963bb967 Translated using Weblate (Dutch)
Currently translated at 100.0% (287 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-05-20 11:53:50 +02:00
Carlo Cuoghi d642d57b85 Translated using Weblate (Italian)
Currently translated at 98.2% (282 of 287 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-05-20 11:53:50 +02:00
Sylvia van Os 9e0e8f6d7f Redo all screenshots with exact same Material colour 2023-05-18 22:54:38 +02:00
Sylvia van Os e486755e6a Merge pull request #1273 from CatimaLoyalty/feature/donationLink
Add donation link on non-Google installs
2023-05-18 21:44:48 +02:00
Sylvia van Os 1bb803ef0a Add donation link on non-Google installs
Inspired by https://git.zx2c4.com/wireguard-android/commit/?id=dc1860c74dd67e18a66fe9e243eeffa689bef043
2023-05-18 19:33:06 +02:00
Sylvia van Os f729f9758b Merge pull request #1299 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.10.3
Bump org.robolectric:robolectric from 4.10.2 to 4.10.3
2023-05-18 19:03:47 +02:00
Sylvia van Os abe3bc7d87 Merge pull request #1300 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-18 19:03:27 +02:00
Balázs Meskó 454bb6a1aa Translated using Weblate (Hungarian)
Currently translated at 7.6% (9 of 117 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2023-05-18 18:52:16 +02:00
Balázs Meskó 2d4d4e2309 Translated using Weblate (Hungarian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-05-18 18:52:16 +02:00
IllusiveMan196 e7c4010e8d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (117 of 117 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-05-18 18:52:16 +02:00
dependabot[bot] cc363e0c04 Bump org.robolectric:robolectric from 4.10.2 to 4.10.3
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.10.2 to 4.10.3.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.10.2...robolectric-4.10.3)

---
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-05-18 02:58:51 +00:00
Sylvia van Os deacc4a69b Merge pull request #1298 from CatimaLoyalty/create-pull-request/patch-1684361188
Update Fastlane changelogs
2023-05-18 00:26:17 +02:00
TheLastProject ac6e6e0985 Update Fastlane changelogs 2023-05-17 22:06:27 +00:00
Sylvia van Os fd37a2708f Update CHANGELOG 2023-05-18 00:06:13 +02:00
Sylvia van Os 85ea314dc9 Merge pull request #1294 from pokegh0st/fix/preferences
Update Settings screen to use Material You design
2023-05-18 00:05:22 +02:00
Sylvia van Os 7fd5fe6ee0 Merge pull request #1290 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.10.2
Bump org.robolectric:robolectric from 4.10.1 to 4.10.2
2023-05-17 21:17:10 +02:00
Sylvia van Os 2c35ad3044 Merge pull request #1297 from CatimaLoyalty/create-pull-request/patch-1684350973
Update Fastlane changelogs
2023-05-17 21:16:47 +02:00
TheLastProject 210e305bae Update Fastlane changelogs 2023-05-17 19:16:13 +00:00
Sylvia van Os b48de921fc Redesign of home screen and view UI (#1296)
* Redesign of home screen and view UI

* Update screenshots and CHANGELOG

* Make spotbugs happy

* Fix double store name announcement
2023-05-17 21:15:56 +02:00
Sylvia van Os ebc2bfcbbb Merge pull request #1295 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-16 20:01:45 +02:00
Subhradeep Bera b1ec67928f Translated using Weblate (Bengali (India))
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-05-16 19:51:02 +02:00
pokegh0st 2beafe954b fix: Change dialog windows to Material 3 2023-05-16 18:52:07 +03:00
pokegh0st 25b6c4d8cc fix: Change switches to Material 3 2023-05-15 19:49:00 +03:00
Sylvia van Os a3f1b9c0b9 Merge pull request #1293 from CatimaLoyalty/create-pull-request/patch-1684044523
Update contributors
2023-05-14 09:45:50 +02:00
TheLastProject 14d5545c88 Update contributors 2023-05-14 06:08:42 +00:00
Sylvia van Os 0977b9d20a Merge pull request #1292 from CatimaLoyalty/create-pull-request/patch-1683439738
Update contributors
2023-05-07 10:38:07 +02:00
Sylvia van Os bad0990dfb Merge pull request #1291 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-05-07 10:37:50 +02:00
TheLastProject 98c34abd66 Update contributors 2023-05-07 06:08:58 +00:00
Clxff Heraldo b4d1463453 Translated using Weblate (Indonesian)
Currently translated at 94.0% (110 of 117 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-05-07 06:54:09 +02:00
dependabot[bot] 659b86e31a Bump org.robolectric:robolectric from 4.10.1 to 4.10.2
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.10.1 to 4.10.2.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.10.1...robolectric-4.10.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>
2023-05-05 02:58:25 +00:00
Sylvia van Os d63e269172 Merge pull request #1286 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.10.1
Bump org.robolectric:robolectric from 4.10 to 4.10.1
2023-05-03 18:17:01 +02:00
dependabot[bot] 77aa768c5c Bump org.robolectric:robolectric from 4.10 to 4.10.1
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.10 to 4.10.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.10...robolectric-4.10.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-05-03 02:58:28 +00:00
Sylvia van Os 8c74d4c2d0 Merge pull request #1283 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-04-30 13:44:34 +02:00
Sylvia van Os a6280108ec Delete invalid translation 2023-04-30 13:37:44 +02:00
Sylvia van Os 829630219f Merge pull request #1284 from CatimaLoyalty/create-pull-request/patch-1682832840
Update contributors
2023-04-30 11:11:14 +02:00
TheLastProject 22a736d7fd Update contributors 2023-04-30 05:34:00 +00:00
Gael Caraballo 4418492e7c Translated using Weblate (Catalan)
Currently translated at 19.3% (54 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ca/
2023-04-30 06:52:58 +02:00
Cap Amr Karam c21e12bbf0 Translated using Weblate (Arabic)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-04-30 06:52:58 +02:00
liva 9af05be128 Translated using Weblate (Latvian)
Currently translated at 98.2% (274 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2023-04-30 06:52:58 +02:00
Sylvia van Os e036443233 Merge pull request #1280 from CatimaLoyalty/create-pull-request/patch-1682233171
Update contributors
2023-04-23 11:01:43 +02:00
TheLastProject 7e605f284d Update contributors 2023-04-23 06:59:30 +00:00
Sylvia van Os e712b8e18d Update fastlane 2023-04-19 17:44:53 +02:00
Sylvia van Os 2ff137ee04 Merge pull request #1278 from CatimaLoyalty/simplify_tests
Move all import unit test strings to their own files
2023-04-18 18:42:15 +02:00
Sylvia van Os 3b45802a7f Move all import unit test strings to their own files
They should've been files from the start, because you import files, not
text string.
2023-04-17 20:48:27 +02:00
Sylvia van Os 0de4847f6a Merge pull request #1276 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-04-16 22:02:19 +02:00
Projjal Moitra 47e2566043 Translated using Weblate (Bengali (India))
Currently translated at 78.4% (219 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-04-16 20:49:48 +02:00
Sylvia van Os 18c17796b9 Merge pull request #1275 from CatimaLoyalty/fix/unitTestsTarget
Ensure unit tests use targetSdk instead of API 23 (Android 6)
2023-04-16 16:11:34 +02:00
Sylvia van Os 4b2b999653 Ensure unit tests use targetSdk instead of API 23 (Android 6) 2023-04-16 15:20:30 +02:00
Sylvia van Os 3b51121c9e Merge pull request #1274 from CatimaLoyalty/create-pull-request/patch-1681625007
Update contributors
2023-04-16 09:45:59 +02:00
TheLastProject 2fc9581643 Update contributors 2023-04-16 06:03:27 +00:00
Sylvia van Os 68f3f37e23 Merge pull request #1272 from CatimaLoyalty/fix/ci
Fix CI build
2023-04-14 21:10:04 +02:00
Sylvia van Os 38658d0aa7 Fix CI build 2023-04-14 21:02:53 +02:00
Sylvia van Os 339750e97c Update AGP to 8.0.0 2023-04-14 20:56:29 +02:00
Sylvia van Os 510995a5c5 Release Catima 2.22.1 2023-04-14 18:38:48 +02:00
Sylvia van Os a039d5de9e Merge pull request #1270 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-04-14 18:10:52 +02:00
Projjal Moitra df11bd8f69 Translated using Weblate (Bengali (India))
Currently translated at 73.8% (206 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-04-14 17:48:15 +02:00
Sylvia van Os 17c80573bd Merge pull request #1269 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.10
Bump org.robolectric:robolectric from 4.9.2 to 4.10
2023-04-12 17:36:52 +02:00
dependabot[bot] bc71c02e87 Bump org.robolectric:robolectric from 4.9.2 to 4.10
Bumps [org.robolectric:robolectric](https://github.com/robolectric/robolectric) from 4.9.2 to 4.10.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.9.2...robolectric-4.10)

---
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-04-12 02:59:34 +00:00
Sylvia van Os d892fe40ba Merge pull request #1268 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-04-11 18:08:38 +02:00
SC 06839f6ddb Translated using Weblate (Portuguese)
Currently translated at 100.0% (117 of 117 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-04-11 16:54:22 +02:00
Projjal Moitra ee57703ffc Translated using Weblate (Bengali (India))
Currently translated at 72.0% (201 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-04-11 16:54:22 +02:00
solokot e780f5fb87 Translated using Weblate (Russian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-04-11 16:54:22 +02:00
Sylvia van Os 6b9a0a0696 Merge pull request #1266 from CatimaLoyalty/deps/update_spotbugs
Update spotbugs
2023-04-10 22:38:01 +02:00
Sylvia van Os 6653a940ed Make spotbugs happy 2023-04-10 21:36:35 +02:00
Sylvia van Os 47821752f0 Merge pull request #1267 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-04-10 13:19:47 +02:00
Sylvia van Os bf05bd7e56 Fix lint 2023-04-10 13:12:10 +02:00
Projjal Moitra 2dd622b9c4 Translated using Weblate (Bengali (India))
Currently translated at 68.1% (190 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-04-10 09:53:13 +02:00
Sylvia van Os 643527a7fb Translated using Weblate (Bengali (India))
Currently translated at 68.1% (190 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-04-10 09:53:13 +02:00
Slávek Banko 0aae4c9c64 Translated using Weblate (Czech)
Currently translated at 100.0% (117 of 117 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-04-10 09:53:13 +02:00
solokot 14c5b756f7 Translated using Weblate (Russian)
Currently translated at 100.0% (117 of 117 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-04-10 09:53:13 +02:00
Sylvia van Os ded3c63ec5 Translated using Weblate (Bengali)
Currently translated at 31.1% (87 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2023-04-10 09:53:13 +02:00
يوسف لطفي e3a22e425b Translated using Weblate (Arabic)
Currently translated at 98.5% (275 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-04-10 09:53:13 +02:00
Projjal Moitra 275d387f3c Translated using Weblate (Bengali (India))
Currently translated at 62.7% (175 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2023-04-10 09:53:13 +02:00
Mobashir Raihan fbbad75c15 Translated using Weblate (Bengali)
Currently translated at 31.5% (88 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2023-04-10 09:53:13 +02:00
Sylvia van Os a55e9da067 Merge pull request #1265 from CatimaLoyalty/create-pull-request/patch-1681019014
Update contributors
2023-04-09 08:52:12 +02:00
TheLastProject a5116395c8 Update contributors 2023-04-09 05:43:33 +00:00
dependabot[bot] 5cf41ed664 Bump com.github.spotbugs from 4.7.5 to 5.0.14
Bumps com.github.spotbugs from 4.7.5 to 5.0.14.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-05 16:44:16 +00:00
Sylvia van Os bbde3ec3b8 Merge pull request #1260 from CatimaLoyalty/create-pull-request/patch-1680713019
Update Fastlane changelogs
2023-04-05 18:43:53 +02:00
TheLastProject db56d56e3b Update Fastlane changelogs 2023-04-05 16:43:39 +00:00
Sylvia van Os f4c0628366 Merge pull request #1259 from CatimaLoyalty/library_updates
Update all libraries
2023-04-05 18:43:20 +02:00
Sylvia van Os 1e6641a884 Disable MissingQuantity due to Weblate bug
See https://github.com/WeblateOrg/weblate/issues/7520
2023-04-04 22:57:54 +02:00
Sylvia van Os b9bd3f5967 Update all libraries 2023-04-04 22:22:51 +02:00
Sylvia van Os 28eaac0c67 Merge pull request #1257 from CatimaLoyalty/create-pull-request/patch-1680414497
Update contributors
2023-04-02 09:59:58 +02:00
TheLastProject 5690ca03e7 Update contributors 2023-04-02 05:48:17 +00:00
Sylvia van Os 71f7b21112 Merge pull request #1256 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-31 19:54:27 +02:00
Slávek Banko f9ece83f2b Translated using Weblate (Czech)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-03-30 17:42:01 +02:00
Sylvia van Os 3bab0f43eb Merge pull request #1255 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-26 14:53:46 +02:00
SC 941fa929dd Translated using Weblate (Portuguese)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-03-26 14:42:11 +02:00
Szia Tomi 46846d2448 Translated using Weblate (Hungarian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2023-03-26 14:42:11 +02:00
Sylvia van Os 7b7c1b88b9 Merge pull request #1254 from CatimaLoyalty/create-pull-request/patch-1679813344
Update contributors
2023-03-26 12:33:46 +02:00
TheLastProject 0926bb71e1 Update contributors 2023-03-26 06:49:04 +00:00
Sylvia van Os cfc4ce7c3c Merge pull request #1251 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-20 12:50:12 +01:00
109247019824 1f217dd846 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-03-20 01:05:23 +01:00
Michael Moroni 6c74b95e90 Translated using Weblate (Italian)
Currently translated at 62.0% (72 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-03-20 01:05:23 +01:00
Denis Shilin 9fca77d561 Translated using Weblate (Russian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-03-20 01:05:23 +01:00
Altons 1f0873aab4 Translated using Weblate (French)
Currently translated at 98.2% (114 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-03-20 01:05:23 +01:00
Sylvia van Os ca3a09740a Merge pull request #1250 from CatimaLoyalty/create-pull-request/patch-1679204700
Update contributors
2023-03-19 11:04:38 +01:00
TheLastProject c104de839e Update contributors 2023-03-19 05:45:00 +00:00
Sylvia van Os 0f4380c1e2 Merge pull request #1249 from CatimaLoyalty/fix/stocard_export_name
Fix Stocard export filenames
2023-03-18 17:59:46 +01:00
Sylvia van Os 64e3b047d9 Fix Stocard export filenames
Stocard renamed their exports to no longer contain sync, only your user
id.
2023-03-18 17:48:53 +01:00
Sylvia van Os 729639e0e6 Release Catima 2.22.0 2023-03-18 17:01:58 +01:00
Sylvia van Os 3e79147673 Merge pull request #1247 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-18 15:39:46 +01:00
Tom Sawyer 59a656c422 Translated using Weblate (Swedish)
Currently translated at 2.5% (3 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2023-03-18 15:34:29 +01:00
Altons bdf8994fed Translated using Weblate (French)
Currently translated at 97.4% (113 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-03-18 15:34:29 +01:00
Sylvia van Os 3aa595083b Show new Valid from feature in screenshots 2023-03-17 23:33:41 +01:00
Sylvia van Os 37f1183208 Merge pull request #1246 from CatimaLoyalty/create-pull-request/patch-1679091521
Update Fastlane changelogs
2023-03-17 23:19:21 +01:00
TheLastProject 839496aa04 Update Fastlane changelogs 2023-03-17 22:18:40 +00:00
Sylvia van Os 4a7a6b109c Merge pull request #1245 from CatimaLoyalty/fix/stocard_import
Fix Stocard import
2023-03-17 23:18:22 +01:00
Sylvia van Os 2b2d5ca7cf Fix Stocard import 2023-03-17 23:09:00 +01:00
Sylvia van Os 463af746fa Merge pull request #1244 from CatimaLoyalty/create-pull-request/patch-1678989883
Update Fastlane changelogs
2023-03-16 19:05:30 +01:00
TheLastProject d75b79fce4 Update Fastlane changelogs 2023-03-16 18:04:43 +00:00
Sylvia van Os 2ec29da6b1 Merge pull request #1243 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-16 19:04:26 +01:00
ahmed-awad26 e80bebe887 Translated using Weblate (Arabic)
Currently translated at 98.2% (274 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2023-03-16 13:38:03 +01:00
Denis Shilin 1555b3b24b Translated using Weblate (Russian)
Currently translated at 94.8% (110 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-03-16 13:38:03 +01:00
Allan Nordhøy 12f42f86a5 Translated using Weblate (English)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/en/
2023-03-16 13:38:03 +01:00
Sylvia van Os a74e17db10 Merge pull request #1241 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-13 21:39:53 +01:00
Denis Shilin 96335d3ee8 Translated using Weblate (Russian)
Currently translated at 93.9% (109 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-03-13 15:42:46 +01:00
Patrik fb3d945f51 Translated using Weblate (Slovak)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2023-03-13 15:42:46 +01:00
Sylvia van Os 843ffbb87e Merge pull request #1240 from CatimaLoyalty/create-pull-request/patch-1678623157
Update Fastlane changelogs
2023-03-12 13:13:35 +01:00
TheLastProject 99e19321f0 Update Fastlane changelogs 2023-03-12 12:12:36 +00:00
Sylvia van Os 4e5a90eb93 Fix typo in old CHANGELOG 2023-03-12 13:12:21 +01:00
Sylvia van Os 9745ea671e Merge pull request #1238 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-12 13:10:38 +01:00
Denis Shilin 94a63d6e0c Translated using Weblate (Russian)
Currently translated at 81.0% (94 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-03-12 13:00:09 +01:00
Sylvia van Os 725ca3b9ca Merge pull request #1236 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-12 12:57:35 +01:00
Denis Shilin 46a2164143 Translated using Weblate (Russian)
Currently translated at 76.7% (89 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-03-12 12:40:30 +01:00
Sylvia van Os 5304be6f54 Translated using Weblate (English)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/en/
2023-03-12 12:40:30 +01:00
Sylvia van Os 8321e796f5 Merge pull request #1235 from CatimaLoyalty/create-pull-request/patch-1678600178
Update contributors
2023-03-12 12:37:46 +01:00
TheLastProject c1f82e90be Update contributors 2023-03-12 05:49:38 +00:00
Sylvia van Os 758f265638 Merge pull request #1234 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-09 17:57:17 +01:00
Nosnahc 590020bb6f Translated using Weblate (French)
Currently translated at 98.2% (114 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2023-03-09 10:42:20 +01:00
Sylvia van Os f18c2a2d0c Merge pull request #1231 from CatimaLoyalty/create-pull-request/patch-1677996975
Update contributors
2023-03-05 12:55:58 +01:00
TheLastProject 3a17ee83e0 Update contributors 2023-03-05 06:16:15 +00:00
Sylvia van Os f36d4aebb6 Merge pull request #1230 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-04 14:23:47 +01:00
Tian Jiale 71cb1cace4 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-03-04 13:39:54 +01:00
lucafont2 1e4e035281 Translated using Weblate (Italian)
Currently translated at 62.0% (72 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-03-04 13:39:54 +01:00
Sylvia van Os 7da4eb6587 Merge pull request #1229 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-03 13:57:26 +01:00
Tian Jiale d454864fa7 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.2% (274 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-03-03 13:36:36 +01:00
Sylvia van Os f5e6d7be71 Merge pull request #1227 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-03-02 22:21:29 +01:00
Sylvia van Os 967a17242d Fix lint 2023-03-02 14:02:22 +01:00
Luna Jernberg 6c5dd7a713 Translated using Weblate (Swedish)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2023-03-02 09:37:09 +01:00
Alexander 139b144cb3 Translated using Weblate (Icelandic)
Currently translated at 42.2% (118 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/is/
2023-03-01 03:39:16 +01:00
Sylvia van Os 5deacf7ecc Merge pull request #1224 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-28 21:32:38 +01:00
Jesse Davids 6e49aea713 Translated using Weblate (Dutch)
Currently translated at 11.2% (13 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2023-02-26 06:40:23 +01:00
Jesse Davids 68257ce3ad Translated using Weblate (Dutch)
Currently translated at 6.0% (7 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2023-02-25 04:40:19 +01:00
Sirius Chan 149a1caeff Translated using Weblate (Chinese (Traditional))
Currently translated at 7.7% (9 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2023-02-25 04:40:19 +01:00
Sirius Chan 07e5788cb2 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2023-02-25 04:40:19 +01:00
Sylvia van Os c072e2e70d Merge pull request #1225 from CatimaLoyalty/dependabot/gradle/net.lingala.zip4j-zip4j-2.11.5
Bump net.lingala.zip4j:zip4j from 2.11.4 to 2.11.5
2023-02-23 15:13:43 +01:00
dependabot[bot] 0701b9b3de Bump net.lingala.zip4j:zip4j from 2.11.4 to 2.11.5
Bumps [net.lingala.zip4j:zip4j](https://github.com/srikanth-lingala/zip4j) from 2.11.4 to 2.11.5.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.11.4...v2.11.5)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 02:16:17 +00:00
Sylvia van Os f84242d97c Merge pull request #1223 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-15 21:10:51 +01:00
IllusiveMan196 79f35ed715 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-02-15 20:40:26 +01:00
Sylvia van Os eff4f3f8df Merge pull request #1221 from CatimaLoyalty/create-pull-request/patch-1676182226
Update contributors
2023-02-12 09:32:03 +01:00
TheLastProject ee405f670d Update contributors 2023-02-12 06:10:25 +00:00
Sylvia van Os 7dcb9b336d Merge pull request #1219 from CatimaLoyalty/dependabot/gradle/net.lingala.zip4j-zip4j-2.11.4
Bump net.lingala.zip4j:zip4j from 2.11.3 to 2.11.4
2023-02-11 18:35:03 +01:00
Sylvia van Os 923e6dc062 Merge pull request #1220 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-11 18:13:10 +01:00
Allan Nordhøy 2ea04e8715 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-02-11 06:57:05 +01:00
SC f264941ae4 Translated using Weblate (Portuguese)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-02-11 06:57:05 +01:00
SC e6ef5c9bb2 Translated using Weblate (Portuguese)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-02-11 06:57:05 +01:00
HudobniVolk 024cc2d50e Translated using Weblate (Slovenian)
Currently translated at 27.5% (32 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-02-11 06:57:05 +01:00
Brage Nesteby Reitan 48b62f6aea Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-02-11 06:57:05 +01:00
dependabot[bot] ff07fe71cc Bump net.lingala.zip4j:zip4j from 2.11.3 to 2.11.4
Bumps [net.lingala.zip4j:zip4j](https://github.com/srikanth-lingala/zip4j) from 2.11.3 to 2.11.4.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.11.3...v2.11.4)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 02:58:35 +00:00
Sylvia van Os 402cf57c29 Add Catalan to supported languages 2023-02-09 23:27:56 +01:00
Sylvia van Os e19ac0d0c2 Merge pull request #1218 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-09 20:16:40 +01:00
Francesc Bassas i Bullich fc5d4a6435 Translated using Weblate (Catalan)
Currently translated at 18.9% (53 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ca/
2023-02-09 19:40:22 +01:00
gittyboy-cell 50754a3430 Translated using Weblate (Indonesian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-02-09 19:40:22 +01:00
HudobniVolk 0375f6dbe5 Translated using Weblate (Slovenian)
Currently translated at 26.7% (31 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-02-09 19:40:22 +01:00
HudobniVolk deb808ffb6 Translated using Weblate (Slovenian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-02-09 19:40:22 +01:00
Sylvia van Os 166c1e7bc6 Merge pull request #1216 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-07 22:44:27 +01:00
Hamustra Scans bfa19d0166 Translated using Weblate (Korean)
Currently translated at 37.9% (106 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2023-02-07 22:22:31 +01:00
sal0max f92805ec64 Translated using Weblate (German)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-02-07 22:22:31 +01:00
sal0max 73e6e9f34a Translated using Weblate (German)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-02-07 22:22:31 +01:00
Francesc Bassas i Bullich 6a76681412 Added translation using Weblate (Catalan) 2023-02-07 22:22:31 +01:00
Sylvia van Os f05a5dde1e Merge pull request #1213 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-06 19:41:51 +01:00
gnu-ewm 4a93ba3478 Translated using Weblate (Polish)
Currently translated at 39.6% (46 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2023-02-06 17:39:42 +01:00
Michael Moroni af43138ae9 Translated using Weblate (Italian)
Currently translated at 58.6% (68 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-02-06 17:39:42 +01:00
Günter Neiß dcd6e4b9a9 Translated using Weblate (German)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2023-02-06 17:39:42 +01:00
Dan 0ce2395605 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-02-06 17:39:42 +01:00
solokot 89dbc9e9aa Translated using Weblate (Russian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-02-06 17:39:42 +01:00
gnu-ewm 788a8f0efe Translated using Weblate (Polish)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-02-06 17:39:42 +01:00
J. Lavoie d0c9ae2a4a Translated using Weblate (Italian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-02-06 17:39:42 +01:00
J. Lavoie c000a8129c Translated using Weblate (French)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-02-06 17:39:42 +01:00
J. Lavoie bfb4fdb61c Translated using Weblate (German)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-02-06 17:39:42 +01:00
Sylvia van Os 1929401d3e Merge pull request #1210 from CatimaLoyalty/create-pull-request/patch-1675576485
Update contributors
2023-02-05 12:06:41 +01:00
TheLastProject eef13a1a91 Update contributors 2023-02-05 05:54:45 +00:00
Sylvia van Os 64f340d798 Merge pull request #1208 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-05 01:01:09 +01:00
Oğuz Ersen f12422fc07 Translated using Weblate (Turkish)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-02-04 22:08:08 +01:00
109247019824 d78315ef12 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-02-04 22:08:08 +01:00
Jorma Karvonen af8c3eeb54 Translated using Weblate (Finnish)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-02-04 22:08:08 +01:00
Slávek Banko 16e4205028 Translated using Weblate (Czech)
Currently translated at 100.0% (116 of 116 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-02-04 22:08:08 +01:00
Heimen Stoffels 399aa767d2 Translated using Weblate (Dutch)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-02-04 22:08:08 +01:00
Allan Nordhøy 96c735cf80 Translated using Weblate (Norwegian Bokmål)
Currently translated at 96.7% (270 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2023-02-04 22:08:07 +01:00
gallegonovato 50a8395ec6 Translated using Weblate (Spanish)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-02-04 22:08:07 +01:00
Slávek Banko c720ca1085 Translated using Weblate (Czech)
Currently translated at 100.0% (279 of 279 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-02-04 22:08:07 +01:00
Sylvia van Os d82088f66a Merge pull request #1207 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-02-04 15:51:09 +01:00
Jiri Grönroos 1fce3e17f6 Translated using Weblate (Finnish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-02-04 15:35:30 +01:00
Evgeniy Khramov 569db96f81 Translated using Weblate (Russian)
Currently translated at 35.6% (41 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2023-02-04 15:35:30 +01:00
Salem Malus b7cb1dffc1 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2023-02-04 15:35:30 +01:00
Sylvia van Os e17fc66d35 Update dependencies (#1205)
* Update appcompat to 1.6.0

* Update constraintlayout to 2.1.4

* Update exifinterface to 1.3.5

* Update test:core to 1.5.0
2023-02-03 22:56:23 +01:00
Sylvia van Os 8dac7ae9d1 Merge pull request #1203 from CatimaLoyalty/create-pull-request/patch-1675277210
Update Fastlane changelogs
2023-02-01 19:48:43 +01:00
TheLastProject 28a0417fa8 Update Fastlane changelogs 2023-02-01 18:46:49 +00:00
Sylvia van Os 58d4bd7f47 Update CHANGELOG 2023-02-01 19:46:31 +01:00
Sylvia van Os 1779aef162 Merge pull request #1083 from vanogrid/feature/validFromField
Add Valid From field
2023-02-01 19:29:38 +01:00
Sylvia van Os 557ec68428 Fix info button being hidden when only validFrom is set 2023-02-01 19:22:22 +01:00
Sylvia van Os 96a7c8ee36 String consistency improvement 2023-02-01 19:22:22 +01:00
Alexander Ivanov 3a9b92231e Set min/max date in the DatePickerDialog when 'valid from' or 'expiry' dates are set
Signed-off-by: Alexander Ivanov <vanogrid@gmail.com>
2023-02-01 19:22:22 +01:00
Alexander Ivanov f1753ea943 Add Valid From field
Signed-off-by: Alexander Ivanov <vanogrid@gmail.com>
2023-02-01 19:22:20 +01:00
Sylvia van Os 36ab78ec6e Merge pull request #1202 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-30 17:55:11 +01:00
Cliff Heraldo 8a3a782558 Translated using Weblate (Indonesian)
Currently translated at 20.0% (23 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2023-01-30 16:41:04 +01:00
Cliff Heraldo 2c5606bf0a Translated using Weblate (Indonesian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-01-30 16:41:04 +01:00
gnu-ewm 5eb36aad5b Translated using Weblate (Polish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-01-30 16:41:04 +01:00
Sylvia van Os b028d32e2c Merge pull request #1200 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-29 13:30:29 +01:00
Sylvia van Os dfefdda9f9 Translated using Weblate (Romanian)
Currently translated at 1.7% (2 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2023-01-29 13:09:25 +01:00
Sylvia van Os bc1cc68f27 Update Fastlane 2023-01-29 13:05:11 +01:00
Sylvia van Os 386a5f75b0 Merge pull request #1198 from CatimaLoyalty/create-pull-request/patch-1674969594
Update contributors
2023-01-29 12:04:10 +01:00
Sylvia van Os d30a9fd1e5 Merge pull request #1197 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-29 12:02:46 +01:00
TheLastProject 0c8e5576b8 Update contributors 2023-01-29 05:19:54 +00:00
Cliff Heraldo 93e40c08aa Translated using Weblate (Indonesian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2023-01-29 02:19:44 +01:00
HudobniVolk 24eb1e9627 Translated using Weblate (Slovenian)
Currently translated at 25.2% (29 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-01-29 00:54:59 +01:00
Dan 19e6b8bea9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (115 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-01-29 00:54:59 +01:00
HudobniVolk 87f844943e Translated using Weblate (Slovenian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-01-29 00:54:59 +01:00
J. Lavoie 718738ff78 Translated using Weblate (French)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2023-01-29 00:54:59 +01:00
J. Lavoie d7bb019068 Translated using Weblate (German)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2023-01-29 00:54:59 +01:00
Sylvia van Os f925404ab7 Revert "Fix filename"
This reverts commit 38495546e0.
2023-01-27 21:50:34 +01:00
Sylvia van Os 38495546e0 Fix filename 2023-01-27 19:19:26 +01:00
Sylvia van Os 36e7ea5b20 Release Catima 2.21.2 2023-01-27 18:36:24 +01:00
Sylvia van Os 85d53ae3c7 Merge pull request #1194 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-27 18:07:26 +01:00
Sylvia van Os e9b6b5682e Translated using Weblate (Dutch)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-01-27 18:01:46 +01:00
SC 0abc583d10 Translated using Weblate (Portuguese)
Currently translated at 100.0% (115 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2023-01-27 17:56:35 +01:00
SC 8c91d30b4c Translated using Weblate (Portuguese)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2023-01-27 17:56:31 +01:00
Oğuz Ersen 76e8715ab2 Translated using Weblate (Turkish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2023-01-27 17:56:31 +01:00
Quentin PAGÈS f5f2edca75 Translated using Weblate (Occitan)
Currently translated at 0.8% (1 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/oc/
2023-01-27 17:56:31 +01:00
109247019824 e648e22ecc Translated using Weblate (Bulgarian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2023-01-27 17:56:31 +01:00
HudobniVolk 02b020e9e5 Translated using Weblate (Slovenian)
Currently translated at 21.7% (25 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-01-27 17:56:31 +01:00
Slávek Banko e7dc3cd511 Translated using Weblate (Czech)
Currently translated at 100.0% (115 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2023-01-27 17:56:30 +01:00
Michael Moroni eb3ac53e46 Translated using Weblate (Italian)
Currently translated at 56.5% (65 of 115 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2023-01-27 17:56:26 +01:00
Dan dd683b4a8c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-01-27 17:56:24 +01:00
solokot e90ba5d2db Translated using Weblate (Russian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2023-01-27 17:56:24 +01:00
Heimen Stoffels 07cff7eac4 Translated using Weblate (Dutch)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2023-01-27 17:56:24 +01:00
Michael Moroni 3eea18fc82 Translated using Weblate (Italian)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-01-27 17:56:23 +01:00
gallegonovato 5d3ceb6d49 Translated using Weblate (Spanish)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2023-01-27 17:56:23 +01:00
Slávek Banko 3dc7a25d88 Translated using Weblate (Czech)
Currently translated at 100.0% (275 of 275 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2023-01-27 17:56:23 +01:00
Sylvia van Os 95e02d1646 Merge pull request #1191 from CatimaLoyalty/dependabot/gradle/net.lingala.zip4j-zip4j-2.11.3
Bump zip4j from 2.11.2 to 2.11.3
2023-01-26 19:15:58 +01:00
Sylvia van Os 81ecf8ba92 Merge pull request #1193 from CatimaLoyalty/security/gradle_wrapper_verification
Add Gradle wrapper verification
2023-01-26 19:10:13 +01:00
Sylvia van Os bf0e1a2e77 Add Gradle wrapper verification 2023-01-26 19:02:04 +01:00
Sylvia van Os 4d1c9244fd Merge pull request #1192 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-26 18:48:57 +01:00
HudobniVolk 1f1e523100 Translated using Weblate (Slovenian)
Currently translated at 20.1% (23 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-01-26 17:55:06 +01:00
HudobniVolk cb32cf9e52 Translated using Weblate (Slovenian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-01-26 17:55:06 +01:00
dependabot[bot] af812d8cda Bump zip4j from 2.11.2 to 2.11.3
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.11.2 to 2.11.3.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.11.2...v2.11.3)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-26 02:03:45 +00:00
Sylvia van Os c8a7addc52 Merge pull request #1190 from CatimaLoyalty/create-pull-request/patch-1674683901
Update Fastlane changelogs
2023-01-25 22:58:43 +01:00
TheLastProject 3e64d7c5ad Update Fastlane changelogs 2023-01-25 21:58:21 +00:00
Sylvia van Os 277462a939 Update CHANGELOG 2023-01-25 22:58:03 +01:00
Sylvia van Os 24623d5c58 Merge pull request #1189 from CatimaLoyalty/sdk/33
Update targetSdk to 33
2023-01-25 22:57:34 +01:00
Sylvia van Os 4b25b7ad39 Update targetSdk to 33 2023-01-25 19:59:08 +01:00
Sylvia van Os 4016d5499b Merge pull request #1188 from CatimaLoyalty/sdk/32
Update targetSdk to 32
2023-01-25 19:40:53 +01:00
Sylvia van Os d8b96a8c5f Update targetSdk to 32 2023-01-25 19:36:09 +01:00
Sylvia van Os 614753303f Fix crash when permissionRequestResult gets cancelled 2023-01-25 18:30:47 +01:00
Sylvia van Os 50a344b97f Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-01-25 18:23:54 +01:00
Sylvia van Os 2cd6da6ffc Fix crash on invalid import URI 2023-01-25 18:13:58 +01:00
Sylvia van Os c03fba133f Merge pull request #1187 from CatimaLoyalty/create-pull-request/patch-1674662809
Update Fastlane changelogs
2023-01-25 17:32:55 +01:00
TheLastProject f3cba588f6 Update Fastlane changelogs 2023-01-25 16:06:48 +00:00
Sylvia van Os ad364ad0ac Merge branch 'main' of github.com:TheLastProject/loyalty-card-locker 2023-01-25 17:06:19 +01:00
Sylvia van Os f4cff85d93 Document permission change 2023-01-25 17:06:08 +01:00
Sylvia van Os cbc86ff131 Merge pull request #1185 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-24 23:31:38 +01:00
Sylvia van Os 5f733474a9 Merge pull request #1186 from CatimaLoyalty/fix/permissionRefactor
Refactor permission code
2023-01-24 23:28:38 +01:00
Sylvia van Os 89a13cecf5 Create extra result function to work around onPermissionResult not existing on Android 5 2023-01-24 23:14:57 +01:00
Sylvia van Os fd2400eaf5 Refactor permission code
- Remove write permission (was never needed)
- Only use read permission for Android 5 and 6
- Simplify logic by mocking a valid permission result if permission
  already granted
2023-01-24 20:44:17 +01:00
Sylvia van Os 9598f2f4ff Translated using Weblate (Slovenian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-01-24 07:53:22 +01:00
IllusiveMan196 acca53787c Translated using Weblate (Ukrainian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2023-01-23 02:12:44 +01:00
HudobniVolk 060e360344 Translated using Weblate (Slovenian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-01-23 02:12:44 +01:00
Sylvia van Os 9ef014e05c Fix main rename breaking github scripts 2023-01-22 13:12:25 +01:00
Sylvia van Os 4cb27d3bd5 Merge pull request #1182 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-20 17:00:24 +01:00
stone wow 95e21cc112 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2023-01-20 16:09:32 +01:00
Sylvia van Os d5f915a290 Merge pull request #1181 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-18 22:03:04 +01:00
HudobniVolk 42e89bb5cc Translated using Weblate (Slovenian)
Currently translated at 19.2% (22 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-01-18 21:51:11 +01:00
Sylvia van Os 048fb48300 Fix reproducible build script 2023-01-16 20:32:42 +01:00
Sylvia van Os b1c82dbae0 Merge pull request #1159 from CatimaLoyalty/feature/rb
Add script to build reproducibly
2023-01-16 19:48:56 +01:00
Sylvia van Os ea8c6f96f7 Merge pull request #1180 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-16 19:05:26 +01:00
HudobniVolk 201ec78694 Translated using Weblate (Slovenian)
Currently translated at 7.0% (8 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sl/
2023-01-16 18:53:07 +01:00
Dan 05a03455c1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2023-01-16 18:53:07 +01:00
HudobniVolk 63f4cbb8ca Translated using Weblate (Slovenian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2023-01-16 18:53:07 +01:00
Sylvia van Os a444607476 Merge pull request #1178 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-14 23:58:58 +01:00
Giovanni Donisi 89102ad0bf Translated using Weblate (Italian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2023-01-14 23:12:40 +01:00
Sylvia van Os d2623b8690 Merge pull request #1177 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-13 23:08:03 +01:00
Jiri Grönroos 80ddd48184 Translated using Weblate (Finnish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-01-13 18:50:22 +01:00
Sylvia van Os 410a619a70 Merge pull request #1175 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-08 12:04:45 +01:00
Jiri Grönroos 1771f42860 Translated using Weblate (Finnish)
Currently translated at 95.9% (263 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2023-01-08 11:51:01 +01:00
Sylvia van Os 1e7af7ab4e Merge pull request #1174 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2023-01-06 13:59:27 +01:00
Piotr Strebski f4c5af04e3 Translated using Weblate (Polish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2023-01-06 13:51:24 +01:00
Sylvia van Os 5bcd2cdc32 Merge pull request #1171 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.9.2
Bump robolectric from 4.9.1 to 4.9.2
2022-12-28 06:48:50 +00:00
dependabot[bot] c69a5ae4d2 Bump robolectric from 4.9.1 to 4.9.2
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.9.1 to 4.9.2.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.9.1...robolectric-4.9.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>
2022-12-28 02:04:26 +00:00
Sylvia van Os 6bd750a60b Add script to build reproducibly 2022-12-22 22:57:55 +01:00
Sylvia van Os 8d77cc3565 Merge pull request #1169 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.9.1
Bump robolectric from 4.9 to 4.9.1
2022-12-21 12:25:35 +00:00
Sylvia van Os 7a99e0056d Merge pull request #1170 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-20 22:14:48 +00:00
Shailendra Maurya 03e07bc48d Translated using Weblate (Hindi)
Currently translated at 61.6% (169 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2022-12-20 22:43:29 +01:00
dependabot[bot] 460d6c2b71 Bump robolectric from 4.9 to 4.9.1
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.9 to 4.9.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.9...robolectric-4.9.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>
2022-12-20 02:04:38 +00:00
Sylvia van Os 9f946094db Merge pull request #1168 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-18 21:06:09 +00:00
wmilan 17 4e92f82176 Translated using Weblate (Hungarian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2022-12-18 21:48:04 +01:00
Sylvia van Os 7b905ac120 Translated using Weblate (English)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-12-17 11:46:57 +01:00
Tomasz Cukier 55c5ec929c Translated using Weblate (English)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-12-17 11:46:57 +01:00
Sylvia van Os 5441231f03 Merge pull request #1165 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-14 22:55:09 +01:00
ssantos 1818d24bc0 Translated using Weblate (Portuguese)
Currently translated at 100.0% (114 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2022-12-14 22:50:15 +01:00
Sylvia van Os ca88c070c3 Merge pull request #1163 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-13 23:19:14 +01:00
gallegonovato 1be387c4ec Translated using Weblate (Spanish)
Currently translated at 11.4% (13 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-12-13 20:50:09 +01:00
Sylvia van Os fa3a956d69 Merge pull request #1162 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-12 17:07:13 +01:00
gallegonovato 8fd244e3a3 Translated using Weblate (Spanish)
Currently translated at 8.7% (10 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-12-12 15:51:47 +01:00
Sylvia van Os a0e2fe11dd Merge pull request #1160 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-11 15:50:06 +01:00
gallegonovato 893f34e72a Translated using Weblate (Spanish)
Currently translated at 7.0% (8 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-12-11 14:49:57 +01:00
Sylvia van Os cf13a9fc60 Merge pull request #1158 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-09 22:00:23 +01:00
IllusiveMan196 c6e6d96313 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (114 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-12-09 21:50:03 +01:00
Sylvia van Os 20ed9cac88 Update Google Play badge
See https://github.com/cvzi/play
2022-12-06 19:34:51 +01:00
Sylvia van Os ae6bd937a9 Move to main 2022-12-06 19:33:04 +01:00
Sylvia van Os e4b69e5cc5 Release Catima 2.21.1 2022-12-06 19:13:02 +01:00
Sylvia van Os 5b1062b8d1 Merge pull request #1155 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-06 18:41:27 +01:00
Slávek Banko e06009852e Translated using Weblate (Czech)
Currently translated at 100.0% (114 of 114 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-12-06 18:35:01 +01:00
Sylvia van Os 50268f6bd1 Merge pull request #1154 from CatimaLoyalty/create-pull-request/patch-1670271647
Update Fastlane changelogs
2022-12-05 21:21:13 +01:00
TheLastProject a85e28d46d Update Fastlane changelogs 2022-12-05 20:20:47 +00:00
Sylvia van Os 78b6be911f Merge pull request #1153 from CatimaLoyalty/fix/localeQuickSpend
Fix/locale quick spend
2022-12-05 21:20:32 +01:00
Sylvia van Os bb80478650 Update CHANGELOG 2022-12-05 21:14:07 +01:00
Sylvia van Os e0c06cc480 Fix locale separator in quick spend dialog 2022-12-05 21:14:00 +01:00
Sylvia van Os b8a508649c Merge pull request #1151 from CatimaLoyalty/create-pull-request/patch-1670133932
Update contributors
2022-12-04 09:38:51 +01:00
TheLastProject a8ce37d936 Update contributors 2022-12-04 06:05:31 +00:00
Sylvia van Os 43015abbad Merge pull request #1147 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-12-02 08:09:44 +01:00
Mario M. Viscovich 47c8dff52d Translated using Weblate (Croatian)
Currently translated at 38.3% (105 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2022-12-02 03:47:15 +01:00
Sylvia van Os 436cf7a068 Merge pull request #1146 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-29 20:53:31 +01:00
IllusiveMan196 31cc3cd5d0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-11-29 20:47:20 +01:00
gallegonovato 3c11c2ef1e Translated using Weblate (Spanish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-11-29 20:47:15 +01:00
Sylvia van Os fac70f0210 Merge pull request #1145 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-28 07:41:24 +01:00
IllusiveMan196 6e99a29312 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-11-28 02:49:19 +01:00
IllusiveMan196 5b67ecf157 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-11-28 02:49:19 +01:00
Sylvia van Os 312470cf20 Merge pull request #1144 from CatimaLoyalty/create-pull-request/patch-1669529773
Update contributors
2022-11-27 09:34:00 +01:00
TheLastProject 4371f46ff8 Update contributors 2022-11-27 06:16:12 +00:00
Sylvia van Os 5468415b04 Merge pull request #1143 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-26 16:40:26 +01:00
CherryMonster222 6a68ad5d19 Translated using Weblate (Arabic)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2022-11-26 15:48:38 +01:00
IllusiveMan196 7576505044 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-11-26 15:48:38 +01:00
Sylvia van Os b34a43902a Merge pull request #1141 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-24 18:34:31 +01:00
안재범 d3524a50a3 Translated using Weblate (Korean)
Currently translated at 38.6% (106 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2022-11-24 16:46:55 +01:00
Sylvia van Os 6508a6d5f7 Merge pull request #1116 from pfaffenrodt/feature/pick-image-file
Add support to pick image from content provider
2022-11-22 19:04:48 +01:00
Sylvia van Os 49a6cf8ae3 Merge pull request #1140 from CatimaLoyalty/create-pull-request/patch-1668925172
Update contributors
2022-11-20 10:21:12 +01:00
TheLastProject b4238e0072 Update contributors 2022-11-20 06:19:31 +00:00
Sylvia van Os 374170bf05 Merge pull request #1139 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-19 23:17:41 +01:00
Jacek ab11345c3d Translated using Weblate (Polish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-11-19 21:47:02 +01:00
Sylvia van Os 10498ce1a4 Prevent NullPointerException in onBackPressed
This crash seems to somehow only happen on Huawei and Xiaomi devices.
While fairly rare, it is the most common Catima crash currently logged
on Google Play Console (8 crashes over the last 28 days).

While I don't understand how this would happen, I think it should be
relatively safe to assume that if the searchview is null the user isn't
currently searching so running the normal back code should always be the
expected behaviour.
2022-11-16 21:42:52 +01:00
Sylvia van Os 28901487ff Merge pull request #1138 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-15 23:17:53 +01:00
Sylvia van Os 8414f51ee8 Translated using Weblate (Polish)
Currently translated at 39.8% (45 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-11-15 21:48:36 +01:00
Slávek Banko 94f8adb6d7 Translated using Weblate (Czech)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-11-15 21:48:35 +01:00
Sylvia van Os 844a921a1a Merge pull request #1134 from CatimaLoyalty/create-pull-request/patch-1668320636
Update contributors
2022-11-14 19:47:10 +01:00
Sylvia van Os ae8be3eda8 Merge pull request #1135 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-14 06:27:25 +01:00
gallegonovato c4c15dbef8 Translated using Weblate (Spanish)
Currently translated at 3.5% (4 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-11-13 23:48:54 +01:00
Evgeniy Khramov ac72035500 Translated using Weblate (Russian)
Currently translated at 32.7% (37 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2022-11-13 23:48:54 +01:00
Freddo espresso abff3bcd39 Translated using Weblate (Greek)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2022-11-13 23:48:54 +01:00
TheLastProject 05aea28602 Update contributors 2022-11-13 06:23:55 +00:00
Sylvia van Os e4c4dbf5a0 Merge pull request #1133 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-11 23:02:41 +01:00
Sylvia van Os bb2393b6c6 Translated using Weblate (Polish)
Currently translated at 99.2% (272 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-11-11 22:49:16 +01:00
Gediminas Murauskas fb330d16b5 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-11-11 22:49:16 +01:00
Slávek Banko c8f1b986ec Translated using Weblate (Czech)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-11-11 22:49:15 +01:00
Євгеній Нешта 49a2c93d28 Translated using Weblate (Ukrainian)
Currently translated at 99.1% (112 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-11-09 20:48:23 +01:00
Євгеній Нешта 0992ac4099 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-11-09 20:48:23 +01:00
truestorybaby 9ff29af616 Translated using Weblate (Polish)
Currently translated at 99.2% (272 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-11-09 20:48:23 +01:00
Sylvia van Os fbc696047b Merge pull request #1124 from CatimaLoyalty/dependabot/gradle/com.google.zxing-core-3.5.1
Bump core from 3.5.0 to 3.5.1
2022-11-06 11:21:30 +01:00
Sylvia van Os 08a4d4b114 Release Catima 2.21.0 2022-11-06 11:16:07 +01:00
Sylvia van Os 329056301b Add Hindi to language picker 2022-11-06 10:53:39 +01:00
Sylvia van Os fac8da69e7 Merge pull request #1127 from CatimaLoyalty/create-pull-request/patch-1667715884
Update contributors
2022-11-06 08:33:33 +01:00
TheLastProject fad9eed43e Update contributors 2022-11-06 06:24:44 +00:00
Sylvia van Os 58a18bdd7b Merge pull request #1126 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-05 11:35:49 +01:00
Eric 90cb524560 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-11-05 11:05:28 +01:00
Sylvia van Os ef4c57ce29 Merge pull request #1125 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-11-04 08:21:51 +01:00
Jean Mareilles 8872fad73e Translated using Weblate (French)
Currently translated at 99.1% (112 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-11-04 06:12:38 +01:00
dependabot[bot] 63c3330571 Bump core from 3.5.0 to 3.5.1
Bumps [core](https://github.com/zxing/zxing) from 3.5.0 to 3.5.1.
- [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.0...zxing-3.5.1)

---
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>
2022-11-03 02:03:03 +00:00
Sylvia van Os 37d1bb9477 Merge pull request #1118 from pfaffenrodt/feature/clean-about
Cleaning code in about page
2022-11-01 22:00:55 +01:00
Pfaffenrodt 8a67d1d02b Rename open to openBrowser 2022-11-01 10:52:11 +01:00
Pfaffenrodt 6f777068ab Remove map from id to link. make link handler more solid 2022-10-30 21:04:35 +01:00
Sylvia van Os 8607e1c23c Merge pull request #1120 from CatimaLoyalty/create-pull-request/patch-1667112218
Update contributors
2022-10-30 11:17:13 +01:00
Sylvia van Os 04a319066c Merge pull request #1119 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-30 11:02:06 +01:00
Sylvia van Os 39f89ca943 Also replace "smart quotes" in broken translation 2022-10-30 10:33:03 +01:00
Sylvia van Os 1092d7a9ba Fix broken translation 2022-10-30 10:29:30 +01:00
TheLastProject b54052182d Update contributors 2022-10-30 06:43:37 +00:00
SC b971c392cf Translated using Weblate (Portuguese)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2022-10-29 21:01:09 +02:00
SC cec9306387 Translated using Weblate (Portuguese)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-10-29 21:01:09 +02:00
元气 f6a5cbbf80 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-10-29 21:01:09 +02:00
pfaffenrodt 4b55c414f3 Fix spacings in custom view of alert dialogs (#1117) 2022-10-29 15:12:45 +02:00
Pfaffenrodt 1aafcdc6ae Revert to reading file. Missing encoding 2022-10-29 14:44:02 +02:00
Pfaffenrodt 332e37b2eb Extract page title to about content 2022-10-29 14:19:36 +02:00
Pfaffenrodt dff33d3bab Simplify reading contributors file 2022-10-29 14:19:36 +02:00
Pfaffenrodt 85ddc9689c Extract common html link of third party info 2022-10-29 14:19:36 +02:00
Pfaffenrodt d91c207b60 Extract last about content 2022-10-29 14:19:36 +02:00
Pfaffenrodt 653606fae3 Extract show credits dialog. remove empty listener 2022-10-29 14:19:36 +02:00
Pfaffenrodt f5a0c8f375 Extract about content 2022-10-29 14:19:36 +02:00
Pfaffenrodt c71019951c Extract open link handler 2022-10-29 14:19:36 +02:00
Pfaffenrodt ed7b79ce17 Refactor AboutActivity to avoid leaks that hold activity as reference 2022-10-29 14:19:36 +02:00
Pfaffenrodt 08cfb490d4 Remove redundant title
setTitle was called twice
2022-10-29 14:19:36 +02:00
Pfaffenrodt 7d284a85bc Extract about content from onCreate 2022-10-29 14:19:36 +02:00
Pfaffenrodt 77ef0a2833 Extract same logic to enable back button of toolbar
ManageGroupActivity setDisplayShowHomeEnabled was redundant
2022-10-29 14:19:34 +02:00
Pfaffenrodt 80130654ec Remove unused field properties 2022-10-29 14:18:50 +02:00
Pfaffenrodt e97f7c8645 Add support to pick image from content provider 2022-10-28 23:46:40 +02:00
Sylvia van Os e489ff6a22 Merge pull request #1115 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-28 17:31:58 +02:00
Jean-Luc Tibaux de549d724c Translated using Weblate (German)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-10-28 09:05:42 +02:00
Sylvia van Os 5fb2dbd252 Merge pull request #1111 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-26 18:04:56 +02:00
Yusril A 20013cf7b7 Translated using Weblate (Indonesian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2022-10-26 08:04:56 +02:00
J. Lavoie 78c3146c78 Translated using Weblate (French)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-10-26 08:04:56 +02:00
J. Lavoie ddd7bb9968 Translated using Weblate (German)
Currently translated at 98.9% (271 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-10-26 08:04:56 +02:00
Tong Liu 68935f1489 Closes #1092 - Fixed contents cut off on smaller screen issue. (#1095) 2022-10-25 19:38:02 +02:00
Sylvia van Os d9a25e1eb9 Merge pull request #1108 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-24 20:54:17 +02:00
Oğuz Ersen 73a837bab5 Translated using Weblate (Turkish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-10-24 20:42:31 +02:00
109247019824 03be45f5a2 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-10-24 20:42:31 +02:00
Eric 692adafd8e Translated using Weblate (Chinese (Simplified))
Currently translated at 97.0% (266 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-10-24 20:42:31 +02:00
Slávek Banko 4ff9eb5219 Translated using Weblate (Czech)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-10-24 20:42:31 +02:00
solokot 286e9fa315 Translated using Weblate (Russian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-10-24 20:42:31 +02:00
Heimen Stoffels e0b6773d2a Translated using Weblate (Dutch)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-10-24 20:42:31 +02:00
Allan Nordhøy a7cb8a51a3 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.0% (266 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-10-24 20:42:31 +02:00
Gediminas Murauskas 56c7ffa4df Translated using Weblate (Lithuanian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-10-24 20:42:31 +02:00
Michael Moroni 1498f902c2 Translated using Weblate (Italian)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-10-24 20:42:31 +02:00
gallegonovato eea0dd9081 Translated using Weblate (Spanish)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-10-24 20:42:31 +02:00
Slávek Banko 1a8c8c07aa Translated using Weblate (Czech)
Currently translated at 100.0% (274 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-10-24 20:42:31 +02:00
Allan Nordhøy 3901172757 Translated using Weblate (English)
Currently translated at 99.2% (272 of 274 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-10-24 20:42:31 +02:00
Sylvia van Os 3c9507cb7f Merge pull request #1107 from vanogrid/fix/expiryFieldTextRemainingRed
Fix Expiry field text remaining red after the card is no longer expired
2022-10-24 19:13:53 +02:00
Alexander Ivanov bfc38807c8 Fix Expiry field text remaining red after the card is no longer expired
Signed-off-by: Alexander Ivanov <vanogrid@gmail.com>
2022-10-24 02:14:43 +03:00
Sylvia van Os 6dc3a28026 Merge pull request #1105 from CatimaLoyalty/create-pull-request/patch-1666508787
Update contributors
2022-10-23 11:58:29 +02:00
Sylvia van Os eeb507f04e Merge pull request #1104 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-23 11:58:08 +02:00
Sylvia van Os 2746547194 Merge pull request #1103 from vanogrid/fix/storingDateAt12pm
Fix DatePickerDialog sometimes storing dates at 12 PM instead of 12 AM
2022-10-23 11:55:25 +02:00
TheLastProject c9a8e81047 Update contributors 2022-10-23 07:06:27 +00:00
huang ivan d87b8ddd4b Translated using Weblate (Chinese (Simplified))
Currently translated at 97.0% (265 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-10-23 06:00:18 +02:00
Alexander Ivanov 7dfa7071e3 Fix DatePickerDialog sometimes storing dates at 12:00 PM instead of 12:00 AM 2022-10-22 20:46:22 +03:00
Sylvia van Os 92f0091b1d Merge pull request #1086 from recursiveribbons/refactor-importer
Refactor Importer to not read entire file as String
2022-10-22 18:13:38 +02:00
Tomer Ben-Rachel 54d8f30bf1 Offer import when users click on supported import files (#1096) 2022-10-22 12:13:06 +02:00
f7ef13d594 Merge #1101
1101: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Mindaugas <mindaugasjurgelenas1997@gmail.com>
Co-authored-by: Angela Enogieru <angys1may@gmail.com>
Co-authored-by: SKULD <ala20031028@163.com>
Co-authored-by: AnimeshChatterjee1 <animesh.chatterjee02@gmail.com>
Co-authored-by: Rishi Agarwal <rishiagarwal130903@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-10-21 18:02:41 +00:00
Rishi Agarwal 2a1157256b Translated using Weblate (Hindi)
Currently translated at 54.5% (149 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2022-10-21 19:57:29 +02:00
Sylvia van Os 213ef5060f Translated using Weblate (Slovak)
Currently translated at 74.7% (204 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2022-10-21 19:57:28 +02:00
Gediminas Murauskas bc24e263b9 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-10-21 19:57:28 +02:00
Gediminas Murauskas 8da70c41b2 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-10-21 16:36:01 +02:00
Rishi Agarwal 4d81846fe0 Translated using Weblate (Hindi)
Currently translated at 44.3% (121 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2022-10-21 16:36:01 +02:00
AnimeshChatterjee1 2afdedd0b6 Translated using Weblate (Hindi)
Currently translated at 44.3% (121 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2022-10-21 16:36:01 +02:00
SKULD 8d944cbb24 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.0% (265 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-10-21 16:36:01 +02:00
Angela Enogieru 3ffec94b47 Translated using Weblate (Slovak)
Currently translated at 75.0% (205 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2022-10-21 16:36:01 +02:00
Mindaugas 9176dc98ee Translated using Weblate (Lithuanian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-10-21 16:36:01 +02:00
Gediminas Murauskas 9881854d13 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-10-21 16:36:01 +02:00
J. Lavoie 2e4d1fa448 Translated using Weblate (Italian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-10-21 16:36:01 +02:00
J. Lavoie 97ca1440b0 Translated using Weblate (French)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-10-21 16:36:01 +02:00
J. Lavoie a4688c4450 Translated using Weblate (German)
Currently translated at 98.9% (270 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-10-21 16:36:01 +02:00
Sylvia van Os a7ae2a333a Merge pull request #1100 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-20 19:03:44 +02:00
Laura Ferraz 823e99bd90 Translated using Weblate (Portuguese)
Currently translated at 97.8% (267 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-10-20 16:06:34 +02:00
Oğuz Ersen e32fccc694 Translated using Weblate (Turkish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-10-20 16:06:34 +02:00
109247019824 dd568ab51d Translated using Weblate (Bulgarian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-10-20 16:06:34 +02:00
Max 17f55e577b Translated using Weblate (Polish)
Currently translated at 39.8% (45 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-10-20 16:06:33 +02:00
solokot 3f77223e65 Translated using Weblate (Russian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-10-20 16:06:33 +02:00
Max 28aad933c5 Translated using Weblate (Polish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-10-20 16:06:33 +02:00
Heimen Stoffels 52ca8396db Translated using Weblate (Dutch)
Currently translated at 99.6% (272 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-10-20 16:06:33 +02:00
Michael Moroni bc941544ae Translated using Weblate (Italian)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-10-20 16:06:33 +02:00
gallegonovato e3c3b176eb Translated using Weblate (Spanish)
Currently translated at 100.0% (273 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-10-20 16:06:33 +02:00
Max 3b0b92b954 Translated using Weblate (English)
Currently translated at 99.2% (271 of 273 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-10-20 16:06:33 +02:00
diksha-2911 bfcae03420 Translated using Weblate (Hindi)
Currently translated at 34.9% (93 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2022-10-20 16:06:33 +02:00
Md. Al-Amin ad4db1ef37 Translated using Weblate (Bengali)
Currently translated at 33.4% (89 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2022-10-20 16:06:33 +02:00
Ágata Leuck fa1a7fd2f1 Translated using Weblate (Portuguese)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2022-10-20 16:06:33 +02:00
Gediminas Murauskas 7eac08d0a1 Translated using Weblate (Lithuanian)
Currently translated at 80.0% (213 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-10-20 16:06:33 +02:00
Ágata Leuck dab984b0d4 Translated using Weblate (Portuguese)
Currently translated at 95.5% (108 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2022-10-20 16:06:33 +02:00
Arnis Jaundzeikars 66361dede2 Translated using Weblate (Latvian)
Currently translated at 1.7% (2 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lv/
2022-10-20 16:06:33 +02:00
Arnis Jaundzeikars 628c62fd4b Translated using Weblate (Latvian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2022-10-20 16:06:33 +02:00
Nicolas 84a7e95856 Translated using Weblate (French)
Currently translated at 99.1% (112 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-10-20 16:06:33 +02:00
Sylvia van Os fc256d2c4a Merge pull request #1097 from pfaffenrodt/feature/security-maven-repos
Add limitation for jitpack maven repository
2022-10-19 18:34:57 +02:00
Pfaffenrodt 7f81ceeb7e Add limitation for jitpack maven repository 2022-10-18 21:11:50 +02:00
Tong Liu 3179644fbc Issue #1084 - adding text for permission denial. (#1085) 2022-10-16 19:58:29 +02:00
Sylvia van Os 274a58bcb0 Merge pull request #1093 from CatimaLoyalty/create-pull-request/patch-1665923209
Update Fastlane changelogs
2022-10-16 14:27:21 +02:00
TheLastProject dc7f42b0b6 Update Fastlane changelogs 2022-10-16 12:26:48 +00:00
Sylvia van Os f859627d7f Document quick spend feature 2022-10-16 14:26:34 +02:00
polarhun ccf12bf028 #1044 - Automatic Balance Update (#1073) 2022-10-16 14:25:26 +02:00
Sylvia van Os c34e2fdd70 Merge pull request #1091 from CatimaLoyalty/fix/crashCancelScanActivity
Fix crash on cancelling ScanActivity
2022-10-16 11:41:58 +02:00
Sylvia van Os ea482c6fad Fix crash on cancelling ScanActivity
Introduced in https://github.com/CatimaLoyalty/Android/pull/1078
2022-10-16 11:07:40 +02:00
Sylvia van Os 54f223b5b0 Merge pull request #1090 from CatimaLoyalty/create-pull-request/patch-1665903989
Update contributors
2022-10-16 10:12:22 +02:00
TheLastProject 74e083bb62 Update contributors 2022-10-16 07:06:28 +00:00
Robin Syl a9c36cd171 A more reliable and customizable method to parse version from an import file 2022-10-15 20:06:49 +02:00
Sylvia van Os 876b0beb2f Merge pull request #1088 from CatimaLoyalty/fix/cursorAdapterDRY
Reduce repeated code in LoyaltyCardCursorAdapter
2022-10-15 14:40:38 +02:00
Sylvia van Os 1f73beb895 Reduce repeated code in LoyaltyCardCursorAdapter
This also more explicitly sets the text colour to prevent RecyclerView
state bugs
2022-10-15 14:30:42 +02:00
Sylvia van Os b13aaacdff Merge pull request #1087 from CatimaLoyalty/create-pull-request/patch-1665820428
Update Fastlane changelogs
2022-10-15 09:54:07 +02:00
TheLastProject ba67c122fa Update Fastlane changelogs 2022-10-15 07:53:48 +00:00
Sylvia van Os f16550aa9c Document new share intenet receiver in changelog 2022-10-15 09:53:28 +02:00
Robin Syl ba57fbbf85 Close inputstream in importData 2022-10-14 21:36:02 +02:00
Simon Rusinov ebedb43e72 issue-614 add receiver for share intent (#1078) 2022-10-14 21:33:59 +02:00
Robin Syl c10f859919 Refactor Importer to not read entire file as String 2022-10-14 16:56:35 +02:00
Sylvia van Os 8e6e83dfc6 Merge pull request #1080 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-10 21:36:16 +02:00
Jen Kung-chih 326379d222 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.6% (265 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2022-10-10 20:07:48 +02:00
Sylvia van Os 105e85cc63 Translated using Weblate (Spanish)
Currently translated at 2.6% (3 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-10-10 20:07:48 +02:00
Sylvia van Os e21dbc85e8 Translated using Weblate (Romanian)
Currently translated at 2.6% (3 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2022-10-10 20:07:47 +02:00
Simon Rusinov 78348a6f9c issue-1054 handle all deprecation warnings (#1072) 2022-10-10 18:28:35 +02:00
Sneakyturtle22 f98b98b4f3 Translated using Weblate (Hindi)
Currently translated at 27.4% (73 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hi/
2022-10-10 15:24:11 +02:00
Arnis Jaundzeikars d362305a25 Translated using Weblate (Latvian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2022-10-10 15:24:11 +02:00
Sylvia van Os 623cfc671c Translated using Weblate (Indonesian)
Currently translated at 17.6% (20 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2022-10-10 15:24:11 +02:00
Magnitudee 456e2112b8 Translated using Weblate (Indonesian)
Currently translated at 98.8% (263 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2022-10-10 15:24:11 +02:00
gallegonovato af2fbd1ce3 Translated using Weblate (Spanish)
Currently translated at 2.6% (3 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-10-10 15:24:11 +02:00
Sylvia van Os 91211f07cb Translated using Weblate (Polish)
Currently translated at 36.2% (41 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-10-10 15:24:11 +02:00
BootVirtual 9c183e84dd Translated using Weblate (Romanian)
Currently translated at 2.6% (3 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ro/
2022-10-10 15:24:11 +02:00
Thomas Cruveilher 5e3cebf4a1 Translated using Weblate (French)
Currently translated at 63.7% (72 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-10-10 15:24:11 +02:00
Piotr Zet 9437d23e6e Translated using Weblate (Polish)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-10-10 15:24:11 +02:00
Sneakyturtle22 925a66a12a Added translation using Weblate (Hindi) 2022-10-10 15:24:11 +02:00
gallegonovato 5db8af72a1 Translated using Weblate (Spanish)
Currently translated at 2.6% (3 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-10-10 15:24:11 +02:00
Mawuena M. KODZO A 2b605eb193 Translated using Weblate (French)
Currently translated at 44.2% (50 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-10-10 15:24:11 +02:00
BootVirtual f16d10995c Translated using Weblate (Romanian)
Currently translated at 51.1% (136 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2022-10-10 15:24:11 +02:00
Sylvia van Os 3ef17404b7 Merge pull request #1077 from CatimaLoyalty/fix/groupNameValidation
Improve group name validation flow
2022-10-09 17:19:20 +02:00
Sylvia van Os 1316ac731c Improve group name validation flow 2022-10-09 16:45:54 +02:00
Sylvia van Os 6283a90217 Merge pull request #1075 from CatimaLoyalty/create-pull-request/patch-1665298778
Update contributors
2022-10-09 10:42:13 +02:00
TheLastProject 84e8857067 Update contributors 2022-10-09 06:59:37 +00:00
Sylvia van Os 05a53d7985 Add missing languages to language chooser 2022-10-07 19:41:35 +02:00
Sylvia van Os 94b13b7145 Merge pull request #1071 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-07 19:09:23 +02:00
Mohamed A. Salah 3e55a147c7 Translated using Weblate (Arabic)
Currently translated at 99.2% (264 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2022-10-07 17:20:03 +02:00
109247019824 f05ed2571f Translated using Weblate (Bulgarian)
Currently translated at 12.3% (14 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-10-07 17:20:03 +02:00
Sylvia van Os c1a37eb2a4 Translated using Weblate (Spanish)
Currently translated at 1.7% (2 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-10-07 17:20:02 +02:00
Katarzyna 4d8d863780 Translated using Weblate (Polish)
Currently translated at 36.2% (41 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-10-07 17:20:02 +02:00
Slávek Banko d56eec4ba9 Translated using Weblate (Czech)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-10-07 17:20:00 +02:00
Thomas Cruveilher a05356d0e1 Translated using Weblate (French)
Currently translated at 43.3% (49 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-10-07 17:19:56 +02:00
TenTraicion 4eea6f7f53 Translated using Weblate (Bengali)
Currently translated at 25.5% (68 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2022-10-06 22:43:18 +02:00
Tapu 24e19cc5f8 Translated using Weblate (Bengali)
Currently translated at 25.5% (68 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn/
2022-10-06 22:43:18 +02:00
gallegonovato cd7631451b Translated using Weblate (Spanish)
Currently translated at 1.7% (2 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2022-10-06 22:43:18 +02:00
이정희 d140130b0d Translated using Weblate (Korean)
Currently translated at 39.8% (106 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2022-10-06 22:43:18 +02:00
BMN f0453943da Translated using Weblate (German)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-10-06 22:43:18 +02:00
Mawuena M. KODZO A 42152ccbb5 Translated using Weblate (French)
Currently translated at 32.7% (37 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-10-06 22:43:18 +02:00
Mohamed A. Salah 27f8647243 Added translation using Weblate (Arabic (Najdi)) 2022-10-06 22:43:18 +02:00
Sylvia van Os b7d520ded6 Merge pull request #1069 from CatimaLoyalty/create-pull-request/patch-1665000141
Update Fastlane changelogs
2022-10-05 22:03:15 +02:00
TheLastProject 04088ff366 Update Fastlane changelogs 2022-10-05 20:02:21 +00:00
Sylvia van Os d4dcec1a9b Document switch to MaterialAlertDialog 2022-10-05 22:01:56 +02:00
Sylvia van Os c8306616e3 Merge pull request #1067 from theimpulson/alertDialogImprovements
Alert dialog improvements
2022-10-05 22:01:13 +02:00
Sylvia van Os b34bdebb5c Merge pull request #1068 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-05 10:42:25 +02:00
Lucas da Costa 9643cb9f94 Translated using Weblate (Portuguese)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-10-05 07:58:58 +02:00
Tapu 645b29226e Translated using Weblate (Bengali (India))
Currently translated at 48.8% (130 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bn_IN/
2022-10-05 07:58:58 +02:00
Tarik Dzambic c56faba922 Translated using Weblate (Bosnian)
Currently translated at 17.6% (20 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bs/
2022-10-05 07:58:58 +02:00
Tarik Dzambic 55a19eacc9 Translated using Weblate (Bosnian)
Currently translated at 53.3% (142 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bs/
2022-10-05 07:58:58 +02:00
Katarzyna 464a2350ae Translated using Weblate (Polish)
Currently translated at 36.2% (41 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-10-05 07:58:58 +02:00
Lisa c44f737c99 Translated using Weblate (Italian)
Currently translated at 57.5% (65 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-10-05 07:58:58 +02:00
Mawuena M. KODZO A a8794ce60c Translated using Weblate (French)
Currently translated at 25.6% (29 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-10-05 07:58:58 +02:00
gallegonovato 11329ba786 Translated using Weblate (Spanish)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-10-05 07:58:58 +02:00
Tapu e568bd1af9 Added translation using Weblate (Bengali) 2022-10-05 07:58:58 +02:00
Aayush Gupta b3fbfdbf9d ManageGroupsActivity: Add spacing between EditText and AlertDialog bounds
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 11:04:40 +05:30
Aayush Gupta aec4292203 Catima: Migrate to MaterialAlertDialogBuilder everywhere
This follows Material theme and looks much better compared to AlertDialog

Ref: https://developer.android.com/reference/com/google/android/material/dialog/MaterialAlertDialogBuilder

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 10:37:03 +05:30
Sylvia van Os 82733ca414 Merge pull request #1053 from theimpulson/gradle-improvements
Misc Gradle improvements
2022-10-04 21:03:31 +02:00
Aayush Gupta 887424af80 spotbugs: Exclude gradle generated view binding classes
Spot bugs complains about EI_EXPOSE_REP and BC_UNCONFIRMED_CAST bugs in these
classes but they are being generated by Gradle and are out of our control if
we want to use view binding to interact with the views.

Ref: https://developer.android.com/topic/libraries/view-binding

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 00:20:31 +05:30
Aayush Gupta f63a25f582 gradle: Move lint params to specific config
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 00:20:31 +05:30
Aayush Gupta 635ec748b3 Catima: Migrate to view binding
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 00:20:31 +05:30
Aayush Gupta fa510e3ffa gradle: Switch to new Int only SDK version properties
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 00:20:31 +05:30
Aayush Gupta 24a5efd5f8 gradle: Migrate to new plugins and dependency management system
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 00:20:31 +05:30
Aayush Gupta 547dd55240 gradle: Drop buildToolsVersion
Not required as the latest one is always used

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2022-10-05 00:20:31 +05:30
bors[bot]andSylvia van Os 774705d9ad Merge #1065
1065: Remove CodeQL r=TheLastProject a=TheLastProject

It's getting in the way of #1053 and in a year of usage has not once given any type of alert

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-10-04 18:40:08 +00:00
Sylvia van Os 3d756e271c Remove CodeQL
It's getting in the way of #1053 and in a year of usage has not once given any type of alert
2022-10-04 20:39:39 +02:00
Sylvia van Os 2da9a9c1a8 Merge pull request #1064 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-03 22:05:32 +02:00
Lisa cd67d3c919 Translated using Weblate (Italian)
Currently translated at 18.5% (21 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-10-03 19:48:19 +02:00
Aya Elsaadany c080fdb244 Translated using Weblate (Arabic)
Currently translated at 99.2% (264 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2022-10-03 19:48:19 +02:00
Arnis Jaundzeikars 9ee61812b8 Translated using Weblate (Latvian)
Currently translated at 94.7% (252 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2022-10-03 19:48:19 +02:00
Oğuz Ersen bccf0a656b Translated using Weblate (Turkish)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-10-03 19:48:19 +02:00
109247019824 47ca66e9c7 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-10-03 19:48:19 +02:00
Eric 972315ad00 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.8% (263 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-10-03 19:48:19 +02:00
Katarzyna 0aa8b63c0c Translated using Weblate (Polish)
Currently translated at 15.9% (18 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-10-03 19:48:18 +02:00
Slávek Banko e77cf403eb Translated using Weblate (Czech)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-10-03 19:48:18 +02:00
Jacopo Gennaro Esposito df89ab29eb Translated using Weblate (Italian)
Currently translated at 17.6% (20 of 113 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-10-03 19:48:18 +02:00
IllusiveMan196 6c6829bfd5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-10-03 19:48:18 +02:00
solokot fa531dce81 Translated using Weblate (Russian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-10-03 19:48:18 +02:00
Katarzyna 61bc7ad24a Translated using Weblate (Polish)
Currently translated at 99.6% (265 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-10-03 19:48:18 +02:00
Heimen Stoffels ce0964e6a7 Translated using Weblate (Dutch)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-10-03 19:48:18 +02:00
Allan Nordhøy 4979ac9d34 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.7% (260 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-10-03 19:48:18 +02:00
Michael Moroni 912bcdf7f7 Translated using Weblate (Italian)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-10-03 19:48:18 +02:00
J. Lavoie 09174e646b Translated using Weblate (French)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-10-03 19:48:18 +02:00
J. Lavoie 0c729cb092 Translated using Weblate (German)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-10-03 19:48:18 +02:00
Slávek Banko 61faa4aa09 Translated using Weblate (Czech)
Currently translated at 100.0% (266 of 266 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-10-03 19:48:18 +02:00
Sylvia van Os 0e7a5428f6 Merge pull request #1062 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.9
Bump robolectric from 4.8.2 to 4.9
2022-10-03 18:18:38 +02:00
dependabot[bot] 8030eb52f3 Bump robolectric from 4.8.2 to 4.9
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.8.2 to 4.9.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.8.2...robolectric-4.9)

---
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>
2022-10-03 02:36:38 +00:00
Sylvia van Os 9fc315158f Name Weblate in CONTRIBUTING.md 2022-10-02 19:24:48 +02:00
Sylvia van Os 971f68b0a1 Merge pull request #1059 from CatimaLoyalty/create-pull-request/patch-1664690892
Update contributors
2022-10-02 10:10:22 +02:00
TheLastProject adfc17d5c2 Update contributors 2022-10-02 06:08:12 +00:00
Sylvia van Os 5ee2852e4c Merge pull request #1058 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-10-02 00:48:46 +02:00
J. Lavoie ea1d42fa35 Translated using Weblate (Finnish)
Currently translated at 98.1% (259 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2022-10-01 21:20:34 +02:00
Lisa f8b90f2c07 Translated using Weblate (Italian)
Currently translated at 16.9% (19 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-10-01 21:20:34 +02:00
J. Lavoie 6dc9821891 Translated using Weblate (French)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-10-01 21:20:34 +02:00
J. Lavoie 93a2e9cdbf Translated using Weblate (Spanish)
Currently translated at 99.6% (263 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-10-01 21:20:34 +02:00
Sylvia van Os 6a9d54d6f0 Merge pull request #1055 from CatimaLoyalty/create-pull-request/patch-1664626344
Update Fastlane changelogs
2022-10-01 14:13:08 +02:00
TheLastProject 28f0b407b5 Update Fastlane changelogs 2022-10-01 12:12:24 +00:00
Sylvia van Os 89ed31ffe0 Update CHANGELOG 2022-10-01 14:12:08 +02:00
Manan Jhaveri aa481ea094 View photos in gallery when Long Pressed (#1052)
* Open Native Image Viewer on long pressing a photo inside LoyaltyCardViewActivity

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.

Signed-off-by: Manan Jhaveri <incrediblemanan@gmail.com>
2022-10-01 14:11:15 +02:00
523aaef650 Merge #1051
1051: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: Tomer Ben Rachel <tomerpacific@gmail.com>
Co-authored-by: Evgeniy Khramov <thejenjagamertjg@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-10-01 09:50:55 +00:00
Sylvia van Os a56c4d449d Remove broken translation 2022-10-01 11:50:22 +02:00
Evgeniy Khramov 1468130477 Translated using Weblate (Russian)
Currently translated at 28.5% (32 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2022-09-28 21:16:13 +02:00
Tomer Ben Rachel 0b5571a065 Translated using Weblate (Hebrew (Israel))
Currently translated at 35.2% (93 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2022-09-28 21:16:13 +02:00
Sylvia van Os 002c221390 Merge pull request #1050 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-26 21:25:16 +02:00
Oğuz Ersen 2272c88d04 Translated using Weblate (English)
Currently translated at 98.8% (261 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-09-26 20:28:50 +02:00
Wanath 6a58bd632f Translated using Weblate (Korean)
Currently translated at 35.9% (95 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2022-09-26 20:28:50 +02:00
Wanath 027a7f798d Translated using Weblate (English)
Currently translated at 98.8% (261 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-09-26 20:28:50 +02:00
Sylvia van Os dd4ad6d860 Merge pull request #1048 from CatimaLoyalty/create-pull-request/patch-1664085704
Update contributors
2022-09-25 10:27:46 +02:00
TheLastProject 3342b8f83f Update contributors 2022-09-25 06:01:43 +00:00
Sylvia van Os 5951c74fc4 Merge pull request #1047 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-24 12:46:35 +02:00
Nate Higgers 2cae83c84f Translated using Weblate (Chinese (Traditional))
Currently translated at 93.1% (246 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2022-09-24 12:27:25 +02:00
Sylvia van Os 65ac1a2558 Release Catima 2.20.0 2022-09-21 18:54:19 +02:00
Sylvia van Os 6e064e1533 Merge pull request #1042 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-21 18:41:06 +02:00
Sylvia van Os 0d1c3051c8 Translated using Weblate (Ukrainian)
Currently translated at 97.3% (109 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-09-21 18:34:34 +02:00
Slávek Banko f2885cd96e Translated using Weblate (Czech)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-09-21 18:28:57 +02:00
michael ramirez 98de0a7acb Translated using Weblate (Spanish)
Currently translated at 72.7% (192 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-09-21 18:28:54 +02:00
mondstern 6622d0f4db Translated using Weblate (Ukrainian)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-09-20 19:22:31 +02:00
mondstern ccc269ab3e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-09-20 19:22:31 +02:00
mondstern 4008cc2349 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-09-20 19:22:31 +02:00
Sylvia van Os 02bb266762 Merge pull request #1039 from CatimaLoyalty/create-pull-request/patch-1663610798
Update Fastlane changelogs
2022-09-19 20:13:00 +02:00
TheLastProject 5e64400faf Update Fastlane changelogs 2022-09-19 18:06:37 +00:00
Sylvia van Os da2a444ae8 Merge pull request #1036 from CatimaLoyalty/undoArchiveText
Move Archive back into overflow menu
2022-09-19 20:06:23 +02:00
Sylvia van Os 1a22c27326 Move Archive back into overflow menu
While I much prefer the design introduced in
https://github.com/CatimaLoyalty/Android/pull/1009, it sadly caused a
serious performance regression
(https://github.com/CatimaLoyalty/Android/issues/1026).

This commit restores the old behaviour so that a new release isn't
blocked while this is figured out.
2022-09-19 19:49:07 +02:00
Sylvia van Os b5a7824179 Merge pull request #1035 from CatimaLoyalty/create-pull-request/patch-1663480209
Update contributors
2022-09-18 11:08:07 +02:00
TheLastProject 1f84aa9dc7 Update contributors 2022-09-18 05:50:08 +00:00
Sylvia van Os 942336e281 Merge pull request #1034 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-18 00:08:21 +02:00
Daniel Uhrinyi 27cda3a949 Translated using Weblate (Hungarian)
Currently translated at 98.8% (261 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2022-09-17 19:20:58 +02:00
Magnitudee 1d5d105f8a Translated using Weblate (Indonesian)
Currently translated at 18.7% (21 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2022-09-17 19:20:58 +02:00
Sylvia van Os 5c886d443f Merge pull request #1028 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-16 19:33:58 +02:00
Sylvia van Os aa306ad11d Remove wrong newline 2022-09-16 18:33:06 +02:00
Magnitudee d1cc0d9aac Translated using Weblate (Indonesian)
Currently translated at 3.5% (4 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2022-09-16 18:19:04 +02:00
Magnitudee f8e08f76b8 Translated using Weblate (Indonesian)
Currently translated at 95.4% (252 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2022-09-16 18:19:04 +02:00
tygyh 27c18fa5ff Translated using Weblate (Swedish)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2022-09-16 18:19:04 +02:00
Sylvia van Os 0017e767c9 Cleanups 2022-09-15 21:18:40 +02:00
Ashish Yadav 4d742dc9e4 Update used libraries in AboutActivity 2022-09-15 21:08:14 +02:00
Sylvia van Os 96245543e0 Merge pull request #1021 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-13 19:27:08 +02:00
SC 59767a7c7f Translated using Weblate (Portuguese)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-09-13 19:18:51 +02:00
Titas Pažereckas 8766bcbc71 Translated using Weblate (Lithuanian)
Currently translated at 78.0% (206 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2022-09-13 19:18:51 +02:00
Sylvia van Os 47e87736ca Merge pull request #1020 from CatimaLoyalty/dependabot/gradle/net.lingala.zip4j-zip4j-2.11.2
Bump zip4j from 2.11.1 to 2.11.2
2022-09-13 08:18:27 +02:00
dependabot[bot] f8af01de24 Bump zip4j from 2.11.1 to 2.11.2
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.11.1 to 2.11.2.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.11.1...v2.11.2)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-13 02:37:32 +00:00
Sylvia van Os 4b5a1f8009 Merge pull request #1018 from CatimaLoyalty/create-pull-request/patch-1662872854
Update contributors
2022-09-11 10:00:01 +02:00
TheLastProject e55773c8d3 Update contributors 2022-09-11 05:07:33 +00:00
Sylvia van Os e83671eee0 Merge pull request #1017 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-09 20:56:10 +02:00
Colgrave 8b04e36a88 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.6% (263 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-09-09 20:15:49 +02:00
Fede Pujol 76cd06904c Translated using Weblate (Spanish (Argentina))
Currently translated at 1.7% (2 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es_AR/
2022-09-09 20:15:49 +02:00
Slávek Banko cac7a60708 Translated using Weblate (Czech)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-09-09 20:15:49 +02:00
Michael Moroni aef1078e74 Translated using Weblate (Italian)
Currently translated at 16.9% (19 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-09-09 20:15:46 +02:00
Sylvia van Os 20c891ee28 Merge pull request #1014 from CatimaLoyalty/fix/alwaysUpdateLastUsed
Always update last used when creating or editing a card
2022-09-08 19:29:27 +02:00
Sylvia van Os 5bfca6e428 Always update last used when creating or editing a card 2022-09-08 19:27:31 +02:00
Sylvia van Os 5971e48ab6 Merge pull request #1015 from CatimaLoyalty/revert-1010-theme
Revert "[UI] Fix colors on navigationBarColor"
2022-09-07 21:20:18 +02:00
Sylvia van Os 427b4d64ed Revert "[UI] Fix colors on navigationBarColor (#1010)"
This reverts commit d0e80f76d6.
2022-09-07 21:18:40 +02:00
Sylvia van Os 41995b5bdd Merge pull request #1013 from CatimaLoyalty/create-pull-request/patch-1662572014
Update Fastlane changelogs
2022-09-07 19:57:37 +02:00
TheLastProject c74e372c76 Update Fastlane changelogs 2022-09-07 17:33:34 +00:00
Sylvia van Os e0650bc6f9 Ignore cards without card ID in Fidme import 2022-09-07 19:33:07 +02:00
Sylvia van Os 0de6a91bab Merge pull request #1012 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-07 17:11:41 +02:00
Oğuz Ersen 54b854eb64 Translated using Weblate (Turkish)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-09-07 15:38:17 +02:00
109247019824 47dd3a35ce Translated using Weblate (Bulgarian)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-09-07 15:38:17 +02:00
Slávek Banko d16f11d9b7 Translated using Weblate (Czech)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-09-07 15:38:17 +02:00
solokot ce190ba3f0 Translated using Weblate (Russian)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-09-07 15:38:16 +02:00
Heimen Stoffels 070419c888 Translated using Weblate (Dutch)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-09-07 15:38:16 +02:00
Allan Nordhøy 5b6489af9f Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.4% (260 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-09-07 15:38:16 +02:00
Michael Moroni 84c2c59038 Translated using Weblate (Italian)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-09-07 15:38:16 +02:00
J. Lavoie 8b5efac70a Translated using Weblate (French)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-09-07 15:38:16 +02:00
J. Lavoie f82860ddd9 Translated using Weblate (German)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-09-07 15:38:16 +02:00
Slávek Banko d3af048fd5 Translated using Weblate (Czech)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-09-07 15:38:16 +02:00
J. Lavoie 2b3c908298 Translated using Weblate (Italian)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-09-07 15:38:16 +02:00
Michael Moroni 14f35edb0f Translated using Weblate (Italian)
Currently translated at 100.0% (264 of 264 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-09-07 15:38:16 +02:00
Jean-BaptisteandSylvia van Os d0e80f76d6 [UI] Fix colors on navigationBarColor (#1010)
* [UI]Add colors for navigationBarColor

* Add color on Navigation Bar to more activities

* Fix navigation colour on non-view layouts

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-09-06 23:01:28 +02:00
Sylvia van Os ee155c721c Merge pull request #1011 from CatimaLoyalty/create-pull-request/patch-1662400409
Update Fastlane changelogs
2022-09-05 21:41:42 +02:00
TheLastProject 8adc43c9a2 Update Fastlane changelogs 2022-09-05 17:53:28 +00:00
Sylvia van Os 02d59dc71d Merge pull request #1009 from CatimaLoyalty/feature/archiveTextLinkBelowCards
Put archive link below card list
2022-09-05 19:53:12 +02:00
Sylvia van Os 3edb0f6a5d Improve welcome screen 2022-09-04 22:29:59 +02:00
Sylvia van Os acf9029394 Put archive link below card list 2022-09-04 22:09:18 +02:00
bors[bot]andAlexander Ivanov 10588769b3 Merge #1007
1007: Fix a crash when there's no web browser installed r=TheLastProject a=vanogrid

Fixes #984

I tested it by running emulators with different API versions and disabling the default web browser. Tested on Android 8.1, 12 and 13.

Signed-off-by: Alexander Ivanov <vanogrid@gmail.com>

Co-authored-by: Alexander Ivanov <vanogrid@gmail.com>
2022-09-04 13:25:51 +00:00
Alexander Ivanov 68a24fae2f Fix a crash when there's no web browser installed
Signed-off-by: Alexander Ivanov <vanogrid@gmail.com>
2022-09-04 15:33:43 +03:00
Sylvia van Os 625ea26b0a Merge pull request #1008 from CatimaLoyalty/create-pull-request/patch-1662271250
Update contributors
2022-09-04 10:08:42 +02:00
TheLastProject dc2c73baa6 Update contributors 2022-09-04 06:00:50 +00:00
Sylvia van Os b8db8bffd4 Merge pull request #1004 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-09-01 19:04:31 +02:00
Csaba 6a078e983b Translated using Weblate (Hungarian)
Currently translated at 93.4% (244 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2022-09-01 14:20:07 +02:00
Neko Nekowazarashi bdfc74759f Translated using Weblate (Indonesian)
Currently translated at 2.6% (3 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/id/
2022-09-01 14:20:07 +02:00
Neko Nekowazarashi b13e14c916 Translated using Weblate (Indonesian)
Currently translated at 79.6% (208 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2022-09-01 14:20:07 +02:00
Tom Sawyer 32adb85c5b Translated using Weblate (Swedish)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2022-09-01 14:20:07 +02:00
J. Lavoie a51854e5de Translated using Weblate (Finnish)
Currently translated at 98.0% (256 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2022-09-01 14:20:07 +02:00
Fede Pujol 9ce72bbaaa Translated using Weblate (Spanish (Argentina))
Currently translated at 32.1% (84 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es_AR/
2022-09-01 14:20:07 +02:00
Jean-Luc Tibaux 544020febf Translated using Weblate (German)
Currently translated at 64.2% (72 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-09-01 14:20:07 +02:00
Sylvia van Os 9cfc45e495 Merge pull request #1000 from CatimaLoyalty/create-pull-request/patch-1661666017
Update contributors
2022-08-28 11:22:22 +02:00
TheLastProject 992ed32d7c Update contributors 2022-08-28 05:53:36 +00:00
Sylvia van Os ac4f83b9e0 Merge pull request #999 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-27 08:53:31 +02:00
ce i moa 5810d199fc Translated using Weblate (Ukrainian)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-08-27 01:18:43 +02:00
Sylvia van Os 8528e5d8f2 Make spotBugs happy 2022-08-25 19:38:53 +02:00
Sylvia van Os 83d19c30c2 Throw more exceptions
We want to know when the code is wrong instead of silently failing
2022-08-25 19:28:09 +02:00
646dab336d Merge #997
997: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: Booc Sylvan <sylvanbooc@gmail.com>
Co-authored-by: ce i moa <serhiilinnyk96@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-08-24 20:49:25 +00:00
Sylvia van Os d05e86cd41 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-08-24 22:45:34 +02:00
ce i moa 6d1c5b31f4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-08-24 22:05:55 +02:00
Booc Sylvan 583cb49949 Added translation using Weblate (English (Middle)) 2022-08-24 22:05:55 +02:00
Sylvia van Os 7f5c7b4cd9 Merge pull request #996 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.8.2
Bump robolectric from 4.8.1 to 4.8.2
2022-08-23 06:29:27 +02:00
Sylvia van Os 17350639aa Merge pull request #995 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-23 06:28:39 +02:00
dependabot[bot] edb961085a Bump robolectric from 4.8.1 to 4.8.2
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.8.1 to 4.8.2.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.8.1...robolectric-4.8.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>
2022-08-23 02:25:42 +00:00
Slávek Banko 96c5952869 Translated using Weblate (Czech)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-08-23 03:15:52 +02:00
Michael Moroni 2bac1700d1 Translated using Weblate (Italian)
Currently translated at 16.9% (19 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-08-23 03:15:52 +02:00
tfuxu fe2695e6af Translated using Weblate (Polish)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-08-23 03:15:52 +02:00
Sylvia van Os 2120eb9574 Merge pull request #993 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-22 08:01:54 +02:00
Slávek Banko 03917a4067 Translated using Weblate (Czech)
Currently translated at 100.0% (112 of 112 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-08-22 01:19:30 +02:00
bc09a23c84 Merge #992
992: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: tfuxu <igormakarowicz@gmail.com>
Co-authored-by: Altons <marsupilami450@gmail.com>
2022-08-21 22:24:54 +00:00
Altons 0ed800634c Translated using Weblate (French)
Currently translated at 21.6% (24 of 111 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-08-22 00:21:45 +02:00
tfuxu ff4ecfe780 Translated using Weblate (Polish)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-08-22 00:21:45 +02:00
Sylvia van Os 2691442809 Merge pull request #990 from CatimaLoyalty/create-pull-request/patch-1661059784
Update contributors
2022-08-21 11:37:19 +02:00
TheLastProject 18515e2660 Update contributors 2022-08-21 05:29:43 +00:00
Sylvia van Os df5cbaf7ad Merge pull request #989 from CatimaLoyalty/create-pull-request/patch-1661004562
Update Fastlane changelogs
2022-08-20 16:11:32 +02:00
TheLastProject 3cacd03ccd Update Fastlane changelogs 2022-08-20 14:09:21 +00:00
Sylvia van Os 2ec04dfa9e Update CHANGELOG 2022-08-20 16:09:05 +02:00
Sylvia van Os 6943956c37 Merge pull request #988 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-20 16:06:20 +02:00
Sylvia van Os 26f0f7909e Merge pull request #987 from Donnnno/monochrome-icon
monochrome icon
2022-08-20 16:05:50 +02:00
gbonaspetti 2a1682133b Translated using Weblate (Portuguese)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-08-20 15:22:38 +02:00
Donnnno 02897f312e monochrome icon 2022-08-20 14:46:52 +02:00
Sylvia van Os 7d4d4cf5c0 Merge pull request #986 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-19 17:12:21 +02:00
IllusiveMan196 1fcf797bfe Translated using Weblate (Ukrainian)
Currently translated at 40.5% (45 of 111 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-08-19 04:20:01 +02:00
IllusiveMan196 b94d417157 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-08-19 04:20:01 +02:00
HowITsDone 330227d09b Translated using Weblate (Spanish)
Currently translated at 72.0% (188 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-08-19 04:20:01 +02:00
Sylvia van Os 67f1ffe617 Merge pull request #985 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-16 19:07:24 +02:00
Ahmed Saleh 220d7a5ea2 Translated using Weblate (Arabic)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2022-08-16 16:15:41 +02:00
Sylvia van Os e781e00256 Release Catima 2.19.0 2022-08-14 14:26:12 +02:00
Sylvia van Os e630333e8d Merge pull request #982 from CatimaLoyalty/create-pull-request/patch-1660454689
Update contributors
2022-08-14 08:48:18 +02:00
TheLastProject 7eb827a219 Update contributors 2022-08-14 05:24:49 +00:00
Sylvia van Os e251b4bc01 Merge pull request #981 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-08-13 15:45:23 +02:00
Oğuz Ersen 644f9e1f78 Translated using Weblate (Turkish)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-08-13 14:19:41 +02:00
109247019824 396d90c499 Translated using Weblate (Bulgarian)
Currently translated at 9.9% (11 of 111 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-08-13 14:19:41 +02:00
109247019824 ff6e93ea2c Translated using Weblate (Bulgarian)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-08-13 14:19:40 +02:00
unstartdev fb97617de6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-08-13 14:19:40 +02:00
Michał ff47ab0a04 Translated using Weblate (Polish)
Currently translated at 2.7% (3 of 111 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-08-13 14:19:40 +02:00
Slávek Banko ff98dae886 Translated using Weblate (Czech)
Currently translated at 100.0% (111 of 111 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-08-13 14:19:39 +02:00
Michael Moroni deae7681f8 Translated using Weblate (Italian)
Currently translated at 16.2% (18 of 111 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-08-13 14:19:36 +02:00
solokot 849c1d8bec Translated using Weblate (Russian)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-08-13 14:19:35 +02:00
Michał b88f0e9a82 Translated using Weblate (Polish)
Currently translated at 99.6% (260 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-08-13 14:19:35 +02:00
Heimen Stoffels 5ea2972ca1 Translated using Weblate (Dutch)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-08-13 14:19:35 +02:00
Allan Nordhøy 08ad6aaa85 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.4% (257 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-08-13 14:19:34 +02:00
Michael Moroni 8ba32a0196 Translated using Weblate (Italian)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-08-13 14:19:34 +02:00
J. Lavoie 68ce3ce01c Translated using Weblate (French)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-08-13 14:19:34 +02:00
J. Lavoie fb47beb380 Translated using Weblate (German)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-08-13 14:19:34 +02:00
Slávek Banko 73a1464d5b Translated using Weblate (Czech)
Currently translated at 100.0% (261 of 261 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-08-13 14:19:33 +02:00
Sylvia van Os 75b1225b38 Merge pull request #976 from CatimaLoyalty/create-pull-request/patch-1659903315
Update Fastlane changelogs
2022-08-07 22:17:01 +02:00
TheLastProject 07a4c4b7a4 Update Fastlane changelogs 2022-08-07 20:15:15 +00:00
Sylvia van Os cbf9295225 Update CHANGELOG 2022-08-07 22:14:58 +02:00
19d7fae814 Merge #974
974: use black/white for cardview fab icon, change floppy icon to check mark r=TheLastProject a=Kethen

#969
#970
please review
<img src="https://user-images.githubusercontent.com/22017945/183081280-7fd41f40-bdad-4d1f-bf11-3bf518104a99.png" width="280px">
<img src="https://user-images.githubusercontent.com/22017945/183081328-6684b342-45b0-41c2-a423-a79240ebe309.png" width="280px">
<img src="https://user-images.githubusercontent.com/22017945/183081700-c11c8db9-adef-4f4a-bbcc-01798730fec4.png" width="280px">
<img src="https://user-images.githubusercontent.com/22017945/183081591-fd668aaa-13ef-420c-9748-16dd0fe03ded.png" width="280px">


Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-08-07 15:28:46 +00:00
Sylvia van Os d9db571362 Metadata updates 2022-08-07 17:23:07 +02:00
Sylvia van Os 91e44d9418 Merge pull request #975 from CatimaLoyalty/create-pull-request/patch-1659849694
Update contributors
2022-08-07 12:54:57 +02:00
TheLastProject e30b95dd6c Update contributors 2022-08-07 05:21:33 +00:00
Katharine Chui ddf27e619d use black/white for cardview fab icon, change floppy icon to check mark 2022-08-05 20:56:39 +08:00
Sylvia van Os ebbcbf324f Merge pull request #968 from CatimaLoyalty/create-pull-request/patch-1659471282
Update Fastlane changelogs
2022-08-02 22:18:12 +02:00
TheLastProject c161d4d781 Update Fastlane changelogs 2022-08-02 20:14:41 +00:00
da01730c73 View activity refactor with previous/next (#937)
- Implement new bottom bar in card view with previous/next
- Refactor info sheet into info button in new bottom bar
- Make fav icon mutable before tinting, add prev/next transitions
- Update metadata

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2022-08-02 22:14:20 +02:00
Sylvia van Os f0d76f1bc2 Merge pull request #966 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-31 13:05:06 +02:00
Sylvia van Os 3d5b1d00f0 Merge pull request #965 from CatimaLoyalty/create-pull-request/patch-1659245466
Update contributors
2022-07-31 13:01:25 +02:00
Slávek Banko a098839060 Translated using Weblate (Czech)
Currently translated at 100.0% (110 of 110 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-07-31 09:19:33 +02:00
Giovanni Donisi d3fac95701 Translated using Weblate (Italian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-07-31 09:19:33 +02:00
TheLastProject 37590dc5ee Update contributors 2022-07-31 05:31:06 +00:00
Sylvia van Os 8dfbc0b5e6 Release Catima 2.18.2 2022-07-29 19:37:58 +02:00
bors[bot]andIllusiveMan196 0a9b292d12 Merge #962
962: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
2022-07-29 17:20:16 +00:00
IllusiveMan196 e7d4228c0c Translated using Weblate (Ukrainian)
Currently translated at 38.5% (42 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-07-29 19:18:30 +02:00
IllusiveMan196 a1836e5433 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-07-29 19:18:30 +02:00
Sylvia van Os 52e0496e36 Update screenshots 2022-07-29 19:14:41 +02:00
Sylvia van Os 50e6e28277 Merge pull request #961 from CatimaLoyalty/dependabot/gradle/androidx.core-core-splashscreen-1.0.0
Bump core-splashscreen from 1.0.0-rc01 to 1.0.0
2022-07-28 17:11:32 +02:00
dependabot[bot] 4cf770837b Bump core-splashscreen from 1.0.0-rc01 to 1.0.0
Bumps core-splashscreen from 1.0.0-rc01 to 1.0.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-28 02:27:22 +00:00
Sylvia van Os 38fb9f7fb8 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-07-27 21:37:59 +02:00
Sylvia van Os 7a6232c8b6 Make spotBugs happy 2022-07-27 21:37:44 +02:00
Sylvia van Os 13e62f3b38 Merge pull request #960 from CatimaLoyalty/create-pull-request/patch-1658949821
Update Fastlane changelogs
2022-07-27 21:29:28 +02:00
TheLastProject d5590d37e3 Update Fastlane changelogs 2022-07-27 19:23:40 +00:00
Sylvia van Os fd21806456 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-07-27 21:23:14 +02:00
Sylvia van Os 34bbfffdaf Make the possibility to set a custom header more visible 2022-07-27 21:22:59 +02:00
Sylvia van Os 56bbb4a786 Merge pull request #959 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-27 12:42:21 +02:00
Michael Moroni 2b92d200ca Translated using Weblate (Italian)
Currently translated at 10.0% (11 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-07-27 09:21:00 +02:00
Sylvia van Os d4154e51d3 Merge pull request #958 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-25 12:48:11 +02:00
Oğuz Ersen 7d69e63dc9 Translated using Weblate (Turkish)
Currently translated at 67.8% (74 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-07-25 10:22:39 +02:00
Sylvia van Os 0189f13ee6 Retag 2.18.0 as 2.18.1
I accidentally built the .apk and uploaded it to Google Play before
doing a "git pull" or my main branch. So the 2.18.0 I uploaded to Google
Play was wrong. Because Google doesn't allow me to undo a release that
not a single person has installed yet, I'm retagging 2.18.0 as 2.18.1 to
keep it consistent on all platforms.
2022-07-24 19:56:38 +02:00
Sylvia van Os 11e32712f3 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-07-24 19:40:58 +02:00
Sylvia van Os d124894d34 Release Catima 2.18.0 2022-07-24 19:40:39 +02:00
Sylvia van Os 84bfcf2b3f Merge pull request #956 from CatimaLoyalty/create-pull-request/patch-1658682152
Update Fastlane changelogs
2022-07-24 19:04:34 +02:00
TheLastProject 8e96096353 Update Fastlane changelogs 2022-07-24 17:02:32 +00:00
Sylvia van Os a4739b2001 Merge pull request #955 from CatimaLoyalty/fix/currencyParsing
Fixes to currency parsing
2022-07-24 19:02:16 +02:00
Sylvia van Os d3f5f33b53 Document parsing fix 2022-07-24 18:52:54 +02:00
Sylvia van Os 11bb1aa126 Remove unused imports 2022-07-24 18:42:16 +02:00
Sylvia van Os 688010cae4 Fixes to currency parsing 2022-07-24 18:14:49 +02:00
Sylvia van Os 150482eb56 Merge pull request #954 from CatimaLoyalty/create-pull-request/patch-1658639980
Update contributors
2022-07-24 12:37:26 +02:00
TheLastProject c5e98c62ec Update contributors 2022-07-24 05:19:40 +00:00
Sylvia van Os 7b2f8885b1 Enable Arabic translation 2022-07-24 00:00:03 +02:00
Sylvia van Os d4a7c33787 Merge pull request #952 from CatimaLoyalty/create-pull-request/patch-1658612341
Update Fastlane changelogs
2022-07-23 23:40:28 +02:00
TheLastProject 0cd245cafc Update Fastlane changelogs 2022-07-23 21:39:00 +00:00
Sylvia van Os 7487993537 Document Arabic language support in CHANGELOG 2022-07-23 23:38:41 +02:00
33b7829b88 Merge #951
951: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: Yousef Ryan <youssefryan3@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-07-23 21:31:43 +00:00
Sylvia van Os 7531853548 Translated using Weblate (Arabic)
Currently translated at 2.7% (3 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ar/
2022-07-23 23:30:48 +02:00
Yousef Ryan 3b77cf6f8a Translated using Weblate (Arabic)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ar/
2022-07-23 23:24:40 +02:00
Sylvia van Os 7b0f459337 Merge pull request #949 from CatimaLoyalty/create-pull-request/patch-1658590793
Update Fastlane changelogs
2022-07-23 17:41:25 +02:00
TheLastProject b498ffd66e Update Fastlane changelogs 2022-07-23 15:39:52 +00:00
Sylvia van Os 6c8440a95f Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-07-23 17:39:10 +02:00
Sylvia van Os 6bb8cc8bc9 Fix back icon direction on RTL layouts 2022-07-23 17:38:51 +02:00
bors[bot]andYousef Ryan dad531876a Merge #947
947: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: Yousef Ryan <youssefryan3@gmail.com>
2022-07-22 23:00:05 +00:00
Yousef Ryan 205a629071 Added translation using Weblate (Arabic) 2022-07-23 00:56:48 +02:00
Sylvia van Os b7704cc55e Merge pull request #946 from CatimaLoyalty/create-pull-request/patch-1658437884
Update Fastlane changelogs
2022-07-21 23:11:57 +02:00
TheLastProject 84ddbef585 Update Fastlane changelogs 2022-07-21 21:11:24 +00:00
Sylvia van Os 3bed947ba9 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-07-21 23:11:02 +02:00
Sylvia van Os 23d2faf107 Hack to not crash in RTL
I don't understand why it can be null. I don't understand why everything
still looks fine when I do this. But it fixes a crash so hey, that's
good right?
2022-07-21 23:09:56 +02:00
Sylvia van Os b1d06a0be1 Merge pull request #944 from CatimaLoyalty/create-pull-request/patch-1658434626
Update Fastlane changelogs
2022-07-21 22:19:46 +02:00
TheLastProject 83ad3e2200 Update Fastlane changelogs 2022-07-21 20:17:06 +00:00
Sylvia van Os 84dcce6018 Update CHANGELOG 2022-07-21 22:16:48 +02:00
Sylvia van Os d447ea7ff8 Merge pull request #943 from SamarthAsthan/master
Added new look to selected card
2022-07-21 22:14:59 +02:00
Samarth Asthan 91f8856efe Selected card fix 2022-07-22 00:26:54 +05:30
bors[bot]andSlávek Banko 77e45626bb Merge #942
942: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: Slávek Banko <slavek.banko@axis.cz>
2022-07-19 20:19:30 +00:00
Slávek Banko a61304a72a Translated using Weblate (Czech)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-07-19 22:16:46 +02:00
Sylvia van Os 7336075860 Merge pull request #940 from CatimaLoyalty/create-pull-request/patch-1658035831
Update contributors
2022-07-17 11:06:50 +02:00
TheLastProject 6dbd70fced Update contributors 2022-07-17 05:30:31 +00:00
81c7d8a259 Merge #938
938: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: Freddo espresso <weblate.3n7cf@simplelogin.co>
Co-authored-by: SC <lalocas@protonmail.com>
2022-07-14 19:23:45 +00:00
SC a6a899e696 Translated using Weblate (Portuguese)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-07-14 21:18:05 +02:00
Freddo espresso 4ae314b3a0 Translated using Weblate (Greek)
Currently translated at 1.8% (2 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/el/
2022-07-14 21:18:05 +02:00
Freddo espresso 16ac55fd67 Translated using Weblate (Greek)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2022-07-14 21:18:05 +02:00
Sylvia van Os c659065986 Merge pull request #936 from CatimaLoyalty/create-pull-request/patch-1657430685
Update contributors
2022-07-10 11:33:44 +02:00
TheLastProject f1a6b5a7a8 Update contributors 2022-07-10 05:24:45 +00:00
Sylvia van Os 036de26e2a Merge pull request #935 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-08 23:50:02 +02:00
Oğuz Ersen 5ca0919546 Translated using Weblate (Turkish)
Currently translated at 67.8% (74 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-07-08 22:18:15 +02:00
Oğuz Ersen 4430df50fe Translated using Weblate (Turkish)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-07-08 22:18:15 +02:00
109247019824 4ff7913283 Translated using Weblate (Bulgarian)
Currently translated at 9.1% (10 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-07-08 22:18:15 +02:00
109247019824 0376245dbc Translated using Weblate (Bulgarian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-07-08 22:18:15 +02:00
J. Lavoie 3052c40359 Translated using Weblate (Finnish)
Currently translated at 98.0% (254 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2022-07-08 22:18:15 +02:00
Slávek Banko 64af34ca71 Translated using Weblate (Czech)
Currently translated at 100.0% (109 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-07-08 22:18:15 +02:00
solokot aba95bbd8a Translated using Weblate (Russian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-07-08 22:18:15 +02:00
Heimen Stoffels 5de2a40a54 Translated using Weblate (Dutch)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-07-08 22:18:15 +02:00
J. Lavoie c12c5a6cc4 Translated using Weblate (Italian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-07-08 22:18:15 +02:00
J. Lavoie 8674520d46 Translated using Weblate (French)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-07-08 22:18:15 +02:00
J. Lavoie 06d3a5fe54 Translated using Weblate (German)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-07-08 22:18:15 +02:00
Slávek Banko 6c485af249 Translated using Weblate (Czech)
Currently translated at 100.0% (259 of 259 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-07-08 22:18:15 +02:00
Sylvia van Os f0ed989463 Merge pull request #934 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-07 21:21:22 +02:00
J. Lavoie 05de9d6941 Translated using Weblate (Finnish)
Currently translated at 98.0% (253 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2022-07-07 20:14:46 +02:00
Sylvia van Os 2ddebc5970 Merge pull request #933 from CatimaLoyalty/create-pull-request/patch-1657142599
Update Fastlane changelogs
2022-07-06 23:24:59 +02:00
TheLastProject f1265bf84e Update Fastlane changelogs 2022-07-06 21:23:19 +00:00
Sylvia van Os dc4c4be4c7 Document group archive count 2022-07-06 23:23:00 +02:00
alajemba-vik d5100b97f3 Show groups archived count (#930)
Fixes #924
2022-07-06 23:21:59 +02:00
Sylvia van Os 31dc05f6b2 Merge pull request #932 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-05 18:57:40 +02:00
Oğuz Ersen ca7ee9e694 Translated using Weblate (Turkish)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-07-05 12:18:21 +02:00
109247019824 7acc2e28cd Translated using Weblate (Bulgarian)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-07-05 12:18:21 +02:00
Slávek Banko 7eff64bf26 Translated using Weblate (Czech)
Currently translated at 100.0% (109 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-07-05 12:18:20 +02:00
solokot d5d3cfa4e8 Translated using Weblate (Russian)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-07-05 12:18:20 +02:00
Heimen Stoffels 2b937eda7c Translated using Weblate (Dutch)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-07-05 12:18:20 +02:00
Giovanni Donisi 118b5a90b6 Translated using Weblate (Italian)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-07-05 12:18:20 +02:00
J. Lavoie d9c9295220 Translated using Weblate (French)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-07-05 12:18:20 +02:00
Slávek Banko eb4b6f276e Translated using Weblate (Czech)
Currently translated at 100.0% (258 of 258 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-07-05 12:18:20 +02:00
Sylvia van Os 52e68df515 Merge pull request #931 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-07-04 17:11:39 +02:00
Oğuz Ersen c23973086c Translated using Weblate (Turkish)
Currently translated at 67.8% (74 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-07-04 11:18:49 +02:00
Slávek Banko 34be79f3d2 Translated using Weblate (Czech)
Currently translated at 100.0% (109 of 109 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-07-04 11:18:49 +02:00
bors[bot]andAlajemba a8082748ad Merge #920
920: Crash on clicking "Add from image" button in scan activity #856 r=TheLastProject a=alajemba-vik

This PR contains a fix for issue #856, which concerns a crash that occurs when no activity can handle the intent to pick an image file.

### The simplest way to reproduce
* Disable all the gallery apps (e.g., Google Photos)
* Go to the ScanActivity by clicking the FAB on the home screen
* The app crashes when you click the button "Select image from gallery"

### Expected behavior
Clicking that button should have launched a gallery app, or displayed a disambiguation dialog if there is more than one app that can handle the intent being invoked.

### Solution
Wrapped the call to launch in a try-catch block.

Co-authored-by: Alajemba <alajemba.dev@gmail.com>
2022-07-03 17:18:36 +00:00
Sylvia van Os 08a4de919f Merge pull request #929 from CatimaLoyalty/create-pull-request/patch-1656825915
Update contributors
2022-07-03 16:48:37 +02:00
TheLastProject 7ce54ec0d3 Update contributors 2022-07-03 05:25:15 +00:00
ce7dad0c8e Merge #928
928: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)

Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Artem <artem@molotov.work>
2022-07-02 08:21:48 +00:00
Artem e059ed361d Translated using Weblate (Ukrainian)
Currently translated at 32.7% (35 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-07-02 10:17:51 +02:00
solokot d12d641913 Translated using Weblate (Russian)
Currently translated at 2.8% (3 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2022-07-02 10:17:51 +02:00
Artem 5336b37133 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-07-02 10:17:51 +02:00
solokot 1819476a71 Translated using Weblate (Russian)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-07-02 10:17:51 +02:00
Alajemba e2c621ec1f Wrapped call to launch photo picker in LoyaltyCardEditActivity in try-catch block 2022-06-30 20:57:26 +00:00
Sylvia van Os 854bca27ae Merge pull request #922 from CatimaLoyalty/create-pull-request/patch-1656531042
Update Fastlane changelogs
2022-06-29 21:43:51 +02:00
TheLastProject b1dd9fa38a Update Fastlane changelogs 2022-06-29 19:30:42 +00:00
Sylvia van Os 8776ed61e9 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-06-29 21:30:19 +02:00
Sylvia van Os c35fe166ed Fix custom theme not applying to main screen correctly
We were using the SplashScreen incorrectly. While it isn't consistently
documented, I managed to find a small note on
https://developer.android.com/reference/kotlin/androidx/core/splashscreen/SplashScreen#usage-of-the-core-splashscreen-library:
which states that installSplashScreen has to be called BEFORE onCreate.
Doing this fixing some theming bugs and allows deleting a hacky and
buggy workaround.
2022-06-29 21:28:56 +02:00
Sylvia van Os 0126b6d6da Merge pull request #921 from CatimaLoyalty/dependabot/gradle/com.android.tools-desugar_jdk_libs-1.1.6
Bump desugar_jdk_libs from 1.1.5 to 1.1.6
2022-06-29 20:28:41 +02:00
dependabot[bot] 4ecb877e27 Bump desugar_jdk_libs from 1.1.5 to 1.1.6
Bumps [desugar_jdk_libs](https://github.com/google/desugar_jdk_libs) from 1.1.5 to 1.1.6.
- [Release notes](https://github.com/google/desugar_jdk_libs/releases)
- [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>
2022-06-29 02:23:13 +00:00
Sylvia van Os 1c2e810319 Release Catima 2.17.1 2022-06-28 19:49:44 +02:00
Alajemba 4f7f72f213 Fix for 'Crash on clicking "Add from image" button in scan activity #856' 2022-06-28 06:33:36 +00:00
Sylvia van Os 88d27c0385 Fix hardcoded text colour 2022-06-27 22:28:43 +02:00
Sylvia van Os 2f1f6ed452 Merge pull request #916 from CatimaLoyalty/create-pull-request/patch-1656220588
Update contributors
2022-06-26 10:24:16 +02:00
TheLastProject 1ac816000d Update contributors 2022-06-26 05:16:28 +00:00
Sylvia van Os aa069e93b1 Metadata fixes 2022-06-24 22:47:44 +02:00
Sylvia van Os 2f0084a73b Release Catima 2.17.0 2022-06-24 21:25:56 +02:00
Sylvia van Os 68624f8911 Merge pull request #913 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-06-24 19:25:56 +02:00
SC 5d7c503465 Translated using Weblate (Portuguese)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-06-24 19:17:40 +02:00
Freddo espresso 9015b17de6 Translated using Weblate (Greek)
Currently translated at 0.9% (1 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/el/
2022-06-24 19:17:40 +02:00
Freddo espresso a5f7265bd6 Translated using Weblate (Greek)
Currently translated at 29.9% (77 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2022-06-24 19:17:40 +02:00
Sylvia van Os b03d579ee7 Merge pull request #911 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-06-24 17:18:31 +02:00
Sylvia van Os f4511aa82e Merge pull request #912 from CatimaLoyalty/dependabot/gradle/net.lingala.zip4j-zip4j-2.11.1
Bump zip4j from 2.11.0 to 2.11.1
2022-06-24 17:18:20 +02:00
dependabot[bot] 69da7e1e2c Bump zip4j from 2.11.0 to 2.11.1
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.11.0 to 2.11.1.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.11.0...v2.11.1)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-24 02:28:08 +00:00
Sylvia van Os b3de8428f8 Cleanups 2022-06-23 18:51:22 +02:00
Astro Hops 7edf97774b Translated using Weblate (Polish)
Currently translated at 2.8% (3 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pl/
2022-06-23 13:17:59 +02:00
Astro Hops fddad366d6 Translated using Weblate (Polish)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-06-23 13:17:59 +02:00
Sylvia van Os fcb03791b1 Merge pull request #910 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-06-21 22:48:35 +02:00
Altons e25b0ee251 Translated using Weblate (French)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-06-21 22:15:16 +02:00
Altons c5b5b0e979 Translated using Weblate (German)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-06-21 22:15:16 +02:00
Sylvia van Os 347e975d9b Merge pull request #909 from CatimaLoyalty/dependabot/gradle/net.lingala.zip4j-zip4j-2.11.0
Bump zip4j from 2.10.0 to 2.11.0
2022-06-21 19:38:24 +02:00
dependabot[bot] 8890788c3d Bump zip4j from 2.10.0 to 2.11.0
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.10.0 to 2.11.0.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.10.0...v2.11.0)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 02:45:04 +00:00
Sylvia van Os 9f9da82e18 Merge pull request #908 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-06-20 21:27:14 +02:00
Oğuz Ersen ab8490798b Translated using Weblate (Turkish)
Currently translated at 67.2% (72 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-06-20 21:20:05 +02:00
Oğuz Ersen c4b9bf77d9 Translated using Weblate (Turkish)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-06-20 21:20:05 +02:00
109247019824 a1a653b939 Translated using Weblate (Bulgarian)
Currently translated at 6.5% (7 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-06-20 21:20:05 +02:00
109247019824 f9cf64a2ea Translated using Weblate (Bulgarian)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-06-20 21:20:05 +02:00
Slávek Banko 83e9a01b8d Translated using Weblate (Czech)
Currently translated at 100.0% (107 of 107 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-06-20 21:20:05 +02:00
solokot 1d776914ee Translated using Weblate (Russian)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-06-20 21:20:05 +02:00
Heimen Stoffels bfc103dca9 Translated using Weblate (Dutch)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-06-20 21:20:05 +02:00
Allan Nordhøy 0281f15b36 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.4% (253 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-06-20 21:20:05 +02:00
J. Lavoie e1929de4b3 Translated using Weblate (Italian)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-06-20 21:20:05 +02:00
J. Lavoie 81699dbed9 Translated using Weblate (French)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-06-20 21:20:05 +02:00
J. Lavoie 5c42342070 Translated using Weblate (German)
Currently translated at 99.6% (256 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-06-20 21:20:05 +02:00
Slávek Banko f1c21fc7fe Translated using Weblate (Czech)
Currently translated at 100.0% (257 of 257 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-06-20 21:20:05 +02:00
Sylvia van Os 7c418dc416 Revert "Hardcode Google Play "Varies with device" value"
This reverts commit 677283c872.
2022-06-20 19:50:23 +02:00
Sylvia van Os 3610e9dfb2 Merge pull request #906 from CatimaLoyalty/create-pull-request/patch-1655616434
Update contributors
2022-06-19 10:51:33 +02:00
TheLastProject c5793da52c Update contributors 2022-06-19 05:27:14 +00:00
Sylvia van Os deef5ced0c Merge pull request #905 from CatimaLoyalty/create-pull-request/patch-1655590869
Update Fastlane changelogs
2022-06-19 00:21:41 +02:00
TheLastProject 7861f6cd8c Update Fastlane changelogs 2022-06-18 22:21:09 +00:00
Sylvia van Os 4ad73a754e Replace rotation lock icon with barcode orientation setting (#901) 2022-06-19 00:20:56 +02:00
Sylvia van Os d3487cc535 Merge pull request #902 from CatimaLoyalty/feature/archive
Archive support
2022-06-18 14:13:16 +02:00
Sylvia van Os 677283c872 Hardcode Google Play "Varies with device" value
Fixes #903
2022-06-18 13:09:24 +02:00
Sylvia van Os d39b732b77 Fix export and shortcut bugs 2022-06-17 19:53:51 +02:00
Sylvia van Os 5242290a8f Update CHANGELOG 2022-06-17 17:50:08 +02:00
Sylvia van Os 9d07c1a29c Cleanups 2022-06-16 23:53:46 +02:00
Jasielprogramador 548b1b1e8e Archive support 2022-06-16 22:59:11 +02:00
Sylvia van Os 8318d2e7c3 Merge pull request #897 from CatimaLoyalty/create-pull-request/patch-1655011240
Update contributors
2022-06-12 10:49:13 +02:00
TheLastProject 99e836a8f1 Update contributors 2022-06-12 05:20:39 +00:00
Sylvia van Os 3586d27249 Update Fastlane 2022-06-08 18:49:46 +02:00
Sylvia van Os 5904ba2af7 Merge pull request #895 from CatimaLoyalty/create-pull-request/patch-1654548179
Update Fastlane changelogs
2022-06-06 22:45:39 +02:00
TheLastProject 48b89af11a Update Fastlane changelogs 2022-06-06 20:42:59 +00:00
Sylvia van Os 0b0a5cc5fa Reword 2022-06-06 22:42:40 +02:00
Sylvia van Os 098f987d66 Update CHANGELOG 2022-06-06 22:40:01 +02:00
Sylvia van Os 0083150fa9 Merge pull request #893 from pooyanazari/MinOfExpireDate
Set min date for expire date #753
2022-06-06 22:39:07 +02:00
pooyanazari 1c4b4f1f25 Set min date for expire date 2022-06-06 21:58:29 +04:30
Sylvia van Os b7f596568d Merge pull request #892 from CatimaLoyalty/dependabot/gradle/androidx.appcompat-appcompat-1.4.2
Bump appcompat from 1.4.1 to 1.4.2
2022-06-02 20:17:00 +02:00
dependabot[bot] 2df7b9e8c6 Bump appcompat from 1.4.1 to 1.4.2
Bumps appcompat from 1.4.1 to 1.4.2.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-02 02:29:19 +00:00
Sylvia van Os c37e5f4076 Merge pull request #890 from CatimaLoyalty/dependabot/gradle/com.google.android.material-material-1.6.1
Bump material from 1.6.0 to 1.6.1
2022-06-01 17:15:35 +02:00
dependabot[bot] 8840390b3a Bump material from 1.6.0 to 1.6.1
Bumps [material](https://github.com/material-components/material-components-android) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.6.0...1.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 03:46:22 +00:00
Sylvia van Os a8a8ac59b0 Merge pull request #889 from CatimaLoyalty/create-pull-request/patch-1653802088
Update contributors
2022-05-29 12:20:36 +02:00
TheLastProject a2e37a82b7 Update contributors 2022-05-29 05:28:08 +00:00
Sylvia van Os 1b52cafea6 Merge pull request #886 from CatimaLoyalty/create-pull-request/patch-1653505625
Update Fastlane changelogs
2022-05-25 21:07:46 +02:00
TheLastProject 706bf36584 Update Fastlane changelogs 2022-05-25 19:07:05 +00:00
Sylvia van Os 05f3b77a73 Various minor fixes 2022-05-25 21:06:43 +02:00
Asier 00b0502a6a Add card duplication feature 2022-05-25 21:03:11 +02:00
Sylvia van Os ed755c35b4 Merge pull request #883 from CatimaLoyalty/dependabot/gradle/androidx.core-core-splashscreen-1.0.0-rc01
Bump core-splashscreen from 1.0.0-beta02 to 1.0.0-rc01
2022-05-20 21:50:31 +02:00
dependabot[bot] 3101688abb Bump core-splashscreen from 1.0.0-beta02 to 1.0.0-rc01
Bumps core-splashscreen from 1.0.0-beta02 to 1.0.0-rc01.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-19 02:24:30 +00:00
Sylvia van Os 98c9c9ce15 Merge pull request #882 from CatimaLoyalty/create-pull-request/patch-1652592163
Update contributors
2022-05-15 10:52:13 +02:00
TheLastProject 3040cbf7a7 Update contributors 2022-05-15 05:22:42 +00:00
Sylvia van Os 806b232d60 Merge pull request #878 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-05-11 19:24:36 +02:00
Moi Toi 982e012940 Translated using Weblate (French)
Currently translated at 21.6% (23 of 106 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-05-11 19:14:06 +02:00
Grzegorz e2cff0f11e Translated using Weblate (Polish)
Currently translated at 99.1% (241 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-05-11 19:14:06 +02:00
Sylvia van Os e678bae95c Merge pull request #875 from CatimaLoyalty/dependabot/gradle/com.google.android.material-material-1.6.0
Bump material from 1.5.0 to 1.6.0
2022-05-10 13:51:55 +02:00
Sylvia van Os c3758f2a23 Merge pull request #874 from CatimaLoyalty/dependabot/gradle/org.robolectric-robolectric-4.8.1
Bump robolectric from 4.7.3 to 4.8.1
2022-05-10 13:38:29 +02:00
Sylvia van Os 4852e61c99 Merge pull request #876 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-05-05 19:53:25 +02:00
Slávek Banko 74d55c8b73 Translated using Weblate (Czech)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-05-05 15:09:58 +02:00
dependabot[bot] 89670b5176 Bump material from 1.5.0 to 1.6.0
Bumps [material](https://github.com/material-components/material-components-android) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.5.0...1.6.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>
2022-05-05 02:27:24 +00:00
dependabot[bot] 6840f39e35 Bump robolectric from 4.7.3 to 4.8.1
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7.3 to 4.8.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.7.3...robolectric-4.8.1)

---
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>
2022-05-04 02:23:24 +00:00
bors[bot]anddependabot[bot] 635fb0105b Merge #873
873: Bump core from 3.4.1 to 3.5.0 r=TheLastProject a=dependabot[bot]

Bumps [core](https://github.com/zxing/zxing) from 3.4.1 to 3.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/zxing/zxing/releases">core's releases</a>.</em></p>
<blockquote>
<h2>ZXing 3.5.0</h2>
<ul>
<li>Many edge-case fixes and improvements from <a href="https://bugs.chromium.org/p/oss-fuzz/issues/list">oss-fuzz</a></li>
<li>Various improvements and fixes to Aztec, PDF417, DataMatrix decoding</li>
<li>New 'minimal' encoding mode from <a href="https://github.com/AlexGeller1"><code>`@​AlexGeller1</code></a>` (<a href="https://github-redirect.dependabot.com/zxing/zxing/issues/1444">zxing/zxing#1444</a>)</li>
</ul>
<p>See <a href="https://github.com/zxing/zxing/milestone/13?closed=1">https://github.com/zxing/zxing/milestone/13?closed=1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/zxing/zxing/blob/master/CHANGES">core's changelog</a>.</em></p>
<blockquote>
<p>0.1 (09 Nov 2007)</p>
<ul>
<li>Initial release</li>
</ul>
<p>0.1.1 (11 Nov 2007)</p>
<ul>
<li>Fixed bug decoding version 0 QR Codes</li>
<li>Now default zoom is 2.5x in Java ME client</li>
</ul>
<p>0.1.2 (28 Nov 2007)</p>
<ul>
<li>Issue 11 fixed: Build problems on Windows</li>
<li>Can now build &quot;ZXingReaderBasic&quot; which does not require JSR-234</li>
<li>Issue 14 fixed: release .zip builds into one directory</li>
</ul>
<p>0.1.3 (7 Dec 2007)</p>
<ul>
<li>Unit test for QR Code decoding</li>
<li>Added EAN-13 support</li>
<li>Now builds with class file format version 1.2 -- may solve some compatibility issues?</li>
<li>Fixed obfuscation step bug causing NoClassDefFoundError</li>
</ul>
<p>0.1.4 (13 Dec 2007)</p>
<ul>
<li>Added Blackberry client build script -- does not yet work</li>
<li>Big change to handling of content of barcodes:
<ul>
<li>com.google.zxing.client.result moved from core-ext to core</li>
<li>Rewritten for J2ME</li>
<li>core-ext removed</li>
<li>J2ME client now uses this code for better parsing/handling of results</li>
</ul>
</li>
</ul>
<p>0.2 (07 Jan 2008)</p>
<ul>
<li>Few small bug fixes in AlignmentPatternFinder, MultiFormatReader
(thank K. Kakima, Andreas)</li>
<li>LCDUIImageMonochromeBitmapSource now public</li>
<li>Notably improved decoding for Basic version -- Regular version still
your best bet if you can run it though</li>
</ul>
<p>0.2.1 (16 Jan 2008)</p>
<ul>
<li>Slight tweaks and enhancements to decode and runtime performance of UPCDecoder</li>
<li>Added black-box test suites against a known set of images
(Thanks to Enrique G. S. for additional images)</li>
</ul>
<p>0.2.2 (22 Jan 2008)</p>
<ul>
<li>Now includes junit locally to build tests</li>
<li>Fixed &quot;MIDlet&quot; name in MANIFEST.MF, which may solve some problems</li>
<li>Friendlier error message when barcode can't be found</li>
</ul>
<p>0.3 (04 Feb 2008)</p>
<ul>
<li>Major refactoring of 1D barcode decoding</li>
<li>Added support for UPC-E, EAN-8</li>
<li>Also added Code 39, Code 128 support -- may need refinement</li>
<li>Now any &quot;game&quot; key triggers photo capture</li>
<li>Workaround implemented for Nokias that use &quot;capture://image&quot; in MMAPI</li>
<li>UPC codes now trigger lookup to upcdatabase.com</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/zxing/zxing/commit/eb76d0283c49c2b1c71ff2b438e42c0882a3b62b"><code>eb76d02</code></a> [maven-release-plugin] prepare release zxing-3.5.0</li>
<li><a href="https://github.com/zxing/zxing/commit/89a56210cce3ceb28bd407c08fc5a246d6c05e67"><code>89a5621</code></a> Update Android modules for 3.5.0</li>
<li><a href="https://github.com/zxing/zxing/commit/939632072f39fc9cbe8d7ad753bceef6371cd30b"><code>9396320</code></a> Minor dep updates</li>
<li><a href="https://github.com/zxing/zxing/commit/fbeeae49f5b43771b6215162a6cf187752bda768"><code>fbeeae4</code></a> Update README.md: Add SCodes Qt/Qml wrapper library link (<a href="https://github-redirect.dependabot.com/zxing/zxing/issues/1518">#1518</a>)</li>
<li><a href="https://github.com/zxing/zxing/commit/4f9f466f7de88bcb3d118b9560cefbdaf31771aa"><code>4f9f466</code></a> Update AndroidManifest.xml: set exported flag (<a href="https://github-redirect.dependabot.com/zxing/zxing/issues/1516">#1516</a>)</li>
<li><a href="https://github.com/zxing/zxing/commit/5f20b8d095c15b30e4171602203569a8be1ff9a7"><code>5f20b8d</code></a> Replacing non ISO-8859-1 characters in PDF417 input with '?' (<a href="https://github-redirect.dependabot.com/zxing/zxing/issues/1514">#1514</a>)</li>
<li><a href="https://github.com/zxing/zxing/commit/8265242784be6f5493f1ede4b1fd1432b1666a54"><code>8265242</code></a> Share the ECI string builder of the data matrix decoder with the PDF417 decod...</li>
<li><a href="https://github.com/zxing/zxing/commit/ce1a1a53cfd19bbb49b81bdfa489342e1178e63a"><code>ce1a1a5</code></a> Add multi-eci decoding for PDF417 (<a href="https://github-redirect.dependabot.com/zxing/zxing/issues/1507">#1507</a>)</li>
<li><a href="https://github.com/zxing/zxing/commit/92854d4a5553465ff42e68927f3a161bb8977e98"><code>92854d4</code></a> Add support for multi-eci encoding for PDF417 (<a href="https://github-redirect.dependabot.com/zxing/zxing/issues/1506">#1506</a>)</li>
<li><a href="https://github.com/zxing/zxing/commit/4bd257e8c5577036b38352082bde646045bf95ee"><code>4bd257e</code></a> BitArray perf improvement, possibly addressing <a href="https://bugs.chromium.org/p/os">https://bugs.chromium.org/p/os</a>...</li>
<li>Additional commits viewable in <a href="https://github.com/zxing/zxing/compare/zxing-3.4.1...zxing-3.5.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.zxing:core&package-manager=gradle&previous-version=3.4.1&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-02 17:01:53 +00:00
dependabot[bot] 9ad50041b5 Bump core from 3.4.1 to 3.5.0
Bumps [core](https://github.com/zxing/zxing) from 3.4.1 to 3.5.0.
- [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.4.1...zxing-3.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 02:24:32 +00:00
Sylvia van Os 0887a16555 Merge pull request #872 from CatimaLoyalty/create-pull-request/patch-1651383162
Update contributors
2022-05-01 11:23:07 +02:00
TheLastProject ea690d19dc Update contributors 2022-05-01 05:32:42 +00:00
Sylvia van Os 40f7b6e417 Merge pull request #870 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-04-27 11:33:25 +02:00
IllusiveMan196 25b3e18618 Translated using Weblate (Ukrainian)
Currently translated at 33.0% (35 of 106 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-04-26 04:08:03 +02:00
IllusiveMan196 aa28a52855 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-04-26 04:08:03 +02:00
Sylvia van Os fe87fe1981 Merge pull request #869 from CatimaLoyalty/create-pull-request/patch-1650777439
Update contributors
2022-04-24 09:16:25 +02:00
TheLastProject 6f66b95506 Update contributors 2022-04-24 05:17:19 +00:00
a80ab32f07 Merge #868
868: Deps/net.lingala.zip4j zip4j 2.10.0 r=TheLastProject a=TheLastProject



Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-04-17 12:27:33 +00:00
Sylvia van Os de6248a5d6 Fix wrong password detection 2022-04-17 14:25:26 +02:00
dependabot[bot] cfbaeb1ffc Bump zip4j from 2.9.1 to 2.10.0
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.9.1 to 2.10.0.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.9.1...v2.10.0)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-17 12:13:30 +00:00
Sylvia van Os 749a4ddb29 Merge pull request #867 from CatimaLoyalty/create-pull-request/patch-1650172610
Update contributors
2022-04-17 10:52:53 +02:00
TheLastProject 4c070c3137 Update contributors 2022-04-17 05:16:50 +00:00
5cb8cf3a14 Merge #866
866: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
2022-04-16 21:55:44 +00:00
Oğuz Ersen a1410a588e Translated using Weblate (Turkish)
Currently translated at 60.3% (64 of 106 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-04-16 20:11:15 +02:00
109247019824 b2b40809ad Translated using Weblate (Bulgarian)
Currently translated at 5.6% (6 of 106 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-04-16 20:11:15 +02:00
Allan Nordhøy c092a04e9c Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.7% (22 of 106 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2022-04-16 20:11:15 +02:00
Allan Nordhøy 5bd3a309cc Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (240 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-04-16 20:11:15 +02:00
Sylvia van Os 4bf6f6cd5f Release Catima 2.16.3 2022-04-15 18:51:42 +02:00
Sylvia van Os 1872bea0c3 Stocard: Ignore cards with missing card data
Stocard appears to keep images for deleted cards, which causes some
cards to have only images and no data, making them impossible to import.

This is most likely a bug on Stocard's side. As a workaround, we ignore
cards with no data file.
2022-04-14 22:25:46 +02:00
Sylvia van Os 665ef5f712 Merge pull request #864 from CatimaLoyalty/create-pull-request/patch-1649961053
Update Fastlane changelogs
2022-04-14 20:31:52 +02:00
TheLastProject 9fbcb23465 Update Fastlane changelogs 2022-04-14 18:30:52 +00:00
Sylvia van Os 25c35acd6d Import Stocard GS1_128 as CODE_128
GS1_128 seems to be an implementation of CODE_128. ZXING doesn't
explicitly support GS1_128, but CODE_128 should work probably.
2022-04-14 20:30:35 +02:00
Sylvia van Os 35747b7d9f Fix import getting stuck on unexpected exception 2022-04-14 20:20:36 +02:00
Sylvia van Os eea5cdfdd0 Merge pull request #862 from CatimaLoyalty/create-pull-request/patch-1649567192
Update contributors
2022-04-10 11:16:32 +02:00
TheLastProject e0c28830ab Update contributors 2022-04-10 05:06:31 +00:00
e714d98ae6 Merge #860
860: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Quentin PAGÈS <quentinantonin@free.fr>
2022-04-08 20:03:02 +00:00
Sylvia van Os bbfba92de0 Merge pull request #859 from CatimaLoyalty/create-pull-request/patch-1648963016
Update contributors
2022-04-08 22:02:32 +02:00
Quentin PAGÈS efda8f9f10 Translated using Weblate (Occitan)
Currently translated at 39.5% (96 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/oc/
2022-04-04 09:10:40 +02:00
109247019824 041472b44b Translated using Weblate (Bulgarian)
Currently translated at 4.7% (5 of 105 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-04-04 09:10:40 +02:00
TheLastProject 92f79e9d3e Update contributors 2022-04-03 05:16:56 +00:00
Sylvia van Os f932d8f6e4 Release Catima 2.16.2 2022-03-31 23:11:03 +02:00
5e3399cd32 Merge #857
857: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
2022-03-31 20:57:20 +00:00
Oğuz Ersen b736f31dc2 Translated using Weblate (Turkish)
Currently translated at 60.0% (63 of 105 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-03-31 22:56:04 +02:00
109247019824 ff285430c0 Translated using Weblate (Bulgarian)
Currently translated at 4.7% (5 of 105 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-03-31 22:56:04 +02:00
bors[bot]andTony C 504c1ac516 Merge #855
855: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Tony C <kodo60@gmail.com>
2022-03-31 16:12:14 +00:00
Tony C c4746fe2b9 Translated using Weblate (French)
Currently translated at 19.2% (20 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-03-31 18:09:35 +02:00
Sylvia van Os 99383d4fc6 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-03-30 19:45:18 +02:00
Sylvia van Os 71cd16caac Fix broken colours in Fidme import 2022-03-30 19:45:10 +02:00
Sylvia van Os 6a04077cec Merge pull request #854 from CatimaLoyalty/create-pull-request/patch-1648585831
Update Fastlane changelogs
2022-03-29 22:31:42 +02:00
TheLastProject 5664ff5631 Update Fastlane changelogs 2022-03-29 20:30:30 +00:00
Sylvia van Os 48764e266e Update CHANGELOG 2022-03-29 22:29:55 +02:00
Sylvia van Os 435cfd2839 Merge pull request #853 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-03-29 22:20:08 +02:00
Sylvia van Os 34639f2a2e Don't render text sequences as single character 2022-03-29 22:19:12 +02:00
Joel A ce9c3bffe6 Translated using Weblate (Swedish)
Currently translated at 1.9% (2 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2022-03-29 21:09:59 +02:00
Sylvia van Os d0d15393f6 Merge pull request #850 from CatimaLoyalty/create-pull-request/patch-1648357620
Update contributors
2022-03-27 11:11:27 +02:00
TheLastProject e9eaf51e40 Update contributors 2022-03-27 05:07:00 +00:00
bors[bot]andAltons de8a843414 Merge #849
849: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
2022-03-26 21:35:52 +00:00
Altons 0ad4c683b7 Translated using Weblate (German)
Currently translated at 6.7% (7 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-03-26 22:09:45 +01:00
Altons fdbff0f942 Translated using Weblate (French)
Currently translated at 18.2% (19 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-03-26 22:09:45 +01:00
Sylvia van Os a02d9fd995 Merge pull request #846 from CatimaLoyalty/dependabot/gradle/androidx.core-core-splashscreen-1.0.0-beta02
Bump core-splashscreen from 1.0.0-beta01 to 1.0.0-beta02
2022-03-25 21:51:52 +01:00
Sylvia van Os d7f43f8a2b Release Catima 2.16.1 2022-03-25 20:51:01 +01:00
3cbd69c6c7 Merge #847
847: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
2022-03-25 18:11:08 +00:00
Oğuz Ersen 1cff0e29e4 Translated using Weblate (Turkish)
Currently translated at 59.6% (62 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-03-25 15:09:48 +01:00
Sylvia van Os e718ffb77d Translated using Weblate (Swedish)
Currently translated at 1.9% (2 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2022-03-25 15:09:45 +01:00
Sylvia van Os c2d711650f Translated using Weblate (Slovak)
Currently translated at 1.9% (2 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sk/
2022-03-25 15:09:45 +01:00
Sylvia van Os f205045916 Translated using Weblate (French)
Currently translated at 17.3% (18 of 104 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-03-25 15:09:45 +01:00
Sylvia van Os 6ed6e683b5 Translated using Weblate (Slovak)
Currently translated at 82.7% (201 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2022-03-25 15:09:44 +01:00
Sylvia van Os 1612bed309 Translated using Weblate (French)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-03-25 15:09:43 +01:00
Sylvia van Os ac8a2c445c Translated using Weblate (Spanish)
Currently translated at 69.1% (168 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2022-03-25 15:09:43 +01:00
dependabot[bot] f98203fc5d Bump core-splashscreen from 1.0.0-beta01 to 1.0.0-beta02
Bumps core-splashscreen from 1.0.0-beta01 to 1.0.0-beta02.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 02:26:52 +00:00
Sylvia van Os 82298d0d50 Merge pull request #845 from CatimaLoyalty/create-pull-request/patch-1648059304
Update Fastlane changelogs
2022-03-23 19:16:13 +01:00
TheLastProject 916515f8b2 Update Fastlane changelogs 2022-03-23 18:15:04 +00:00
Sylvia van Os b5e6d40857 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-03-23 19:14:19 +01:00
Sylvia van Os efef397870 Fix gray block appearing on invalid value for barcode 2022-03-23 19:13:54 +01:00
Sylvia van Os 377438b6ae Merge pull request #844 from CatimaLoyalty/fix/843
Stocard import fixes
2022-03-23 17:58:39 +01:00
Sylvia van Os 27443db945 Import fix 2022-03-23 17:31:11 +01:00
Sylvia van Os 420886bc3f Make SpotBugs happy 2022-03-22 21:59:35 +01:00
Sylvia van Os 86a01d36db Fix background color generation 2022-03-22 21:46:37 +01:00
Sylvia van Os 329293fa7c Support custom providers in Stocard import 2022-03-22 21:26:36 +01:00
Sylvia van Os 26bbea7377 Fix Stocard import getting stuck 2022-03-22 20:25:39 +01:00
Sylvia van Os 50385c6e0e Merge pull request #842 from CatimaLoyalty/create-pull-request/patch-1647753417
Update contributors
2022-03-20 11:25:33 +01:00
TheLastProject 43c45c9c0c Update contributors 2022-03-20 05:16:57 +00:00
bors[bot]andhuuhaa 17cdc58b19 Merge #841
841: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: huuhaa <huuhaa.tm+gitlab@gmail.com>
2022-03-14 16:25:13 +00:00
huuhaa 4960b77ca3 Translated using Weblate (Finnish)
Currently translated at 2.9% (3 of 103 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fi/
2022-03-14 14:56:44 +01:00
Sylvia van Os a7c6ac695e Merge pull request #838 from CatimaLoyalty/create-pull-request/patch-1647148614
Update contributors
2022-03-13 11:05:48 +01:00
TheLastProject 63dfe27b25 Update contributors 2022-03-13 05:16:54 +00:00
2ec44046a8 Merge #837
837: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
Co-authored-by: Jane Kong <myonjane@gmail.com>
Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
2022-03-12 09:28:40 +00:00
Oğuz Ersen 0363bc67e4 Translated using Weblate (Turkish)
Currently translated at 59.2% (61 of 103 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-03-12 09:54:37 +01:00
Sylvia van Os affa434679 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-03-12 09:54:35 +01:00
Michael Moroni ded151830e Translated using Weblate (Italian)
Currently translated at 8.7% (9 of 103 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-03-12 09:54:35 +01:00
109247019824 e1b604c1d2 Translated using Weblate (Bulgarian)
Currently translated at 99.5% (242 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-03-11 07:55:45 +01:00
Jane Kong 45d9353b54 Translated using Weblate (Chinese (Simplified))
Currently translated at 96.7% (235 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-03-11 07:55:45 +01:00
Sylvia van Os ceceda560a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-03-11 07:55:45 +01:00
109247019824 088c25dbad Translated using Weblate (Bulgarian)
Currently translated at 99.5% (242 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-03-11 07:55:45 +01:00
Sylvia van Os 54fc1e9106 Release Catima 2.16.0 2022-03-09 19:27:08 +01:00
Sylvia van Os 1ce4216584 Fix extreme padding on some barcode types 2022-03-09 19:07:19 +01:00
Sylvia van Os 78d0bc7bb7 Merge pull request #834 from CatimaLoyalty/create-pull-request/patch-1646770776
Update Fastlane changelogs
2022-03-08 21:20:24 +01:00
bors[bot] fc4bb134a9 Update Fastlane changelogs 2022-03-08 20:19:35 +00:00
bors[bot]andSylvia van Os cecfcd4714 Merge #833
833: Padding improvements r=TheLastProject a=TheLastProject

Fixes #823 

Sadly, it also caused a new regression, cutting off part of the card ID if you use AZTEC and a photo...

| Before | After |
| - | - |
| ![image](https://user-images.githubusercontent.com/1885159/157125003-e336fef8-4dbe-4f75-8d00-908bced3e533.png) | ![image](https://user-images.githubusercontent.com/1885159/157125032-41f3e8ac-9fca-4f21-9a0e-df955670814a.png) |

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-03-08 20:13:56 +00:00
Sylvia van Os c3364d4592 Update CHANGELOG 2022-03-08 21:12:50 +01:00
Sylvia van Os df29abbebd Fix weird UI glitch
No, I don't understand why this works. Black magic, I guess.
2022-03-08 21:10:28 +01:00
Sylvia van Os d4f30f798b Update screenshots 2022-03-08 20:33:46 +01:00
Sylvia van Os 61578a6016 Consistency improvements 2022-03-08 19:56:42 +01:00
Sylvia van Os 13695b5c37 Padding improvements 2022-03-07 22:57:42 +01:00
Sylvia van Os 97d1dcc7eb Merge pull request #830 from CatimaLoyalty/create-pull-request/patch-1646543770
Update contributors
2022-03-06 10:41:00 +01:00
TheLastProject 5efea8c1e8 Update contributors 2022-03-06 05:16:09 +00:00
bors[bot]andJoel A c2607cc6a2 Merge #829
829: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Joel A <joeax910@student.liu.se>
2022-03-04 06:52:28 +00:00
Joel A 6c70e77a75 Translated using Weblate (Swedish)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2022-03-04 04:58:38 +01:00
bors[bot]andGiovanni Donisi d67c896ffe Merge #828
828: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Giovanni Donisi <giovannidonisi0701@gmail.com>
2022-02-27 14:59:06 +00:00
Giovanni Donisi c821040c25 Translated using Weblate (Italian)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-02-27 15:54:58 +01:00
Sylvia van Os 946a56e921 Merge pull request #827 from CatimaLoyalty/create-pull-request/patch-1645937169
Update contributors
2022-02-27 09:10:05 +01:00
TheLastProject b1ea2c4687 Update contributors 2022-02-27 04:46:09 +00:00
745dd109fb Merge #825
825: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: huuhaa <huuhaa.tm+gitlab@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2022-02-22 14:03:38 +00:00
Oğuz Ersen 9f047f3dbd Translated using Weblate (Turkish)
Currently translated at 59.2% (61 of 103 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-02-22 14:55:20 +01:00
huuhaa 68afe746eb Translated using Weblate (Finnish)
Currently translated at 2.9% (3 of 103 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fi/
2022-02-22 14:55:20 +01:00
huuhaa ebd3b0f7f5 Translated using Weblate (Finnish)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2022-02-22 14:55:20 +01:00
IllusiveMan196 163de3653e Translated using Weblate (Ukrainian)
Currently translated at 25.2% (26 of 103 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-02-22 14:55:20 +01:00
IllusiveMan196 1507694bae Translated using Weblate (Ukrainian)
Currently translated at 100.0% (243 of 243 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-02-22 14:55:20 +01:00
Sylvia van Os 6d134009be Merge pull request #819 from Kethen/emoji_icon
emoji icons, color theme in short-cut selection menu
2022-02-20 18:11:31 +01:00
Sylvia van Os c1d2a30931 Merge pull request #821 from Kethen/edit_view_card_icon_corner
proper clipping for card icon inside edit view
2022-02-20 18:05:57 +01:00
Sylvia van Os e5cb6fa1a7 Merge pull request #822 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-02-20 17:13:42 +01:00
Joel A 2188280ada Translated using Weblate (Swedish)
Currently translated at 99.5% (240 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2022-02-20 16:58:40 +01:00
Katharine Chui fdc8cb0adf proper clipping for card icon inside edit view 2022-02-20 20:33:25 +08:00
Sylvia van Os b79286d1a6 Merge pull request #820 from CatimaLoyalty/create-pull-request/patch-1645334167
Update contributors
2022-02-20 12:49:42 +01:00
Katharine Chui d9f0ea8346 emoji icons, color theme in short-cut selection menu 2022-02-20 19:16:43 +08:00
TheLastProject a262120bc3 Update contributors 2022-02-20 05:16:06 +00:00
Sylvia van Os 446131a87d Merge pull request #817 from Kethen/card_view_color_fix
#803 cardView appbar icon fix
2022-02-19 17:02:57 +01:00
Sylvia van Os 3466ba6591 Merge pull request #818 from CatimaLoyalty/create-pull-request/patch-1645281896
Update Fastlane changelogs
2022-02-19 15:46:35 +01:00
TheLastProject 5b3c6559b4 Update Fastlane changelogs 2022-02-19 14:44:56 +00:00
Sylvia van Os 4680b53f86 Save card details expansion state 2022-02-19 15:44:35 +01:00
Katharine Chui 8423ea9b59 in cardView, hide iconImage manually instead of relying on appBarLayout height 2022-02-19 21:31:16 +08:00
Sylvia van Os 1d8b2d82ed Remove duplicate translation 2022-02-16 23:54:08 +01:00
Sylvia van Os 784bd299e8 Fastlane fixes 2022-02-16 23:41:43 +01:00
c8df7a7a2e Merge #814
814: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: ssantos <ssantos@web.de>
2022-02-14 21:58:54 +00:00
ssantos cec2058f49 Translated using Weblate (Portuguese)
Currently translated at 6.8% (7 of 102 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2022-02-14 22:56:59 +01:00
Oğuz Ersen c910a96005 Translated using Weblate (Turkish)
Currently translated at 57.8% (59 of 102 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-02-14 22:56:59 +01:00
109247019824 f3c7a75963 Translated using Weblate (Bulgarian)
Currently translated at 3.9% (4 of 102 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2022-02-14 22:56:59 +01:00
Sylvia van Os 04e0b9ba34 Merge pull request #813 from CatimaLoyalty/create-pull-request/patch-1644729316
Update contributors
2022-02-13 09:40:03 +01:00
TheLastProject 1b8e9e4d7c Update contributors 2022-02-13 05:15:15 +00:00
bors[bot]and109247019824 7a556e320b Merge #812
812: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
2022-02-11 20:10:27 +00:00
109247019824 db706a02d3 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-02-11 20:55:41 +01:00
Sylvia van Os 8e452ed6bd Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-02-11 20:04:50 +01:00
Sylvia van Os a9e574a9b4 Release Catima 2.15.2 2022-02-11 20:04:38 +01:00
Sylvia van Os f24d11403c Merge pull request #810 from CatimaLoyalty/create-pull-request/patch-1644601552
Update Fastlane changelogs
2022-02-11 19:46:45 +01:00
TheLastProject e1c658ac2a Update Fastlane changelogs 2022-02-11 17:45:52 +00:00
Sylvia van Os a5901700b4 Fix crash in edit activity on locale without region 2022-02-11 18:45:28 +01:00
Sylvia van Os bf4cd7a961 Merge pull request #807 from CatimaLoyalty/create-pull-request/patch-1644529031
Update Fastlane changelogs
2022-02-10 22:37:35 +01:00
TheLastProject 79ca5196d0 Update Fastlane changelogs 2022-02-10 21:37:10 +00:00
Sylvia van Os b24d641aa6 Fix manual language selection not applying anywhere 2022-02-10 22:36:51 +01:00
Sylvia van Os 84051555b6 Release Catima 2.15.1 2022-02-10 17:39:39 +01:00
Sylvia van Os 48ff57d0fc Merge pull request #802 from CatimaLoyalty/create-pull-request/patch-1644510077
Update Fastlane changelogs
2022-02-10 17:23:42 +01:00
TheLastProject 3a6828b34b Update Fastlane changelogs 2022-02-10 16:21:16 +00:00
Sylvia van Os efd36d061f Update CHANGELOG 2022-02-10 17:20:52 +01:00
bors[bot]andAllan Nordhøy a5ef8ae914 Merge #801
801: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2022-02-10 11:14:04 +00:00
Allan Nordhøy 37ce61646b Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (238 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-02-10 12:13:15 +01:00
5e59315017 Merge #799
799: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: Still Hsu <dev@stillu.cc>
2022-02-09 16:50:40 +00:00
Still Hsu fbed1348aa Translated using Weblate (Chinese (Traditional))
Currently translated at 3.9% (4 of 101 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hant/
2022-02-09 15:57:11 +01:00
Still Hsu 438e9f09a3 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hant/
2022-02-09 15:57:11 +01:00
SC aee9176518 Translated using Weblate (Portuguese)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-02-09 15:57:11 +01:00
Oğuz Ersen 70f7768cee Translated using Weblate (Turkish)
Currently translated at 58.4% (59 of 101 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-02-09 15:57:11 +01:00
solokot bf7e35c361 Translated using Weblate (Russian)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-02-09 15:57:11 +01:00
Heimen Stoffels 71a6fb2f56 Translated using Weblate (Dutch)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-02-09 15:57:11 +01:00
Sylvia van Os 8d799fce26 Fix fastlane directory names 2022-02-08 22:02:38 +01:00
ae6e98b876 Merge #798
798: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2022-02-07 16:38:06 +00:00
Oğuz Ersen 44d8597fa5 Translated using Weblate (Turkish)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-02-07 12:56:29 +01:00
Altons de47b7b1d2 Translated using Weblate (French)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-02-07 12:56:29 +01:00
Altons 631d65708e Translated using Weblate (German)
Currently translated at 100.0% (241 of 241 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-02-07 12:56:29 +01:00
Sylvia van Os 62ffcbc948 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-02-06 22:53:09 +01:00
Sylvia van Os 14ef3086a4 Make spotBugs happy 2022-02-06 22:52:55 +01:00
Sylvia van Os 011b0f7ecc Merge pull request #796 from CatimaLoyalty/create-pull-request/patch-1644183457
Update Fastlane changelogs
2022-02-06 22:37:56 +01:00
TheLastProject 89eaac12d5 Update Fastlane changelogs 2022-02-06 21:37:37 +00:00
Sylvia van Os 2fbe5a821c Fix main menu item hiding logic 2022-02-06 22:37:21 +01:00
Sylvia van Os 5516acecce Release Catima 2.15.0 2022-02-06 12:49:02 +01:00
bors[bot]and109247019824 6163de3086 Merge #792
792: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
2022-02-06 10:54:51 +00:00
Sylvia van Os 4658896304 Add spacing for FAB below groups 2022-02-06 11:53:08 +01:00
Sylvia van Os e0d9e2b2dd Merge pull request #793 from CatimaLoyalty/create-pull-request/patch-1644124546
Update contributors
2022-02-06 11:50:13 +01:00
Sylvia van Os 7dd2291376 Merge pull request #786 from Kethen/colors
old color themes, ucrop color, edit button icon color by theme, ucrop toolbar font
2022-02-06 11:49:35 +01:00
TheLastProject bc69b82029 Update contributors 2022-02-06 05:15:46 +00:00
109247019824 1502ac1923 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-02-05 23:57:50 +01:00
Katharine Chui 0552acae26 spotbug 2022-02-06 03:44:20 +08:00
Katharine Chui 18e30d2726 apply dynamic color instead of leaving it as catima theme for invalid theme key 2022-02-06 03:38:28 +08:00
Sylvia van Os 1646db24df Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-02-05 16:54:49 +01:00
Sylvia van Os 6a6a8fff2b Include basic error details on import failure 2022-02-05 16:54:40 +01:00
Sylvia van Os a0f8f6e6b5 Update label name in needs info autoclose action 2022-02-05 13:48:05 +01:00
3dda3aa1a5 Merge #790
790: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-02-04 18:37:42 +00:00
Sylvia van Os ac6bffcc67 Fix Norwegian translation 2022-02-04 19:37:02 +01:00
Oğuz Ersen 93fac2e726 Translated using Weblate (Turkish)
Currently translated at 58.0% (58 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-02-04 17:56:31 +01:00
Oğuz Ersen 9b724ebcc7 Translated using Weblate (Turkish)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-02-04 17:56:31 +01:00
Michael Moroni 540ef6d345 Translated using Weblate (Italian)
Currently translated at 7.0% (7 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-02-04 17:56:31 +01:00
Altons 64fa790836 Translated using Weblate (German)
Currently translated at 6.0% (6 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-02-04 17:56:31 +01:00
Altons 2c18b0dd19 Translated using Weblate (French)
Currently translated at 16.0% (16 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-02-04 17:56:31 +01:00
solokot f570f2746a Translated using Weblate (Russian)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-02-04 17:56:31 +01:00
Heimen Stoffels 4c9c717792 Translated using Weblate (Dutch)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-02-04 17:56:31 +01:00
Allan Nordhøy db4408108a Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.3% (236 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-02-04 17:56:31 +01:00
Michael Moroni f75df30493 Translated using Weblate (Italian)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-02-04 17:56:31 +01:00
Altons 0f914414af Translated using Weblate (French)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-02-04 17:56:31 +01:00
Altons 3468293f5f Translated using Weblate (German)
Currently translated at 100.0% (240 of 240 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-02-04 17:56:31 +01:00
Katharine Chui c9b8b2df9e requested changes
theme color preference is now before pure black background preference

new setting string arrays for when dynamic color is not available

general refactoring and formatting changes
2022-02-04 14:35:10 +08:00
Katharine Chui 3d138c9504 ucrop toolbar typeface 2022-02-03 20:40:52 +08:00
Katharine Chui 72b95988e5 hide catima theme when dynamic color is not available 2022-02-03 19:36:24 +08:00
Katharine Chui 188c147173 better themed color resolution for edit button on card view 2022-02-03 18:05:03 +08:00
Katharine Chui 6224a13d17 ucrop color 2022-02-03 17:53:32 +08:00
f393b9b618 Merge #787
787: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
2022-02-03 07:08:34 +00:00
Joel A 6fa6cdfadf Translated using Weblate (Swedish)
Currently translated at 99.5% (237 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2022-02-03 00:51:59 +01:00
Altons bc7f44f60a Translated using Weblate (German)
Currently translated at 7.0% (7 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-02-03 00:51:59 +01:00
Altons 5579784b0a Translated using Weblate (French)
Currently translated at 16.0% (16 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-02-03 00:51:59 +01:00
Sylvia van Os a20f8b58f8 Fix more missing screenshots 2022-02-02 22:52:43 +01:00
Sylvia van Os fc8d0ac1aa Fix screenshots 2022-02-02 22:17:00 +01:00
Katharine Chui edf953cdad colors 2022-02-03 05:12:20 +08:00
Sylvia van Os 7290c4aa28 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-02-02 21:47:25 +01:00
Sylvia van Os f28e614c7f Update screenshots 2022-02-02 21:47:16 +01:00
Sylvia van Os 616b23d3a8 Merge pull request #785 from CatimaLoyalty/create-pull-request/patch-1643833796
Update Fastlane changelogs
2022-02-02 21:31:05 +01:00
TheLastProject 5fda774626 Update Fastlane changelogs 2022-02-02 20:29:56 +00:00
Sylvia van Os 30941a9e16 Update CHANGELOG 2022-02-02 21:28:48 +01:00
Sylvia van Os 9289d3cf0b Merge pull request #783 from Kethen/color_fixes
various color fixes
2022-02-02 20:30:27 +01:00
Sylvia van Os 0ecc36a83c Merge pull request #784 from ratneshnavlakhe/add-padding-to-main-list
Add padding to the bottom of the main list.
2022-02-02 19:54:53 +01:00
Katharine Chui d3b8569ef7 settings for pure black oled 2022-02-03 00:29:49 +08:00
Ratnesh Navlakhe 19722af65f Add padding to the bottom of the main list. 2022-02-01 23:37:43 +05:30
Katharine Chui 329be8abbb various color fixes
band-aid fixes for splash screen and material 3 dynamic color api

change editbutton icon's color in card view based on editbutton background color

make status bar transparent as per material 3, or tainted transparent for api level < 23 + light theme
2022-02-02 01:46:09 +08:00
bors[bot]andPetr Novák 9aa6acccda Merge #780
780: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Petr Novák <nit.monkey@gmail.com>
2022-02-01 11:19:59 +00:00
Petr Novák ba05c6872b Translated using Weblate (Czech)
Currently translated at 99.0% (99 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-02-01 09:53:24 +01:00
Petr Novák ca1fc214ff Translated using Weblate (Czech)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-02-01 09:53:24 +01:00
Sylvia van Os 2ebb3e1837 Merge pull request #778 from Altonss/patch-1
Update to 2.2.8 version of ucrop!
2022-01-31 17:33:52 +01:00
Altonss 019c5e232d Update to 2.2.8 version of ucrop! 2022-01-31 11:24:32 +01:00
dda527a72f Merge #775
775: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2022-01-31 05:10:02 +00:00
Allan Nordhøy df0bbe773f Translated using Weblate (Norwegian Bokmål)
Currently translated at 21.0% (21 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2022-01-31 04:55:15 +01:00
mondstern a320e1c776 Translated using Weblate (German)
Currently translated at 6.0% (6 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-01-30 15:56:23 +01:00
Sylvia van Os 607669a74c Merge pull request #774 from CatimaLoyalty/create-pull-request/patch-1643519707
Update contributors
2022-01-30 09:48:50 +01:00
TheLastProject f50dfeac9e Update contributors 2022-01-30 05:15:07 +00:00
bors[bot]andOğuz Ersen ef46f6a00b Merge #772
772: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2022-01-28 19:01:20 +00:00
Oğuz Ersen eafedb52ad Translated using Weblate (Turkish)
Currently translated at 58.0% (58 of 100 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-01-28 19:55:48 +01:00
bors[bot]andsolokot 423384fae6 Merge #770
770: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: solokot <solokot@gmail.com>
2022-01-27 17:55:15 +00:00
solokot 09e96eba53 Translated using Weblate (Russian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-01-27 18:53:35 +01:00
Sylvia van Os 4b0a4a7db9 Merge pull request #769 from CatimaLoyalty/dependabot/gradle/androidx.preference-preference-1.2.0
Bump preference from 1.1.1 to 1.2.0
2022-01-27 17:45:06 +01:00
dependabot[bot] 2371738a15 Bump preference from 1.1.1 to 1.2.0
Bumps preference from 1.1.1 to 1.2.0.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 02:30:12 +00:00
Sylvia van Os e22d11f8e9 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-26 22:58:25 +01:00
Sylvia van Os 917e60a7f5 Fix lint 2022-01-26 22:58:02 +01:00
Sylvia van Os 4d09f66ac6 Merge pull request #768 from CatimaLoyalty/create-pull-request/patch-1643233121
Update Fastlane changelogs
2022-01-26 22:42:53 +01:00
TheLastProject 622aa96464 Update Fastlane changelogs 2022-01-26 21:38:41 +00:00
Sylvia van Os 9887e19ec9 Fix cropper not using theme colour 2022-01-26 22:38:02 +01:00
a308634868 Merge #766
766: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Quentin PAGÈS <quentinantonin@free.fr>
Co-authored-by: H Tamás <hovanszki@gmail.com>
2022-01-26 16:46:59 +00:00
H Tamás 44c3c8b32f Translated using Weblate (Hungarian)
Currently translated at 9.0% (9 of 99 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/hu/
2022-01-26 14:56:20 +01:00
H Tamás 69835ff0c9 Translated using Weblate (Hungarian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2022-01-26 14:56:20 +01:00
Quentin PAGÈS 8270bc6c03 Translated using Weblate (Occitan)
Currently translated at 38.2% (91 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/oc/
2022-01-26 14:56:20 +01:00
Sylvia van Os 9e8ea3384e Add PayPal 2022-01-24 22:21:21 +01:00
Sylvia van Os c8b258cd62 Merge pull request #760 from CatimaLoyalty/create-pull-request/patch-1642912504
Update contributors
2022-01-23 09:45:38 +01:00
TheLastProject f23c73a67a Update contributors 2022-01-23 04:35:04 +00:00
8ba3295ba1 Merge #759
759: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: H Tamás <hovanszki@gmail.com>
2022-01-22 17:57:33 +00:00
H Tamás 6e3d61304f Translated using Weblate (Hungarian)
Currently translated at 33.6% (80 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hu/
2022-01-22 18:54:21 +01:00
Oğuz Ersen 9b7b3c4b9f Translated using Weblate (Turkish)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-01-22 18:54:21 +01:00
b993221af5 Merge #758
758: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: H Tamás <hovanszki@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2022-01-21 22:03:16 +00:00
Oğuz Ersen 86c029fe92 Translated using Weblate (Turkish)
Currently translated at 99.5% (237 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-01-21 14:10:45 +01:00
109247019824 fbe857a5cf Translated using Weblate (Bulgarian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-01-21 14:10:45 +01:00
Eric 1717560c05 Translated using Weblate (Chinese (Simplified))
Currently translated at 79.4% (189 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2022-01-21 14:10:45 +01:00
solokot 02f85cd49a Translated using Weblate (Russian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-01-21 14:10:45 +01:00
Heimen Stoffels 69a6afe611 Translated using Weblate (Dutch)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-01-21 14:10:45 +01:00
Michael Moroni 94fa6d19c4 Translated using Weblate (Italian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-01-21 14:10:45 +01:00
J. Lavoie 211ee9ce69 Translated using Weblate (French)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-01-21 14:10:45 +01:00
J. Lavoie e818be3d50 Translated using Weblate (German)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-01-21 14:10:45 +01:00
Sylvia van Os 6620369616 Translated using Weblate (English)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2022-01-21 14:10:45 +01:00
H Tamás 9d9ce1d11f Added translation using Weblate (Hungarian) 2022-01-21 14:10:45 +01:00
76ba3c333e Merge #757
757: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Ati <ati@tutamail.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-01-20 19:21:08 +00:00
Sylvia van Os 0429086c57 Fix build 2022-01-20 20:20:36 +01:00
Ati 4a4b534813 Translated using Weblate (Slovak)
Currently translated at 84.0% (200 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2022-01-20 19:54:13 +01:00
Allan Nordhøy 8cfae80ea8 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.4% (232 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-01-20 19:54:13 +01:00
Ati 517a9cf37a Translated using Weblate (Czech)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-01-20 19:54:13 +01:00
Sylvia van Os 242f4b7ad9 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-18 23:14:25 +01:00
Sylvia van Os ce1a210650 Correctly make balancePoints a plural string 2022-01-18 23:14:12 +01:00
9d369a8e6f Merge #754
754: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Android](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Android (Fastlane)](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Ati <ati@tutamail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
2022-01-18 21:56:59 +00:00
IllusiveMan196 240f73f743 Translated using Weblate (Ukrainian)
Currently translated at 24.2% (24 of 99 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2022-01-18 22:55:16 +01:00
Michael Moroni 3cf1579bb0 Translated using Weblate (Italian)
Currently translated at 5.0% (5 of 99 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2022-01-18 22:55:16 +01:00
Altons 171fb83249 Translated using Weblate (German)
Currently translated at 5.0% (5 of 99 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-01-18 22:55:16 +01:00
Altons 603b02911b Translated using Weblate (French)
Currently translated at 15.1% (15 of 99 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-01-18 22:55:16 +01:00
IllusiveMan196 ab5eb62bc1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-01-18 22:55:16 +01:00
Ati 40b2b5c96f Translated using Weblate (Slovak)
Currently translated at 48.7% (116 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2022-01-18 22:55:16 +01:00
Sylvia van Os 6efe0f6c54 Merge pull request #752 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2022-01-17 20:41:05 +01:00
mondstern 00a78c6030 Translated using Weblate (Portuguese)
Currently translated at 87.8% (209 of 238 strings)

Translation: Catima/Android
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-01-16 14:55:06 +01:00
Oğuz Ersen 0db46614a8 Translated using Weblate (Turkish)
Currently translated at 55.5% (55 of 99 strings)

Translation: Catima/Android (Fastlane)
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-01-16 14:55:06 +01:00
Sylvia van Os 32d139f756 Merge pull request #750 from CatimaLoyalty/create-pull-request/patch-1642310230
Update contributors
2022-01-16 09:56:06 +01:00
TheLastProject c2c8b780c8 Update contributors 2022-01-16 05:17:09 +00:00
Sylvia van Os 057a58a3d6 Add FUNDING.yml 2022-01-15 14:01:16 +01:00
Sylvia van Os 551fbed8ad Release Catima 2.14.1 2022-01-15 13:46:49 +01:00
Sylvia van Os 468c86b5ea Merge pull request #748 from CatimaLoyalty/create-pull-request/patch-1642250378
Update Fastlane changelogs
2022-01-15 13:40:17 +01:00
TheLastProject 50cb3146bf Update Fastlane changelogs 2022-01-15 12:39:37 +00:00
Sylvia van Os 0853bd88a4 Various theming fixes 2022-01-15 13:39:19 +01:00
Sylvia van Os 3bbe8e9524 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-15 12:12:04 +01:00
Sylvia van Os ebc2e07fc4 Use new URLs 2022-01-15 12:11:57 +01:00
Sylvia van Os ad368e68eb Merge pull request #747 from CatimaLoyalty/create-pull-request/patch-1642244294
Update Fastlane changelogs
2022-01-15 11:59:07 +01:00
TheLastProject a1d4bb746f Update Fastlane changelogs 2022-01-15 10:58:14 +00:00
Sylvia van Os 44473ae921 Hide search, expand and sort icons until there is at least one card 2022-01-15 11:57:52 +01:00
Sylvia van Os 2c3d9f714c Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-14 23:07:21 +01:00
Sylvia van Os 13121e9869 Also colour scaler with card colour 2022-01-14 23:07:14 +01:00
Sylvia van Os 14116324fb Merge pull request #743 from CatimaLoyalty/create-pull-request/patch-1642196358
Update Fastlane changelogs
2022-01-14 22:40:14 +01:00
TheLastProject d207197055 Update Fastlane changelogs 2022-01-14 21:39:18 +00:00
Sylvia van Os a36775c6fd Release Catima 2.14.0 2022-01-14 22:38:52 +01:00
Sylvia van Os cae95d2577 Update screenshots to Material You 2022-01-14 21:54:10 +01:00
1c95a767c0 Merge #741
741: Material You redesign r=TheLastProject a=TheLastProject

I'm not super excited about the new dark theme's primary colour as generated by https://material-foundation.github.io/material-theme-builder/ for primary colour `#A83536` but alas...

![image](https://user-images.githubusercontent.com/1885159/149578453-72a6c345-e2ec-4271-9110-7ee39356b385.png)


Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2022-01-14 20:36:05 +00:00
Sylvia van Os 26fd3e3a58 Make spotBugs happy 2022-01-14 21:35:02 +01:00
Sylvia van Os e79be213fc Fix lint 2022-01-14 21:26:29 +01:00
Sylvia van Os 2010b9a25c Card-related colours on view screen 2022-01-14 21:05:50 +01:00
Sylvia van Os 355c2f9ceb Material You redesign 2022-01-14 20:27:11 +01:00
Sylvia van Os 43daeec5c3 Merge pull request #738 from TheLastProject/dependabot/gradle/androidx.constraintlayout-constraintlayout-2.1.3
Bump constraintlayout from 2.1.2 to 2.1.3
2022-01-14 07:23:26 +01:00
dependabot[bot] 5ddf77dd63 Bump material from 1.4.0 to 1.5.0
Bumps [material](https://github.com/material-components/material-components-android) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/material-components/material-components-android/releases)
- [Commits](https://github.com/material-components/material-components-android/compare/1.4.0...1.5.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>
2022-01-14 02:26:18 +00:00
dependabot[bot] 64fb91d644 Bump constraintlayout from 2.1.2 to 2.1.3
Bumps [constraintlayout](https://github.com/androidx/constraintlayout) from 2.1.2 to 2.1.3.
- [Release notes](https://github.com/androidx/constraintlayout/releases)
- [Commits](https://github.com/androidx/constraintlayout/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 02:26:13 +00:00
Sylvia van Os 4921d9f4b0 Merge pull request #736 from TheLastProject/dependabot/gradle/androidx.core-core-splashscreen-1.0.0-beta01
Bump core-splashscreen from 1.0.0-alpha02 to 1.0.0-beta01
2022-01-13 08:19:33 +01:00
Sylvia van Os 8f9dd584b1 Merge pull request #735 from TheLastProject/dependabot/gradle/androidx.appcompat-appcompat-1.4.1
Bump appcompat from 1.4.0 to 1.4.1
2022-01-13 08:17:16 +01:00
dependabot[bot] 04f2cffeb3 Bump core-splashscreen from 1.0.0-alpha02 to 1.0.0-beta01
Bumps core-splashscreen from 1.0.0-alpha02 to 1.0.0-beta01.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-13 02:24:29 +00:00
dependabot[bot] 8ca899b7d1 Bump appcompat from 1.4.0 to 1.4.1
Bumps appcompat from 1.4.0 to 1.4.1.

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-13 02:24:23 +00:00
c0f3e814a0 Merge #734
734: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: DEL <mylnico@yahoo.fr>
Co-authored-by: 109247019824 <stoyan@gmx.com>
2022-01-12 07:03:19 +00:00
109247019824 1eb8d03b74 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2022-01-12 07:53:48 +01:00
DEL ec0dc6bd4c Translated using Weblate (French)
Currently translated at 13.4% (13 of 97 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-01-12 07:53:48 +01:00
cd7b3d5970 Merge #733
733: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: vesp <vesp@post.cz>
Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: Petr Novák <nit.monkey@gmail.com>
2022-01-10 22:55:22 +00:00
Petr Novák 55843899da Translated using Weblate (Czech)
Currently translated at 98.9% (96 of 97 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2022-01-10 23:53:36 +01:00
Altons d639013bea Translated using Weblate (German)
Currently translated at 4.1% (4 of 97 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2022-01-10 23:53:33 +01:00
Altons 45785b66e7 Translated using Weblate (French)
Currently translated at 9.2% (9 of 97 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-01-10 23:53:33 +01:00
Altons 6a20366cc9 Translated using Weblate (German)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-01-10 23:53:32 +01:00
vesp 4856e9e971 Translated using Weblate (Czech)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-01-10 23:53:32 +01:00
bors[bot]andPetr Novák 4141856287 Merge #732
732: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Petr Novák <nit.monkey@gmail.com>
2022-01-09 22:24:51 +00:00
Petr Novák 12196fc9b1 Translated using Weblate (Czech)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-01-09 23:21:07 +01:00
Sylvia van Os c73e7924ad Release Catima 2.13.1 2022-01-09 15:51:50 +01:00
Sylvia van Os acf83087f4 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-09 15:00:26 +01:00
Sylvia van Os 8ef507c011 Fix breaking scrolling 2022-01-09 15:00:20 +01:00
d36f82df05 Merge #728
728: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: vesp <vesp@post.cz>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: Maciej Błędkowski <mble@tuta.io>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2022-01-09 09:47:42 +00:00
Oğuz Ersen 5f50e86234 Translated using Weblate (Turkish)
Currently translated at 49.4% (48 of 97 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-01-09 10:45:38 +01:00
Oğuz Ersen 733c9885e8 Translated using Weblate (Turkish)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-01-09 10:45:38 +01:00
solokot 4b7acefece Translated using Weblate (Russian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-01-09 10:45:38 +01:00
Maciej Błędkowski a6b950e2e1 Translated using Weblate (Polish)
Currently translated at 98.3% (234 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-01-09 10:45:37 +01:00
Heimen Stoffels c21f8098ef Translated using Weblate (Dutch)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-01-09 10:45:37 +01:00
J. Lavoie 3ccce45f17 Translated using Weblate (Italian)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-01-09 10:45:37 +01:00
J. Lavoie f096f63352 Translated using Weblate (French)
Currently translated at 100.0% (238 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-01-09 10:45:37 +01:00
J. Lavoie babd6ff9bb Translated using Weblate (German)
Currently translated at 99.5% (237 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-01-09 10:45:37 +01:00
vesp 3c5dea6fbf Translated using Weblate (Czech)
Currently translated at 86.5% (206 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-01-09 10:45:37 +01:00
Sylvia van Os 3bf7d827a1 Merge pull request #727 from TheLastProject/create-pull-request/patch-1641705432
Update contributors
2022-01-09 10:45:34 +01:00
TheLastProject eea03dd516 Update contributors 2022-01-09 05:17:12 +00:00
bors[bot]andAllan Nordhøy 92ceb7ee50 Merge #726
726: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2022-01-07 21:28:52 +00:00
Allan Nordhøy aba5dbfb38 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.8% (233 of 238 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-01-07 22:26:43 +01:00
Sylvia van Os 1ba4839544 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-07 22:26:37 +01:00
Sylvia van Os cca68cfcc5 Simplify 2022-01-07 22:26:29 +01:00
bors[bot]andMaciej Błędkowski d2043c331a Merge #725
725: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Maciej Błędkowski <mble@tuta.io>
2022-01-07 21:09:35 +00:00
Maciej Błędkowski b57bc7d7b6 Translated using Weblate (Polish)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2022-01-07 22:08:54 +01:00
Sylvia van Os 23fb6d9c6a Merge pull request #724 from TheLastProject/create-pull-request/patch-1641589559
Update Fastlane changelogs
2022-01-07 22:08:50 +01:00
TheLastProject 2498ee0354 Update Fastlane changelogs 2022-01-07 21:05:59 +00:00
Sylvia van Os eb38d0a8aa Accessibility fixes 2022-01-07 22:02:51 +01:00
cb0deaae27 Merge #720
720: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
2022-01-06 17:00:49 +00:00
IllusiveMan196 8220c8b32e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2022-01-06 17:54:58 +01:00
solokot 8458a2e79a Translated using Weblate (Russian)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-01-06 17:54:57 +01:00
bors[bot]andAltons d436a20b23 Merge #718
718: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
2022-01-04 19:39:02 +00:00
Altons c24f3b6ece Translated using Weblate (French)
Currently translated at 8.3% (8 of 96 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2022-01-04 19:55:38 +01:00
Altons d5cb1a79d2 Translated using Weblate (French)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2022-01-04 19:55:38 +01:00
Altons 7040dbf997 Translated using Weblate (German)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2022-01-04 19:55:38 +01:00
Sylvia van Os d1685f2557 More metadata fixes 2022-01-03 21:05:11 +01:00
Sylvia van Os 36237d9b3e Release Catima 2.13.0 2022-01-03 19:19:34 +01:00
f968aba926 Merge #716
716: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2022-01-03 18:00:48 +00:00
Oğuz Ersen 2d7960ddc4 Translated using Weblate (Turkish)
Currently translated at 48.9% (47 of 96 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-01-03 18:59:01 +01:00
Oğuz Ersen 4cdd168b8c Translated using Weblate (Turkish)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2022-01-03 18:59:00 +01:00
solokot 9de54872f3 Translated using Weblate (Russian)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2022-01-03 18:58:59 +01:00
Heimen Stoffels f8f0edd8d3 Translated using Weblate (Dutch)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2022-01-03 18:58:59 +01:00
Allan Nordhøy 3703f3d1ac Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (232 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-01-03 18:58:59 +01:00
Michael Moroni 3bbd16e3a9 Translated using Weblate (Italian)
Currently translated at 100.0% (235 of 235 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-01-03 18:58:59 +01:00
Sylvia van Os a2947d1f58 Metadata fixes 2022-01-03 18:30:06 +01:00
Sylvia van Os 4b94dd8b48 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-03 17:47:57 +01:00
Sylvia van Os 62376769cd Update screenshots 2022-01-03 17:47:48 +01:00
Sylvia van Os e057a24526 Merge pull request #715 from TheLastProject/create-pull-request/patch-1641158322
Update Fastlane changelogs
2022-01-02 22:19:54 +01:00
TheLastProject 25cc1a1160 Update Fastlane changelogs 2022-01-02 21:18:42 +00:00
Sylvia van Os d7ed4aeff8 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-02 22:18:22 +01:00
Sylvia van Os 58ebb7c7bf Improve star icon contrast in main view 2022-01-02 22:18:11 +01:00
be2c586820 Merge #714
714: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: ssantos <ssantos@web.de>
2022-01-02 20:43:24 +00:00
ssantos 8a0b2d9460 Translated using Weblate (Portuguese)
Currently translated at 13.5% (13 of 96 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2022-01-02 21:42:33 +01:00
ssantos 4b1583ce4c Translated using Weblate (Portuguese (Portugal))
Currently translated at 87.6% (205 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt_PT/
2022-01-02 21:42:33 +01:00
ssantos 83c611f4ae Translated using Weblate (Portuguese)
Currently translated at 87.6% (205 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2022-01-02 21:42:33 +01:00
Oğuz Ersen 0a7082bed5 Translated using Weblate (Turkish)
Currently translated at 44.7% (43 of 96 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2022-01-02 21:42:33 +01:00
Allan Nordhøy 94c84c60f5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.8% (20 of 96 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2022-01-02 21:42:33 +01:00
Allan Nordhøy 4ce7f475f4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (231 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2022-01-02 21:42:33 +01:00
Michael Moroni 75057d3c41 Translated using Weblate (Italian)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2022-01-02 21:42:33 +01:00
Sylvia van Os 62fce7231d Merge pull request #713 from TheLastProject/create-pull-request/patch-1641156077
Update Fastlane changelogs
2022-01-02 21:42:30 +01:00
TheLastProject d201d2e98f Update Fastlane changelogs 2022-01-02 20:41:17 +00:00
Sylvia van Os 36ff4ca9ae Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2022-01-02 21:40:57 +01:00
Sylvia van Os a7a775bc01 Put all barcode related fields together in the edit screen 2022-01-02 21:40:44 +01:00
Sylvia van Os d217ac8752 Merge pull request #709 from TheLastProject/create-pull-request/patch-1641100630
Update contributors
2022-01-02 09:07:47 +01:00
TheLastProject d376569ba1 Update contributors 2022-01-02 05:17:10 +00:00
bors[bot]andTheLastProject 1a09b1bd5e Merge #708
708: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2022-01-01 23:19:19 +00:00
TheLastProject ec1f4f8fbd Update Fastlane changelogs 2022-01-01 23:14:01 +00:00
Sylvia van Os 3883617a34 Smaller header when details are hidden 2022-01-02 00:10:37 +01:00
bors[bot]andvesp 2e7c8f39a7 Merge #705
705: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: vesp <vesp@post.cz>
2022-01-01 18:00:31 +00:00
vesp 7fc2bdc46e Translated using Weblate (Czech)
Currently translated at 87.6% (205 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2022-01-01 18:54:31 +01:00
bors[bot]andMaciej Błędkowski c141a8986c Merge #703
703: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Maciej Błędkowski <mble@tuta.io>
2022-01-01 13:27:48 +00:00
Maciej Błędkowski 70ad884aa3 Translated using Weblate (Polish)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2021-12-31 13:50:31 +01:00
bors[bot]andOğuz Ersen 2bd8aed853 Merge #702
702: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-12-28 16:14:08 +00:00
Oğuz Ersen 78f5908c33 Translated using Weblate (Turkish)
Currently translated at 33.3% (32 of 96 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-12-28 16:53:31 +01:00
Sylvia van Os 2f43febe95 Merge pull request #701 from TheLastProject/create-pull-request/patch-1640550052
Update Fastlane changelogs
2021-12-26 21:22:34 +01:00
TheLastProject 17d23de518 Update Fastlane changelogs 2021-12-26 20:20:52 +00:00
Sylvia van Os af831cfdbd Fixed pressing the save button multiple times creating multiple entries
Fixes #691
2021-12-26 21:20:27 +01:00
bors[bot]andTheLastProject 4476646317 Merge #700
700: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-12-26 07:44:16 +00:00
TheLastProject 958dc29689 Update contributors 2021-12-26 05:16:50 +00:00
Sylvia van Os 21216f3aa6 Release Catima 2.12.0 2021-12-23 17:41:06 +01:00
bors[bot]andOğuz Ersen 808dd73221 Merge #697
697: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-12-23 16:03:57 +00:00
Oğuz Ersen e3bd82f4a2 Translated using Weblate (Turkish)
Currently translated at 28.4% (27 of 95 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-12-23 16:53:14 +01:00
Sylvia van Os 2cbb105c21 Merge pull request #696 from TheLastProject/create-pull-request/patch-1640123935
Update Fastlane changelogs
2021-12-21 23:01:58 +01:00
TheLastProject 40c364a5e8 Update Fastlane changelogs 2021-12-21 21:58:54 +00:00
Sylvia van Os 8c484078b4 Mention various small fixes 2021-12-21 22:58:33 +01:00
f93f3b912d Merge #695
695: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Yevgeny M <yevgenym.lg3@gmail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-12-20 17:09:03 +00:00
Sylvia van Os 934ef22a8c Translated using Weblate (Hebrew (Israel))
Currently translated at 33.7% (79 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2021-12-20 12:51:14 +01:00
IllusiveMan196 732679f3f8 Translated using Weblate (Ukrainian)
Currently translated at 14.7% (14 of 95 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-12-19 08:33:17 +01:00
IllusiveMan196 2e7cbcbac9 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-12-19 08:33:17 +01:00
Yevgeny M eb5161a382 Translated using Weblate (Hebrew (Israel))
Currently translated at 34.1% (80 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/he_IL/
2021-12-19 08:33:16 +01:00
bors[bot]andTheLastProject b765d77145 Merge #693
693: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-12-19 07:28:43 +00:00
TheLastProject ad344c7d12 Update contributors 2021-12-19 05:16:53 +00:00
Sylvia van Os d84ce6ff82 Remove Google-declined title 2021-12-17 16:59:50 +01:00
Sylvia van Os d4e388cf5d Fix some crashes after DB refactor 2021-12-16 22:49:22 +01:00
bors[bot]andNyatsuki 34fcedfa28 Merge #688
688: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Nyatsuki <Odamaki@yandex.ru>
2021-12-16 16:23:48 +00:00
Nyatsuki c75eed56f0 Translated using Weblate (Japanese)
Currently translated at 99.1% (232 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-12-16 10:51:04 +01:00
bors[bot]andSylvia van Os 8ce0ce82ef Merge #680
680: Cleanup DBHelper r=TheLastProject a=TheLastProject

Should fix #661 

Supersedes #678 

While #678 does fix the issue too, the real issue was that an importer could cause such a state issue. So I've instead been seriously cleaning up. While all the tests pass, I do want to test this slightly longer before merging it into master.

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-12-14 19:24:29 +00:00
bors[bot]andKatharine 304754f991 Merge #677
677: 671 adding English to list of languages, 672, 607 relaunch main activity after language, theme change r=TheLastProject a=Kethen

#671, #672 please review
added #607

Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-12-14 17:38:17 +00:00
Katharine Chui ab6e90d9f6 reload main activity with splash screen skip 2021-12-15 00:38:17 +08:00
Katharine 9df22f18f0 671 adding English to list of languages, 672 relaunch main activity after language change 2021-12-15 00:33:15 +08:00
bors[bot]andKatharine Chui 2eeec777d7 Merge #684
684: 681 fix star icon vector graphics, star color by theme when selected r=TheLastProject a=Kethen

#681 please review
![image](https://user-images.githubusercontent.com/22017945/145991885-991e09d5-913f-499d-94b1-03ae6326eb9f.png)
![image](https://user-images.githubusercontent.com/22017945/145992155-589f45d0-218b-4ab9-b351-2a58d19990bc.png)

![image](https://user-images.githubusercontent.com/22017945/145992048-a08f8e88-bce3-4bfc-a112-35dd991f4516.png)
![image](https://user-images.githubusercontent.com/22017945/145992074-e7699e72-e4d4-44d5-851c-5cd3c453a745.png)


Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-12-14 16:27:57 +00:00
Katharine Chui 1d41039de2 674 currency symbol order fixes (#679) 2021-12-14 17:26:18 +01:00
Katharine Chui 112b4a034c fix card icon layout 2021-12-14 20:16:36 +08:00
Katharine Chui 8c06427976 681 fix vector graphics, star color by theme when selected 2021-12-14 19:41:11 +08:00
486a2b887e Merge #682
682: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-12-14 07:44:19 +00:00
Oğuz Ersen 3f3f289f62 Translated using Weblate (Turkish)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-12-14 02:53:59 +01:00
Joel A bf2b28065d Translated using Weblate (Swedish)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-12-14 02:53:58 +01:00
Eric d00d25ad00 Translated using Weblate (Chinese (Simplified))
Currently translated at 80.7% (189 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2021-12-14 02:53:58 +01:00
solokot f1371daecb Translated using Weblate (Russian)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-12-14 02:53:58 +01:00
Heimen Stoffels 2fecc524f0 Translated using Weblate (Dutch)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-12-14 02:53:58 +01:00
Altons f5beffcad5 Translated using Weblate (French)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-12-14 02:53:58 +01:00
Altons b78bdb3ced Translated using Weblate (German)
Currently translated at 100.0% (234 of 234 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-12-14 02:53:57 +01:00
bors[bot]andKatharine f16b3ca119 Merge #675
675: 635 android 5 stuck row height, 619 star icon color r=TheLastProject a=Kethen

please review, for #635 and #619

https://user-images.githubusercontent.com/22017945/145800150-b3afa43e-de80-4172-bbdd-5d06af6276d1.mp4




Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
2021-12-13 22:06:26 +00:00
Sylvia van Os f2e820f7bb Cleanup DBHelper 2021-12-13 22:47:12 +01:00
Katharine cf38357f3e spotbug 2021-12-13 17:32:44 +08:00
Katharine 9862a9912f 619 adapt star color to card icon 2021-12-13 16:52:21 +08:00
Katharine 990968a67b 635 trigger requestLayout on possible card text view shrink 2021-12-13 15:08:46 +08:00
Sylvia van Os 3331cf9ccf Make spotBugs happy 2021-12-12 19:25:51 +01:00
Sylvia van Os 8a45222783 Simplify card shortcut code 2021-12-12 19:18:13 +01:00
d92efc020b Merge #670
670: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Michael Moroni <michaelmoroni@disroot.org>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
2021-12-12 10:48:38 +00:00
Michael Moroni deb1edb7a6 Translated using Weblate (Italian)
Currently translated at 4.2% (4 of 95 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2021-12-12 11:45:54 +01:00
Heimen Stoffels 3265a9eb4d Translated using Weblate (Dutch)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-12-12 11:45:54 +01:00
Michael Moroni c0ed86818f Translated using Weblate (Italian)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-12-12 11:45:54 +01:00
bors[bot]andTheLastProject 67d8a242b5 Merge #673
673: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-12-12 10:41:17 +00:00
TheLastProject d12a4bf75d Update contributors 2021-12-12 05:16:31 +00:00
e86db3887b Merge #667
667: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Altons <marsupilami450@gmail.com>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-12-09 21:00:45 +00:00
Oğuz Ersen ce8488e515 Translated using Weblate (Turkish)
Currently translated at 28.4% (27 of 95 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-12-09 21:53:29 +01:00
Oğuz Ersen 5ef9aad5a7 Translated using Weblate (Turkish)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-12-09 21:53:28 +01:00
Joel A d9fd3fd001 Translated using Weblate (Swedish)
Currently translated at 99.5% (232 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-12-09 21:53:28 +01:00
J. Lavoie f9f3efe1e2 Translated using Weblate (Finnish)
Currently translated at 71.6% (167 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-12-09 21:53:27 +01:00
Altons c5b9399fc4 Translated using Weblate (French)
Currently translated at 5.2% (5 of 95 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2021-12-09 21:53:27 +01:00
IllusiveMan196 19ad303508 Translated using Weblate (Ukrainian)
Currently translated at 99.5% (232 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-12-09 21:53:27 +01:00
solokot d5b9bb9ca1 Translated using Weblate (Russian)
Currently translated at 99.5% (232 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-12-09 21:53:26 +01:00
Heimen Stoffels c50661f1bd Translated using Weblate (Dutch)
Currently translated at 99.5% (232 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-12-09 21:53:26 +01:00
J. Lavoie afd8d2e675 Translated using Weblate (Italian)
Currently translated at 99.5% (232 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-12-09 21:53:26 +01:00
Altons be8765aab1 Translated using Weblate (French)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-12-09 21:53:25 +01:00
J. Lavoie 5656751a14 Translated using Weblate (French)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-12-09 21:53:25 +01:00
Altons 12b81f7fe5 Translated using Weblate (German)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-12-09 21:53:24 +01:00
J. Lavoie 3ff64d9abc Translated using Weblate (German)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-12-09 21:53:24 +01:00
Altons 0a39a8bb5b Translated using Weblate (English)
Currently translated at 100.0% (233 of 233 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2021-12-09 21:53:24 +01:00
bors[bot]andAltonss 64f68d5c19 Merge #666
666: Add long press to add card to group r=TheLastProject a=Altonss

Fixed issue #649.

Co-authored-by: Altonss <66519591+Altonss@users.noreply.github.com>
2021-12-09 18:48:15 +00:00
Altonss 2975c46f96 Update ManageGroupActivity.java
Fix long press to add card to group
2021-12-09 19:28:00 +01:00
bors[bot]anddependabot[bot] f6762df1cf Merge #665
665: Bump gradle from 7.0.3 to 7.0.4 r=TheLastProject a=dependabot[bot]

Bumps gradle from 7.0.3 to 7.0.4.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.android.tools.build:gradle&package-manager=gradle&previous-version=7.0.3&new-version=7.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-09 16:30:19 +00:00
dependabot[bot] 1aa0585909 Bump gradle from 7.0.3 to 7.0.4
Bumps gradle from 7.0.3 to 7.0.4.

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-09 02:19:09 +00:00
1cb20eeab3 Merge #663
663: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Andreas Blaser <andreas.blaser@outlook.com>
Co-authored-by: Altons <marsupilami450@gmail.com>
2021-12-08 19:31:49 +00:00
Altons c8acee2fbd Translated using Weblate (German)
Currently translated at 3.1% (3 of 94 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-12-08 20:31:13 +01:00
Andreas Blaser ff35773eed Translated using Weblate (German)
Currently translated at 3.1% (3 of 94 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-12-08 20:31:13 +01:00
Sylvia van Os 48403399ab Merge pull request #664 from TheLastProject/create-pull-request/patch-1638991178
Update Fastlane changelogs
2021-12-08 20:31:10 +01:00
TheLastProject 96dafeab70 Update Fastlane changelogs 2021-12-08 19:19:37 +00:00
Sylvia van Os d10e358e7d Document CODE 93 support 2021-12-08 20:19:20 +01:00
Altonss 71eb8c53bc Add code 93 (#659) 2021-12-08 20:18:15 +01:00
186c2d1d56 Merge #657
657: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Marco <magliano32@gmail.com>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-12-07 17:34:52 +00:00
Oğuz Ersen 2efa35504f Translated using Weblate (Turkish)
Currently translated at 99.5% (231 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-12-07 18:32:34 +01:00
Eric ca1996da53 Translated using Weblate (Chinese (Simplified))
Currently translated at 81.4% (189 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2021-12-07 18:32:34 +01:00
Heimen Stoffels b8d0724446 Translated using Weblate (Dutch)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-12-07 18:32:34 +01:00
Marco c9a08e4f5b Translated using Weblate (Italian)
Currently translated at 89.2% (207 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-12-07 18:32:34 +01:00
Altonss 4920b67d0c Add translation platform details in about page (#656) 2021-12-07 18:32:28 +01:00
e8eb3fce5c Merge #655
655: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
Co-authored-by: Altons <marsupilami450@gmail.com>
2021-12-06 23:11:18 +00:00
solokot aaccae647a Translated using Weblate (Russian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-12-07 00:06:32 +01:00
Altons df4e851bfe Translated using Weblate (French)
Currently translated at 90.0% (209 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-12-07 00:06:31 +01:00
Sylvia van Os 05c85dac14 Translated using Weblate (Russian)
Currently translated at 87.9% (204 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-12-06 21:03:58 +01:00
solokot 86d953bb74 Translated using Weblate (Russian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-12-06 20:34:00 +01:00
Allan Nordhøy 1ecc39bea5 Less verbose strings (#645) 2021-12-06 20:33:56 +01:00
Sylvia van Os 4c9182eb0b Merge pull request #651 from weblate/weblate-catima-catima
Translations update from Hosted Weblate
2021-12-05 13:36:48 +01:00
Oğuz Ersen 62fafaff95 Translated using Weblate (Turkish)
Currently translated at 27.6% (26 of 94 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-12-05 12:53:33 +01:00
Oğuz Ersen aa0fdcc6b6 Translated using Weblate (Turkish)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-12-05 12:53:32 +01:00
Heimen Stoffels 6c33dba401 Translated using Weblate (Dutch)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-12-05 12:53:32 +01:00
Allan Nordhøy c07d9805e4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.8% (227 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-12-05 12:53:31 +01:00
Arco 941a123db0 Translated using Weblate (French)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-12-05 12:53:31 +01:00
Arco 2e58421a80 Translated using Weblate (English)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2021-12-05 12:53:31 +01:00
Sylvia van Os ae28e02cce Merge pull request #650 from TheLastProject/create-pull-request/patch-1638681427
Update contributors
2021-12-05 12:17:48 +01:00
TheLastProject e5d8dc8d59 Update contributors 2021-12-05 05:17:07 +00:00
Sylvia van Os b85de0e089 Merge pull request #647 from TheLastProject/create-pull-request/patch-1638623066
Update Fastlane changelogs
2021-12-04 14:04:59 +01:00
TheLastProject 4264155837 Update Fastlane changelogs 2021-12-04 13:04:25 +00:00
Sylvia van Os d2a500824a Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-12-04 14:04:01 +01:00
Sylvia van Os 6a91d59050 Fix crash on sharing card + release 2.11.2 2021-12-04 14:03:52 +01:00
451c49d05f Merge #643
643: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Nyatsuki <Odamaki@yandex.ru>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-12-02 11:24:18 +00:00
Oğuz Ersen b4ec4b74ca Translated using Weblate (Turkish)
Currently translated at 26.8% (25 of 93 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-12-02 10:54:32 +01:00
Nyatsuki 6c254315af Translated using Weblate (Japanese)
Currently translated at 99.1% (230 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-12-02 10:54:31 +01:00
Allan Nordhøy dfaf61722f Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.4% (19 of 93 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-12-02 10:54:30 +01:00
bors[bot]anddependabot[bot] 2dbebea884 Merge #642
642: Bump robolectric from 4.7.2 to 4.7.3 r=TheLastProject a=dependabot[bot]

Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7.2 to 4.7.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/robolectric/robolectric/releases">robolectric's releases</a>.</em></p>
<blockquote>
<h2>Robolectric 4.7.3</h2>
<p>This is a minor release that fixes <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6883">#6883</a>, a NoClassDefError that can occur if the <code>compileSdk</code> &lt; 31. Thanks for <a href="https://github.com/ninniuz"><code>`@​ninniuz</code></a>` for reporting and <a href="https://github.com/utzcoz"><code>`@​utzcoz</code></a>` for the fix (<a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6884">#6884</a>).</p>
<p>It also fixes a minor case of test pollution, where a single Activity could leak across tests (see 5a1f02aaf37f425f8938ae41df5d7aa1b72bba9c for details).</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/robolectric/robolectric/commit/3e1d0a34a16fa8dc8c39b4bafe22143ddaa179ca"><code>3e1d0a3</code></a> Bump version to 4.7.3.</li>
<li><a href="https://github.com/robolectric/robolectric/commit/aab519415eb1eddce706fbb6494a0141f0b11e8f"><code>aab5194</code></a> Use 'processResources' task instead of 'jar' task for nativeruntime</li>
<li><a href="https://github.com/robolectric/robolectric/commit/66829f64e1f1a9115d339c9b9f0b5b5a0013ca6c"><code>66829f6</code></a> Clear InputMethodManager.sInstance for SDK &gt; P</li>
<li><a href="https://github.com/robolectric/robolectric/commit/3e596affabe50eb376d47d65519d222f87f7e855"><code>3e596af</code></a> Only using AttributionSource for compile SDK 31 and above</li>
<li>See full diff in <a href="https://github.com/robolectric/robolectric/compare/robolectric-4.7.2...robolectric-4.7.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.robolectric:robolectric&package-manager=gradle&previous-version=4.7.2&new-version=4.7.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-02 07:09:06 +00:00
dependabot[bot] d7da942481 Bump robolectric from 4.7.2 to 4.7.3
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7.2 to 4.7.3.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.7.2...robolectric-4.7.3)

---
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>
2021-12-02 02:22:33 +00:00
Sylvia van Os 6b4a01c954 Release Catima 2.11.1 2021-11-30 18:30:29 +01:00
Sylvia van Os aee7728f56 Merge pull request #639 from TheLastProject/create-pull-request/patch-1638292575
Update Fastlane changelogs
2021-11-30 18:16:54 +01:00
TheLastProject 6fbbe38542 Update Fastlane changelogs 2021-11-30 17:16:15 +00:00
Sylvia van Os 651744b770 Update CHANGELOG 2021-11-30 18:15:51 +01:00
Sylvia van Os a189ac22ce Prevent white on white status bar on Android 5 2021-11-29 21:29:44 +01:00
Sylvia van Os f4d71e4525 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-11-29 20:23:24 +01:00
Sylvia van Os 45ec062499 Remove selection animator as it can break (fixes #630) 2021-11-29 20:23:17 +01:00
Sylvia van Os 82d8e84d78 Merge pull request #633 from TheLastProject/create-pull-request/patch-1638210607
Update Fastlane changelogs
2021-11-29 19:31:13 +01:00
TheLastProject fa25bff46f Update Fastlane changelogs 2021-11-29 18:30:07 +00:00
Sylvia van Os 5648061a31 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-11-29 19:29:44 +01:00
Sylvia van Os 9cd2f66b40 Naively fix blurriness of letter icons 2021-11-29 19:29:36 +01:00
90b7b43faf Merge #626
626: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: 109247019824 <stoyan@gmx.com>
2021-11-29 07:09:59 +00:00
109247019824 cfe5865d35 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-11-29 00:52:08 +01:00
Allan Nordhøy 243898c441 Translated using Weblate (Norwegian Bokmål)
Currently translated at 19.5% (18 of 92 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-11-29 00:52:08 +01:00
Sylvia van Os 0afc6f3976 Release Catima 2.11.0 2021-11-28 23:05:54 +01:00
Sylvia van Os fa95ea6a62 Make spotBugs happy 2021-11-28 22:57:10 +01:00
Sylvia van Os abb559afd6 Merge pull request #624 from TheLastProject/create-pull-request/patch-1638136040
Update Fastlane changelogs
2021-11-28 22:49:05 +01:00
TheLastProject 61e7d1b154 Update Fastlane changelogs 2021-11-28 21:47:20 +00:00
Sylvia van Os da594a8287 Fix getItemId mistake (fixes #623) 2021-11-28 22:47:02 +01:00
Sylvia van Os 15f5c4a67b Make cropper respect custom theme choice 2021-11-28 14:54:49 +01:00
Sylvia van Os 19f7af1e42 Use cropper card ratio (default) for icon layout 2021-11-28 14:14:45 +01:00
bors[bot]andTheLastProject b5b994642a Merge #621
621: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-11-28 08:38:54 +00:00
TheLastProject 45da445866 Update contributors 2021-11-28 05:15:51 +00:00
bors[bot]anddependabot[bot] 55b1ad1c55 Merge #613
613: Bump NumberPickerPreference from 1.0.3 to 1.0.4 r=TheLastProject a=dependabot[bot]

Bumps [NumberPickerPreference](https://github.com/invissvenska/NumberPickerPreference) from 1.0.3 to 1.0.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/invissvenska/NumberPickerPreference/releases">NumberPickerPreference's releases</a>.</em></p>
<blockquote>
<h2>Version 1.0.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Migrate to latest Gradle version and Maven Publish plugin by <a href="https://github.com/invissvenska"><code>`@​invissvenska</code></a>` in <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/pull/10">invissvenska/NumberPickerPreference#10</a></li>
<li>Feature/migrate to new gradle and maven plugin by <a href="https://github.com/invissvenska"><code>`@​invissvenska</code></a>` in <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/pull/11">invissvenska/NumberPickerPreference#11</a></li>
<li>Develop by <a href="https://github.com/invissvenska"><code>`@​invissvenska</code></a>` in <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/pull/12">invissvenska/NumberPickerPreference#12</a></li>
<li>Develop by <a href="https://github.com/invissvenska"><code>`@​invissvenska</code></a>` in <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/pull/14">invissvenska/NumberPickerPreference#14</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/invissvenska/NumberPickerPreference/compare/1.0.3...1.0.4">https://github.com/invissvenska/NumberPickerPreference/compare/1.0.3...1.0.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/9ee00acc93e646eb2067f4945a5cc0ddcfde0de0"><code>9ee00ac</code></a> Develop (<a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/issues/14">#14</a>)</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/1035c87ae18f790868114d3e02186ab299e0cce6"><code>1035c87</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/issues/12">#12</a> from invissvenska/develop</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/93a5d495df29d5940286f963569ae816c4631ae6"><code>93a5d49</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/issues/11">#11</a> from invissvenska/feature/migrate_to_new_gradle_and_ma...</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/300af7866a488470d02aa8014b6d9049b4212235"><code>300af78</code></a> fix <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/issues/9">#9</a></li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/391b8a85931df92ce24b2a2d00fce381edf90040"><code>391b8a8</code></a> increment version, removed commented code from gradle</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/ef4a9b3a63a2777d42de2b9e0728c3046c32d383"><code>ef4a9b3</code></a> set java version to 11 for jitpack by adding the jitpack yml</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/c28b95e5c82611d6b1fee98b93780a1246977cb3"><code>c28b95e</code></a> set java version to 11</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/2df1805d8242a7b66410fea3074efd7ae0902ece"><code>2df1805</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/invissvenska/NumberPickerPreference/issues/10">#10</a> from invissvenska/feature/migrate_to_new_gradle_and_ma...</li>
<li><a href="https://github.com/invissvenska/NumberPickerPreference/commit/71f4f5992e484da19a486095fd4afd7fb8d9673b"><code>71f4f59</code></a> Migrate to latest Gradle version and Maven Publish plugin</li>
<li>See full diff in <a href="https://github.com/invissvenska/NumberPickerPreference/compare/1.0.3...1.0.4">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.invissvenska:NumberPickerPreference&package-manager=gradle&previous-version=1.0.3&new-version=1.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-26 23:09:26 +00:00
bors[bot]andJoel A fcd6f075f6 Merge #617
617: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org) for [Catima/Catima](https://hosted.weblate.org/projects/catima/catima/).


It also includes following components:

* [Catima/Fastlane](https://hosted.weblate.org/projects/catima/fastlane/)



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Joel A <joeax910@student.liu.se>
2021-11-26 22:15:35 +00:00
Joel A 3d2f119fdb Translated using Weblate (Swedish)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-11-26 22:53:13 +01:00
Sylvia van Os 05f4add5cd Merge pull request #616 from TheLastProject/create-pull-request/patch-1637958232
Update Fastlane changelogs
2021-11-26 21:24:28 +01:00
TheLastProject eb71d5f717 Update Fastlane changelogs 2021-11-26 20:23:51 +00:00
Sylvia van Os a64603d64e Fix Fastlane converter 2021-11-26 21:23:33 +01:00
Sylvia van Os e686bb36ce Mention power screen controls support 2021-11-26 21:21:49 +01:00
351a805046 Merge #505
505: Feature/power screen widgets r=TheLastProject a=TheLastProject

Continuation of #427

Fixes #146

Co-authored-by: /usr/local/ΕΨΗΕΛΩΝ <djechelon@zighinetto.org>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-11-26 20:12:33 +00:00
Sylvia van Os 466ac404bc Show "Not found" if card was removed 2021-11-26 20:25:41 +01:00
Sylvia van Os b5c0be8ed5 Make lint happy 2021-11-25 19:34:11 +01:00
Sylvia van Os f963b2fd4c Make spotBugs happy 2021-11-25 19:18:14 +01:00
dependabot[bot] c26ae45cdc Bump NumberPickerPreference from 1.0.3 to 1.0.4
Bumps [NumberPickerPreference](https://github.com/invissvenska/NumberPickerPreference) from 1.0.3 to 1.0.4.
- [Release notes](https://github.com/invissvenska/NumberPickerPreference/releases)
- [Commits](https://github.com/invissvenska/NumberPickerPreference/compare/1.0.3...1.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-25 02:15:52 +00:00
Sylvia van Os addb0896c0 Surrender to Google (fixes #439)
I can't do it anymore. I am just sick of wasting so much time trying to
get Google to listen. I am sick of talking to a brick wall. I am sick of
the complete lack of competence in Google's entire review department. I
am so tired of having the goalpost moved in front of my eyes over and
over again. And above all, I am sick and tired of asking my translators,
who I appreciate so damn much, to keep wasting their time on Google's
whims.

So here you go, Google. You win. I give up. I will not use a word that
Google Translate translates to "free", because saying my app is "free of
charge" is not allowed. I will not tell your employees over and over
again how to use a dictionary. I will not try to make your staff
understand that "free" meaning both "free of charge" and "freedom" is a
very English concept and is not a thing in the majority of languages.

It is a shame you have cornered the market, because if I could, I would
have avoided your Play Store altogether. At least F-Droid still exists,
so my users are not completely screwed whenever you next decide to
punish me for something arbitrary and incorrect again.

Please, Google, let this be the end of this nonsense.
2021-11-24 17:05:52 +01:00
Sylvia van Os c75bef4f01 Open on single click 2021-11-23 23:25:10 +01:00
Sylvia van Os f633fb39aa Use card icon image if available 2021-11-23 23:24:36 +01:00
Sylvia van Os 49200fff48 Fix most spotBugs issues 2021-11-23 23:23:58 +01:00
Sylvia van Os f4bd6a3f59 Merge remote-tracking branch 'origin' into feature/power_screen_widgets 2021-11-23 20:42:16 +01:00
Sylvia van Os 18021e7653 Remove unicode character from Norwegian title as per Google guidelines 2021-11-23 20:25:17 +01:00
bors[bot]andKatharine de364a4cc4 Merge #612
612: Replaced StartActivityForResult with ResultLaunchers r=TheLastProject a=Kethen

redoing #470

currently spotBug complains about an InputStream is not being closed properly, which it didn't catch before the refactoring

I'd suggest moving opening an inputStream inside the import thread

Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-11-23 18:17:36 +00:00
Katharine Chui 3ba42aad6d always use getContentResolver().open(Input/Output)Stream, opening streams diffrently from URIs seems to be redundent
https://developer.android.com/reference/android/content/ContentResolver#openInputStream(android.net.Uri)

spotBug is also happier with those streams not getting closed within the scope of that function, for some reason unknown
2021-11-23 18:42:21 +08:00
Katharine 63fad8bae1 ImportExportActivity ActivityResultLauncher, minor clean ups 2021-11-23 18:35:29 +08:00
Katharine ad418bc9bd ScanActivity ActivityResultLauncher 2021-11-23 18:35:29 +08:00
Katharine b0263d8eb5 MainActivity ActivityResultLauncher 2021-11-23 18:35:29 +08:00
Sylvia van Os 97d3969f93 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-11-22 19:11:39 +01:00
Sylvia van Os 1c85172206 Google can't decide 2021-11-22 19:11:24 +01:00
bors[bot]anddependabot[bot] 711fa7ef81 Merge #611
611: Bump robolectric from 4.7.1 to 4.7.2 r=TheLastProject a=dependabot[bot]

Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7.1 to 4.7.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/robolectric/robolectric/releases">robolectric's releases</a>.</em></p>
<blockquote>
<h2>Robolectric 4.7.2</h2>
<p>This is a minor release that fixes a memory leak of Theme objects in binary resources for Android S (<a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6872">#6872</a>). Thanks <a href="https://github.com/calvarez-ov"><code>`@​calvarez-ov</code></a>` for the report and helping debug.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/robolectric/robolectric/commit/9ed0797525050a0580cd685308d858c5988575ba"><code>9ed0797</code></a> Bump version to 4.7.2.</li>
<li><a href="https://github.com/robolectric/robolectric/commit/5a8c5def4f8b6a87b316e6a7666146c77127b6c9"><code>5a8c5de</code></a> Fix theme native object collection in Android S</li>
<li><a href="https://github.com/robolectric/robolectric/commit/666a5213a7ef00fc0840fafecf1c759a725e8084"><code>666a521</code></a> Migrate ShadowAccessibilityNodeInfo to reflector</li>
<li>See full diff in <a href="https://github.com/robolectric/robolectric/compare/robolectric-4.7.1...robolectric-4.7.2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.robolectric:robolectric&package-manager=gradle&previous-version=4.7.1&new-version=4.7.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-22 17:48:11 +00:00
dependabot[bot] 2220a8e3c6 Bump robolectric from 4.7.1 to 4.7.2
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7.1 to 4.7.2.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.7.1...robolectric-4.7.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>
2021-11-22 02:25:20 +00:00
cd1bd31e23 Merge #610
610: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
2021-11-21 23:01:08 +00:00
SC f812194b1a Translated using Weblate (Portuguese)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-11-21 23:53:04 +01:00
IllusiveMan196 79c26cfed7 Translated using Weblate (Ukrainian)
Currently translated at 15.3% (14 of 91 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-11-21 23:53:04 +01:00
Sylvia van Os 85ea10303a Merge pull request #609 from TheLastProject/create-pull-request/patch-1637471752
Update contributors
2021-11-21 07:05:15 +01:00
TheLastProject 4196ad8d61 Update contributors 2021-11-21 05:15:51 +00:00
bors[bot]andIllusiveMan196 90be6a418b Merge #608
608: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
2021-11-20 21:59:18 +00:00
IllusiveMan196 2e2563cfc0 Translated using Weblate (Ukrainian)
Currently translated at 5.4% (5 of 91 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-11-20 22:53:02 +01:00
IllusiveMan196 983c207019 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-11-20 22:51:35 +01:00
Sylvia van Os 6a5983b7bf Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-11-20 14:37:23 +01:00
Sylvia van Os b34e69d5d5 Delete Portuguese title because it has been disallowed by Google 2021-11-20 14:36:55 +01:00
f1cd9ac935 Merge #606
606: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: g <muziejusinfo@gmail.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
2021-11-20 12:02:05 +00:00
solokot 5eb56c934b Translated using Weblate (Russian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-11-20 12:53:08 +01:00
Heimen Stoffels f9b24d4b1b Translated using Weblate (Dutch)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-11-20 12:53:07 +01:00
Allan Nordhøy 537b2cba82 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.2% (228 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-11-20 12:53:07 +01:00
g d788a274a8 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-11-20 12:53:07 +01:00
J. Lavoie 57c383c064 Translated using Weblate (Italian)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-11-20 12:53:07 +01:00
J. Lavoie 49a8828007 Translated using Weblate (French)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-11-20 12:53:06 +01:00
J. Lavoie d56a31160a Translated using Weblate (German)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-11-20 12:53:06 +01:00
Sylvia van Os bb78f9c12a Fastlane cleanup 2021-11-20 00:32:15 +01:00
Sylvia van Os 00c005afce Tag CHANGELOG 2021-11-20 00:15:09 +01:00
Sylvia van Os c008767bd6 Release Catima 2.10.0 2021-11-20 00:14:33 +01:00
Sylvia van Os 5e15555ad4 Fix deprecations 2021-11-19 15:07:04 +01:00
bors[bot]anddependabot[bot] 916d12c504 Merge #604
604: Bump robolectric from 4.7 to 4.7.1 r=TheLastProject a=dependabot[bot]

Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7 to 4.7.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/robolectric/robolectric/releases">robolectric's releases</a>.</em></p>
<blockquote>
<h2>Robolectric 4.7.1</h2>
<p>This is a minor release that fixes <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6858">#6858</a>. In that issue, certain Android classes could not be mocked by Mockito due to some changes to Robolectric instrumentation performed on interfaces.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/robolectric/robolectric/commit/c1e4fed8669a16de3b0281b2b15f3290aee1747c"><code>c1e4fed</code></a> Bump version to 4.7.1.</li>
<li><a href="https://github.com/robolectric/robolectric/commit/c9e861d3d70bd29617246f2d7c7cf31931d59b0a"><code>c9e861d</code></a> Bump to version 3 of preinstrumented jars</li>
<li><a href="https://github.com/robolectric/robolectric/commit/434a5347f18dc6bbe7a5381a30c6f20ac567bad5"><code>434a534</code></a> Limit instrumentation on interfaces</li>
<li>See full diff in <a href="https://github.com/robolectric/robolectric/compare/robolectric-4.7...robolectric-4.7.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.robolectric:robolectric&package-manager=gradle&previous-version=4.7&new-version=4.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-19 07:49:40 +00:00
bors[bot]anddependabot[bot] 854958e364 Merge #603
603: Bump zip4j from 2.9.0 to 2.9.1 r=TheLastProject a=dependabot[bot]

Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.9.0 to 2.9.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/srikanth-lingala/zip4j/releases">zip4j's releases</a>.</em></p>
<blockquote>
<h2>v2.9.1</h2>
<p>Improvements:</p>
<ul>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/341">#341</a> Add caching to Travis build process</li>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/359">#359</a> Add PasswordCallback for encrypted Input Streams</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/354">#354</a> Skip checking for directory when reading entries</li>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/347">#347</a> Extract contents of sub-directory even when sub-directory entry does not exist</li>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/348">#348</a> Fix bug in sub-folder extraction when folder name appears at the end of central directory</li>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/363">#363</a> Avoid replacing Windows file name separator</li>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/365">#365</a> Improve file header equals check to include offset of local file header</li>
<li><a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/380">#380</a> Use exception type WRONG_PASSWORD when password is null or empty for AES</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/860965237a746e481071a656377633f84dfb388b"><code>8609652</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/365">#365</a> Improve file header equals check to include offset of local file header</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/9eab02b675d23079fc87fe9a6c0d5503465d2e3e"><code>9eab02b</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/380">#380</a> Use exception type WRONG_PASSWORD when password is null or empty for AES</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/4e5e2d45ffb69255e8266b6d994b579c47fe9e2f"><code>4e5e2d4</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/363">#363</a> Removed invalid test</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/de9bb5f35d4e01451381c113c04040bd70f50f1c"><code>de9bb5f</code></a> Remove functional interface annotation</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/ec78cea98c505292a6d22d0ad6fbdccb38aa4b22"><code>ec78cea</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/363">#363</a> Avoid replacing Windows file name separator</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/2ec68db8b7dcac1e6867362c3cb1c80d5d793762"><code>2ec68db</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/359">#359</a> Add PasswordCallback for encrypted Input Streams</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/7a139612cea3b7abe5c666087e24d587de9ebeda"><code>7a13961</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/347">#347</a> Use exception type FILE_NOT_FOUND when entry does not exist in zip</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/3224fb8ef5b3f9dd8fc9b18683f20384f550d274"><code>3224fb8</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/347">#347</a> Fix failing tests</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/9ae5253f4b8bcf8ca9d8bf6263354d73fa6e19a4"><code>9ae5253</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/347">#347</a> Extract contents of sub-directory even when sub-directory entry does not...</li>
<li><a href="https://github.com/srikanth-lingala/zip4j/commit/14aebe0d05e7c7c3537fb2e4fcb80a31b07e8168"><code>14aebe0</code></a> <a href="https://github-redirect.dependabot.com/srikanth-lingala/zip4j/issues/348">#348</a> Fix bug in sub-folder extraction when folder name appears at the end of ...</li>
<li>Additional commits viewable in <a href="https://github.com/srikanth-lingala/zip4j/compare/v2.9.0...v2.9.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=net.lingala.zip4j:zip4j&package-manager=gradle&previous-version=2.9.0&new-version=2.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-19 07:45:09 +00:00
dependabot[bot] d295dd40fd Bump robolectric from 4.7 to 4.7.1
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.7 to 4.7.1.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.7...robolectric-4.7.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>
2021-11-19 02:24:23 +00:00
dependabot[bot] 069a3c99ef Bump zip4j from 2.9.0 to 2.9.1
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.9.0 to 2.9.1.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.9.0...v2.9.1)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-19 02:24:13 +00:00
bors[bot]andOğuz Ersen f1e7e5494d Merge #602
602: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-11-18 15:58:55 +00:00
Oğuz Ersen 189fe7d101 Translated using Weblate (Turkish)
Currently translated at 19.7% (18 of 91 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-11-18 16:53:14 +01:00
Oğuz Ersen 9a9ff77d1c Translated using Weblate (Turkish)
Currently translated at 100.0% (232 of 232 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-11-18 16:53:13 +01:00
bors[bot]andsolokot b8c1eaf88e Merge #601
601: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: solokot <solokot@gmail.com>
2021-11-18 15:23:53 +00:00
solokot e525a32511 Translated using Weblate (Russian)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-11-18 16:20:39 +01:00
Sylvia van Os de9f108534 Merge branch 'master' of github.com:TheLastProject/Catima 2021-11-18 16:20:28 +01:00
Sylvia van Os c5f0d03a1c Add button to toggle showing details on main screen 2021-11-18 16:20:00 +01:00
Sylvia van Os e592452d02 Use card shape for icons by default 2021-11-18 15:41:48 +01:00
d3d2b37001 Merge #599 #600
599: Bump appcompat from 1.3.1 to 1.4.0 r=TheLastProject a=dependabot[bot]

Bumps appcompat from 1.3.1 to 1.4.0.


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.appcompat:appcompat&package-manager=gradle&previous-version=1.3.1&new-version=1.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

600: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: solokot <solokot@gmail.com>
2021-11-18 11:13:17 +00:00
solokot 3dbe4f8327 Translated using Weblate (Russian)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-11-18 09:53:07 +01:00
dependabot[bot] 3d81c1be08 Bump appcompat from 1.3.1 to 1.4.0
Bumps appcompat from 1.3.1 to 1.4.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>
2021-11-18 02:15:36 +00:00
bors[bot]andbors[bot] 333874e5e1 Merge #598
598: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: bors[bot] <bors[bot]@users.noreply.github.com>
2021-11-17 19:46:55 +00:00
bors[bot] 69a53a8408 Update Fastlane changelogs 2021-11-17 19:45:07 +00:00
bors[bot]andSylvia van Os 8dc479793b Merge #597
597: New card layout r=TheLastProject a=TheLastProject

TODO:
- [x] Fix cards sizing up to stay equal size but failing to size back down on group switch

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-11-17 19:39:27 +00:00
Sylvia van Os a2d48a236b Tweak margins 2021-11-17 20:35:47 +01:00
Sylvia van Os 67f390f594 Update screenshots 2021-11-17 20:12:18 +01:00
Sylvia van Os 1a5109e036 Fix card sizing 2021-11-17 19:56:27 +01:00
bors[bot]andSylvia van Os ff42ead6b7 Merge #595
595: Cleanup barcode selector r=TheLastProject a=TheLastProject

Should make #592 easier to implement.

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-11-17 18:17:41 +00:00
Sylvia van Os 2f8d8e79c1 Make spotBugs happy 2021-11-17 19:13:28 +01:00
bors[bot]anddependabot[bot] efa6ac1f6c Merge #596
596: Bump constraintlayout from 2.1.1 to 2.1.2 r=TheLastProject a=dependabot[bot]

Bumps [constraintlayout](https://github.com/androidx/constraintlayout) from 2.1.1 to 2.1.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/androidx/constraintlayout/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.constraintlayout:constraintlayout&package-manager=gradle&previous-version=2.1.1&new-version=2.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-17 17:50:21 +00:00
bors[bot]andKatharine Chui 4fc56068e1 Merge #593
593: prevent bottomSheet from growing a padding getting into/leaving fullscreen r=TheLastProject a=Kethen

From android 5 to 9, going into full screen then back adds a top padding onto the coordinator layout bottom sheet

This aims to prevent that by removing the bottom sheet before entering full screen, then adding it back after leaving full screen

Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-11-17 17:46:24 +00:00
Sylvia van Os 7a0253ddcd New card layout 2021-11-17 17:44:19 +01:00
dependabot[bot] ac3647695b Bump constraintlayout from 2.1.1 to 2.1.2
Bumps [constraintlayout](https://github.com/androidx/constraintlayout) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/androidx/constraintlayout/releases)
- [Commits](https://github.com/androidx/constraintlayout/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-17 02:18:51 +00:00
Sylvia van Os fc902db170 Cleanup barcode selector 2021-11-16 23:57:56 +01:00
b7230ba2a7 Merge #594
594: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: SC <lalocas@protonmail.com>
2021-11-16 19:56:20 +00:00
SC f5b71beb4b Translated using Weblate (Portuguese)
Currently translated at 17.7% (16 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2021-11-16 20:53:18 +01:00
Joel A 380a12e926 Translated using Weblate (Swedish)
Currently translated at 98.6% (227 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-11-16 20:53:17 +01:00
solokot f92f84ee5c Translated using Weblate (Russian)
Currently translated at 3.3% (3 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-11-16 20:53:16 +01:00
Katharine Chui e1eb049d05 prevent bottomSheet from growing a padding getting into/leaving fullscreen 2021-11-16 23:44:45 +08:00
bors[bot]anddependabot[bot] e03ca71728 Merge #591
591: Bump robolectric from 4.6.1 to 4.7 r=TheLastProject a=dependabot[bot]

Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.6.1 to 4.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/robolectric/robolectric/releases">robolectric's releases</a>.</em></p>
<blockquote>
<p>Robolectric 4.7 adds support for Android S (API level 31).</p>
<p>Another big feature is support for Apple Silicon (Mac M1). Robolectric 4.7 now contains its own native implementation of the android.database.sqlite package. For Mac M1 machines, this SQLite mode is the default. For other OS's and architecture, use <code>`@SQLiteMode(NATIVE)</code>` to enable it. This new mode is currently only available for Mac and Linux. Native SQLite should be <strong>significantly</strong> faster, around 50-90% faster for SQLite operations, than the <code>LEGACY</code> SQLite mode. There were also several other performance improvements made for SQLite operations -- <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6687">#6687</a>, <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6690">#6690</a>,  and <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6711">#6711</a> (thanks <a href="https://github.com/al-broco"><code>`@​al-broco</code></a>!).</p>`
<p>The support v4 shadows are also deprecated at this release, and they will be removed at Robolectric 4.8.</p>
<p>Robolectric 4.7 also supports JDK 17.</p>
<h2>What's Changed</h2>
<ul>
<li>Clear cookies after test finished for CookieManagerTest by <a href="https://github.com/utzcoz"><code>`@​utzcoz</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6581">robolectric/robolectric#6581</a></li>
<li>Only using ApplicationExitInfo for compile sdk 30 and above by <a href="https://github.com/utzcoz"><code>`@​utzcoz</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6590">robolectric/robolectric#6590</a></li>
<li>Rebase PR 4064 - Fix NPE during saving state of WebView by <a href="https://github.com/utzcoz"><code>`@​utzcoz</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6597">robolectric/robolectric#6597</a></li>
<li>Converting the String version of directlyOn(...) to <a href="https://github.com/Direct"><code>`@​Direct</code></a>` with reflector(...). by <a href="https://github.com/hoisie"><code>`@​hoisie</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6598">robolectric/robolectric#6598</a></li>
<li>Add ITelephonyRegistry to ShadowServiceManager <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6605">robolectric/robolectric#6605</a></li>
<li>Implement new #startActivity methods for ShadowCrossProfileApps. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6601">robolectric/robolectric#6601</a></li>
<li>Add ShadowMediaExtractor. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6592">robolectric/robolectric#6592</a></li>
<li>Converting onVsync calls from ReflectionHelpers to use <a href="https://github.com/Direct"><code>`@​Direct</code></a>` with reflector(...) instead. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6602">robolectric/robolectric#6602</a></li>
<li>Update ShadowDisplayEventReceiver to support S <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6609">robolectric/robolectric#6609</a></li>
<li>Converting the proxy version of directlyOn(...) to <a href="https://github.com/Direct"><code>`@​Direct</code></a>` with reflector(...). by <a href="https://github.com/hoisie"><code>`@​hoisie</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6610">robolectric/robolectric#6610</a></li>
<li>Fix Robolectric camera shadows to work with newer SDK versions. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6611">robolectric/robolectric#6611</a></li>
<li>Converting recycleUnchecked calls to use <a href="https://github.com/Direct"><code>`@​Direct</code></a>` with reflector(...) in place of ReflectionHelpers. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6603">robolectric/robolectric#6603</a></li>
<li>Cleaning up unnecessary <a href="https://github.com/Direct"><code>`@​Direct</code></a>` annotations in DirectActivityReflector. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6616">robolectric/robolectric#6616</a></li>
<li>Fixing the incorrect method signature in AssetManagerReflector that breaks GitHub CI. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6612">robolectric/robolectric#6612</a></li>
<li>No longer automatically log everything in ShadowLog if stream is specified <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6617">robolectric/robolectric#6617</a></li>
<li>Support IntBuffer with copyPixelsFromBuffer <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6613">robolectric/robolectric#6613</a></li>
<li>Suppress missing /system/etc/fonts.xml log noise for SDK 27 <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6618">robolectric/robolectric#6618</a></li>
<li>Add perf stats for reflector class definition <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6624">robolectric/robolectric#6624</a></li>
<li>Use Object to replace GnssAntennaInfo.Listener at ShadowLocationManager by <a href="https://github.com/utzcoz"><code>`@​utzcoz</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6623">robolectric/robolectric#6623</a></li>
<li>Trimming the localrepository string. by <a href="https://github.com/Squadella"><code>`@​Squadella</code></a>` in <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6653">robolectric/robolectric#6653</a></li>
<li>Merging the the separate Reflector interfaces for Message into one main interface. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6619">robolectric/robolectric#6619</a></li>
<li>Remove OldClassInstrumentor <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6621">robolectric/robolectric#6621</a></li>
<li>Remove unnecessary ShadowLegacyMessage.isInUse <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6626">robolectric/robolectric#6626</a></li>
<li>Converting directlyOn(...) to <a href="https://github.com/Direct"><code>`@​Direct</code></a>` with reflector(...) in ShadowWindow and ShadowPhoneWindow. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6625">robolectric/robolectric#6625</a></li>
<li>Intercept calls to methods in {<a href="https://github.com/link"><code>`@​link</code></a>` Socket} not present in the OpenJDK. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6622">robolectric/robolectric#6622</a></li>
<li>Use bulk operations in copyPixels{to,from}Buffer <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6628">robolectric/robolectric#6628</a></li>
<li>Improve reflector caching using a regular HashMap <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6629">robolectric/robolectric#6629</a></li>
<li>Add shadow method ShadowLauncherApps#getShortcutConfigActivityList.  <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6631">robolectric/robolectric#6631</a></li>
<li>Add OnPermissionChangedListener implementation to ShadowPackageManager. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6627">robolectric/robolectric#6627</a></li>
<li>Update minSdkVersion to 14 in some integration_test manifests <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6630">robolectric/robolectric#6630</a></li>
<li>Merge InvokeDynamicClassInstrumentor into ClassInstrumentor <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6632">robolectric/robolectric#6632</a></li>
<li>Add a shadow method for PackageManager#getText which gets a String associated with package name and resource id. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6634">robolectric/robolectric#6634</a></li>
<li>Pass through openInputStream calls for SCHEME_ANDROID_RESOURCE <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6636">robolectric/robolectric#6636</a></li>
<li>Names thread used by ShadowFileObserver to match behavior of FileObserver. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6640">robolectric/robolectric#6640</a></li>
<li>Migrate from <code>AnnotationValue#toString</code> to <code>auto-common</code>'s <code>AnnotationValues.toString</code>. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6638">robolectric/robolectric#6638</a></li>
<li>Fix fidelity issue with Cursor.getBlob on a String column <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6641">robolectric/robolectric#6641</a></li>
<li>Remove InvokeDynamic perf stats <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6644">robolectric/robolectric#6644</a></li>
<li>Fix SQLiteDatabaseTest foreign key test to match Android behavior <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6643">robolectric/robolectric#6643</a></li>
<li>Add cardId support for ShadowEuiccManager. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6642">robolectric/robolectric#6642</a></li>
<li>Add OnUidImportanceListener implementation to ShadowActivityManager and SCREEN_ON/SCREEN_OFF broadcasts to ShadowPowerManager. <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6639">robolectric/robolectric#6639</a></li>
<li>Instrument default interface methods <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6645">robolectric/robolectric#6645</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/robolectric/robolectric/commit/dc7bcfd314f196984a6626be0f253e733c98718b"><code>dc7bcfd</code></a> Bump version to 4.7.</li>
<li><a href="https://github.com/robolectric/robolectric/commit/b2706bf5c24c6153b27121c154099a45f1477b51"><code>b2706bf</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6827">#6827</a> from hoisie/artifact-build</li>
<li><a href="https://github.com/robolectric/robolectric/commit/ba989616d510ba9d6cb32db45e892ee77b42153c"><code>ba98961</code></a> Add a workflow to build the nativeruntime libraries</li>
<li><a href="https://github.com/robolectric/robolectric/commit/a5db353b55710a2a9a9a013bf11c79ccaddb10b7"><code>a5db353</code></a> Move clang/clang++ specification to CMakeLists</li>
<li><a href="https://github.com/robolectric/robolectric/commit/0388825391a387a3da5b14e3661bc66c0e6ea919"><code>0388825</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6844">#6844</a> from utzcoz/bump-asm-to-9.2</li>
<li><a href="https://github.com/robolectric/robolectric/commit/7d44fa13a24c3d508773538830b93ff087c0eace"><code>7d44fa1</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6845">#6845</a> from hoisie/disable-mac-universal-build</li>
<li><a href="https://github.com/robolectric/robolectric/commit/fe3bb986589a6edfcf8ebfbe5c9abae4f14c3e6e"><code>fe3bb98</code></a> Disable the universal library for Mac OS</li>
<li><a href="https://github.com/robolectric/robolectric/commit/5b1bd881a46eff5a28f0dc3e4606a8bd0ad231e0"><code>5b1bd88</code></a> Bump asm to 9.2 to support JDK 17 and 18</li>
<li><a href="https://github.com/robolectric/robolectric/commit/6a3305348df9007f1d52ccfd898583a2ef5bc0dc"><code>6a33053</code></a> Bump AGP to 7.1.0-beta03</li>
<li><a href="https://github.com/robolectric/robolectric/commit/4b2ecb9b59b3fd5b6d060c5e9149cde17c8c6884"><code>4b2ecb9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/robolectric/robolectric/issues/6833">#6833</a> from hoisie/add-icu-submodule</li>
<li>Additional commits viewable in <a href="https://github.com/robolectric/robolectric/compare/robolectric-4.6.1...robolectric-4.7">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.robolectric:robolectric&package-manager=gradle&previous-version=4.6.1&new-version=4.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-15 07:17:16 +00:00
dependabot[bot] 9f3633b2ef Bump robolectric from 4.6.1 to 4.7
Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.6.1 to 4.7.
- [Release notes](https://github.com/robolectric/robolectric/releases)
- [Commits](https://github.com/robolectric/robolectric/compare/robolectric-4.6.1...robolectric-4.7)

---
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>
2021-11-15 02:18:03 +00:00
Sylvia van Os 0b53bdf6eb Tag CHANGELOG release 2021-11-14 22:12:14 +01:00
Sylvia van Os 2536767437 Android Studio -> Reformat Code 2021-11-14 21:55:33 +01:00
Sylvia van Os 2bc7d13d50 Release Catima 2.9.0 2021-11-14 16:05:32 +01:00
bors[bot]andKatharine 84fef5a615 Merge #585
585: using icon on card view headers r=TheLastProject a=Kethen

some previews
![image](https://user-images.githubusercontent.com/22017945/141508586-9cf1a1e7-6312-4bea-8362-16f0bbed2a27.png)
![image](https://user-images.githubusercontent.com/22017945/141508626-b97fd7bd-701b-4fe8-8883-23f71489c57a.png)
![image](https://user-images.githubusercontent.com/22017945/141508668-790d0038-d6ae-429b-9c9b-efdb341ad1e3.png)
![image](https://user-images.githubusercontent.com/22017945/141508688-10c1ee3f-c215-4955-b941-16d94ef87e60.png)
![image](https://user-images.githubusercontent.com/22017945/141508745-c344bd7d-b0db-4d53-b98d-495a3b43423f.png)
![image](https://user-images.githubusercontent.com/22017945/141508774-7bdb111f-e3c2-41d0-87b3-4f75b067840b.png)


Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-11-14 14:45:16 +00:00
Katharine Chui 0993f3180b show icon image under system topbar, fix bottom sheet UI after rotation 2021-11-14 22:10:16 +08:00
Katharine Chui f143e01685 fixes bottom sheet height after rotating in fullscreen, removes extra top padding in fullscreen mode, 204(5)->8 2021-11-14 22:10:16 +08:00
Katharine cb5a98edad using icon on card view headers 2021-11-14 22:10:16 +08:00
bors[bot]andTheLastProject 74157b2fe5 Merge #589
589: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-11-14 08:48:52 +00:00
TheLastProject 5b7d5599f9 Update contributors 2021-11-14 05:15:51 +00:00
bors[bot]andOğuz Ersen cdfcfebd77 Merge #588
588: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-11-13 17:07:14 +00:00
Oğuz Ersen 301fd880f5 Translated using Weblate (Turkish)
Currently translated at 18.8% (17 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-11-13 17:53:54 +01:00
bors[bot]andKatharine Chui 4a4ef1b148 Merge #587
587: use daynight theme for toolbar r=TheLastProject a=Kethen

Before:
![image](https://user-images.githubusercontent.com/22017945/141610761-9cff9903-1074-4bd2-9a29-e9273bfee90c.png)

After:
![image](https://user-images.githubusercontent.com/22017945/141610679-ff5a1110-139a-487f-9954-565887c53f7a.png)
![image](https://user-images.githubusercontent.com/22017945/141610688-9b727e9c-dbab-49d9-aa32-ac231fea647c.png)


Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-11-13 12:58:06 +00:00
Katharine Chui 0bc7f4a164 use daynight theme for toolbar 2021-11-13 15:47:34 +08:00
5e593d0ded Merge #584
584: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
2021-11-12 16:42:04 +00:00
SC e958fff7b4 Translated using Weblate (Portuguese)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-11-12 15:52:15 +01:00
IllusiveMan196 d81b236aa6 Translated using Weblate (Ukrainian)
Currently translated at 4.4% (4 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-11-12 15:52:15 +01:00
bors[bot]and109247019824 8be8737459 Merge #583
583: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
2021-11-11 07:06:39 +00:00
109247019824 e80238bfcf Translated using Weblate (Bulgarian)
Currently translated at 99.5% (229 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-11-11 06:51:21 +01:00
bors[bot]andWeblate 211032c152 Merge #582
582: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Weblate <noreply@weblate.org>
2021-11-10 19:30:44 +00:00
Weblate 0bf50fb491 Added translation using Weblate (Portuguese (Portugal)) 2021-11-10 20:29:33 +01:00
Sylvia van Os 6f22e2d185 Fastlane fixes 2021-11-10 20:29:18 +01:00
bors[bot]andKatharine 31c341663f Merge #578
578: preserve shortcut icon shape by padding, getting round corners back on card lists r=TheLastProject a=Kethen

adding padding to icons referencing https://developer.android.com/reference/android/graphics/drawable/AdaptiveIconDrawable.html
![image](https://user-images.githubusercontent.com/22017945/140962982-88becacc-677d-4593-8b7e-15fcc2f9df7e.png)
![image](https://user-images.githubusercontent.com/22017945/140889147-a40ea4ed-5fb1-47b8-9ec1-59bab7d6577f.png)



Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
2021-11-10 18:31:16 +00:00
Katharine 40a68a55e2 simplify adaptive bitmap creation with Canvas, trigger shortcut list refresh on card save 2021-11-10 14:06:08 +08:00
Katharine 1fd0acf6e4 padding images with darken header color, remove outline artifacts behind thumbnail on card lists 2021-11-10 14:06:08 +08:00
127d288ace Merge #581
581: Translations update from Hosted Weblate r=TheLastProject a=weblate

Translations update from [Hosted Weblate](https://hosted.weblate.org/projects/catima/catima/)
for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Petr Novák <nit.monkey@gmail.com>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: g <muziejusinfo@gmail.com>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-11-09 21:56:30 +00:00
Oğuz Ersen 11587631a9 Translated using Weblate (Turkish)
Currently translated at 18.8% (17 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-11-09 22:53:04 +01:00
Oğuz Ersen 466b3d91d3 Translated using Weblate (Turkish)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-11-09 22:53:03 +01:00
Petr Novák 8f4f7524c4 Translated using Weblate (Czech)
Currently translated at 98.8% (89 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-11-09 22:53:03 +01:00
IllusiveMan196 f35aa2a064 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-11-09 22:53:00 +01:00
solokot c20206fe28 Translated using Weblate (Russian)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-11-09 22:53:00 +01:00
Heimen Stoffels 45de3f6616 Translated using Weblate (Dutch)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-11-09 22:52:59 +01:00
g 6f42b30790 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-11-09 22:52:59 +01:00
J. Lavoie 35eab50775 Translated using Weblate (Italian)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-11-09 22:52:59 +01:00
J. Lavoie 19d302e0a4 Translated using Weblate (French)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-11-09 22:52:59 +01:00
J. Lavoie a17ccfa41a Translated using Weblate (German)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-11-09 22:52:58 +01:00
Petr Novák a22e05284c Translated using Weblate (Czech)
Currently translated at 100.0% (230 of 230 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-11-09 22:52:58 +01:00
bors[bot]anddependabot[bot] 64491a1f7a Merge #576
576: Bump ucrop from 2.2.6 to 2.2.7 r=TheLastProject a=dependabot[bot]

Bumps [ucrop](https://github.com/Yalantis/uCrop) from 2.2.6 to 2.2.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/Yalantis/uCrop/releases">ucrop's releases</a>.</em></p>
<blockquote>
<h2>2.2.7</h2>
<p>Merged <a href="https://github-redirect.dependabot.com/Yalantis/uCrop/pull/732">PR 732</a>:
-- added support of &quot;content&quot; schema
-- added support for SAF requirements</p>
<p>Merged <a href="https://github-redirect.dependabot.com/Yalantis/uCrop/pull/758">PR 758</a>:
-- added ability to set OkHttpClient with custom settings
-- updated dependencies (exif interface, app compat, transition, okhttp3)</p>
<h2>2.2.6-native</h2>
<p>-- Fixed Bitmap too large exception</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/Yalantis/uCrop/commit/64c8f5b085056e127fb05bd6631cfbe2d5d005a1"><code>64c8f5b</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Yalantis/uCrop/issues/762">#762</a> from Yalantis/improve/update_sample_app</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/70546c1016b52f1624a5d3e95860f68eb57084ef"><code>70546c1</code></a> Updated dependencies</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/0ff3e6a8e8224a3dadefdf68ca00383c8e25d443"><code>0ff3e6a</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Yalantis/uCrop/issues/732">#732</a> from fabio-blanco/fix/non_native_android-10_saf-desti...</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/cd17761b36ce38bdd42a71e1c931d1bda56594d4"><code>cd17761</code></a> Merge branch 'master-non-native' into merge_non_native_android-10_saf-destina...</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/586493a7629eea0748da854565998e3dbc077b43"><code>586493a</code></a> Added an IllegalArgumentException in the copyFile method to inform that an un...</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/32e0fcd887b31e24bd142f2745c7e9148a0700d5"><code>32e0fcd</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/Yalantis/uCrop/issues/758">#758</a> from Yalantis/fix/non_native_ssl_handshake_exception</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/eb2d32fe9607f4ff9a5db3824eb4fa2e3678add8"><code>eb2d32f</code></a> Refactorings on BitmapCropTask for improving readability protections against ...</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/fd651666f6a64157f2d13b564993dddf0056c2b1"><code>fd65166</code></a> added UCropInitializer,</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/22b24bafa3990f3e50b9bf6eca1057207430734b"><code>22b24ba</code></a> NullPointerException protection on weak reference of context get on crop method.</li>
<li><a href="https://github.com/Yalantis/uCrop/commit/fd919ea5403c48470fd5beca81361aa8391b4256"><code>fd919ea</code></a> added documentation for UCropHttpClientStore methods</li>
<li>Additional commits viewable in <a href="https://github.com/Yalantis/uCrop/compare/2.2.6...2.2.7">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.github.yalantis:ucrop&package-manager=gradle&previous-version=2.2.6&new-version=2.2.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-09 17:33:46 +00:00
bors[bot]andKatharine 472d8ae18d Merge #577
577: offer 1:1 by default when cropping icon, set header color only for icon r=TheLastProject a=Kethen

header color is only change after an icon is set
cropper offers 1:1 by default instead when an icon is getting cropped

Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
2021-11-08 18:45:38 +00:00
Sylvia van Os 388db6feab Uppercase Card for consistency too 2021-11-08 19:42:51 +01:00
Katharine 5833d49fbf offer 1:1 by default when cropping icon, set header color only for icon 2021-11-08 19:10:41 +08:00
dependabot[bot] ffb2fadcfc Bump ucrop from 2.2.6 to 2.2.7
Bumps [ucrop](https://github.com/Yalantis/uCrop) from 2.2.6 to 2.2.7.
- [Release notes](https://github.com/Yalantis/uCrop/releases)
- [Commits](https://github.com/Yalantis/uCrop/compare/2.2.6...2.2.7)

---
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>
2021-11-08 02:26:27 +00:00
Sylvia van Os 5f534b9646 Merge pull request #573 from TheLastProject/create-pull-request/patch-1636313316
Update Fastlane changelogs
2021-11-07 20:46:20 +01:00
e011324b9f Merge #572
572: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Marnick L'Eau <leaumar@mailbox.org>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-11-07 19:29:09 +00:00
TheLastProject 21df76a2b6 Update Fastlane changelogs 2021-11-07 19:28:36 +00:00
Oğuz Ersen 1af9789cf6 Translated using Weblate (Turkish)
Currently translated at 18.8% (17 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-11-07 20:28:20 +01:00
Marnick L'Eau b891e05fb9 Translated using Weblate (Dutch)
Currently translated at 10.0% (9 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-11-07 20:28:20 +01:00
Sylvia van Os 55e09b602f Update CHANGELOG 2021-11-07 20:28:09 +01:00
Sylvia van Os af4075b9e2 Choose image as card icon (#333) 2021-11-07 20:27:28 +01:00
+1 da0a221c85 Merge #571
571: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: g <muziejusinfo@gmail.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: Marnick L'Eau <leaumar@mailbox.org>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
2021-11-07 16:57:03 +00:00
SC 191445b822 Translated using Weblate (Portuguese)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-11-07 17:51:18 +01:00
Oğuz Ersen d890b062a9 Translated using Weblate (Turkish)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-11-07 17:51:18 +01:00
Eric 59173443e7 Translated using Weblate (Chinese (Simplified))
Currently translated at 82.8% (189 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2021-11-07 17:51:18 +01:00
Marnick L'Eau 5da76c9d9c Translated using Weblate (Dutch)
Currently translated at 5.5% (5 of 90 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-11-07 17:51:17 +01:00
IllusiveMan196 f048566929 Translated using Weblate (Ukrainian)
Currently translated at 99.5% (227 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-11-07 17:51:17 +01:00
Heimen Stoffels fe0f4314db Translated using Weblate (Dutch)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-11-07 17:51:16 +01:00
Allan Nordhøy 8d39bd671c Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.2% (224 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-11-07 17:51:16 +01:00
g 9ad33a047f Translated using Weblate (Lithuanian)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-11-07 17:51:16 +01:00
J. Lavoie 2a78335607 Translated using Weblate (Italian)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-11-07 17:51:16 +01:00
J. Lavoie d99c72982d Translated using Weblate (French)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-11-07 17:51:15 +01:00
J. Lavoie 79ced018d5 Translated using Weblate (German)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-11-07 17:51:15 +01:00
Sylvia van Os f80c79ffb1 Translated using Weblate (English)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2021-11-07 17:51:15 +01:00
Sylvia van Os 11970004f0 Android Studio reformat 2021-11-07 15:38:55 +01:00
bors[bot]andTheLastProject a348ad62a2 Merge #570
570: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-11-07 12:01:42 +00:00
TheLastProject 22d612427f Update contributors 2021-11-07 05:15:30 +00:00
Sylvia van Os a907b28fe8 Merge pull request #569 from TheLastProject/create-pull-request/patch-1636205659
Update Fastlane changelogs
2021-11-06 14:34:58 +01:00
TheLastProject 663612dce9 Update Fastlane changelogs 2021-11-06 13:34:18 +00:00
Sylvia van Os a55da89eb2 Update CHANGELOG 2021-11-06 14:33:59 +01:00
bors[bot]andKatharine 63ceb2589f Merge #559
559: #372 image rotation and crop r=TheLastProject a=Kethen

`@waffshappen` suggested https://github.com/Yalantis/uCrop
targets #372



https://user-images.githubusercontent.com/22017945/139484703-e33a5da8-ccb5-4d6a-b70c-3325e34fcec9.mp4

 


Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
2021-11-06 13:25:39 +00:00
Katharine dd981d72d7 do not attempt image load if removed, typo fixes, do not cast literals, offer full image on cropper start 2021-11-06 12:47:08 +08:00
Katharine 8940a8ea77 card edit activity: revised instance saving, revised temp image handling 2021-11-05 00:01:03 +08:00
Katharine 57cfac3172 save state for cropper 2021-11-04 10:48:47 +08:00
Katharine f475844bd0 wrapping up test case debugging 2021-11-04 10:48:47 +08:00
Katharine 4536453fdf debugging test case breakage 2021-11-04 10:48:47 +08:00
Katharine 3ee533b815 migrate to registerForActivityResult callbacks 2021-11-04 10:48:47 +08:00
Katharine a744c19cce handle null intent from ucrop for when user just exits without finish cropping 2021-11-04 10:48:46 +08:00
Katharine 9cc66c5d67 minor touch ups from android studio suggestions 2021-11-04 10:48:46 +08:00
Katharine 3e5b018b55 fxing spotbug raised issues 2021-11-04 10:48:46 +08:00
Katharine f6fee780ee cropper poc 2021-11-04 10:48:32 +08:00
6971f23d0a Merge #567
567: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-11-03 21:34:43 +00:00
Oğuz Ersen 6d33576936 Translated using Weblate (Turkish)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-11-03 22:33:22 +01:00
solokot b6c9b9059e Translated using Weblate (Russian)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-11-03 22:33:21 +01:00
J. Lavoie 000bd7b734 Translated using Weblate (Italian)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-11-03 22:33:21 +01:00
J. Lavoie 3dde4de775 Translated using Weblate (French)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-11-03 22:33:21 +01:00
J. Lavoie 9b867370c2 Translated using Weblate (German)
Currently translated at 100.0% (228 of 228 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-11-03 22:33:20 +01:00
bors[bot]andTheLastProject c092a04390 Merge #566
566: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-11-03 20:40:54 +00:00
TheLastProject 50d80c1a9e Update Fastlane changelogs 2021-11-03 20:38:28 +00:00
Sylvia van Os 67e2147d33 Document awesome new group editing 2021-11-03 21:37:59 +01:00
bors[bot]andKatharine cfe2aaaad8 Merge #557
557: Group management POC for #129 r=TheLastProject a=Kethen

Proof of concept for #129, please review and comment on desired changes
A few new strings are added so translations will be needed

meanwhile I think all added group has to be trimmed to avoid having identical groups like in the example

https://user-images.githubusercontent.com/22017945/139289359-32f42b48-a40e-4039-8f0b-72bbe43cd0de.mp4



https://user-images.githubusercontent.com/22017945/139294845-28c88e03-871f-49d1-9b45-f0648f2f7b50.mp4






Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
Co-authored-by: Katharine Chui <kwchuiaa@connect.ust.hk>
2021-11-03 18:40:28 +00:00
Katharine 88a91de63b removed commented code, input check for group add, input check and minor revisions 2021-11-03 10:13:59 +08:00
Katharine 2cdeb1af9c use HashMap<> constructor to clone HashMap in LoyaltyCardCursorAdapter 2021-11-03 10:13:59 +08:00
Katharine c815c3908f added a comment explaining why setText is used there 2021-11-03 10:13:59 +08:00
Katharine 9e831924c6 remove Parcel in Group, remove onResume/onPause in ManageGroupActivity and clean ups 2021-11-03 10:13:59 +08:00
Katharine cfc901855b update help text in group edit activity 2021-11-03 10:13:59 +08:00
Katharine Chui a00a69e0c0 UI changes, group cache, code cleanup
hash maps are cloned manually to make android studio and spotbug happy
2021-11-03 10:13:59 +08:00
Katharine 426acc701e remove setSort which will likely not be implemented in here 2021-11-03 10:13:59 +08:00
Katharine d6eccd11a5 UI touch ups 2021-11-03 10:13:59 +08:00
Katharine cb8275771f remove database shortcuts 2021-11-03 10:13:59 +08:00
Katharine 9252c01aa7 Group does not need to be a Parcelable anymore 2021-11-03 10:13:59 +08:00
Katharine b4b544e342 remove modularity 2021-11-03 10:13:59 +08:00
Katharine f667fcbebe requested manifest changes 2021-11-03 10:13:59 +08:00
Katharine cc402c39be fixing errors reported by spotbugs 2021-11-03 10:13:59 +08:00
Katharine d5d921a1c8 Group management POC 2021-11-03 10:13:59 +08:00
bors[bot]andAllan Nordhøy d8794811a1 Merge #565
565: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2021-11-02 16:17:28 +00:00
Allan Nordhøy e56795307e Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.5% (221 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-11-02 16:35:12 +01:00
bors[bot]andTheLastProject 6ad99d47aa Merge #561
561: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-31 06:12:36 +00:00
TheLastProject 2998a4d553 Update contributors 2021-10-31 05:15:42 +00:00
bors[bot]andSC 63db8fa0f3 Merge #560
560: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: SC <lalocas@protonmail.com>
2021-10-30 16:40:26 +00:00
SC ee14d9e0c5 Translated using Weblate (Portuguese)
Currently translated at 16.8% (15 of 89 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/pt/
2021-10-30 18:38:21 +02:00
SC 1455265045 Translated using Weblate (Portuguese)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-10-30 18:38:17 +02:00
4f5cd87912 Merge #558
558: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-28 21:11:28 +00:00
mondstern d5516c59a6 Translated using Weblate (Welsh)
Currently translated at 16.2% (36 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cy/
2021-10-28 23:01:42 +02:00
mondstern 5654abe6e9 Translated using Weblate (Latvian)
Currently translated at 56.3% (125 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2021-10-28 23:01:42 +02:00
Joel A b17a50f9c2 Translated using Weblate (Swedish)
Currently translated at 99.0% (220 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-10-28 23:01:42 +02:00
Eric 87c9bb590b Translated using Weblate (Chinese (Simplified))
Currently translated at 81.5% (181 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2021-10-28 23:01:42 +02:00
dc9360eb8a Merge #556
556: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: mondstern <mondstern@snopyta.org>
Co-authored-by: Reza Almanda <rezaalmanda27@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-28 20:57:28 +00:00
Sylvia van Os c8d2aa26f5 Add cy to selector 2021-10-28 22:56:59 +02:00
Sylvia van Os a5074eb191 Fix invalid translation 2021-10-28 22:37:00 +02:00
mondstern 9df0a8ff57 Added translation using Weblate (Welsh) 2021-10-28 20:01:19 +02:00
mondstern a79cf72ad7 Translated using Weblate (Latvian)
Currently translated at 21.1% (47 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lv/
2021-10-28 12:01:22 +02:00
mondstern db0134a44c Translated using Weblate (Croatian)
Currently translated at 51.8% (115 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2021-10-28 12:01:21 +02:00
Reza Almanda 5f6424778a Translated using Weblate (Indonesian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2021-10-28 12:01:21 +02:00
mondstern 950264105b Translated using Weblate (Portuguese)
Currently translated at 51.3% (114 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-10-28 12:01:20 +02:00
Oğuz Ersen 7b2d9eb47f Translated using Weblate (Turkish)
Currently translated at 17.9% (16 of 89 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-28 12:01:19 +02:00
109247019824 088ee66b5a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-10-28 12:01:18 +02:00
bors[bot]andMiha Frangež 2487edf4b2 Merge #554
554: Made name and ID inputs single-line r=TheLastProject a=franga2000

Since I already had the IDE open... (also still need that last Hacktoberfest PR 😅)

Fixes #553 

Co-authored-by: Miha Frangež <miha.frangez@gmail.com>
2021-10-27 21:39:37 +00:00
Miha Frangež e16d2e22ac Made name and ID inputs single-line 2021-10-27 23:24:06 +02:00
7b335c69ba Merge #552
552: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-27 18:33:36 +00:00
Sylvia van Os c1bd7043b1 Add Latvian to language selector 2021-10-27 20:32:58 +02:00
mondstern 71f3b5bc5f Added translation using Weblate (Latvian) 2021-10-27 20:26:24 +02:00
Sylvia van Os e2f33bf4b4 Release Catima 2.8.1 2021-10-27 18:24:46 +02:00
bors[bot]andTheLastProject b1685ac90e Merge #549
549: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-27 15:40:23 +00:00
TheLastProject 394cc6b30f Update Fastlane changelogs 2021-10-27 15:38:49 +00:00
Sylvia van Os 75e320e108 Update CHANGELOG 2021-10-27 17:38:19 +02:00
bors[bot]andDheeraj e8b38b3367 Merge #548
548: fix: Overlapping TextView and ImageView. r=TheLastProject a=KasinaDheeraj

fixes #542 

Co-authored-by: Dheeraj <dheerukd2002@gmail.com>
2021-10-27 15:30:33 +00:00
Dheeraj ffb24c973a fix: Overlapping TextView and ImageView. 2021-10-27 19:21:09 +05:30
bors[bot]andTheLastProject d43693b1d8 Merge #547
547: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-27 11:13:39 +00:00
TheLastProject b7f17181f9 Update Fastlane changelogs 2021-10-27 11:12:50 +00:00
Sylvia van Os 10dc84820c Update CHANGELOG.md 2021-10-27 13:12:30 +02:00
bors[bot]andSylvia van Os 5f0d92470e Merge #545
545: Update CHANGELOG r=TheLastProject a=TheLastProject

bors r+

Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-27 11:04:35 +00:00
Sylvia van Os 6bb4376e4d Update CHANGELOG 2021-10-27 12:57:24 +02:00
bors[bot]andKatharine 92da792378 Merge #539
539: fix for #533, fix for #510 + LoyaltyCardViewActivity crashing on returning from day/night theme change r=TheLastProject a=Kethen

please review, fixes #533, and avoids a crash from loading LoyaltyCardViewActivity, switch out to settings and switch day/night mode, switch back, which fixes #510 as well

Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
2021-10-27 10:55:51 +00:00
Katharine 81499cd362 onProgressChanged handles only user input now, always store user zoom level input 2021-10-27 18:49:09 +08:00
Katharine fc91f1ae63 avoid system theme change activity crash 2021-10-27 18:24:23 +08:00
Katharine cec7bc880e view dots that respects themening in app settings 2021-10-27 18:24:23 +08:00
Katharine 4027df2119 refactor centerGuideLine resizing logic -sylvia 2021-10-27 18:24:23 +08:00
bors[bot]andKatharine 93132961d3 Merge #544
544: fixing #320 by not recreating main activity returning from another activity, requires testing r=TheLastProject a=Kethen

targetting #320

Co-authored-by: Katharine <kwchuiaa@connect.ust.hk>
2021-10-27 09:34:24 +00:00
Katharine 638528d4fc do not recreate main activity returning from another activity 2021-10-27 15:22:31 +08:00
67ef623761 Merge #543
543: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
Co-authored-by: Rosdyana Kusuma <rosdyana.kusuma@gmail.com>
2021-10-27 06:58:40 +00:00
mondstern cb3afe1878 Translated using Weblate (Croatian)
Currently translated at 27.4% (61 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/hr/
2021-10-27 08:02:54 +02:00
mondstern e3f4aec1c5 Translated using Weblate (Luxembourgish)
Currently translated at 51.8% (115 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lb/
2021-10-27 08:02:53 +02:00
Rosdyana Kusuma d2f196da21 Translated using Weblate (Indonesian)
Currently translated at 98.6% (219 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/id/
2021-10-27 08:02:52 +02:00
mondstern e491a960d7 Translated using Weblate (Icelandic)
Currently translated at 52.2% (116 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/is/
2021-10-27 08:02:52 +02:00
mondstern f5c83793bf Translated using Weblate (Portuguese)
Currently translated at 33.3% (74 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-10-27 08:02:51 +02:00
Sylvia van Os 1624d56edb Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into feature/power_screen_widgets 2021-10-26 21:42:14 +02:00
bors[bot]anddependabot[bot] e334a5e454 Merge #538
538: Bump zxing-android-embedded from 4.2.0 to 4.3.0 r=TheLastProject a=dependabot[bot]

Bumps [zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded) from 4.2.0 to 4.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/journeyapps/zxing-android-embedded/releases">zxing-android-embedded's releases</a>.</em></p>
<blockquote>
<h2>v4.3.0</h2>
<ul>
<li>Minimum SDK version 19, but requires additional config (see readme) for &lt; 24 compatibility.</li>
<li>Add ScanOptions and ScanContract for use with <code>registerForActivityResult()</code>.</li>
<li>Deprecates IntentIntegrator. It is still available, but <code>registerForActivityResult()</code> is recommended instead.</li>
<li>Use minimal AndroidX libraries.</li>
<li>Use zxing:core 3.4.1 by default.</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/journeyapps/zxing-android-embedded/compare/v4.2.0...v4.3.0">https://github.com/journeyapps/zxing-android-embedded/compare/v4.2.0...v4.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/journeyapps/zxing-android-embedded/blob/master/CHANGES.md">zxing-android-embedded's changelog</a>.</em></p>
<blockquote>
<h3>4.3.0 (2021-10-25)</h3>
<ul>
<li>Minimum SDK version 19, but requires additional config (see readme) for &lt; 24 compatibility.</li>
<li>Add ScanOptions and ScanContract for use with <code>registerForActivityResult()</code>.</li>
<li>Deprecates IntentIntegrator.</li>
<li>Use minimal AndroidX libraries.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/24d02945fec5f2c5a65b24ea7848cb5ca18f9f81"><code>24d0294</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/journeyapps/zxing-android-embedded/issues/665">#665</a> from journeyapps/fixes</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/6ccf3a9d1a8919dfc06e4aeb2754354d267fe978"><code>6ccf3a9</code></a> Fix lint report location.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/23f29e5a560fb5026928a7a2aa4099646405d0de"><code>23f29e5</code></a> Ignore lint error.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/1a8d94932511cd82968cd18d737b574d28f4c05d"><code>1a8d949</code></a> Tweaks.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/f1554b7478c313841ef2814fb6dc17554387633b"><code>f1554b7</code></a> Use GitHub Actions.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/cc12c103e0f1f9f37da5aea59224a2e88e32141c"><code>cc12c10</code></a> v4.3.0 and cleanup.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/a13ce2b161033a0cee33d9629deeb7cd3eff55bb"><code>a13ce2b</code></a> Cleanup.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/0c97cf70cc9d562431e771fcc026c9c8bdf412ca"><code>0c97cf7</code></a> ScanOptions and ScanContract.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/9beeac79603c6aae8f86338fabc2e5a4a757dd54"><code>9beeac7</code></a> minSdkVersion 19. Multidex and desugaring.</li>
<li><a href="https://github.com/journeyapps/zxing-android-embedded/commit/cc34502f13a04d9cd30b3508f2844fba61abfad6"><code>cc34502</code></a> Smaller libs.</li>
<li>Additional commits viewable in <a href="https://github.com/journeyapps/zxing-android-embedded/compare/v4.2.0...v4.3.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.journeyapps:zxing-android-embedded&package-manager=gradle&previous-version=4.2.0&new-version=4.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-26 19:19:40 +00:00
cbbd071f4f Merge #541
541: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-26 18:39:49 +00:00
Sylvia van Os 524a6b1ffb Add hr to language selector 2021-10-26 20:38:38 +02:00
mondstern 7954adf7e3 Added translation using Weblate (Croatian) 2021-10-26 20:11:22 +02:00
Sylvia van Os 0b31a08b9f Really fix 2021-10-26 19:23:39 +02:00
Sylvia van Os a0884aa81c Fix empty changelog check 2021-10-26 19:20:11 +02:00
Sylvia van Os 46f64d1a61 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-26 19:12:26 +02:00
Sylvia van Os 81cb6ad4fd Don't generate fastlane file if changelog entry is empty 2021-10-26 19:12:05 +02:00
dependabot[bot] f2f330e3e4 Bump zxing-android-embedded from 4.2.0 to 4.3.0
Bumps [zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/journeyapps/zxing-android-embedded/releases)
- [Changelog](https://github.com/journeyapps/zxing-android-embedded/blob/master/CHANGES.md)
- [Commits](https://github.com/journeyapps/zxing-android-embedded/compare/v4.2.0...v4.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 02:16:29 +00:00
Sylvia van Os 5b14670785 Fix changelog 2021-10-26 00:06:52 +02:00
bors[bot]andmondstern c5f68aa50f Merge #535
535: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-25 18:12:29 +00:00
mondstern 5203f89e9d Added translation using Weblate (Luxembourgish) 2021-10-25 20:09:59 +02:00
Sylvia van Os 8f11d73649 Merge pull request #534 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-25 20:00:17 +02:00
mondstern 3d376e2a90 Translated using Weblate (Icelandic)
Currently translated at 31.9% (71 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/is/
2021-10-25 19:53:19 +02:00
Sylvia van Os 0e814c3359 Merge pull request #531 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-25 17:56:26 +02:00
Oğuz Ersen 4755cc3f7f Translated using Weblate (Turkish)
Currently translated at 17.0% (15 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-25 17:55:10 +02:00
Sylvia van Os 7afbe41f95 Release Catima 2.8.0 2021-10-25 17:28:02 +02:00
Sylvia van Os 6d4cbee499 Merge pull request #529 from TheLastProject/create-pull-request/patch-1635175160
Update Fastlane changelogs
2021-10-25 17:20:22 +02:00
TheLastProject f16a597b91 Update Fastlane changelogs 2021-10-25 15:19:19 +00:00
Sylvia van Os 3ba0649891 Add missing languages 2021-10-25 17:18:51 +02:00
Sylvia van Os 297ecc371e Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-25 17:14:57 +02:00
Sylvia van Os 79c8570507 Work around a race condition crash 2021-10-25 17:11:19 +02:00
Ronak Upadhyay 8f81d2d141 Fixes #516 Image scale according to text size (#517) 2021-10-24 22:26:41 +02:00
bors[bot]andNyatsuki 325535af12 Merge #528
528: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Nyatsuki <Odamaki@yandex.ru>
2021-10-24 08:34:37 +00:00
Nyatsuki f7af4169a3 Translated using Weblate (Japanese)
Currently translated at 98.6% (219 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-10-24 10:33:11 +02:00
bors[bot]andRosdyana Kusuma e5ec45f877 Merge #527
527: i18n: Add in-rID r=TheLastProject a=rosdyana

This PR adds localization strings for Bahasa Indonesia (in-rID) and adds the option to the locale menu.

Co-authored-by: Rosdyana Kusuma <rosdyana.kusuma@gmail.com>
2021-10-24 08:27:19 +00:00
bors[bot]andTheLastProject 902a4e411b Merge #526
526: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-24 08:18:33 +00:00
Rosdyana Kusuma 03ec2b4492 Add localization for Bahasa Indonesia 2021-10-24 14:14:57 +08:00
TheLastProject 6a2f8a630a Update contributors 2021-10-24 05:15:59 +00:00
78e998fad9 Merge #525
525: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-23 22:06:40 +00:00
mondstern e6ccef8ad0 Translated using Weblate (Icelandic)
Currently translated at 25.6% (57 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/is/
2021-10-24 00:04:22 +02:00
Oğuz Ersen acbd614b50 Translated using Weblate (Turkish)
Currently translated at 17.0% (15 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-24 00:04:22 +02:00
bors[bot]andStill Hsu 445e661fac Merge #523
523: i18n: Add zh-tw r=TheLastProject a=Still34

# Summary

This PR adds localization strings for Chinese (Taiwan) (`zh-TW`) and adds the option to the locale menu.

Co-authored-by: Still Hsu <dev@stillu.cc>
2021-10-23 21:59:30 +00:00
Still Hsu d774231c05 Add zh-tw strings 2021-10-24 05:54:36 +08:00
bors[bot]andmondstern b5d2a5dbab Merge #522
522: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-23 19:34:13 +00:00
mondstern 6ab61eb78a Added translation using Weblate (Icelandic) 2021-10-23 21:31:36 +02:00
bors[bot]andTheLastProject bbd8bb7d29 Merge #521
521: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-22 21:35:28 +00:00
TheLastProject 3e082b598f Update Fastlane changelogs 2021-10-22 21:34:15 +00:00
Sylvia van Os 70510ed9d1 Fix unit tests 2021-10-22 23:33:50 +02:00
Sylvia van Os 5da1c67dd6 Update CHANGELOG 2021-10-22 22:17:39 +02:00
Sylvia van Os dfa237958e Fix several small sizing bugs 2021-10-22 22:17:13 +02:00
Ankit Tiwari 127d53e85a Save Size of code (#508) 2021-10-22 21:11:51 +02:00
bors[bot]andmondstern 7cce782143 Merge #518
518: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-21 20:51:42 +00:00
mondstern 662eb853d7 Translated using Weblate (Portuguese)
Currently translated at 23.8% (53 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pt/
2021-10-21 22:37:14 +02:00
mondstern d8e58f8b38 Translated using Weblate (Esperanto)
Currently translated at 52.2% (116 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2021-10-21 22:37:14 +02:00
mondstern 4748e24dda Translated using Weblate (Romanian)
Currently translated at 59.0% (131 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2021-10-21 22:37:13 +02:00
bors[bot]andmondstern 5af024f482 Merge #515
515: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-20 19:45:55 +00:00
mondstern 8adc013330 Added translation using Weblate (Portuguese) 2021-10-20 21:44:55 +02:00
4edfe962ef Merge #514
514: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Petr Novák <nit.monkey@gmail.com>
Co-authored-by: IllusiveMan196 <hamsterrv@gmail.com>
Co-authored-by: mondstern <mondstern@snopyta.org>
2021-10-20 18:15:27 +00:00
mondstern d80a71c852 Translated using Weblate (Danish)
Currently translated at 52.7% (117 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2021-10-20 20:07:38 +02:00
Petr Novák 299c9f2b4d Translated using Weblate (Czech)
Currently translated at 98.8% (87 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-10-20 20:07:37 +02:00
IllusiveMan196 03e3e45f07 Translated using Weblate (Ukrainian)
Currently translated at 3.4% (3 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-10-20 20:07:34 +02:00
IllusiveMan196 c35c316788 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-10-20 20:07:33 +02:00
Petr Novák d68f0c60d4 Translated using Weblate (Czech)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-10-20 20:07:33 +02:00
waffshappen 5faa28a7e7 Replace AsyncTask with a Compatiblity Layer and further Compat Fixes (#511) 2021-10-20 19:47:06 +02:00
2fffb89179 Merge #509
509: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: 109247019824 <stoyan@gmx.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-10-19 16:02:41 +00:00
Oğuz Ersen bd27ccd535 Translated using Weblate (Turkish)
Currently translated at 17.0% (15 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-19 15:39:49 +02:00
109247019824 3149234f5d Translated using Weblate (Bulgarian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-10-19 15:39:48 +02:00
Gediminas Murauskas dcf55c93a8 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-10-19 15:39:48 +02:00
bors[bot]andaditya3901 3f3394c1e9 Merge #507
507: feat/copyable-textview r=TheLastProject a=aditya3901

## Issue Fix
Fixes #389 
Made textviews copyable :)

Co-authored-by: aditya3901 <2020itb058.aditya@students.iiests.ac.in>
2021-10-18 16:06:10 +00:00
aditya3901 2b22dd4a1f feat/copyable-textview 2021-10-18 14:29:30 +05:30
Sylvia van Os 7f1b1484ac Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into feature/power_screen_widgets 2021-10-17 20:02:42 +02:00
bors[bot]andTheLastProject a70710ca6a Merge #504
504: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-17 17:09:24 +00:00
TheLastProject cd3baf5bd9 Update Fastlane changelogs 2021-10-17 17:08:28 +00:00
Sylvia van Os 1138d6387e Update CHANGELOG 2021-10-17 19:08:08 +02:00
b664fd391a Merge #503
503: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Heimen Stoffels <vistausss@fastmail.com>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
2021-10-17 15:51:25 +00:00
Oğuz Ersen 11cc65bae3 Translated using Weblate (Turkish)
Currently translated at 17.0% (15 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-17 17:41:02 +02:00
Oğuz Ersen eaafa56503 Translated using Weblate (Turkish)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-10-17 17:41:02 +02:00
solokot 09c6d58639 Translated using Weblate (Russian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-10-17 17:41:02 +02:00
Heimen Stoffels 1767a009a7 Translated using Weblate (Dutch)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-10-17 17:41:02 +02:00
Allan Nordhøy a2e25512ec Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.5% (221 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-10-17 17:41:02 +02:00
J. Lavoie 824b931764 Translated using Weblate (Italian)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-10-17 17:41:02 +02:00
J. Lavoie 0cb75fd421 Translated using Weblate (French)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-10-17 17:41:02 +02:00
J. Lavoie 36f0d814f6 Translated using Weblate (German)
Currently translated at 100.0% (222 of 222 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-10-17 17:41:02 +02:00
bors[bot]andMiha Frangež 2aa0c46d30 Merge #502
502: Slovenian translations r=TheLastProject a=franga2000

Added some new strings and fixed a few obvious mistakes that I'm guessing came from machine translation

Co-authored-by: Miha Frangež <miha.frangez@gmail.com>
2021-10-17 15:35:00 +00:00
Miha Frangež ff63dbfdaa Fixed bad machine translations 2021-10-17 17:16:44 +02:00
Miha Frangež 5cacdbd192 New Slovenian translations 2021-10-17 17:07:32 +02:00
Ankit Tiwari c99bf206cc Dynamically size barcode based on their shape (square or rectangle) (#501) 2021-10-17 14:42:56 +02:00
bors[bot]andTheLastProject f546bb2681 Merge #500
500: Update contributors r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-17 08:56:26 +00:00
TheLastProject bef750e047 Update contributors 2021-10-17 05:10:28 +00:00
bors[bot]andTheLastProject 6998599377 Merge #499
499: Update Fastlane changelogs r=TheLastProject a=github-actions[bot]

Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action

Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-10-16 15:23:34 +00:00
TheLastProject 11164f9a73 Update Fastlane changelogs 2021-10-16 15:21:38 +00:00
Sylvia van Os b867795a08 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-16 17:21:18 +02:00
Sylvia van Os 9998205051 Update CHANGELOG 2021-10-16 17:21:05 +02:00
7692f19ea6 Merge #494
494: Inter Related Code changes for exporting encrypted zip r=TheLastProject a=ankittiwari101

1. Created new method `multipleCardsExportImportPasswordProtected()` in ImportExportTest.java
2. Added 5th Parameter `char[] password` to exportData method of MultiFormater.java
3. From this new method passed password field to `importData` and `exportData` method calls.
4. In CatimaExporter.java added a password parameter to ZipOutputStream(output,password) if a non null char[] array of non zero length is received for password parameter and setEncryptFiles(true) using AES 256 Encryption(by default)"

Remaining - Dialogue Box for entering password.

Note - This is only a draft pull request, if everything here looks good, I'll work next on The Password Dialog which is the final piece in the puzzle.

Co-authored-by: Ankit Tiwari <ankitr.tiwari@gmail.com>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-16 15:13:11 +00:00
Sylvia van Os d8361cc288 String improvements 2021-10-16 16:49:47 +02:00
93d0724c60 Merge #498
498: Translations update from Weblate r=TheLastProject a=weblate

Translations update from [Weblate](https://hosted.weblate.org/projects/catima/catima/) for Catima/Catima.



Current translation status:

![Weblate translation status](https://hosted.weblate.org/widgets/catima/-/catima/horizontal-auto.svg)


Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-16 14:43:46 +00:00
Sylvia van Os 2c03f193f0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 19.3% (17 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-10-16 16:40:17 +02:00
Ankit Tiwari 7028a1f4ca Changes to AlertDialog for entering password 2021-10-16 20:04:24 +05:30
Ankit Tiwari 32d62dd9ba Requested Modifications Made. 2021-10-16 01:34:44 +05:30
Ankit Tiwari 401fc98b4d Passing password to ZipInputStream constructor in importData method of CatimaImporter.java 2021-10-16 00:15:32 +05:30
Ankit Tiwari 993589427b Changed password parameter to a char[] instead of null in ImportExportTest.java line 613 2021-10-15 23:10:38 +05:30
Ankit Tiwari 2390568bdf Added Encrypted Backup feature.The Zip File is Password Protected, which is asked from the user at the time of export immediately on click of Export Button. 2021-10-15 22:51:52 +05:30
Allan Nordhøy 50ccf6da46 Translated using Weblate (Norwegian Bokmål)
Currently translated at 19.3% (17 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-10-15 15:45:28 +02:00
Ankit Tiwari 44066e6599 Extracted zip parameter logic into a new function and used it on imageZipParameters as well 2021-10-15 00:22:51 +05:30
Ankit Tiwari fc9c616869 1.Created new method multipleCardsExportImportPasswordProtected() in ImportExportTest.java \n 2.Added 5th Paramete 2021-10-14 23:23:01 +05:30
bors[bot]andSylvia van Os f09f35e44b Merge #493
493: Delete merged branch r=TheLastProject a=TheLastProject



Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-14 17:45:05 +00:00
Sylvia van Os f81fb0c673 Delete merged branch 2021-10-14 19:44:36 +02:00
bors[bot]andSylvia van Os b0b4e80da4 Merge #492
492: Setup bors r=TheLastProject a=TheLastProject



Co-authored-by: Sylvia van Os <sylvia@hackerchick.me>
2021-10-14 17:37:40 +00:00
Sylvia van Os 923982e449 Don't override author info 2021-10-14 19:37:03 +02:00
Sylvia van Os d05c97946d Setup bors 2021-10-14 19:07:24 +02:00
Sylvia van Os 504a1fd01b Prepare for Bors 2021-10-14 18:37:46 +02:00
Sylvia van Os 5efacec417 Merge pull request #491 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-13 20:03:00 +02:00
Oğuz Ersen 595d10fc44 Translated using Weblate (Turkish)
Currently translated at 17.0% (15 of 88 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-13 19:55:32 +02:00
Sylvia van Os 2128f0a601 Merge pull request #490 from TheLastProject/create-pull-request/patch-1634144237
Update Fastlane changelogs
2021-10-13 19:07:15 +02:00
TheLastProject 0b0a45da05 Update Fastlane changelogs 2021-10-13 16:57:17 +00:00
Sylvia van Os 94fb4b4411 Update CHANGELOG 2021-10-13 18:56:54 +02:00
Sylvia van Os fc7932d3bf Merge pull request #489 from ankittiwari101/fix-sliding-bug
Fixed Sliding Bug in MainActivity.java
2021-10-13 18:54:59 +02:00
Ankit Tiwari 97a5311593 Fixed Bug where an Empty List (consisting of only a single textview) within the Tab would not swipe left or right 2021-10-13 16:55:05 +05:30
Sylvia van Os c7db676b2b Add IzzyOnDroid badge 2021-10-12 17:31:51 +02:00
Sylvia van Os f8c8b3b2e6 Merge pull request #487 from TheLastProject/dependabot/gradle/com.android.tools.build-gradle-7.0.3
Bump gradle from 7.0.2 to 7.0.3
2021-10-12 17:23:04 +02:00
dependabot[bot] df4cb5b189 Bump gradle from 7.0.2 to 7.0.3
Bumps gradle from 7.0.2 to 7.0.3.

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-12 02:21:39 +00:00
Sylvia van Os d2b2a53109 Merge pull request #485 from TacoTheDank/materialCardview
Use MaterialCardView
2021-10-11 21:27:30 +02:00
Sylvia van Os 5107f88998 Merge pull request #483 from TheLastProject/dependabot/gradle/gradle.plugin.com.github.spotbugs.snom-spotbugs-gradle-plugin-4.7.5
Bump spotbugs-gradle-plugin from 4.7.0 to 4.7.5
2021-10-11 21:25:48 +02:00
dependabot[bot] 78f2e1698f Bump spotbugs-gradle-plugin from 4.7.0 to 4.7.5
Bumps spotbugs-gradle-plugin from 4.7.0 to 4.7.5.

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 19:20:03 +00:00
Sylvia van Os 6887cd098b Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-11 21:19:15 +02:00
Sylvia van Os 0881d745f5 Fix more spotbugs EI_EXPOSE_REP2 2021-10-11 21:18:22 +02:00
Sylvia van Os 94b3a07f90 Merge pull request #484 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-11 20:42:40 +02:00
Joel A dc280b4023 Translated using Weblate (Swedish)
Currently translated at 2.2% (2 of 87 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2021-10-11 20:22:20 +02:00
Joel A edce6d6cd3 Translated using Weblate (Swedish)
Currently translated at 99.0% (218 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-10-11 20:22:20 +02:00
solokot 23dc47a5b9 Translated using Weblate (Russian)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-10-11 20:22:20 +02:00
Sylvia van Os 683b4f46d9 Fix spotbugs EI_EXPOSE_REP2 2021-10-11 20:22:06 +02:00
Sylvia van Os ac021bce2a Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-11 19:58:26 +02:00
Sylvia van Os b0c34cbca0 Fix spotbugs RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE 2021-10-11 19:58:09 +02:00
TacoTheDank 4a0c8270ef Replace CardView with MaterialCardView 2021-10-10 22:34:53 -04:00
TacoTheDank 793f1e2f87 Remove unneeded MultiDex 2021-10-10 22:34:40 -04:00
avikkundu 0101b6fa25 added translation in bengali (#480) 2021-10-10 17:04:49 +02:00
Sylvia van Os 47dff850fb Merge pull request #479 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-10 12:33:11 +02:00
Oğuz Ersen fe7503c3ac Translated using Weblate (Turkish)
Currently translated at 16.0% (14 of 87 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-10 12:31:11 +02:00
Petr Novák 5df7d8a530 Translated using Weblate (Czech)
Currently translated at 98.8% (86 of 87 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-10-10 12:31:10 +02:00
Sylvia van Os ee129a3373 Merge pull request #478 from TheLastProject/create-pull-request/patch-1633842920
Update contributors
2021-10-10 08:17:10 +02:00
TheLastProject b979b1fc86 Update contributors 2021-10-10 05:15:20 +00:00
Sylvia van Os 361ebb8b80 Merge pull request #476 from TheLastProject/create-pull-request/patch-1633819619
Update Fastlane changelogs
2021-10-10 00:49:36 +02:00
TheLastProject fd49466e0d Update Fastlane changelogs 2021-10-09 22:46:59 +00:00
Sylvia van Os bf8f00f877 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-10 00:46:33 +02:00
Sylvia van Os 9f0b7604cb Fix botched migration and release 2.7.3 2021-10-10 00:46:20 +02:00
Sylvia van Os 6d151e7377 Merge pull request #474 from TheLastProject/create-pull-request/patch-1633816331
Update Fastlane changelogs
2021-10-10 00:02:54 +02:00
TheLastProject 6ecc94526e Update Fastlane changelogs 2021-10-09 21:52:10 +00:00
Sylvia van Os 1462911ffa Fix regression and release 2.7.2 2021-10-09 23:50:57 +02:00
Sylvia van Os 952f7a933b Merge pull request #471 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-09 21:12:21 +02:00
109247019824 b76c4ef352 Translated using Weblate (Bulgarian)
Currently translated at 4.7% (4 of 85 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2021-10-09 21:04:49 +02:00
Sylvia van Os 48048cdb82 Merge pull request #468 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-08 18:56:48 +02:00
Michael Gangolf a555f1c41b Translated using Weblate (German)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-10-08 17:30:09 +02:00
Sylvia van Os 2ab7ebb2c0 Merge pull request #466 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-08 09:22:00 +02:00
Oğuz Ersen e2b0113687 Translated using Weblate (Turkish)
Currently translated at 14.1% (12 of 85 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-08 07:04:26 +02:00
Heimen Stoffels dc7e9b541a Translated using Weblate (Dutch)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-10-08 07:04:26 +02:00
Allan Nordhøy b44ef7dfc0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.5% (219 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-10-08 07:04:25 +02:00
Gediminas Murauskas 4d1f4a64fa Translated using Weblate (Lithuanian)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-10-08 07:04:24 +02:00
Sylvia van Os fd7e6e4993 Release Catima 2.7.1 2021-10-07 20:04:19 +02:00
Sylvia van Os b749c79a81 Merge pull request #464 from TheLastProject/create-pull-request/patch-1633550408
Update Fastlane changelogs
2021-10-06 22:01:05 +02:00
TheLastProject 5d019a8e5b Update Fastlane changelogs 2021-10-06 20:00:07 +00:00
Sylvia van Os 4e203aebfe Improve search with spaces 2021-10-06 21:59:45 +02:00
Sylvia van Os fb2bede135 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-06 19:58:44 +02:00
Sylvia van Os 5a88909cd2 Make spotbugs happy 2021-10-06 19:58:29 +02:00
/usr/local/ΕΨΗΕΛΩΝ ab1e6eed0c Cards on power screen 2021-10-06 15:07:06 +02:00
/usr/local/ΕΨΗΕΛΩΝ ba5cf81bb4 Upgrade Java version to 11
Required to use java.util.concurrent.Flow
Could opt for Java 9, but 11 is LTS
2021-10-06 14:40:02 +02:00
Sylvia van Os 017034a788 Google. Again. 2021-10-06 12:03:09 +02:00
Sylvia van Os 66ff6f8199 Merge branch 'master' of github.com:TheLastProject/Catima 2021-10-06 11:17:38 +02:00
Sylvia van Os ddccbad020 Fuck you, Google. Fuck you. 2021-10-06 11:17:28 +02:00
Sylvia van Os 578fb068ee Merge pull request #463 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-06 09:28:31 +02:00
Petr Novák d624eb3842 Translated using Weblate (Czech)
Currently translated at 98.8% (83 of 84 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-10-06 09:23:05 +02:00
Oğuz Ersen f46fedda4b Translated using Weblate (Turkish)
Currently translated at 13.0% (11 of 84 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-06 09:23:05 +02:00
109247019824 6e5ac2ca3d Translated using Weblate (Bulgarian)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-10-06 09:23:05 +02:00
IllusiveMan196 20de874ea1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-10-06 09:23:05 +02:00
Petr Novák c8a207083b Translated using Weblate (Czech)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-10-06 09:23:05 +02:00
Sylvia van Os ab7505c67a Work around Google's incompetence 2021-10-06 09:22:57 +02:00
Sylvia van Os b26050b6bf Fix version name 2021-10-05 20:39:20 +02:00
Sylvia van Os 84e9c8efd4 Merge remote-tracking branch 'weblate/master' 2021-10-05 20:35:52 +02:00
Sylvia van Os 2811a14627 Release Catima 2.7.0 2021-10-05 20:28:36 +02:00
Sylvia van Os 3b6d4d44b0 Release Catima 2.7 2021-10-05 20:27:54 +02:00
Sylvia van Os 71bc304c51 Fix version upgrade 2021-10-05 20:27:11 +02:00
Sylvia van Os 7b0652ff11 Fix no results sometimes not correctly displayed 2021-10-05 20:15:10 +02:00
Sylvia van Os 61a3054655 Cleanup 2021-10-05 20:04:03 +02:00
Sylvia van Os 54c1cc3661 Merge pull request #457 from TheLastProject/create-pull-request/patch-1633455787
Update Fastlane changelogs
2021-10-05 19:45:20 +02:00
TheLastProject ee0f9e04de Update Fastlane changelogs 2021-10-05 17:43:07 +00:00
Sylvia van Os ebe5289d6e Implement FTS (#455)
This allows for unicode insensitive search and fast search over both
store and note data
2021-10-05 19:42:52 +02:00
Sylvia van Os 15ba15c602 Cleanup 2021-10-04 21:03:50 +02:00
Sylvia van Os fd0448efc4 Merge pull request #454 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-04 19:28:39 +02:00
Oğuz Ersen 43fa2623d4 Translated using Weblate (Turkish)
Currently translated at 13.0% (11 of 84 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-10-04 19:08:55 +02:00
Oğuz Ersen c1b9babf33 Translated using Weblate (Turkish)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-10-04 19:08:55 +02:00
Petr Novák 4c8edf9d9a Translated using Weblate (Czech)
Currently translated at 75.0% (63 of 84 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-10-04 19:08:55 +02:00
solokot ff4271f51d Translated using Weblate (Russian)
Currently translated at 3.5% (3 of 84 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-10-04 19:08:55 +02:00
IllusiveMan196 2424ab01cf Translated using Weblate (Ukrainian)
Currently translated at 95.9% (211 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-10-04 19:08:55 +02:00
solokot b38dfeeed7 Translated using Weblate (Russian)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-10-04 19:08:55 +02:00
Thomas Bertels 7912cd190f Translated using Weblate (French)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-10-04 19:08:55 +02:00
Petr Novák 11962ad930 Translated using Weblate (Czech)
Currently translated at 97.7% (215 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-10-04 19:08:55 +02:00
Thomas Bertels a8e2c65072 Translated using Weblate (English)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2021-10-04 19:08:55 +02:00
Sylvia van Os 1b8ca5f467 Merge pull request #453 from LunarWatcher/master
Additional Norwegian translations
2021-10-04 19:08:46 +02:00
Olivia 46fff6da5b More changelogs 2021-10-04 18:40:45 +02:00
Olivia 47e75f64ed Import/Eksport is not an action in that form 2021-10-04 18:32:35 +02:00
Olivia fb95c8c9d4 never seen that word used before, and we use copyleft
https://no.wikipedia.org/wiki/Copyleft
2021-10-04 18:27:21 +02:00
Olivia 66cc97214c Add translations 2021-10-04 18:21:36 +02:00
Biren f52423ed70 Removed click listener from card icon (#452)
* Removed the unnecessary click listener in the card icon from LoyaltyCardCursorAdapter.java

* Removed declaration and assignment of mThumbnailContainer from LoyaltyCardCursorAdapter.java
2021-10-04 17:38:34 +02:00
Sylvia van Os 29bea052eb Merge pull request #451 from TheLastProject/create-pull-request/patch-1633349604
Update Fastlane changelogs
2021-10-04 14:15:35 +02:00
TheLastProject b683f1fce4 Update Fastlane changelogs 2021-10-04 12:13:24 +00:00
Sylvia van Os 2ec55473a5 Add support expiration notice for Android 4.4 2021-10-04 14:13:09 +02:00
Sylvia van Os 2fe89ffcbc Merge pull request #448 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-04 07:38:09 +02:00
Allan Nordhøy 7e88a10884 Translated using Weblate (Russian)
Currently translated at 99.5% (219 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-10-04 07:32:30 +02:00
solokot f260051160 Translated using Weblate (Russian)
Currently translated at 99.5% (219 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-10-04 07:24:49 +02:00
Allan Nordhøy b8dacc2459 Translated using Weblate (English)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/en/
2021-10-04 07:24:49 +02:00
Sylvia van Os b311dd99dc Merge branch 'master' of https://hosted.weblate.org/git/catima/catima 2021-10-03 23:00:27 +02:00
Petr Novák 1d7a9843d8 Translated using Weblate (Czech)
Currently translated at 99.0% (218 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-10-03 22:57:01 +02:00
Sylvia van Os 03e59ad00f Make lint happy 2021-10-03 22:56:53 +02:00
Sylvia van Os c083af1c76 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-03 22:53:43 +02:00
Sylvia van Os 6abb0a2a75 Fix tests 2021-10-03 22:53:31 +02:00
Sylvia van Os e672e7f1a6 Merge pull request #446 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-03 22:50:56 +02:00
Heimen Stoffels 852a638ea1 Translated using Weblate (Dutch)
Currently translated at 100.0% (220 of 220 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-10-03 22:50:04 +02:00
Petr Novák ec1b642614 Translated using Weblate (Czech)
Currently translated at 22.8% (19 of 83 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-10-03 22:50:04 +02:00
solokot 145dac72af Translated using Weblate (Russian)
Currently translated at 95.9% (212 of 221 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-10-03 22:50:04 +02:00
Heimen Stoffels 7d2679b2a3 Translated using Weblate (Dutch)
Currently translated at 100.0% (221 of 221 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-10-03 22:50:04 +02:00
Petr Novák ffbcd2183b Translated using Weblate (Czech)
Currently translated at 95.4% (211 of 221 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-10-03 22:50:04 +02:00
Sylvia van Os b9d646868c Merge pull request #447 from TheLastProject/create-pull-request/patch-1633294115
Update Fastlane changelogs
2021-10-03 22:50:01 +02:00
TheLastProject 2ce530a644 Update Fastlane changelogs 2021-10-03 20:48:34 +00:00
Sylvia van Os 1c8e9ba1cf Fix CHANGELOG header 2021-10-03 22:48:15 +02:00
Sylvia van Os 9a2560dbc2 Fix translatable 2021-10-03 22:46:36 +02:00
Sylvia van Os f900c4299d Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-10-03 22:44:05 +02:00
Sylvia van Os f78494f882 Cleanups 2021-10-03 22:43:51 +02:00
Sylvia van Os b55f10b59d Merge pull request #445 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-03 22:26:03 +02:00
Petr Novák 277ee90421 Translated using Weblate (Czech)
Currently translated at 20.4% (17 of 83 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-10-03 22:17:50 +02:00
Aditya Das fcdde83038 feature/About-Page (#440) 2021-10-03 22:17:45 +02:00
Sylvia van Os 12fb29ecce Merge pull request #442 from TheLastProject/create-pull-request/patch-1633234512
Update contributors
2021-10-03 10:29:56 +02:00
TheLastProject ae7dd63d6b Update contributors 2021-10-03 04:15:12 +00:00
Sylvia van Os 48f680f7bd Merge pull request #436 from TheLastProject/dependabot/gradle/com.journeyapps-zxing-android-embedded-4.2.0
Bump zxing-android-embedded from 4.1.0 to 4.2.0
2021-10-02 15:22:25 +02:00
dependabot[bot] e3d4e393b3 Bump zxing-android-embedded from 4.1.0 to 4.2.0
Bumps [zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/journeyapps/zxing-android-embedded/releases)
- [Changelog](https://github.com/journeyapps/zxing-android-embedded/blob/master/CHANGES.md)
- [Commits](https://github.com/journeyapps/zxing-android-embedded/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-02 12:00:39 +00:00
Sylvia van Os 81f13c255a Merge pull request #435 from TheLastProject/dependabot/gradle/org.apache.commons-commons-csv-1.9.0
Bump commons-csv from 1.8 to 1.9.0
2021-10-02 13:59:50 +02:00
dependabot[bot] 97ce322d0c Bump commons-csv from 1.8 to 1.9.0
Bumps commons-csv from 1.8 to 1.9.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-csv
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-02 11:56:02 +00:00
Sylvia van Os a3e876d9a2 Merge pull request #434 from TheLastProject/dependabot/gradle/net.lingala.zip4j-zip4j-2.9.0
Bump zip4j from 2.8.0 to 2.9.0
2021-10-02 13:55:22 +02:00
Rohan Babbar 234356f8f2 Modified to Android 12 Splash Screen (#430) 2021-10-02 13:44:41 +02:00
Sylvia van Os d3222f7bdc Merge pull request #438 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-02 12:14:48 +02:00
Nyatsuki a5658e72c7 Translated using Weblate (Japanese)
Currently translated at 98.5% (206 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-10-02 08:34:54 +02:00
dependabot[bot] d1e1fcfabe Bump zip4j from 2.8.0 to 2.9.0
Bumps [zip4j](https://github.com/srikanth-lingala/zip4j) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/srikanth-lingala/zip4j/releases)
- [Commits](https://github.com/srikanth-lingala/zip4j/compare/v2.8.0...v2.9.0)

---
updated-dependencies:
- dependency-name: net.lingala.zip4j:zip4j
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-01 22:24:58 +00:00
Sylvia van Os 9d6bd0770c Configure dependabot 2021-10-02 00:24:33 +02:00
Sylvia van Os 6f76ee389b Merge pull request #431 from weblate/weblate-catima-catima
Translations update from Weblate
2021-10-01 10:04:50 +02:00
mondstern 87aa74f231 Translated using Weblate (Danish)
Currently translated at 52.6% (110 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2021-09-30 23:35:10 +02:00
IllusiveMan196 a0dc80c1a5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-09-30 23:35:09 +02:00
mondstern d8dbe25a64 Translated using Weblate (Romanian)
Currently translated at 26.3% (55 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2021-09-30 23:35:08 +02:00
Sylvia van Os e3bec085df Merge pull request #426 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-27 23:01:02 +02:00
mondstern 4d4b92b33f Translated using Weblate (Bosnian)
Currently translated at 21.6% (18 of 83 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bs/
2021-09-27 22:39:12 +02:00
mondstern cc58c769cc Translated using Weblate (Bosnian)
Currently translated at 56.4% (118 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bs/
2021-09-27 22:39:11 +02:00
IllusiveMan196 37f08f6fc4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-09-27 22:39:10 +02:00
Sylvia van Os 73e02e7c06 Merge pull request #425 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-26 19:43:32 +02:00
mondstern 7a1b6fccc2 Translated using Weblate (Bosnian)
Currently translated at 20.0% (42 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bs/
2021-09-26 19:38:46 +02:00
Allan Nordhøy 2473e3f91a Translated using Weblate (Norwegian Bokmål)
Currently translated at 4.8% (4 of 83 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-09-26 19:38:45 +02:00
Allan Nordhøy 0a6bb2805c Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.0% (207 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-09-26 19:38:45 +02:00
Sylvia van Os 1eecc6f065 Merge pull request #424 from TheLastProject/create-pull-request/patch-1632629697
Update contributors
2021-09-26 11:35:13 +02:00
TheLastProject b8b4fe4958 Update contributors 2021-09-26 04:14:56 +00:00
Sylvia van Os 6dd8b6798b Merge pull request #423 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-25 23:50:30 +02:00
mondstern 69d0a3f4aa Added translation using Weblate (Bosnian) 2021-09-25 23:45:29 +02:00
Sylvia van Os ce81934890 Merge pull request #422 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-25 22:58:07 +02:00
Oğuz Ersen ba06f47e3e Translated using Weblate (Turkish)
Currently translated at 12.0% (10 of 83 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-09-25 16:38:09 +02:00
Sylvia van Os cfc37d4af6 Merge pull request #419 from TheLastProject/create-pull-request/patch-1632573184
Update Fastlane changelogs
2021-09-25 14:33:36 +02:00
TheLastProject 43cd6edda2 Update Fastlane changelogs 2021-09-25 12:33:04 +00:00
Sylvia van Os 0bd262d82f Release Catima 2.6.1 2021-09-25 14:32:43 +02:00
Sylvia van Os f09bafa104 Update contributors on schedule instead 2021-09-25 13:17:28 +02:00
Sylvia van Os 20e34ee365 Merge pull request #417 from TheLastProject/create-pull-request/patch-1632560906
Update contributors
2021-09-25 11:09:38 +02:00
TheLastProject 7a6bd8f661 Update contributors 2021-09-25 09:08:25 +00:00
Sylvia van Os 54c3765e36 Merge pull request #415 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-25 11:07:58 +02:00
J. Lavoie 4d7f563b0d Translated using Weblate (German)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-09-25 11:06:49 +02:00
QuangDNguyen2211 4e0ecaa7be Changing Reverse button in sorting into a checkbox (#406) 2021-09-25 11:06:44 +02:00
Sylvia van Os 4f41d238eb Merge pull request #414 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-24 21:15:04 +02:00
mondstern 7c3d021427 Translated using Weblate (Romanian)
Currently translated at 18.6% (39 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ro/
2021-09-24 20:35:55 +02:00
Sylvia van Os bfde036484 Merge pull request #413 from TheLastProject/create-pull-request/patch-1632296753
Update contributors
2021-09-22 09:46:53 +02:00
TheLastProject 84ef4ad030 Update contributors 2021-09-22 07:45:52 +00:00
Sylvia van Os 3b85fccd60 Merge pull request #412 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-22 09:45:24 +02:00
Petr Novák 830d0f6e6a Translated using Weblate (Czech)
Currently translated at 6.0% (5 of 82 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-09-22 09:35:00 +02:00
Petr Novák 1ceede27a3 Translated using Weblate (Czech)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-09-22 09:34:59 +02:00
Sylvia van Os fa33cdaca4 Enable autoVerify for Android 12 on catima.app 2021-09-21 21:13:04 +02:00
Sylvia van Os f39fbb55a1 Merge pull request #411 from TheLastProject/create-pull-request/patch-1632248508
Update contributors
2021-09-21 20:23:17 +02:00
TheLastProject f3ffa0ab88 Update contributors 2021-09-21 18:21:48 +00:00
waffshappen 48e1fcc38e TargetSDK, Version Upgrades, Deprecations and XLint (#405)
* Updated TargetSdk, enabled showing Deprecations by default (Warn) and implement some replacements for deprecated Methods
2021-09-21 20:21:02 +02:00
Sylvia van Os 5b889c4c0c Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-09-20 23:00:31 +02:00
Sylvia van Os 616ca77c39 Fix possible crash
I don't think this should ever happen, unless someone manually edited
their import or DB, but this crash was logged in Google Play Console
anyway so...
2021-09-20 22:58:37 +02:00
Sylvia van Os 59bf064783 Merge pull request #404 from TheLastProject/create-pull-request/patch-1632167904
Update contributors
2021-09-20 21:59:46 +02:00
TheLastProject 220393c445 Update contributors 2021-09-20 19:58:24 +00:00
Sylvia van Os b976c03fb0 Merge pull request #403 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-20 21:57:42 +02:00
mondstern dad0493666 Translated using Weblate (Danish)
Currently translated at 34.4% (72 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2021-09-20 21:39:12 +02:00
109247019824 776613c507 Translated using Weblate (Bulgarian)
Currently translated at 3.6% (3 of 82 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2021-09-20 21:39:11 +02:00
109247019824 7570d9d319 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-09-20 21:39:11 +02:00
Sylvia van Os 2e648d1062 Remove cat face everywhere 2021-09-19 15:46:00 +02:00
Sylvia van Os 5ad02ae9cc Release Catima 2.6.0 2021-09-19 14:48:52 +02:00
Sylvia van Os 99fc568419 Make full description nicer for screen readers 2021-09-19 12:35:41 +02:00
Sylvia van Os 5f835716e0 Consistent badge colouring 2021-09-18 16:46:25 +02:00
Sylvia van Os 1f6fe787eb Remove Python from CodeQL 2021-09-17 21:04:34 +02:00
Sylvia van Os 1b08d30611 Enable CodeQL 2021-09-17 20:57:29 +02:00
Sylvia van Os 05ad33a756 Fix Google Play badge 2021-09-17 20:55:14 +02:00
Sylvia van Os b103366a10 Merge pull request #398 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-17 15:41:52 +02:00
J. Lavoie 343d37d4b8 Translated using Weblate (Italian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-09-17 15:36:59 +02:00
J. Lavoie 60dc050633 Translated using Weblate (French)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-09-17 15:36:59 +02:00
J. Lavoie 96c3583393 Translated using Weblate (German)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-09-17 15:36:58 +02:00
Sylvia van Os 43656dbcca Merge pull request #396 from TheLastProject/create-pull-request/patch-1631739087
Update contributors
2021-09-15 22:51:48 +02:00
TheLastProject 7c38bbe6ab Update contributors 2021-09-15 20:51:26 +00:00
Sylvia van Os c6c6448501 Merge pull request #395 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-15 22:50:52 +02:00
Oğuz Ersen 7ff9da2d7f Translated using Weblate (Turkish)
Currently translated at 10.9% (9 of 82 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-09-15 22:36:50 +02:00
Oğuz Ersen 39893cc66d Translated using Weblate (Turkish)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-09-15 22:36:49 +02:00
Joel A 5110618d7d Translated using Weblate (Swedish)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-09-15 22:36:49 +02:00
mondstern a856831ee1 Translated using Weblate (Slovak)
Currently translated at 53.5% (112 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2021-09-15 22:36:48 +02:00
solokot c5fc6a4212 Translated using Weblate (Russian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-09-15 22:36:48 +02:00
Heimen Stoffels 7708646c68 Translated using Weblate (Dutch)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-09-15 22:36:47 +02:00
Gediminas Murauskas c84dbac020 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (209 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-09-15 22:36:47 +02:00
Flav 56c2297e02 Translated using Weblate (French)
Currently translated at 97.6% (204 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-09-15 22:36:47 +02:00
String E. Fighter 6956805e62 Translated using Weblate (German)
Currently translated at 99.5% (208 of 209 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-09-15 22:36:46 +02:00
Sylvia van Os 7736e30043 Merge pull request #394 from TheLastProject/create-pull-request/patch-1631641876
Update Fastlane changelogs
2021-09-14 19:53:27 +02:00
TheLastProject ace441f072 Update Fastlane changelogs 2021-09-14 17:51:15 +00:00
Sylvia van Os a37e99ce39 Prevent OOM on scanning large images for barcode 2021-09-14 19:50:50 +02:00
github-actions[bot]andTheLastProject 6b1bdbaa78 Update Fastlane changelogs (#393)
Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-09-14 19:19:12 +02:00
Sylvia van Os b4077a2fc3 Accept changelog entry without date (unreleased) 2021-09-14 19:17:26 +02:00
Sylvia van Os 2f660c6fec Basic ordering support (#367) 2021-09-14 19:14:38 +02:00
Sylvia van Os cc0511a2aa Merge pull request #391 from TheLastProject/create-pull-request/patch-1631555183
Update contributors
2021-09-13 19:46:59 +02:00
TheLastProject 2f367efa70 Update contributors 2021-09-13 17:46:22 +00:00
Sylvia van Os bff1b54b7e Merge pull request #390 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-13 19:45:46 +02:00
Joel A 010e9556b8 Translated using Weblate (Swedish)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-09-13 19:35:39 +02:00
Sylvia van Os 7c54c01dfe Release Catima 2.5.0 2021-09-10 20:58:17 +02:00
Sylvia van Os 5709c8dbec Fix spotBugs 2021-09-10 19:30:10 +02:00
Sylvia van Os 0f434d7fe7 Merge pull request #387 from TheLastProject/create-pull-request/patch-1631269680
Update contributors
2021-09-10 12:29:51 +02:00
TheLastProject a2d7e70431 Update contributors 2021-09-10 10:28:00 +00:00
Sylvia van Os 0c0c462372 Merge pull request #386 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-10 12:27:31 +02:00
Oğuz Ersen f630539d9a Translated using Weblate (Turkish)
Currently translated at 9.8% (8 of 81 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/tr/
2021-09-10 07:35:44 +02:00
Oğuz Ersen 7e27ddcc94 Translated using Weblate (Turkish)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/tr/
2021-09-10 07:35:43 +02:00
Nyatsuki f9b61c24e9 Translated using Weblate (Japanese)
Currently translated at 99.4% (198 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-09-10 07:35:41 +02:00
IllusiveMan196 d26a138e3e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-09-10 07:35:40 +02:00
solokot e695a4e993 Translated using Weblate (Russian)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-09-10 07:35:40 +02:00
Heimen Stoffels 8cae6aed4a Translated using Weblate (Dutch)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-09-10 07:35:40 +02:00
Allan Nordhøy 56b72dd544 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.4% (198 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-09-10 07:35:40 +02:00
Gediminas Murauskas b935b30e00 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-09-10 07:35:40 +02:00
J. Lavoie b9a6c6248d Translated using Weblate (Italian)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-09-10 07:35:39 +02:00
J. Lavoie 09d8703545 Translated using Weblate (French)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-09-10 07:35:39 +02:00
J. Lavoie 6e25211f12 Translated using Weblate (German)
Currently translated at 100.0% (199 of 199 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-09-10 07:35:39 +02:00
Sylvia van Os 6f1dc74f66 Consistent barcode naming 2021-09-10 00:49:06 +02:00
Sylvia van Os 61b1317fc5 Fix dots increasing each onResume 2021-09-09 22:48:02 +02:00
Sylvia van Os 129ee2d5aa Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-09-08 23:14:00 +02:00
Sylvia van Os 2358ea1f89 Swipe logic fixes 2021-09-08 23:13:43 +02:00
Sylvia van Os 87a172afd5 Merge pull request #384 from TheLastProject/create-pull-request/patch-1631124290
Update Fastlane changelogs
2021-09-08 20:05:30 +02:00
TheLastProject 5a64b6996e Update Fastlane changelogs 2021-09-08 18:04:50 +00:00
Sylvia van Os 9ba07982bf Don't reset group on back button press 2021-09-08 20:04:19 +02:00
Sylvia van Os 98c41ec003 Merge pull request #383 from TheLastProject/create-pull-request/patch-1631118155
Update contributors
2021-09-08 18:23:16 +02:00
TheLastProject bc9875e7fc Update contributors 2021-09-08 16:22:34 +00:00
Sylvia van Os b8bc7eded3 Merge pull request #382 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-08 18:22:06 +02:00
Oğuz Ersen 6625deadf7 Added translation using Weblate (Turkish) 2021-09-08 16:28:03 +02:00
Sylvia van Os c781e4ff4e Merge pull request #380 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-07 19:51:37 +02:00
Joel A b5a2508027 Translated using Weblate (Swedish)
Currently translated at 4.9% (4 of 81 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2021-09-07 19:51:22 +02:00
github-actions[bot]andTheLastProject 4916917ac9 Update Fastlane changelogs (#381)
Co-authored-by: TheLastProject <TheLastProject@users.noreply.github.com>
2021-09-07 19:51:19 +02:00
Sylvia van Os 4f9b1dae04 Show first image as main (#377) 2021-09-07 19:50:26 +02:00
Sylvia van Os 9b841399f7 Merge pull request #379 from TheLastProject/create-pull-request/patch-1630965291
Update contributors
2021-09-06 23:55:36 +02:00
TheLastProject 45fdc81aa7 Update contributors 2021-09-06 21:54:51 +00:00
Sylvia van Os fdb28a3e52 Merge pull request #378 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-06 23:54:23 +02:00
Joel A a151a9334e Translated using Weblate (Swedish)
Currently translated at 3.7% (3 of 81 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2021-09-06 23:34:40 +02:00
Sylvia van Os 618c7a294d Merge pull request #376 from TheLastProject/create-pull-request/patch-1630874360
Update contributors
2021-09-05 22:39:57 +02:00
TheLastProject f926d61213 Update contributors 2021-09-05 20:39:19 +00:00
Sylvia van Os d572add506 Merge pull request #375 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-05 22:38:51 +02:00
Joel A 012da7397f Translated using Weblate (Swedish)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-09-05 22:34:42 +02:00
109247019824 92e4908ea8 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-09-05 22:34:42 +02:00
IllusiveMan196 a051d628ab Translated using Weblate (Ukrainian)
Currently translated at 3.7% (3 of 81 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-09-05 22:34:42 +02:00
Nyatsuki 0116346035 Translated using Weblate (Japanese)
Currently translated at 99.4% (197 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-09-05 22:34:41 +02:00
IllusiveMan196 3049b7b0ae Translated using Weblate (Ukrainian)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-09-05 22:34:41 +02:00
solokot 0c484d26ee Translated using Weblate (Russian)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-09-05 22:34:41 +02:00
Heimen Stoffels 55bea5262e Translated using Weblate (Dutch)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-09-05 22:34:40 +02:00
Allan Nordhøy f64d0dcc16 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.4% (197 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-09-05 22:34:40 +02:00
Gediminas Murauskas ad23a671a2 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-09-05 22:34:40 +02:00
J. Lavoie 718e6b433d Translated using Weblate (Italian)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-09-05 22:34:40 +02:00
J. Lavoie 65e2965df2 Translated using Weblate (French)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-09-05 22:34:39 +02:00
J. Lavoie 2bf815942c Translated using Weblate (German)
Currently translated at 100.0% (198 of 198 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-09-05 22:34:39 +02:00
Sylvia van Os b5547c5cdf Merge pull request #371 from TheLastProject/create-pull-request/patch-1630770974
Update Fastlane changelogs
2021-09-04 17:58:08 +02:00
TheLastProject 371fd00606 Update Fastlane changelogs 2021-09-04 15:56:14 +00:00
Sylvia van Os 4f2a448e7e Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-09-04 17:55:52 +02:00
Sylvia van Os 2755641e6b Fix could not read image not always appearing 2021-09-04 17:55:38 +02:00
Sylvia van Os 3e80066a68 Don't crash when selecting video in scan activity 2021-09-04 17:55:21 +02:00
Sylvia van Os 2e78f77be6 Merge pull request #368 from TheLastProject/create-pull-request/patch-1630691444
Update Fastlane changelogs
2021-09-03 19:52:24 +02:00
TheLastProject d042d9a7e8 Update Fastlane changelogs 2021-09-03 17:50:44 +00:00
Sylvia van Os c4064a2ed1 Fix various small accessibility issues 2021-09-03 19:50:17 +02:00
Sylvia van Os 0ac0fad091 Merge pull request #366 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-02 23:50:05 +02:00
mondstern 7fdad67ea4 Translated using Weblate (Slovak)
Currently translated at 35.0% (69 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sk/
2021-09-02 21:32:45 +02:00
Sylvia van Os be21bc1654 Merge pull request #365 from TheLastProject/create-pull-request/patch-1630602047
Update contributors
2021-09-02 19:02:28 +02:00
TheLastProject e65fb4390f Update contributors 2021-09-02 17:00:46 +00:00
Sylvia van Os 9f7bd4a0bd Update CONTRIBUTING.md 2021-09-02 19:00:07 +02:00
Sylvia van Os b43817cbde Merge pull request #363 from weblate/weblate-catima-catima
Translations update from Weblate
2021-09-01 18:06:34 +02:00
Sylvia van Os da0e2ebb99 Fix bad escaping 2021-09-01 17:23:29 +02:00
mondstern aa87f33676 Translated using Weblate (Swedish)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-09-01 17:14:49 +02:00
mondstern 4e7d4383e8 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-09-01 17:14:49 +02:00
mondstern 0702aa1c79 Translated using Weblate (Esperanto)
Currently translated at 53.8% (106 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2021-09-01 17:14:49 +02:00
mondstern cd97f89d90 Translated using Weblate (Finnish)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-09-01 17:14:49 +02:00
Heimen Stoffels eab6c4d2bd Translated using Weblate (Dutch)
Currently translated at 5.0% (4 of 80 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-09-01 17:14:49 +02:00
mondstern 20775cbc79 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-09-01 17:14:49 +02:00
mondstern 90ecb1997f Translated using Weblate (Slovenian)
Currently translated at 57.8% (114 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2021-09-01 17:14:49 +02:00
Allan Nordhøy 64b1483fa5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.4% (196 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-09-01 17:14:49 +02:00
mondstern 8365a719d8 Translated using Weblate (Spanish)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-09-01 17:14:49 +02:00
mondstern 068e793682 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-09-01 17:14:49 +02:00
Sylvia van Os 2e1c72e401 Fail build on bad translations 2021-09-01 17:14:38 +02:00
Sylvia van Os 3e213c6996 Unit tests are very unstable, retry once on fail 2021-09-01 12:32:30 +02:00
Sylvia van Os ec65abadc3 PR consistency 2021-09-01 12:27:06 +02:00
Sylvia van Os d24b56b5c1 Merge pull request #360 from TheLastProject/create-pull-request/patch
Update Fastlane changelogs
2021-08-31 20:38:09 +02:00
TheLastProject b56f4e1653 Update Fastlane changelogs 2021-08-31 18:36:29 +00:00
Sylvia van Os efba8773c5 Convert Markdown to simple link for Fastlane 2021-08-31 20:30:21 +02:00
Sylvia van Os 15339a8c44 Merge pull request #358 from TheLastProject/create-pull-request/patch
Update contributors
2021-08-31 18:13:47 +02:00
TheLastProject 050021de5c Update contributors 2021-08-31 16:12:42 +00:00
Sylvia van Os 16cff71cfb Merge pull request #357 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-31 18:12:10 +02:00
Heimen Stoffels 76226a319f Translated using Weblate (Dutch)
Currently translated at 5.0% (4 of 80 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-08-31 16:33:12 +02:00
Maciej Błędkowski eed138a2fb Translated using Weblate (Polish)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2021-08-31 16:33:12 +02:00
Sylvia van Os fd202fc940 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-08-30 21:36:29 +02:00
Sylvia van Os 5364b57cee Make PR instead of auto-committing 2021-08-30 21:35:51 +02:00
Sylvia van Os 3136b80f26 Merge pull request #356 from TheLastProject/create-pull-request/patch
Update Fastlane changelogs
2021-08-30 21:29:33 +02:00
TheLastProject f3471b082f Update Fastlane changelogs 2021-08-30 19:28:21 +00:00
Sylvia van Os 9d24ef7791 Move to correct location 2021-08-30 21:27:55 +02:00
Sylvia van Os 6223ccd4bc Automatically Convert CHANGELOG to Fastlane 2021-08-30 21:26:30 +02:00
Sylvia van Os a81cc27414 Add badges showing current available versions 2021-08-29 23:39:04 +02:00
Sylvia van Os 78481516b0 Bump versioncode 2021-08-29 16:38:07 +02:00
Sylvia van Os 423b74273e Release 2.4.0 2021-08-29 16:28:00 +02:00
Sylvia van Os 83e0a988d9 Improve contrast of cards 2021-08-29 16:14:32 +02:00
Sylvia van Os 1adea88ff1 Merge pull request #352 from TheLastProject/feature/cardLayout
Main screen card layout
2021-08-29 01:33:06 +02:00
Sylvia van Os dda912c8c5 Update CHANGELOG 2021-08-29 01:27:47 +02:00
Sylvia van Os f3b31bb306 Update screenshots 2021-08-29 01:27:10 +02:00
Sylvia van Os 3b31c4e05a Set min-height for long store names 2021-08-29 01:16:31 +02:00
Sylvia van Os 1155108086 Fix title layout issue 2021-08-29 00:46:36 +02:00
Sylvia van Os 73bb7ded09 Fix recyclerview not rendering all in unit test 2021-08-28 01:51:44 +02:00
Sylvia van Os d8655eb631 Don't make cards bigger than needed 2021-08-28 01:42:19 +02:00
Sylvia van Os 55cddfef91 Fix incorrect data due to recycling 2021-08-28 01:39:33 +02:00
Sylvia van Os c35dc736f4 Cleanup buggy code 2021-08-28 01:03:25 +02:00
Sylvia van Os 23b762a500 2 colums in landscape 2021-08-28 00:05:33 +02:00
Sylvia van Os b9b638de45 Initial card layout 2021-08-27 23:42:03 +02:00
thelastproject/contributors-to-file 5f57507dda Update contributor list 2021-08-27 20:40:38 +00:00
Sylvia van Os 852eb6612c Merge pull request #351 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-27 22:40:04 +02:00
solokot d96aac7bbf Translated using Weblate (Russian)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-27 22:32:54 +02:00
Allan Nordhøy 9018479959 Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.8% (179 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-08-27 22:32:54 +02:00
Gediminas Murauskas ce8a99e840 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-08-27 22:32:54 +02:00
J. Lavoie 9236f66bc6 Translated using Weblate (Italian)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-27 22:32:53 +02:00
J. Lavoie 37b3964351 Translated using Weblate (French)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-08-27 22:32:53 +02:00
J. Lavoie a60d902fda Translated using Weblate (German)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-08-27 22:32:53 +02:00
Petr Novák a97ce6f9aa Translated using Weblate (Czech)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-08-27 22:32:53 +02:00
waffshappen a15bce04e8 German Translation (#349) 2021-08-26 00:03:39 +02:00
thelastproject/contributors-to-file 34fa68f852 Update contributor list 2021-08-25 21:31:08 +00:00
Sylvia van Os e5fef55fc7 Ignore bots 2021-08-25 23:30:41 +02:00
Sylvia van Os c5cca1b14d Merge pull request #348 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-25 23:24:45 +02:00
Heimen Stoffels f34ec1cc4b Translated using Weblate (Dutch)
Currently translated at 100.0% (197 of 197 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-25 23:23:34 +02:00
solokot 95aafa5c99 Translated using Weblate (Russian)
Currently translated at 100.0% (196 of 196 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-25 23:23:34 +02:00
Heimen Stoffels 00160b0c45 Translated using Weblate (Dutch)
Currently translated at 100.0% (196 of 196 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-25 23:23:34 +02:00
Allan Nordhøy a7e6d56bc9 Translated using Weblate (Norwegian Bokmål)
Currently translated at 91.3% (179 of 196 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-08-25 23:23:34 +02:00
Gediminas Murauskas 9dc8d5e2f4 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (196 of 196 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-08-25 23:23:34 +02:00
thelastproject/contributors-to-file cf7cf679e0 Update contributor list 2021-08-25 21:23:31 +00:00
Sylvia van Os 4e7e0d9480 Fix pagination in contributors-to-file 2021-08-25 23:23:05 +02:00
thelastproject/contributors-to-file fbb3013b20 Update contributor list 2021-08-25 20:57:46 +00:00
waffshappen ca37e2aa84 Introduce a fallback text when a group is empty (#347) 2021-08-25 22:57:22 +02:00
Sylvia van Os e6bf60d457 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-08-25 21:39:10 +02:00
Sylvia van Os 35835fda34 Make spotBugs happy 2021-08-25 21:38:52 +02:00
Sylvia van Os a3133de6cf Merge pull request #346 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-25 21:27:31 +02:00
solokot 40fb10a2ec Translated using Weblate (Russian)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-25 21:18:16 +02:00
Sylvia van Os 856c735ba3 Add all contributors to About screen
You all are amazing, thank you for helping me make this app :)
2021-08-25 21:17:55 +02:00
thelastproject/contributors-to-file 16fb0df55d Update contributor list 2021-08-25 18:40:47 +00:00
Sylvia van Os 5658acbb07 Update contributor list on push not on schedule 2021-08-25 20:38:51 +02:00
Sylvia van Os 8b5faac0e0 Fix filename 2021-08-25 20:37:39 +02:00
Sylvia van Os 10be9b58ce Write contributors to file 2021-08-25 20:37:24 +02:00
Sylvia van Os 832840be08 Merge pull request #345 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-25 12:10:31 +02:00
Quentin PAGÈS 5806156495 Translated using Weblate (Occitan)
Currently translated at 37.4% (73 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/oc/
2021-08-25 11:32:59 +02:00
Petr Novák 0be9b908ab Translated using Weblate (Czech)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-08-25 11:32:59 +02:00
IllusiveMan196 718d2b7567 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-08-25 11:32:58 +02:00
IllusiveMan196 fed9754908 Translated using Weblate (Russian)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-25 11:32:58 +02:00
solokot c0e09ca429 Translated using Weblate (Russian)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-25 11:32:58 +02:00
Heimen Stoffels 4a3737b846 Translated using Weblate (Dutch)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-25 11:32:57 +02:00
Gediminas Murauskas b4add4a0ea Translated using Weblate (Lithuanian)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-08-25 11:32:57 +02:00
J. Lavoie 5aabbd629e Translated using Weblate (Italian)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-25 11:32:57 +02:00
J. Lavoie a5ef50317d Translated using Weblate (French)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-08-25 11:32:56 +02:00
J. Lavoie 48a8cc927a Translated using Weblate (German)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-08-25 11:32:56 +02:00
Petr Novák cbb97d7d57 Translated using Weblate (Czech)
Currently translated at 100.0% (195 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-08-25 11:32:56 +02:00
Sylvia van Os 5eee344035 Don't close ScanActivity on camera error 2021-08-25 00:29:40 +02:00
Sylvia van Os 4c7e0c7174 Fix build 2021-08-23 18:40:48 +02:00
Sylvia van Os 37bb9c86f4 More small cleanups 2021-08-23 00:59:31 +02:00
Sylvia van Os 83ea6ffbf7 Cleanups 2021-08-22 16:16:27 +02:00
Sylvia van Os f4945c2cd2 Merge pull request #342 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-22 10:45:01 +02:00
IllusiveMan196 24d9c7825a Translated using Weblate (Ukrainian)
Currently translated at 97.9% (191 of 195 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-08-22 02:43:38 +02:00
Sylvia van Os 2aa7bb4639 Update CHANGELOG 2021-08-22 01:29:14 +02:00
Subhashish Anand 110b3bcef3 Add theme colour support 2021-08-22 01:14:24 +02:00
Sylvia van Os f625efc76d Merge pull request #341 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-21 21:36:27 +02:00
Sylvia van Os 22608a9802 Translated using Weblate (Dutch)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-21 21:35:36 +02:00
Sylvia van Os abf6c1328d Update importers list 2021-08-20 22:33:26 +02:00
Sylvia van Os 225058ab2b Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-08-19 21:26:04 +02:00
Sylvia van Os 275dc6caa2 Release Catima 2.3.0 2021-08-19 21:25:35 +02:00
Sylvia van Os ceb7b12154 Merge pull request #335 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-18 17:41:48 +02:00
Luna Jernberg 849da26198 Translated using Weblate (Swedish)
Currently translated at 99.4% (174 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-08-18 17:36:39 +02:00
solokot 5808c991bb Translated using Weblate (Russian)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-18 17:36:39 +02:00
Heimen Stoffels e8554cb221 Translated using Weblate (Dutch)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-18 17:36:39 +02:00
Allan Nordhøy 46092c060d Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.2% (158 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-08-18 17:36:38 +02:00
Gediminas Murauskas 736eebd45c Translated using Weblate (Lithuanian)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-08-18 17:36:38 +02:00
J. Lavoie f72db53345 Translated using Weblate (Italian)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-18 17:36:38 +02:00
J. Lavoie b8c017259e Translated using Weblate (French)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-08-18 17:36:38 +02:00
J. Lavoie 4b4a237b9a Translated using Weblate (German)
Currently translated at 100.0% (175 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-08-18 17:36:37 +02:00
Petr Novák 17034e992f Translated using Weblate (Czech)
Currently translated at 60.0% (105 of 175 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-08-18 17:36:37 +02:00
Sylvia van Os bf143038b0 Update CHANGELOG 2021-08-17 22:46:53 +02:00
Sylvia van Os 73805ad3bb Fix importing images from export 2021-08-17 22:46:03 +02:00
Sylvia van Os 7006e35ebf Remove pages managed in Catima-Website repository 2021-08-16 18:23:03 +02:00
Sylvia van Os fc598018b2 Remove duplicate Privacy Policy
It is managed in https://github.com/TheLastProject/Catima-Website/ now
2021-08-16 18:21:36 +02:00
Sylvia van Os d01ec85c32 Merge pull request #332 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-15 22:23:59 +02:00
Nyatsuki 04ee918152 Translated using Weblate (Japanese)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-08-15 22:18:44 +02:00
Tymofii Lytvynenko 943b70647b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-08-15 22:18:44 +02:00
Sylvia van Os edba5d5dca Add locale chooser (#304)
* Add locale chooser

* Prevent AppBundle crashes

* Reload activity on language change

* Make spotBugs happy
2021-08-15 22:18:40 +02:00
Sylvia van Os 86be5d1994 Update image-actions 2021-08-15 17:44:42 +02:00
Sylvia van Os 5be2308606 Release 2.2.3 2021-08-13 20:21:02 +02:00
Sylvia van Os a2e81d08d7 Merge pull request #330 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-13 15:34:50 +02:00
Joel A 9f5f0e79f4 Translated using Weblate (Swedish)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2021-08-13 13:32:16 +02:00
Joel A 3f8c4c94ce Translated using Weblate (Swedish)
Currently translated at 99.4% (171 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-08-13 13:32:16 +02:00
mondstern 46895c0037 Translated using Weblate (Finnish)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fi/
2021-08-13 13:32:15 +02:00
mondstern 65c98a4840 Translated using Weblate (Finnish)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-08-13 13:32:15 +02:00
Sylvia van Os 67c58c10b2 Create splash screen 2021-08-12 23:36:55 +02:00
Sylvia van Os 8d82a4616f Don't remove needs info 2021-08-12 13:06:15 +02:00
Sylvia van Os 01a272f8e6 Autoclose issues being in needs info state for over 90 days 2021-08-11 17:57:22 +02:00
Sylvia van Os 0235a397cf Merge pull request #328 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-11 09:04:18 +02:00
Joel A e37ee6f812 Translated using Weblate (Swedish)
Currently translated at 85.4% (147 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-08-11 05:32:37 +02:00
mondstern 2b5ea47d9f Translated using Weblate (Bulgarian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/bg/
2021-08-11 05:32:37 +02:00
mondstern 0fcdaf3f60 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-08-11 05:32:37 +02:00
Jane Kong b2cb38b61d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/zh_Hans/
2021-08-11 05:32:36 +02:00
Jane Kong fd1fe168cc Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/
2021-08-11 05:32:36 +02:00
mondstern 9deb80ff9b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-08-11 05:32:35 +02:00
Sylvia van Os 75fdd7390f Merge pull request #325 from recursiveribbons/sql-refactor
Refactored DBHelper
2021-08-09 20:35:55 +02:00
recursiveribbons 7cd6c17b55 Refactored DBHelper 2021-08-09 17:35:25 +02:00
Sylvia van Os c273d8d17f Fix widget creating different-looking shortcut than app shortcuts 2021-08-08 23:49:10 +02:00
Sylvia van Os c1b02f58ff Fix indent 2021-08-08 23:04:55 +02:00
Sylvia van Os 0bac2dfb62 Merge pull request #322 from TacoTheDank/master
Some cleanup and compatibility stuff
2021-08-08 23:03:58 +02:00
TacoTheDank 4f0288e396 Use ActivityCompat.recreate 2021-08-08 16:33:55 -04:00
TacoTheDank 55f0399325 Use ShortcutInfoCompat 2021-08-08 16:33:42 -04:00
Sylvia van Os e756c6e50b Fix dir names 2021-08-08 19:30:37 +02:00
Sylvia van Os b8c022dc70 Merge pull request #323 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-08 19:18:06 +02:00
Joel A d823ddd8aa Translated using Weblate (Swedish)
Currently translated at 33.3% (1 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/sv/
2021-08-08 19:13:17 +02:00
Joel A 352b42bba0 Translated using Weblate (Swedish)
Currently translated at 82.5% (142 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sv/
2021-08-08 19:13:17 +02:00
Sylvia van Os 89894131d9 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-08-08 19:12:49 +02:00
Sylvia van Os 5ddcb0a668 Fix crash on rotation in edit view 2021-08-08 19:12:25 +02:00
TacoTheDank 5d5b1f0a63 Use AndroidX ExifInterface 2021-08-07 17:08:50 -04:00
TacoTheDank 03e638786b Create TextWatcher stub 2021-08-07 17:08:28 -04:00
TacoTheDank 7d5b2f8dc8 Update NumberPickerPreference library 2021-08-07 16:47:01 -04:00
Sylvia van Os 13257d17fc Merge pull request #321 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-07 13:48:38 +02:00
Joel A 5e8a589d9a Added translation using Weblate (Swedish) 2021-08-07 13:47:51 +02:00
Sylvia van Os 44711043b9 Release Catima 2.2.1 2021-08-07 13:28:02 +02:00
Sylvia van Os 80ee8aa860 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-08-07 13:16:35 +02:00
Sylvia van Os cd6685b974 Fix flashing in ManageGroupsActivity 2021-08-07 13:16:21 +02:00
Sylvia van Os b5f464000b Merge pull request #318 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-07 05:54:03 +02:00
J. Lavoie 27159323d5 Translated using Weblate (Italian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-07 02:41:29 +02:00
J. Lavoie 9551ce8a8b Translated using Weblate (French)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-08-07 02:41:29 +02:00
J. Lavoie 525471f749 Translated using Weblate (German)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-08-07 02:41:28 +02:00
Sylvia van Os 57bedd0300 Actually fix properly 2021-08-05 20:51:29 +02:00
Sylvia van Os c3345a1a15 Fix last commit 2021-08-05 20:35:44 +02:00
Sylvia van Os 15f6bd86a1 Change card title size within range 2021-08-05 20:21:18 +02:00
Sylvia van Os e2ad1c9da2 Add animations to card list 2021-08-05 19:38:37 +02:00
Sylvia van Os 7082669612 Fix importing Catima export with multiline note 2021-08-05 18:28:14 +02:00
Sylvia van Os d595d24769 Merge pull request #313 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-04 23:26:51 +02:00
Gediminas Murauskas 4287d66f6f Translated using Weblate (Lithuanian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-08-04 23:24:45 +02:00
Sylvia van Os 311361d105 Merge pull request #312 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-04 23:24:41 +02:00
Sylvia van Os 4a88e39deb Fix syntax 2021-08-04 22:38:13 +02:00
mondstern 4511590263 Translated using Weblate (Danish)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/da/
2021-08-04 22:32:46 +02:00
mondstern d0c30ffa1c Translated using Weblate (Danish)
Currently translated at 27.3% (47 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/da/
2021-08-04 22:32:46 +02:00
Allan Nordhøy 813c2bff85 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-08-04 22:32:45 +02:00
solokot 0c3cf43841 Translated using Weblate (Russian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-04 22:32:45 +02:00
Heimen Stoffels 6c651f7e3e Translated using Weblate (Dutch)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-04 22:32:45 +02:00
Allan Nordhøy ef7fc92920 Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.1% (155 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-08-04 22:32:44 +02:00
Sylvia van Os ccaf70c749 Merge pull request #311 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-03 20:59:42 +02:00
mondstern 2299bf9d86 Added translation using Weblate (Danish) 2021-08-03 20:58:37 +02:00
Sylvia van Os b65f8f32ca Merge pull request #310 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-03 20:48:23 +02:00
mondstern 47695d3a72 Translated using Weblate (Czech)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/cs/
2021-08-03 20:43:07 +02:00
solokot 439c660b2e Translated using Weblate (Russian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-03 20:43:07 +02:00
Gediminas Murauskas 4293d7d4b2 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-08-03 20:43:07 +02:00
J. Lavoie e368e66b8a Translated using Weblate (Italian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-03 20:43:07 +02:00
Mattia 992a7f9e84 Translated using Weblate (Italian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-03 20:43:07 +02:00
J. Lavoie ecf0faf00a Translated using Weblate (French)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-08-03 20:43:07 +02:00
J. Lavoie 64178f3fd1 Translated using Weblate (Spanish)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-08-03 20:43:07 +02:00
J. Lavoie dab6588800 Translated using Weblate (German)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-08-03 20:43:07 +02:00
mondstern f71bb32592 Translated using Weblate (Czech)
Currently translated at 51.1% (88 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/cs/
2021-08-03 20:43:07 +02:00
Sylvia van Os 0c44212d92 Make SpotBugs happy 2021-08-03 20:42:57 +02:00
Sylvia van Os ce149c91e9 Improve Stocard importer 2021-08-03 20:34:44 +02:00
Sylvia van Os 05dfd48f57 Release Catima 2.2.0 2021-08-02 23:42:32 +02:00
Sylvia van Os ef955b866d Remove unused imports 2021-08-02 23:09:49 +02:00
Sylvia van Os a843b5a1b9 Make lint happier 2021-08-02 22:58:06 +02:00
Sylvia van Os 8305d58ccc Fix maximize button appearing on no barcode 2021-08-02 22:57:55 +02:00
Sylvia van Os 6af79d5f41 General cleanups 2021-08-02 20:47:48 +02:00
Sylvia van Os 3b326d6f9c Also remove from AboutActivity 2021-08-02 20:37:13 +02:00
Sylvia van Os 1456e5073e Get rid of barely used dependency 2021-08-02 20:36:20 +02:00
Sylvia van Os 6a13dbf66a Comma-separate group names in loyalty card view 2021-08-01 23:03:56 +02:00
Sylvia van Os c5b1718e8e Pre-select active group on creating new card 2021-08-01 22:33:44 +02:00
Sylvia van Os e2bcc24867 Make links in notes clickable 2021-08-01 21:39:48 +02:00
Sylvia van Os c86cc22a93 Release v2.1.0 2021-08-01 21:00:12 +02:00
Sylvia van Os 765577ae9e Merge pull request #306 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-01 20:50:42 +02:00
Heimen Stoffels d1d15644b5 Translated using Weblate (Dutch)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-01 20:36:29 +02:00
Sylvia van Os 5d41b213db Remove translations to break lint 2021-08-01 20:36:17 +02:00
Sylvia van Os aa515b1192 Be more explicit in quantity
Translators still keep triggering the linter with errors such as the
following:
Error: The quantity 'one' matches more than one specific number in this locale (1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …), but the message did not include a formatting argument (such as %d). This is usually an internationalization error. See full issue explanation for more. [ImpliedQuantity]
2021-08-01 12:50:56 +02:00
Sylvia van Os 068660fe3f Merge pull request #305 from weblate/weblate-catima-catima
Translations update from Weblate
2021-08-01 12:42:14 +02:00
solokot 99ffaf97d1 Translated using Weblate (Russian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-08-01 12:32:51 +02:00
Heimen Stoffels b53999c1cf Translated using Weblate (Dutch)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-08-01 12:32:51 +02:00
Allan Nordhøy 57f87d7dc0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.6% (156 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-08-01 12:32:50 +02:00
J. Lavoie 760f6a873d Translated using Weblate (Italian)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-08-01 12:32:50 +02:00
J. Lavoie 675bd43ff8 Translated using Weblate (French)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-08-01 12:32:50 +02:00
J. Lavoie 07532ce001 Translated using Weblate (Spanish)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-08-01 12:32:50 +02:00
J. Lavoie 908a7055c7 Translated using Weblate (German)
Currently translated at 100.0% (172 of 172 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-08-01 12:32:49 +02:00
Sylvia van Os 2be371caed Forgot number 2021-07-30 19:46:10 +02:00
Sylvia van Os f4f3f2e307 Increase i18n flexibility
The following may seem weird, but it is necessary to give translators enough flexibility. For example, in Russian, Android's plural quantity "one" actually refers to "any number ending on 1 but not ending in 11". So while in English the extra non-plural form seems unnecessary duplication, it is necessary to give translators enough flexibility. Therefore, we use the plain string when meaning exactly 1, and otherwise use the plural forms.
2021-07-30 19:40:43 +02:00
Sylvia van Os edbf76c7dc Merge pull request #303 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-30 19:02:48 +02:00
109247019824 f8615f45f0 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-07-30 18:18:55 +02:00
IllusiveMan196 c3bc3e9911 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-07-30 18:18:55 +02:00
solokot 8adcca1df2 Translated using Weblate (Russian)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-30 18:18:55 +02:00
Heimen Stoffels bdde8669ac Translated using Weblate (Dutch)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-30 18:18:55 +02:00
solokot 59db2df525 Translated using Weblate (Russian)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-30 18:18:55 +02:00
Sylvia van Os 3b83ff5b0e Fix syntax 2021-07-30 18:18:32 +02:00
Heimen Stoffels 19fb290a51 Translated using Weblate (Dutch)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-30 18:15:39 +02:00
Allan Nordhøy e1e823d9e0 Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.0% (153 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-07-30 18:15:30 +02:00
Sylvia van Os 7ed477b670 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-29 22:16:47 +02:00
Sylvia van Os 1960fb0b6a Fix fullscreen loss on rotation 2021-07-29 22:16:36 +02:00
Sylvia van Os e913482790 Merge pull request #299 from comradekingu/patch-7
New strings reworked
2021-07-29 21:54:43 +02:00
Allan Nordhøy 2e5bd76d31 New strings reworked 2021-07-29 19:47:10 +00:00
Sylvia van Os 876ae979da Simplify updateTempState
Hopefully fixes the few weird crashes on Google Play
2021-07-29 21:42:21 +02:00
Sylvia van Os d918c15ad6 Prevent ArithmeticException 2021-07-29 21:18:21 +02:00
Sylvia van Os d57cb307c3 Support multi-deleting cards 2021-07-29 20:38:37 +02:00
Sylvia van Os cbcf1bcd99 Use desugaring to upgrade zxing without having to increase minSdk
As documented by the zxing team on https://github.com/zxing/zxing/wiki/Frequently-Asked-Questions#it-doesnt-work-with-java-7--no-interface-method-sortljavautilcomparator
2021-07-28 23:05:27 +02:00
Sylvia van Os 96bc10583f Fix colour dialog selected colour 2021-07-27 22:04:09 +02:00
Sylvia van Os 5ca4d29a36 Release Catima 2.0.4 2021-07-27 21:42:04 +02:00
Sylvia van Os 2efb666fae Fix loyalty card colour changing 2021-07-27 21:38:54 +02:00
Sylvia van Os 89dce1068f Shortcut fixes 2021-07-27 21:26:24 +02:00
Sylvia van Os 9854125af9 Make lint happy 2021-07-26 23:37:17 +02:00
Sylvia van Os 6e307ab1f0 Update dependencies 2021-07-26 23:10:51 +02:00
Sylvia van Os c4f0d1bef6 Release Catima 2.0.3 2021-07-25 22:32:40 +02:00
Sylvia van Os 5201788818 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-25 21:52:10 +02:00
Sylvia van Os 8472bc9755 Make SpotBugs happy 2021-07-25 21:51:46 +02:00
Sylvia van Os ce0f531831 Merge pull request #289 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-25 21:41:26 +02:00
Quentin PAGÈS 18e9c3ccb5 Translated using Weblate (Occitan)
Currently translated at 32.3% (55 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/oc/
2021-07-25 21:40:25 +02:00
Sylvia van Os 19afe8e69c Simplify edit activity and fix some status bugs 2021-07-25 21:40:15 +02:00
Sylvia van Os 8e5bace7cc Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-23 23:52:58 +02:00
Sylvia van Os 1ca85e9d7b Create unit test for broken onResume behaviour 2021-07-23 23:52:45 +02:00
Sylvia van Os eb24af8266 Add Zip4j to used libraries list 2021-07-22 12:14:39 +02:00
Sylvia van Os 12ba01eb87 Merge pull request #287 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-21 23:32:51 +02:00
Quentin PAGÈS a0e30bdccc Added translation using Weblate (Occitan) 2021-07-21 23:26:38 +02:00
Sylvia van Os 4663e22128 Rename Spanish metadata to something fastlane supply can push to Google Play 2021-07-21 18:42:27 +02:00
Sylvia van Os 7bd1d16d24 Merge pull request #286 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-21 18:37:32 +02:00
Diego fd838cfd43 Translated using Weblate (Spanish)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/es/
2021-07-21 18:32:48 +02:00
Diego 1eca79b4cb Translated using Weblate (Spanish)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-07-21 18:32:48 +02:00
Sylvia van Os 1d694f5f2c Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-21 18:23:05 +02:00
Sylvia van Os 96a046b165 Fix share/import URL crash on Android 6 2021-07-21 18:22:50 +02:00
Sylvia van Os 5ff9c9c469 Merge pull request #282 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-19 07:02:06 +02:00
Nyatsuki 836cdd87bc Translated using Weblate (Japanese)
Currently translated at 99.4% (169 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-07-19 06:33:37 +02:00
109247019824 0af6dd4d44 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-07-17 23:32:59 +02:00
IllusiveMan196 034d62a643 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-07-17 23:32:59 +02:00
IllusiveMan196 417224602e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (170 of 170 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-07-17 23:32:58 +02:00
Sylvia van Os c711aeae7f Fix build 2021-07-16 20:44:51 +02:00
109247019824 1f12543e3e Translated using Weblate (Bulgarian)
Currently translated at 94.7% (162 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-07-16 20:34:00 +02:00
Nyatsuki dc31175b5d Translated using Weblate (Japanese)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ja/
2021-07-16 20:34:00 +02:00
Nyatsuki 719b8112eb Translated using Weblate (Japanese)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-07-16 20:34:00 +02:00
solokot f19a3c507b Translated using Weblate (Russian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-07-16 20:34:00 +02:00
solokot 2416ec396a Translated using Weblate (Russian)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-16 20:34:00 +02:00
Heimen Stoffels d1fe92e967 Translated using Weblate (Dutch)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-16 20:34:00 +02:00
Gediminas Murauskas ff5fd49b89 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-07-16 20:34:00 +02:00
J. Lavoie 1015e0d94e Translated using Weblate (Italian)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-07-16 20:34:00 +02:00
J. Lavoie d872828e7d Translated using Weblate (French)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-07-16 20:34:00 +02:00
J. Lavoie 8f6ad6d1bd Translated using Weblate (German)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-07-16 20:34:00 +02:00
Sylvia van Os 05fd629ad4 Fix bad strings 2021-07-16 20:33:46 +02:00
Sylvia van Os efdb0dd6bb Consolidate 2 very similar strings 2021-07-16 20:28:25 +02:00
Sylvia van Os 2e0482beef Always move import/export to overflow menu 2021-07-15 23:03:28 +02:00
Sylvia van Os 0f25743da4 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-15 22:45:32 +02:00
Sylvia van Os e970bf185a Lowercase .zip filename 2021-07-15 22:45:12 +02:00
Sylvia van Os 60f3547b01 Merge pull request #275 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-15 22:18:09 +02:00
109247019824 ae09db428b Translated using Weblate (Bulgarian)
Currently translated at 21.0% (36 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-07-15 22:09:55 +02:00
Sylvia van Os ebca7ca150 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-15 22:09:44 +02:00
Sylvia van Os b6ef6806a0 Make selected in main screen selectable 2021-07-15 22:09:31 +02:00
Sylvia van Os 20a9cb30c4 Merge pull request #273 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-15 21:37:14 +02:00
109247019824 a43112f469 Translated using Weblate (Bulgarian)
Currently translated at 11.1% (19 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/bg/
2021-07-15 21:33:48 +02:00
109247019824 2a95b2f530 Added translation using Weblate (Bulgarian) 2021-07-15 21:30:47 +02:00
Sylvia van Os cb979bfbec Release Catima 2.0 2021-07-14 20:26:39 +02:00
Sylvia van Os feabe353b0 Fix loyalty card viewer appbar top margin 2021-07-14 20:08:28 +02:00
Sylvia van Os 7987932100 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-14 19:39:34 +02:00
Sylvia van Os e496c69e15 Fix FAB being below other elements in Android 4 2021-07-14 19:39:19 +02:00
Sylvia van Os e0300f8f21 Merge pull request #269 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-14 12:04:15 +02:00
phlostically 64cbcb2ef7 Translated using Weblate (Esperanto)
Currently translated at 40.9% (70 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/eo/
2021-07-14 11:32:33 +02:00
J. Lavoie 7e24f02a73 Translated using Weblate (French)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2021-07-14 11:32:32 +02:00
J. Lavoie ed89eab782 Translated using Weblate (Italian)
Currently translated at 97.0% (166 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-07-14 11:32:31 +02:00
J. Lavoie 17863e8920 Translated using Weblate (French)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-07-14 11:32:31 +02:00
J. Lavoie 6e82e6fc5d Translated using Weblate (German)
Currently translated at 97.0% (166 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-07-14 11:32:31 +02:00
Sylvia van Os 64b1103f13 Merge pull request #268 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-13 23:59:44 +02:00
phlostically e4274df941 Added translation using Weblate (Esperanto) 2021-07-13 23:58:37 +02:00
Sylvia van Os c786b4b5a7 Merge pull request #267 from TheLastProject/dependabot/bundler/addressable-2.8.0
Bump addressable from 2.7.0 to 2.8.0
2021-07-13 21:48:18 +02:00
dependabot[bot] 95405270cb Bump addressable from 2.7.0 to 2.8.0
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/sporkmonger/addressable/releases)
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 19:41:48 +00:00
Sylvia van Os 9ef8eb2934 Merge pull request #265 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-12 21:44:33 +02:00
Gediminas Murauskas 4f70b06edb Translated using Weblate (Lithuanian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lt/
2021-07-12 20:32:56 +02:00
Heimen Stoffels 5677aa2b38 Translated using Weblate (Dutch)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-07-12 20:32:56 +02:00
solokot 44997e1bbd Translated using Weblate (Russian)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-12 20:32:55 +02:00
Heimen Stoffels a96c569314 Translated using Weblate (Dutch)
Currently translated at 100.0% (171 of 171 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-12 20:32:55 +02:00
Sylvia van Os 5545220d53 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-11 19:34:05 +02:00
Sylvia van Os 4f47ee30ba Update supported import list 2021-07-11 19:33:52 +02:00
Sylvia van Os 4f9f318960 Merge pull request #264 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-11 19:14:42 +02:00
solokot 5dcfcf0ad0 Translated using Weblate (Russian)
Currently translated at 100.0% (169 of 169 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-11 19:10:51 +02:00
Heimen Stoffels eb809974c4 Translated using Weblate (Dutch)
Currently translated at 100.0% (169 of 169 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-11 19:10:51 +02:00
Allan Nordhøy 815b037be7 Translated using Weblate (Norwegian Bokmål)
Currently translated at 89.9% (152 of 169 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-07-11 19:10:51 +02:00
Sylvia van Os 3eff150835 Implement flashlight toggle on scan 2021-07-11 19:10:38 +02:00
Sylvia van Os e191e8bbe6 Update supported type list 2021-07-11 16:16:14 +02:00
Sylvia van Os 5aaf135325 Update screenshots 2021-07-11 16:14:18 +02:00
Sylvia van Os 6fd4f617e5 Fix .csv import fallback 2021-07-11 15:52:22 +02:00
Sylvia van Os 621e4ce162 Merge pull request #259 from comradekingu/patch-6
App strings reworked 4
2021-07-11 13:40:31 +02:00
Sylvia van Os bf07e8935f Merge pull request #262 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-11 13:37:41 +02:00
Sylvia van Os e69d6a453b Consistent phrasing 2021-07-11 13:35:53 +02:00
Gediminas Murauskas 579c2fc640 Translated using Weblate (Lithuanian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/lt/
2021-07-11 13:32:42 +02:00
solokot ba870481dd Translated using Weblate (Russian)
Currently translated at 100.0% (167 of 167 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-11 13:32:42 +02:00
Heimen Stoffels 0c10936e75 Translated using Weblate (Dutch)
Currently translated at 100.0% (167 of 167 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-11 13:32:42 +02:00
Gediminas Murauskas 26cf4250ad Translated using Weblate (Lithuanian)
Currently translated at 31.7% (53 of 167 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/lt/
2021-07-11 13:32:42 +02:00
Sylvia van Os a8d5f38d5c Update privacy policy URL 2021-07-11 13:32:32 +02:00
Sylvia van Os 5e1bac4bcf Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-07-11 13:31:15 +02:00
Sylvia van Os 6df8b7b1ea Generate catima.app share links 2021-07-11 13:31:03 +02:00
Sylvia van Os 964c603405 Only list new format 2021-07-11 12:31:51 +02:00
Sylvia van OsandAllan Nordhøy f64eea6470 Update app/src/main/res/values/strings.xml
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
2021-07-11 12:31:22 +02:00
Sylvia van Os aa97ad49d2 Create CNAME 2021-07-11 12:20:33 +02:00
Sylvia van Os 6221da72f8 Delete CNAME 2021-07-11 05:48:05 +02:00
Sylvia van Os fe8ec38bf3 Create CNAME 2021-07-11 00:42:20 +02:00
Sylvia van Os 7324353d74 Use location hash instead of query parameters in share URL for increased privacy 2021-07-10 18:33:54 +02:00
Sylvia van Os c5f0ee3a66 Fix bottom sheet alignment issue 2021-07-10 13:06:00 +02:00
Sylvia van Os a8b4b25afb Merge pull request #260 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-10 05:58:57 +02:00
solokot 9744ede674 Translated using Weblate (Russian)
Currently translated at 100.0% (166 of 166 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-07-10 05:00:16 +02:00
Heimen Stoffels 43505d427d Translated using Weblate (Dutch)
Currently translated at 100.0% (166 of 166 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-07-10 05:00:16 +02:00
Allan Nordhøy 65e54c63ef Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.9% (151 of 166 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-07-10 05:00:15 +02:00
J. Lavoie 31b306d432 Translated using Weblate (Italian)
Currently translated at 100.0% (166 of 166 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-07-10 05:00:15 +02:00
J. Lavoie 25bd1de09d Translated using Weblate (French)
Currently translated at 100.0% (166 of 166 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-07-10 05:00:15 +02:00
J. Lavoie c82e0d82a9 Translated using Weblate (German)
Currently translated at 100.0% (166 of 166 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-07-10 05:00:14 +02:00
Sylvia van Os 6625488d84 Merge pull request #258 from TheLastProject/feature/catimaImportExportZip
Import and export .csv and images as .zip
2021-07-09 22:26:13 +02:00
Sylvia van Os a1f632ace3 Set CharSet 2021-07-09 22:20:00 +02:00
Sylvia van Os b9ea7fd1ed Create export->import test 2021-07-09 22:08:46 +02:00
Allan Nordhøy 8dff8d392e Fixes to import dialogs 2021-07-08 22:07:47 +00:00
Allan Nordhøy b10d50d5a0 Revert accidental deletion 2021-07-08 22:05:38 +00:00
Allan Nordhøy 0b54d87f4f App strings reworked 4 2021-07-08 20:47:35 +00:00
Sylvia van Os a9568d6adb Import and export .csv and images as .zip 2021-07-08 22:27:40 +02:00
Sylvia van Os 18c5aa4707 Support for new Voucher Vault export 2021-07-08 19:59:27 +02:00
Sylvia van Os f53c61bbec Merge pull request #245 from TheLastProject/feature/StocardImport
Stocard import
2021-07-08 19:41:22 +02:00
Sylvia van Os 25c9c67ca2 Make spotBugs happy 2021-07-08 19:37:04 +02:00
Sylvia van Os 2efbf664c9 Finish Stocard importing 2021-07-08 19:29:52 +02:00
Sylvia van Os 44023969a7 Merge pull request #255 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-08 01:38:36 +02:00
Allan Nordhøy 0e5216b010 Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.1% (147 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-07-08 01:33:02 +02:00
Sylvia van Os f258506936 Merge pull request #253 from TheLastProject/feature/upce
Add UPC-E support
2021-07-07 23:19:59 +02:00
Sylvia van Os 8bad342374 Add UPC-E support 2021-07-07 19:14:11 +02:00
Sylvia van Os 476a219bec getOrDefault requires API level 24 2021-07-06 23:36:21 +02:00
Sylvia van Os 24e19e26ba Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into feature/StocardImport 2021-07-06 23:29:50 +02:00
Sylvia van Os 3cb16ae3e9 Update CHANGELOG 2021-07-06 23:26:50 +02:00
Sylvia van Os c7ddf957fa Clean up unused imports 2021-07-06 23:25:55 +02:00
Sylvia van Os 0de8cd93ad Ask password when import fails with BadPassword 2021-07-06 23:25:05 +02:00
Sylvia van Os 614e5bac2d Mark Fidme and Stocard as beta 2021-07-06 22:44:02 +02:00
Sylvia van Os e76bd9363c Make Stocard import work 2021-07-06 21:54:19 +02:00
Sylvia van Os 97c508c920 Stocard import skeleton 2021-07-06 00:20:35 +02:00
Sylvia van Os 0f178c1cac Merge pull request #250 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-05 09:03:10 +02:00
String E. Fighter 8eab852e1a Translated using Weblate (German)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-07-05 08:33:19 +02:00
String E. Fighter 539f8846d8 Translated using Weblate (German)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-07-05 08:33:19 +02:00
Sylvia van Os fb239b6974 Merge pull request #247 from weblate/weblate-catima-catima
Translations update from Weblate
2021-07-02 09:36:29 +02:00
J. Lavoie 85b553e17b Translated using Weblate (Finnish)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-07-02 09:33:32 +02:00
J. Lavoie f085f1e9e6 Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2021-07-02 09:33:32 +02:00
J. Lavoie 56b387c725 Translated using Weblate (German)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-07-02 09:33:32 +02:00
J. Lavoie daf0cdaa71 Translated using Weblate (French)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2021-07-02 09:33:31 +02:00
J. Lavoie 6a7bebdbcd Translated using Weblate (Italian)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-07-02 09:33:31 +02:00
J. Lavoie 7f72c3bcaf Translated using Weblate (French)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-07-02 09:33:31 +02:00
J. Lavoie 52bff53756 Translated using Weblate (German)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-07-02 09:33:30 +02:00
Sylvia van Os 73743b7f1e Merge pull request #246 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-30 07:29:13 +02:00
solokot acfcd3d2d2 Translated using Weblate (Russian)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-06-30 05:33:04 +02:00
Heimen Stoffels 24e8d12b73 Translated using Weblate (Dutch)
Currently translated at 100.0% (163 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-06-30 05:33:04 +02:00
Allan Nordhøy 28068dcddc Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.1% (147 of 163 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-06-30 05:33:03 +02:00
Sylvia van Os 3e5ab76636 Update CHANGELOG 2021-06-29 22:40:36 +02:00
Sylvia van Os 3dceec8ec0 Support for password-protected zip files 2021-06-29 22:40:02 +02:00
Sylvia van Os 0cc409d087 Add Fidme test 2021-06-29 20:02:49 +02:00
Sylvia van Os 346acfa3f5 Fix CHANGELOG 2021-06-28 20:55:04 +02:00
Sylvia van Os 8d48da431e Adding and viewing front/back images (#215)
* Adding and viewing front/back images

* Fix import and export

* Fix unit tests

* Smaller preview pictures but clickable to make big

* Implement removing image

* Add card photo direct from camera

* Read Exif rotation info from picture taken

* Fix bad copy-paste

* Refactor to use local file system

* Delete card images when deleting card

* Prepare for image-based unit tests in ViewActivityTest
2021-06-28 20:40:52 +02:00
Sylvia van Os b913fad847 Merge pull request #243 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-22 18:34:37 +02:00
IllusiveMan196 c900642f8e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/uk/
2021-06-22 18:33:24 +02:00
IllusiveMan196 c7d0da9e20 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/uk/
2021-06-22 18:33:24 +02:00
Sylvia van Os f66b368cc2 Merge pull request #242 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-21 18:07:18 +02:00
huuhaa 4dad96472f Translated using Weblate (Finnish)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-06-21 15:34:11 +02:00
Sylvia van Os 01bb4f0fc4 Merge pull request #240 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-20 08:09:08 +02:00
Allan Nordhøy 9ae5d74c7c Translated using Weblate (Norwegian Bokmål)
Currently translated at 90.9% (141 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-06-20 02:44:38 +02:00
Sylvia van Os 5af6d9b61c Fix language names for Google Play 2021-06-17 19:04:02 +02:00
Sylvia van Os eb89a04c72 Merge pull request #239 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-15 18:05:47 +02:00
huuhaa 1019e40987 Translated using Weblate (Finnish)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fi/
2021-06-15 12:32:35 +02:00
huuhaa 175d860885 Translated using Weblate (Finnish)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-06-15 12:32:35 +02:00
Sylvia van Os de8aa6b6fd Release v1.14.1 2021-06-14 21:27:44 +02:00
Sylvia van Os a5a7be02f6 Translators are awesome <3 2021-06-14 21:18:21 +02:00
Sylvia van Os 14b7f8af81 Merge pull request #237 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-14 06:57:44 +02:00
huuhaa 62d01abf92 Translated using Weblate (Finnish)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fi/
2021-06-14 04:32:36 +02:00
solokot a328fa8f4a Translated using Weblate (Russian)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-06-14 04:32:34 +02:00
Sylvia van Os 9e55271db1 Merge pull request #236 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-13 01:17:04 +02:00
huuhaa e09ba941b8 Added translation using Weblate (Finnish) 2021-06-13 01:11:13 +02:00
Sylvia van Os 7562b662b7 Update target SDK 2021-06-10 16:50:38 +02:00
Sylvia van Os ce65163377 Don't show update barcode dialog if value is the same as card ID 2021-06-10 16:49:52 +02:00
Sylvia van Os da445255ec Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-06-10 13:18:00 +02:00
Sylvia van Os fb36aecf42 Add missing barcode ID field to export 2021-06-10 13:17:48 +02:00
Sylvia van Os 3d624eae97 Merge pull request #233 from weblate/weblate-catima-catima
Translations update from Weblate
2021-06-08 05:21:38 +02:00
solokot 0a05676a87 Translated using Weblate (Russian)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-06-08 02:46:40 +02:00
Heimen Stoffels bce6ae0da6 Translated using Weblate (Dutch)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-06-08 02:46:40 +02:00
J. Lavoie 2268465d2e Translated using Weblate (Italian)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-06-08 02:46:40 +02:00
J. Lavoie 7a9953cfee Translated using Weblate (French)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-06-08 02:46:40 +02:00
J. Lavoie ecc11c120b Translated using Weblate (German)
Currently translated at 100.0% (155 of 155 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-06-08 02:46:39 +02:00
Sylvia van Os f4d4e3d6fb Release v1.14 2021-06-07 20:21:48 +02:00
Sylvia van Os 929633e4dd Ask to update barcode value if card ID changes 2021-06-06 21:13:44 +02:00
Sylvia van Os eec7359603 Merge pull request #230 from weblate/weblate-catima-catima
Translations update from Weblate
2021-05-25 12:07:42 +02:00
solokot 4168ec3b43 Translated using Weblate (Russian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-05-25 08:33:41 +02:00
Sylvia van Os 6568ebb01c Merge pull request #224 from weblate/weblate-catima-catima
Translations update from Weblate
2021-05-09 11:56:14 +02:00
Heimen Stoffels 99e2a75d46 Translated using Weblate (Dutch)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-05-09 11:33:39 +02:00
Allan Nordhøy 43ae42c7c5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-05-09 11:33:39 +02:00
Allan Nordhøy a7aa3e9e0e Shorter title and description (#220) 2021-05-08 00:51:49 +02:00
5a9f0a44fd Translations update from Weblate (#222)
* Translated using Weblate (Japanese)

Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 99.3% (150 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/zh_Hans/

Co-authored-by: Nyatsuki <Odamaki@yandex.ru>
Co-authored-by: Kevin Sicong Jiang <kev4313@yahoo.com>
2021-05-02 13:02:04 +02:00
Kevin Sicong Jiang 4a1858e47b Fix active tab lost on rotation (#221) 2021-05-01 23:41:19 +02:00
Sylvia van Os d8d8a59707 Merge pull request #219 from weblate/weblate-catima-catima
Translations update from Weblate
2021-05-01 10:57:58 +02:00
Kevin Sicong Jiang b027beea35 Added translation using Weblate (Chinese (Simplified)) 2021-05-01 10:35:08 +02:00
Sylvia van Os b4d0651e99 Merge pull request #216 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-29 13:42:59 +02:00
Allan Nordhøy b40380dff6 Translated using Weblate (Slovenian)
Currently translated at 41.7% (63 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/sl/
2021-04-29 13:32:10 +02:00
Allan Nordhøy b1a0a98004 Translated using Weblate (Norwegian Bokmål)
Currently translated at 84.1% (127 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-04-29 13:32:10 +02:00
J. Lavoie 044d363f47 Translated using Weblate (Italian)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-04-29 13:32:09 +02:00
J. Lavoie 35d659be31 Translated using Weblate (French)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-29 13:32:09 +02:00
Adolfo Jayme Barrientos 8bc1e2d321 Translated using Weblate (Spanish)
Currently translated at 77.4% (117 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-04-29 13:32:09 +02:00
J. Lavoie b8811ba053 Translated using Weblate (German)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-04-29 13:32:08 +02:00
Sylvia van Os cbaf172e9d Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-28 12:45:39 +02:00
Sylvia van Os 78c831cb68 Add Voucher Vault PDF 417 export support
https://github.com/tim-smart/vouchervault/commit/a2911e0738c319c2e7fb8fd21a19c7291917c0e0
2021-04-28 12:45:02 +02:00
Sylvia van Os 279e775fb6 Merge pull request #212 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-27 09:12:53 +02:00
solokot e5b30c9528 Translated using Weblate (Russian)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-27 04:01:04 +02:00
Heimen Stoffels eb9732658f Translated using Weblate (Dutch)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-27 04:01:03 +02:00
Sylvia van Os 5feb59612d Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-26 20:58:20 +02:00
Sylvia van Os 09bd9b3882 Update CHANGELOG 2021-04-26 20:54:53 +02:00
Sylvia van Os beb619000c Merge pull request #211 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-26 20:53:33 +02:00
Heimen Stoffels 72425dd39e Translated using Weblate (Dutch)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-26 20:52:01 +02:00
Sylvia van Os a93d240d9a Fix translation oops 2021-04-26 20:51:48 +02:00
Sylvia van Os d380e284b1 Merge pull request #205 from TheLastProject/feature/multiselect
Support multi-selection
2021-04-26 20:18:06 +02:00
Sylvia van Os cbbb434aae spotBugs 2021-04-26 20:12:05 +02:00
Sylvia van Os 6dc8490b5e Fix lint 2021-04-26 19:42:57 +02:00
Sylvia van Os b2c57258b3 Fix unit tests 2021-04-26 19:23:22 +02:00
Sylvia van Os fe0ae4049b Merge pull request #209 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-25 11:14:23 +02:00
Nyatsuki 0517a7514e Translated using Weblate (Japanese)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ja/
2021-04-25 09:32:11 +02:00
Sylvia van Os 39544ac853 Really fix typo 2021-04-18 22:43:38 +02:00
Sylvia van Os f46e1d09ba Fix typo 2021-04-18 22:42:41 +02:00
Sylvia van Os 6421f09eab Implement multi-copy and multi-share 2021-04-18 13:47:51 +02:00
Arshbeer Singh 45663065f9 WIP Issue #14 (and #65)
Implement Functionality to Copy Multiple Cards
2021-04-18 00:43:03 +02:00
Arshbeer Singh 67328724fa WIP Issue #14 (and #65)
Add Ability to Select Multiple Cards
Highlight Card on Long Press/Click
Replace ListView with RecyclerView for Extra Features and Functionality
Add Card Long Press Animations
Replace CursorAdapter with a combination of RecyclerViewAdapter and Cursor Adapter
2021-04-17 23:16:54 +02:00
Arshbeer Singh 55373e82a5 Fix Issue #65 2021-04-17 15:48:48 +02:00
Sylvia van Os acdb5d6fe7 Merge pull request #203 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-17 13:30:03 +02:00
Nyatsuki d9461c476a Translated using Weblate (Japanese)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ja/
2021-04-17 13:27:05 +02:00
solokot deee5f6aa2 Translated using Weblate (Russian)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-17 13:27:03 +02:00
Heimen Stoffels efd2b1ffe1 Translated using Weblate (Dutch)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-17 13:27:02 +02:00
J. Lavoie a87d8bbfe4 Translated using Weblate (Italian)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-04-17 13:27:02 +02:00
J. Lavoie a1d5275063 Translated using Weblate (French)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-17 13:27:01 +02:00
J. Lavoie e327306955 Translated using Weblate (German)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-04-17 13:27:01 +02:00
Sylvia van Os 9469ae37e1 Merge pull request #202 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-16 12:02:17 +02:00
Nyatsuki 9e2d65b2cd Added translation using Weblate (Japanese) 2021-04-16 11:26:53 +02:00
Allan Nordhøy d509c06815 App strings reworked 3 (#188) 2021-04-15 21:51:41 +02:00
Sylvia van Os 70faa7636a Merge pull request #201 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-15 21:30:42 +02:00
psa-jforestier 4072bc7607 Translated using Weblate (French)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-15 21:26:59 +02:00
Sylvia van Os eced502985 Merge pull request #200 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-14 16:06:52 +02:00
solokot 47441dbb9a Translated using Weblate (Russian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-04-14 15:27:05 +02:00
Allan Nordhøy e7729d9763 README reworked (#191) 2021-04-12 22:11:21 +02:00
Sylvia van Os df40b72f77 Fastlane fixes 2021-04-11 00:26:22 +02:00
Sylvia van Os 1a1c028565 Release 1.13 2021-04-10 13:48:13 +02:00
Sylvia van Os 5cd77c3a25 Export V2 test 2021-04-10 13:28:26 +02:00
Sylvia van Os 369631d00c Improve import/export test 2021-04-10 10:14:59 +02:00
Sylvia van Os 350031624c Add V2 import test 2021-04-09 23:01:38 +02:00
Sylvia van Os 846f4d4904 Test barcode type migration 2021-04-07 21:48:19 +02:00
Sylvia van Os 5081eb2dce Lighter grey for non-usable barcode types 2021-04-07 21:19:56 +02:00
Sylvia van Os e964fda54a Fix tests and barcode ID import 2021-04-07 20:42:11 +02:00
Sylvia van Os aaa4fc1ef3 Fix bad replace 2021-04-07 18:10:07 +02:00
Sylvia van Os 93331e1a27 Merge pull request #195 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-07 16:58:28 +02:00
Heimen Stoffels 3251a6266b Translated using Weblate (Dutch)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-04-07 13:27:23 +02:00
J. Lavoie d3f8399cbe Translated using Weblate (German)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-04-07 13:27:22 +02:00
J. Lavoie 7c805128a7 Translated using Weblate (French)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2021-04-07 13:27:22 +02:00
solokot a40c4841da Translated using Weblate (Russian)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-07 13:26:58 +02:00
Heimen Stoffels 768ac795ff Translated using Weblate (Dutch)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-07 13:26:58 +02:00
Allan Nordhøy e8460d52ec Translated using Weblate (Norwegian Bokmål)
Currently translated at 94.5% (139 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-04-07 13:26:58 +02:00
J. Lavoie 03a7efb52e Translated using Weblate (Italian)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-04-07 13:26:58 +02:00
J. Lavoie 48b60d8b4d Translated using Weblate (French)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-07 13:26:58 +02:00
J. Lavoie 562b830e5a Translated using Weblate (German)
Currently translated at 100.0% (147 of 147 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-04-07 13:26:57 +02:00
Sylvia van Os ac810a0c6f Don't force-reset loyalty card type 2021-04-06 22:45:32 +02:00
Sylvia van Os 27a90615a9 Make spotBugs happy 2021-04-06 22:41:11 +02:00
Sylvia van Os f894427247 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-06 22:27:36 +02:00
Sylvia van Os 8b7df8dabe Remove privay policy first start dialog
Just done with Huawei's nonsense.
2021-04-06 22:27:03 +02:00
Sylvia van Os d66903f972 Merge pull request #193 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-06 00:39:41 +02:00
Allan Nordhøy 7834a93394 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-04-06 00:34:01 +02:00
J. Lavoie 572378de85 Translated using Weblate (Italian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-04-06 00:34:00 +02:00
J. Lavoie 26e0c50a13 Translated using Weblate (French)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-06 00:34:00 +02:00
J. Lavoie cd638a96f3 Translated using Weblate (German)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-04-06 00:34:00 +02:00
Sylvia van Os 4e043edb64 Show all barcodes and recover from invalid selection 2021-04-06 00:33:35 +02:00
Sylvia van Os 1067d09773 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-05 19:44:15 +02:00
Sylvia van Os d347cdde3e Add license info for third party things in About screen 2021-04-05 19:43:49 +02:00
Sylvia van Os b704a7492e Merge pull request #192 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-05 17:43:07 +02:00
Heimen Stoffels 4c28d5d181 Translated using Weblate (Dutch)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-04-05 17:27:02 +02:00
solokot 47e50de063 Translated using Weblate (Russian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-04-05 17:27:02 +02:00
Allan Nordhøy 3777abc2a3 Translated using Weblate (Norwegian Bokmål)
Currently translated at 33.3% (1 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/
2021-04-05 17:27:01 +02:00
solokot 01554381b2 Translated using Weblate (Russian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-05 17:27:01 +02:00
Heimen Stoffels 09ca9c47ab Translated using Weblate (Dutch)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-05 17:27:01 +02:00
Allan Nordhøy 6751befe5d Translated using Weblate (Norwegian Bokmål)
Currently translated at 94.5% (138 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-04-05 17:27:00 +02:00
Allan Nordhøy 91661f1059 Translated using Weblate (English)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/en/
2021-04-05 17:26:59 +02:00
Sylvia van Os afe47f1b84 Use letter icon for shortcuts too 2021-04-05 12:59:12 +02:00
Sylvia van Os 9bcbfc6d81 Hide new FAB in shortcut configure view 2021-04-05 12:20:15 +02:00
Sylvia van Os 89a40a789d Small layout fixes 2021-04-05 00:28:02 +02:00
Allan Nordhøy e60814d6f3 Fastlane ASO (#187) 2021-04-04 23:08:59 +02:00
Sylvia van Os ed8028a22b Merge pull request #186 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-04 14:27:03 +02:00
Allan Nordhøy bb106f185e Translated using Weblate (Norwegian Bokmål)
Currently translated at 93.8% (137 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-04-04 14:25:37 +02:00
J. Lavoie 18c4dd4dc9 Translated using Weblate (Italian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-04-04 14:25:37 +02:00
J. Lavoie 72672e99c2 Translated using Weblate (French)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-04 14:25:37 +02:00
J. Lavoie 73067d1fe8 Translated using Weblate (German)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-04-04 14:25:37 +02:00
Sylvia van Os 5e6a4c8184 Merge pull request #184 from comradekingu/patch-1
App strings reworked 2
2021-04-04 14:25:33 +02:00
Sylvia van Os 310228fb5e Merge branch 'master' into patch-1 2021-04-04 14:24:59 +02:00
Allan Nordhøy 5aef382b68 Spelling: fidme-export 2021-04-03 17:16:02 +00:00
Allan Nordhøy 9fa78a4ea8 Spelling: FidMe 2021-04-03 16:13:12 +00:00
Sylvia van Os 400867b03f Merge pull request #185 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-03 17:47:54 +02:00
solokot b06c6bc94d Translated using Weblate (Russian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-03 17:39:05 +02:00
Heimen Stoffels d6c48bdf6e Translated using Weblate (Dutch)
Currently translated at 100.0% (146 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-03 17:39:05 +02:00
Allan Nordhøy 4d11391f8a Translated using Weblate (Norwegian Bokmål)
Currently translated at 91.0% (133 of 146 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-04-03 17:39:05 +02:00
Sylvia van Os 8b0490fdf3 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-03 17:38:48 +02:00
Sylvia van Os 6ec23d976b Fix grammar mistake 2021-04-03 17:38:19 +02:00
Allan Nordhøy 11ed56ee11 App strings reworked 2 2021-04-03 15:26:53 +00:00
Sylvia van Os 4ded73f78e Merge pull request #183 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-03 15:15:08 +02:00
J. Lavoie 588f8ef677 Translated using Weblate (Korean)
Currently translated at 64.8% (94 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2021-04-03 15:12:10 +02:00
solokot 3d70095862 Translated using Weblate (Russian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-03 15:12:10 +02:00
J. Lavoie 410309ebd2 Translated using Weblate (Polish)
Currently translated at 68.2% (99 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/pl/
2021-04-03 15:12:10 +02:00
Heimen Stoffels b9e646a25d Translated using Weblate (Dutch)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-03 15:12:10 +02:00
J. Lavoie 81c1ec9199 Translated using Weblate (Italian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-04-03 15:12:10 +02:00
J. Lavoie 4498d08afb Translated using Weblate (French)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-04-03 15:12:09 +02:00
J. Lavoie 963789db25 Translated using Weblate (German)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-04-03 15:12:09 +02:00
Sylvia van Os 902fbc505d Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-03 15:11:54 +02:00
Sylvia van Os 9889678e53 Add note on unsupported barcode type 2021-04-03 15:11:22 +02:00
Sylvia van Os ac551ed93f Remove migration guides as the app now tells you in the import screen 2021-04-03 14:36:09 +02:00
Sylvia van Os ec63931396 Merge pull request #180 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-03 10:22:08 +02:00
solokot d29d6ddf4a Translated using Weblate (Russian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-03 08:39:48 +02:00
J. Lavoie 38aac76144 Translated using Weblate (Russian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-03 08:39:48 +02:00
Sylvia van Os 30de0a8266 Make spotbugs happy 2021-04-01 18:16:04 +02:00
Sylvia van Os 0016b40256 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-04-01 18:01:49 +02:00
Sylvia van Os aa3588dbfe Fix unit tests 2021-04-01 18:01:31 +02:00
Sylvia van Os bf7ddc023d Merge pull request #179 from weblate/weblate-catima-catima
Translations update from Weblate
2021-04-01 17:49:48 +02:00
solokot e50cf66bca Translated using Weblate (Russian)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-04-01 17:48:30 +02:00
Heimen Stoffels 85c30185e8 Translated using Weblate (Dutch)
Currently translated at 100.0% (151 of 151 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-04-01 17:48:30 +02:00
Sylvia van Os 5bce259445 Simplify font sizing 2021-04-01 17:48:17 +02:00
Sylvia van Os 8504109399 Merge pull request #178 from TacoTheDank/master
A few miscellaneous improvements
2021-04-01 14:54:52 +02:00
Sylvia van Os e182857e1b Merge pull request #177 from TheLastProject/feature/differentBarcodeValueThanCardId
Support setting a different barcode value than card ID
2021-04-01 14:34:30 +02:00
Sylvia van Os 981c0b9ca6 Support setting a different barcode value than card ID 2021-04-01 13:26:57 +02:00
TacoTheDank 925f62b633 Use FragmentContainerView for SettingsActivity 2021-03-31 22:56:02 -04:00
TacoTheDank cceb1207ae Update libraries 2021-03-31 22:30:55 -04:00
TacoTheDank 2e633b19dc Update gradle plugins, rearrange libraries 2021-03-31 22:23:04 -04:00
TacoTheDank b8b1074a46 Update gradle wrapper 2021-03-31 22:18:57 -04:00
TacoTheDank bea65793f0 Add wrapper validation action, update upload-artifact to v2 2021-03-31 22:18:47 -04:00
Sylvia van Os 252efabdc6 Increase versioncode for forgotten translation update 2021-03-30 18:51:32 +02:00
Sylvia van Os 018efaeebb Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-03-30 18:46:14 +02:00
Sylvia van Os 56522b42e2 Release 1.12 2021-03-30 18:45:54 +02:00
Sylvia van Os 122a80f29c Merge pull request #176 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-29 20:58:07 +02:00
Samantaz Fox 9363a31a77 Translated using Weblate (French)
Currently translated at 100.0% (148 of 148 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-03-29 20:57:13 +02:00
Sylvia van Os 21f3c58e32 Merge pull request #175 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-29 17:43:08 +02:00
solokot 205f7bb59d Translated using Weblate (Russian)
Currently translated at 100.0% (148 of 148 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-29 17:26:59 +02:00
Heimen Stoffels 1cc0f11a5d Translated using Weblate (Dutch)
Currently translated at 100.0% (148 of 148 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-03-29 17:26:59 +02:00
Sylvia van Os d2168f4d91 Merge pull request #174 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-28 15:57:57 +02:00
Sylvia van Os ba46e2a0b8 Fix Weblate's incorrect escaping 2021-03-28 15:33:56 +02:00
solokot 6fb102d9b5 Translated using Weblate (Russian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-28 15:32:04 +02:00
J. Lavoie 83b3d5d31c Translated using Weblate (Spanish)
Currently translated at 86.2% (125 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-03-28 15:32:04 +02:00
Sylvia van Os c93b7527ad Merge pull request #173 from TheLastProject/feature/import-local-image
Added ability to import a barcode from a local image
2021-03-28 15:31:59 +02:00
Sylvia van Os 07bfc95bf9 Update CHANGELOG 2021-03-28 15:25:23 +02:00
Sylvia van Os d34554ac07 Split up code more 2021-03-28 15:20:54 +02:00
Sylvia van Os 63754798ef Fix error toasts not showing 2021-03-26 19:48:17 +01:00
Sylvia van Os 9ca4b7fbe1 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into feature/import-local-image 2021-03-25 21:35:28 +01:00
Sylvia van Os 4d6021ad8c Merge pull request #171 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-25 21:32:26 +01:00
Alessandro Mandelli f76df0d252 Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2021-03-25 21:29:58 +01:00
solokot 60a172813f Translated using Weblate (Russian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-25 21:29:58 +01:00
Heimen Stoffels 01025e862a Translated using Weblate (Dutch)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-03-25 21:29:58 +01:00
Alessandro Mandelli 7e9c7db813 Translated using Weblate (Italian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-03-25 21:29:57 +01:00
J. Lavoie d8b121f503 Translated using Weblate (Italian)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-03-25 21:29:56 +01:00
J. Lavoie 79a143ebaf Translated using Weblate (French)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-03-25 21:29:56 +01:00
J. Lavoie 0b78f36784 Translated using Weblate (German)
Currently translated at 100.0% (145 of 145 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-03-25 21:29:55 +01:00
Sylvia van Os a4c24c6436 Fix multiline note cutoff 2021-03-25 00:00:44 +01:00
Sylvia van Os f59f9ddec8 Make spotBugs happy 2021-03-24 21:33:36 +01:00
Sylvia van Os d21f2d12c9 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-03-24 21:17:22 +01:00
Sylvia van Os 30971b7e85 Fix unit tests 2021-03-24 21:17:02 +01:00
Sylvia van Os 7ab9e0f8b0 Merge pull request #169 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-24 20:52:34 +01:00
J. Lavoie 6e63543cd1 Translated using Weblate (Italian)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/it/
2021-03-24 20:36:16 +01:00
J. Lavoie d2de5db792 Translated using Weblate (Korean)
Currently translated at 73.7% (101 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2021-03-24 20:36:16 +01:00
Heimen Stoffels a1bb6e3bed Translated using Weblate (Dutch)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2021-03-24 20:36:16 +01:00
J. Lavoie e937fc60a7 Translated using Weblate (German)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-03-24 20:36:16 +01:00
J. Lavoie 1213ee99da Translated using Weblate (French)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2021-03-24 20:36:16 +01:00
solokot 7dadce600b Translated using Weblate (Russian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-24 20:36:16 +01:00
Heimen Stoffels bb1eae6f79 Translated using Weblate (Dutch)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-03-24 20:36:16 +01:00
Allan Nordhøy cf871e9606 Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.8% (134 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-03-24 20:36:16 +01:00
J. Lavoie 0b92a12694 Translated using Weblate (Italian)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-03-24 20:36:16 +01:00
J. Lavoie 7636c3648c Translated using Weblate (French)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2021-03-24 20:36:16 +01:00
J. Lavoie f62352cf05 Translated using Weblate (Spanish (Argentina))
Currently translated at 14.5% (20 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es_AR/
2021-03-24 20:36:16 +01:00
J. Lavoie 8fbbfb137e Translated using Weblate (Greek)
Currently translated at 44.5% (61 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2021-03-24 20:36:16 +01:00
J. Lavoie afb960257e Translated using Weblate (German)
Currently translated at 100.0% (137 of 137 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-03-24 20:36:16 +01:00
Sylvia van Os b9e152e3c4 Add Fidme import support 2021-03-24 20:35:58 +01:00
Sylvia van Os bd1d33867d Comply with Huawei's pedantic nonsense
https://twitter.com/SylvieLorxu/status/1374251557735256065
2021-03-23 21:01:56 +01:00
Sylvia van Os eba1ed63a6 Release 1.11 2021-03-23 09:35:43 +01:00
Sylvia van Os 74fbdc7a5e Merge pull request #167 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-21 10:34:44 +01:00
solokot ef61aaeac6 Translated using Weblate (Russian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2021-03-21 06:30:31 +01:00
Sylvia van Os b5ee7d7a2d Merge pull request #165 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-17 18:10:38 +01:00
solokot f51ad0295a Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-17 15:18:07 +01:00
Sylvia van Os d0d3289efa Merge remote-tracking branch 'weblate/master' 2021-03-15 19:39:52 +01:00
Sylvia van Os 353d8a7ecd Fix typo 2021-03-15 19:37:45 +01:00
solokot d221969b5e Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-15 19:34:03 +01:00
Heimen Stoffels 97553e9253 Translated using Weblate (Dutch)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-03-15 19:34:02 +01:00
Sylvia van Os 11b839dabe Merge pull request #164 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-15 19:33:57 +01:00
Sylvia van Os bc5252b2ef Update incorrect Weblate escaping 2021-03-15 19:33:44 +01:00
solokot 5a6b7944b1 Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-15 14:13:24 +01:00
solokot a9794daca5 Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-15 13:54:15 +01:00
solokot aee59550e4 Translated using Weblate (Russian)
Currently translated at 100.0% (138 of 138 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2021-03-15 13:33:14 +01:00
Sylvia van Os dcc5e5921c Fix unit tests 2021-03-14 21:34:51 +01:00
Sylvia van Os 12df426dea Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-03-14 17:58:36 +01:00
Sylvia van Os 9b4085e955 Show privacy policy dialog on first start 2021-03-14 17:58:20 +01:00
Sylvia van Os a4f7d4e131 Merge pull request #163 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-13 17:09:01 +01:00
Sylvia van Os 70b313021c Fix incorrect escaping from Weblate 2021-03-13 17:05:20 +01:00
Schi Ri d1bdab5c66 Translated using Weblate (German)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/de/
2021-03-12 01:02:56 +01:00
Schi Ri 237405279f Translated using Weblate (German)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2021-03-12 01:02:55 +01:00
Sylvia van Os 810fa5f621 Release 1.10 2021-03-07 14:38:38 +01:00
Sylvia van Os 64b709266b Merge pull request #162 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-07 14:22:02 +01:00
Heimen Stoffels f9a66ba3a0 Translated using Weblate (Dutch)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-03-07 14:21:20 +01:00
Allan Nordhøy bfd36bae9f Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.5% (132 of 134 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-03-07 14:21:20 +01:00
BMN 15116ab673 Translated using Weblate (Italian)
Currently translated at 100.0% (134 of 134 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-03-07 14:21:20 +01:00
Sylvia van Os d49d019f63 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-03-06 00:13:35 +01:00
Sylvia van Os ba9d1f3891 Make Loyalty Card Keychain app name translatable
Because, well, the app itself uses different names in different
countries
2021-03-05 23:56:38 +01:00
Sylvia van Os 01596d5637 Merge pull request #160 from weblate/weblate-catima-catima
Translations update from Weblate
2021-03-05 23:50:21 +01:00
Heimen Stoffels 9bd71d5694 Translated using Weblate (Dutch)
Currently translated at 100.0% (129 of 129 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-03-05 23:47:01 +01:00
Allan Nordhøy 6d1e7ee3bb Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.4% (127 of 129 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-03-05 23:47:01 +01:00
Sylvia van Os 0ce71039f1 Split into screen on and lockscreen bypass 2021-03-05 23:44:27 +01:00
Sylvia van Os a03b89bc93 Merge branch 'master' into feature/keep-screen-on 2021-03-05 23:36:43 +01:00
Sylvia van Os 156b720102 Merge pull request #159 from TheLastProject/feature/voucherVaultImport
Create Voucher Vault import code and test
2021-03-05 09:50:23 +01:00
Sylvia van Os c13b5dda18 Make Spotbugs happy 2021-03-04 23:45:03 +01:00
Sylvia van Os ffa39000f7 Add Voucher Vault import to UI 2021-03-04 23:37:53 +01:00
Sylvia van Os 40de4a8dc4 Fix date parsing 2021-03-02 21:10:14 +01:00
Sylvia van Os db22703ec0 Create Voucher Vault import code and test 2021-03-01 23:02:03 +01:00
Sylvia van Os 8b59ef152a Merge pull request #158 from weblate/weblate-catima-catima
Translations update from Weblate
2021-02-25 19:55:27 +01:00
Sylvia van Os 01bd91ff66 Fix Weblate incorrectly escaping XML 2021-02-25 19:54:46 +01:00
Simone Dotto b558d2178a Translated using Weblate (Italian)
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2021-02-25 14:50:29 +01:00
Sylvia van Os efc8e6ae33 Fix parsing balance for countries using space as separator 2021-02-24 19:17:16 +01:00
Sylvia van Os aaf481a82c Merge pull request #156 from weblate/weblate-catima-catima
Translations update from Weblate
2021-02-24 12:28:32 +01:00
Sylvia van Os d03d96b194 Fix Weblate incorrect escaping 2021-02-24 12:28:04 +01:00
inesre 1c92787254 Translated using Weblate (Spanish)
Currently translated at 94.5% (121 of 128 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-02-24 00:50:28 +01:00
Sylvia van Os bc808d3045 Really fix 2021-02-23 20:55:01 +01:00
Sylvia van Os b265fadec3 Improve currency parsing logic 2021-02-23 18:49:45 +01:00
Sylvia van Os d2f5cd05b5 Release 1.9 2021-02-22 23:01:24 +01:00
Sylvia van Os 2dba2c63a8 Merge pull request #153 from weblate/weblate-catima-catima
Translations update from Weblate
2021-02-22 22:00:02 +01:00
Sylvia van Os 3fffcdbd67 Fix incorrect escaping from Weblate 2021-02-22 21:56:20 +01:00
Sylvia van Os 6c53b8e9ca Fix incorrect escaping from Weblate 2021-02-22 21:54:13 +01:00
Heimen Stoffels 8ac2fe575c Translated using Weblate (Dutch)
Currently translated at 100.0% (128 of 128 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-02-22 21:50:28 +01:00
Allan Nordhøy b4a992abf8 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.4% (126 of 128 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-02-22 21:50:27 +01:00
Sylvia van Os 45c71f01c2 Simplify balance parsing logic 2021-02-22 20:21:24 +01:00
Sylvia van Os 9f914d4943 Reorganize barcode tab of edit view 2021-02-21 18:36:34 +01:00
Sylvia van Os 3f25f99236 Merge pull request #151 from TheLastProject/feature/balance
WIP: Initial balance support
2021-02-21 18:15:06 +01:00
Sylvia van Os d54f574558 Update screenshots 2021-02-21 18:10:56 +01:00
Sylvia van Os 0af1935d20 Switch tests to USD 2021-02-21 18:00:06 +01:00
Sylvia van Os 9a37d917f7 Fix test URL 2021-02-20 22:59:51 +01:00
Sylvia van Os d4f62435ae Add tests for balance 2021-02-20 22:10:23 +01:00
Sylvia van Os 0baf1ba348 Fix tests 2021-02-20 18:15:58 +01:00
Sylvia van Os 4a568d02d3 Various fixes and consistency improvements 2021-02-16 22:22:51 +01:00
Sylvia van Os 1dc30ebaad Reformat balance after focus loss 2021-02-15 22:30:45 +01:00
Sylvia van Os 4fbedbc30c Fix parsing big numbers 2021-02-15 22:02:47 +01:00
Sylvia van Os 1675ebf1dc Set hasChanged when balance was edited 2021-02-15 21:58:22 +01:00
Sylvia van Os 2d6dfdcfdf Initial balance support 2021-02-14 23:32:07 +01:00
Miha Frangež bacb5b97ec Added ability to import a barcode from a local image 2021-02-14 19:09:33 +01:00
Miha Frange? 940be02851 Added option to keep the screen on 2021-02-14 17:29:51 +01:00
Sylvia van Os 34f8c830fd Release Catima 1.8.1 2021-02-12 18:25:03 +01:00
Sylvia van Os ee7f5c0498 Fix crash on Android before 7 2021-02-12 12:54:50 +01:00
Sylvia van Os 9a5c3bc661 Merge pull request #145 from weblate/weblate-catima-catima
Translations update from Weblate
2021-02-09 18:11:05 +01:00
Michalis db9ec7daea Translated using Weblate (Greek)
Currently translated at 47.5% (58 of 122 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2021-02-09 17:50:33 +01:00
Sylvia van Os 16b683fe9d Merge pull request #144 from weblate/weblate-catima-catima
Translations update from Weblate
2021-02-06 01:44:08 +01:00
Michalis 0e10c644d8 Translated using Weblate (Greek)
Currently translated at 47.5% (58 of 122 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/el/
2021-02-06 01:42:03 +01:00
Sylvia van Os fd283a5e06 Fix wrong name in privacy policy 2021-02-03 20:35:06 +01:00
Sylvia van Os e406320f17 Add Huawei AppGallery 2021-02-03 20:29:36 +01:00
Sylvia van Os 40d36ec8fb Release 1.8 2021-01-28 19:45:48 +01:00
Sylvia van Os 99a3849942 Fix missing lookup table update for groups update 2021-01-28 19:31:46 +01:00
Sylvia van Os 26a6a786dc Fix button colours 2021-01-28 17:59:31 +01:00
Sylvia van Os 55a5884852 Fix loyalty card view title colour in landscape mode 2021-01-27 22:21:27 +01:00
Sylvia van Os c20ce1e555 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-01-27 21:43:59 +01:00
Sylvia van Os a90899d41e Fix crash on no barcode 2021-01-27 21:42:57 +01:00
Sylvia van Os 413d479ea0 Merge pull request #141 from weblate/weblate-catima-catima
Translations update from Weblate
2021-01-27 21:36:19 +01:00
Heimen Stoffels 8ff452cfd2 Translated using Weblate (Dutch)
Currently translated at 100.0% (122 of 122 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-01-27 21:35:56 +01:00
Allan Nordhøy 54c279ec89 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.3% (120 of 122 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-01-27 21:35:56 +01:00
Sylvia van Os 000d7722da Fix tests 2021-01-27 21:35:37 +01:00
Sylvia van Os 0bb0df21e4 Make header small in landscape mode 2021-01-27 21:25:34 +01:00
Sylvia van Os 0dcfc11c53 Fix unit tests 2021-01-26 22:50:46 +01:00
Sylvia van Os 58f8a6a929 Fix bottomsheet misplacing after fullscreen change 2021-01-26 22:39:25 +01:00
Sylvia van Os 6a80c633a8 Update CHANGELOG 2021-01-25 23:55:57 +01:00
Sylvia van Os 031bfd94e0 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-01-25 23:54:55 +01:00
Sylvia van Os 45443abaf9 UI hints for barcode to top and scaling 2021-01-25 23:53:33 +01:00
Sylvia van Os b81da59bcc Merge pull request #139 from weblate/weblate-catima-catima
Translations update from Weblate
2021-01-18 20:36:59 +01:00
Sylvia van Os 86f3530d95 Fix incorrect XML escaping 2021-01-18 20:36:30 +01:00
Sylvia van Os 863a378bf0 Fix incorrect XML escaping 2021-01-18 20:35:39 +01:00
Heimen Stoffels a9d81b8321 Translated using Weblate (Dutch)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-01-18 20:32:14 +01:00
Allan Nordhøy 46865f349b Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.3% (118 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-01-18 20:32:13 +01:00
Sylvia van Os 1d1109d665 Fix crash in edit view 2021-01-18 19:45:45 +01:00
Sylvia van Os c11e995684 Fix blurry barcode in edit view 2021-01-18 19:00:27 +01:00
Sylvia van Os 184af4d272 Fix wrong string on expired 2021-01-17 23:38:07 +01:00
Sylvia van Os d7356704ea Make spotBugs happy 2021-01-17 23:31:05 +01:00
Sylvia van Os 66573fd2da Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-01-17 22:56:14 +01:00
Sylvia van Os 36ff2333b7 Fix all unit tests 2021-01-17 22:54:24 +01:00
Sylvia van Os 9325f33da6 Merge pull request #138 from weblate/weblate-catima-catima
Translations update from Weblate
2021-01-17 18:35:28 +01:00
Sylvia van Os 9e40d9b6b3 Fix incorrect escaping 2021-01-17 18:34:55 +01:00
Sylvia van Os 4679051df1 Fix incorrect escaping 2021-01-17 18:34:13 +01:00
Heimen Stoffels 27cbad1b44 Translated using Weblate (Dutch)
Currently translated at 100.0% (119 of 119 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-01-17 18:24:50 +01:00
Allan Nordhøy ba24b49009 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.3% (117 of 119 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-01-17 18:24:50 +01:00
Sylvia van Os c408beb68c Progress on fixing tests 2021-01-17 18:24:21 +01:00
Sylvia van Os 5b7590e4e1 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-01-16 21:18:19 +01:00
Sylvia van Os 574832d09b Merge pull request #137 from weblate/weblate-catima-catima
Translations update from Weblate
2021-01-16 20:20:15 +01:00
Sylvia van Os 8029be7b2b Update CHANGELOG 2021-01-16 20:19:15 +01:00
Heimen Stoffels 390a2e1b5a Translated using Weblate (Dutch)
Currently translated at 100.0% (115 of 115 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2021-01-16 20:16:51 +01:00
Allan Nordhøy 803555f94e Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.2% (113 of 115 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2021-01-16 20:16:51 +01:00
Sylvia van Os 6488dc0fe3 Implement expiry 2021-01-16 20:16:20 +01:00
Sylvia van Os ddc385c39d Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2021-01-16 15:03:15 +01:00
Sylvia van Os 6382c54d1a Separate edit UI into tabs 2021-01-16 15:02:14 +01:00
Sylvia van Os af515d307a Merge pull request #136 from weblate/weblate-catima-catima
Translations update from Weblate
2021-01-13 09:47:44 +01:00
Yurical e1edeb364e Translated using Weblate (Korean)
Currently translated at 87.5% (98 of 112 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2021-01-13 09:32:08 +01:00
Sylvia van Os 18b95e96eb Release 1.6.2 2021-01-04 20:42:06 +01:00
Sylvia van Os 5960857568 Fix bottom sheet or edit button drawing over card ID 2021-01-04 20:20:44 +01:00
Sylvia van Os 6426a99be4 Merge pull request #133 from TacoTheDank/master
Library updates and AndroidX Preferences
2021-01-04 20:05:50 +01:00
Sylvia van Os 1f76809300 Memory leak and spotBugs fixes 2021-01-04 19:58:08 +01:00
Sylvia van Os 5346726ae1 Merge pull request #135 from weblate/weblate-catima-catima
Translations update from Weblate
2021-01-03 23:45:39 +01:00
Sylvia van Os 3828454a26 Fix XML 2021-01-03 23:35:56 +01:00
inesre 7995c2ba1a Translated using Weblate (Spanish)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2021-01-03 23:29:14 +01:00
Sylvia van Os 9ee4184122 Archive test results 2021-01-03 21:12:11 +01:00
TacoTheDank 319ba195e4 Rudimentary migration of findbugs to spotbugs 2020-12-26 20:34:44 -05:00
TacoTheDank a21e9f142c Resolve app name in build.gradle 2020-12-26 19:05:41 -05:00
TacoTheDank 22fbbd3341 Migrate preferences to AndroidX 2020-12-26 19:05:18 -05:00
TacoTheDank 191e22db65 Update a bunch of libraries 2020-12-26 19:05:01 -05:00
TacoTheDank ceba99d11f Clean up build gradles 2020-12-26 19:04:48 -05:00
TacoTheDank dd1840ce5c Update gradle wrapper 2020-12-23 19:47:27 -05:00
TacoTheDank b1608d6a9f Update .gitignore 2020-12-23 19:47:09 -05:00
Sylvia van Os aee03170dc Fix build 2020-12-22 18:40:02 +01:00
Sylvia van Os 419e12c0eb Merge pull request #132 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-22 16:37:18 +01:00
Yurical 6c2ce61ddc Translated using Weblate (Korean)
Currently translated at 66.3% (75 of 113 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ko/
2020-12-22 16:29:11 +01:00
K. Herbert fc342b4197 Translated using Weblate (Italian)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2020-12-22 16:29:11 +01:00
K. Herbert a6536307ad Translated using Weblate (French)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-12-22 16:29:11 +01:00
K. Herbert 8a517e8161 Translated using Weblate (German)
Currently translated at 100.0% (113 of 113 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2020-12-22 16:29:10 +01:00
Sylvia van Os 34f314dad8 Merge pull request #131 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-20 09:50:40 +01:00
Yurical 2e49e36e0c Added translation using Weblate (Korean) 2020-12-20 08:55:30 +01:00
Sylvia van Os a7afdae83c Add big translation panel
Translations are very important, we want to make it more obvious this exists
2020-12-19 23:19:44 +01:00
Sylvia van Os c705136362 No longer use this image 2020-12-18 22:12:12 +01:00
Sylvia van Os afa76d8f54 Fix regression in manual barcode selector 2020-12-16 18:56:01 +01:00
Sylvia van Os cf20d03fb3 Release 1.6.0 2020-12-15 23:27:47 +01:00
Sylvia van Os bb866819db Cleanups 2020-12-15 23:11:18 +01:00
Sylvia van Os c9dd994120 Fix findBugs 2020-12-15 22:47:04 +01:00
Sylvia van Os eabd988540 Fix tests 2020-12-15 22:29:01 +01:00
Sylvia van Os af91097559 Fix back button 2020-12-15 12:06:14 +01:00
Sylvia van Os 16793d1c0b Clean up imports 2020-12-14 22:36:17 +01:00
Sylvia van Os 6f4673c9fb Theming improvements 2020-12-14 21:34:28 +01:00
Sylvia van Os bb99321209 Camera view with manual scan button 2020-12-14 21:12:59 +01:00
Sylvia van Os baa42c8c69 Forgot a file 2020-12-11 12:38:32 +01:00
Sylvia van Os 6c011dd9ac Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker 2020-12-10 23:49:46 +01:00
Sylvia van Os 9bf245a392 Convert everything to SVG 2020-12-10 23:47:49 +01:00
Sylvia van Os 412afcda1e Merge pull request #126 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-07 08:20:20 +01:00
Samantaz Fox c8bc0864b2 Translated using Weblate (French)
Currently translated at 99.1% (117 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-12-07 02:29:04 +01:00
Sylvia van Os 4d59e6c48d Focus textfield on group creation/edit 2020-12-06 19:13:21 +01:00
Sylvia van Os 70cf42f144 Update translations 2020-12-05 12:24:30 +01:00
Sylvia van Os b3fc66fa58 Merge pull request #125 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-05 12:14:06 +01:00
Allan Nordhøy aa7315fafe Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.3% (116 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2020-12-05 02:29:03 +01:00
Sylvia van Os 5325f1955e Release 1.5.1 2020-12-03 20:39:46 +01:00
Sylvia van Os ee30180137 Release 1.5.0 2020-12-03 20:02:20 +01:00
Sylvia van Os 6bddeb2f75 Update screenshots 2020-12-03 19:42:21 +01:00
Sylvia van Os 3c69990b0d Make findBugs happy and improve bottom sheet logic 2020-12-03 19:33:20 +01:00
Sylvia van Os 43d5478ae3 Increase arrow size 2020-12-03 18:53:01 +01:00
Sylvia van Os 30a54ae22a Note size is no longer configurable 2020-12-03 18:18:32 +01:00
Sylvia van Os 9ff6b87092 More i18n fixes 2020-12-03 18:04:49 +01:00
Sylvia van Os 9763d9fb73 Merge pull request #124 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-03 18:00:59 +01:00
Heimen Stoffels 0b92686dad Translated using Weblate (Dutch)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2020-12-03 17:58:34 +01:00
Sylvia van Os cb1c834057 Fix strings 2020-12-03 17:57:53 +01:00
Sylvia van Os 98a0487d0c Merge pull request #123 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-03 17:55:08 +01:00
J. Lavoie 2df165061d Translated using Weblate (French)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2020-12-03 17:53:52 +01:00
Heimen Stoffels fdd7ca03cf Translated using Weblate (Dutch)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2020-12-03 17:53:52 +01:00
J. Lavoie 29e996a5fe Translated using Weblate (German)
Currently translated at 100.0% (118 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2020-12-03 17:53:52 +01:00
Sylvia van Os 3c1c8baaa0 Make bottom sheet button tapable and add group info 2020-12-03 17:53:23 +01:00
Sylvia van Os 6c186c2abb Merge pull request #122 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-03 17:33:23 +01:00
J. Lavoie 9deb0b94af Translated using Weblate (French)
Currently translated at 97.4% (115 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-12-03 17:32:16 +01:00
Samantaz Fox 97d54e87f2 Translated using Weblate (French)
Currently translated at 97.4% (115 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-12-03 17:32:16 +01:00
Sylvia van Os 0e329b3c31 Merge pull request #121 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-03 17:31:59 +01:00
Samantaz Fox bd337d6da8 Translated using Weblate (French)
Currently translated at 98.3% (116 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-12-03 17:24:53 +01:00
Sylvia van Os dc7f199e0c Fix crash 2020-12-02 21:27:58 +01:00
Sylvia van Os b54e14def2 Create bottom sheet in loyalty card view to prevent FAB rendering over note 2020-12-02 21:17:00 +01:00
Sylvia van Os f724e4c164 Always user white text on red buttons 2020-12-02 19:43:54 +01:00
Sylvia van Os c389a02d69 Fix tests 2020-12-02 18:36:23 +01:00
Sylvia van Os b7db58e7d0 Make Fastlane happy 2020-12-01 22:59:06 +01:00
Sylvia van Os eefd26fa06 Downgrade dependencies again
It just doesn't build otherwise
2020-12-01 22:54:07 +01:00
Sylvia van Os 8d4a122cb5 Fix many lint checks 2020-12-01 21:33:36 +01:00
Sylvia van Os 13ea10d0b0 Lint fixes 2020-12-01 19:54:28 +01:00
Sylvia van Os 4366eab380 Actually show toast 2020-12-01 19:47:43 +01:00
Sylvia van Os 0c61d36cb3 Increase to minSdk 19
We were already kinda not compatible with pre-19 anymore
2020-12-01 19:46:52 +01:00
Sylvia van Os 6bc5e77bbd Release 1.4.1 2020-12-01 19:35:06 +01:00
Sylvia van Os d8ddee0667 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-12-01 19:01:24 +01:00
Sylvia van Os 5e8312e816 Merge pull request #119 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-01 18:59:06 +01:00
Heimen Stoffels 8e10022158 Translated using Weblate (Dutch)
Currently translated at 100.0% (3 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2020-12-01 18:58:00 +01:00
Sylvia van Os b209b670a5 Small UI cleanups 2020-12-01 18:49:59 +01:00
Sylvia van Os ecdec0f773 Merge pull request #118 from weblate/weblate-catima-catima
Translations update from Weblate
2020-12-01 12:03:13 +01:00
Heimen Stoffels 5c90107a7b Translated using Weblate (Dutch)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nl/
2020-12-01 12:01:32 +01:00
Samantaz Fox 6a8a9878d7 Translated using Weblate (French)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/fr/
2020-12-01 12:01:32 +01:00
Artem 3400d10cc6 Translated using Weblate (Russian)
Currently translated at 84.6% (105 of 124 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2020-12-01 12:01:32 +01:00
Sylvia van Os 05e171170b Translated using Weblate (Russian)
Currently translated at 84.6% (105 of 124 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/ru/
2020-12-01 12:01:32 +01:00
Sylvia van Os cb967a8d8d Translated using Weblate (Dutch)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2020-12-01 12:01:32 +01:00
Sylvia van Os 5835da2931 Translated using Weblate (French)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-12-01 12:01:32 +01:00
Sylvia van Os 2e9339b8aa Fix unnecessary file 2020-12-01 12:00:52 +01:00
Sylvia van Os bbba4b2e11 Correctly use plural string 2020-11-30 21:44:38 +01:00
Sylvia van Os d9659ecc9d Merge remote-tracking branch 'weblate/master' into master 2020-11-30 21:23:04 +01:00
Heimen Stoffels c558278962 Translated using Weblate (Dutch)
Currently translated at 100.0% (124 of 124 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2020-11-30 21:19:44 +01:00
Sylvia van Os c137cb9428 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-30 21:19:07 +01:00
Sylvia van Os 1d2f54c69b Translation fixes 2020-11-30 19:53:32 +01:00
Sylvia van Os d4a377fe18 Merge pull request #116 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-29 00:30:43 +01:00
Allan Nordhøy 9844113568 Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.9% (119 of 124 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2020-11-29 00:29:00 +01:00
Sylvia van Os c49f26db95 Release 1.4.0 2020-11-28 16:46:01 +01:00
Sylvia van Os 9744dfe6ff Make lint happy 2020-11-28 15:45:09 +01:00
Sylvia van Os 55dfd1fe09 Fix build 2020-11-28 15:24:07 +01:00
Sylvia van Os 0a3c81154c Fix colouring of manage group buttons 2020-11-28 14:44:09 +01:00
Sylvia van Os 70a9689bb2 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-28 13:52:01 +01:00
Sylvia van Os 54f6d8d26f Fix scan/manual icon colour on light theme 2020-11-28 13:51:13 +01:00
Sylvia van Os c0622ddaec Merge pull request #115 from TheLastProject/create-pull-request/patch-1606514188
Compressed Images
2020-11-27 22:57:16 +01:00
TheLastProject 12578eab3e Compressed Images 2020-11-27 21:56:28 +00:00
Sylvia van Os 5dd57577af Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-27 22:55:20 +01:00
Sylvia van Os d883c84b4e Fix migration guide 2020-11-27 22:54:40 +01:00
Sylvia van Os 0ebe1b387d Merge pull request #114 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-27 22:35:21 +01:00
Allan Nordhøy 942aff2af5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.9% (117 of 122 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2020-11-27 22:34:03 +01:00
Sylvia van Os c1606fef62 Manual group ordering 2020-11-27 22:33:59 +01:00
Sylvia van Os cc895353a9 Update CHANGELOG 2020-11-27 14:47:27 +01:00
Sylvia van Os 73bac0ae8d Make findBugs happy 2020-11-27 13:19:35 +01:00
Sylvia van Os 158e424a47 Add dialog giving the user scan/manually enter options (#111) 2020-11-27 12:58:55 +01:00
Sylvia van Os 133fa13d3b Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-27 09:42:49 +01:00
Sylvia van Os 44ff4d0cc6 Fix gitignore 2020-11-27 09:42:23 +01:00
Sylvia van Os a7b280c08b Merge pull request #112 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-27 02:38:25 +01:00
J. Lavoie 5fe0429c98 Translated using Weblate (French)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-11-27 02:28:59 +01:00
J. Lavoie bf391022fd Translated using Weblate (German)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2020-11-27 02:28:59 +01:00
Sylvia van Os a431bf8c30 Merge pull request #109 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-23 02:37:45 +01:00
Sylvia van Os a242944ee6 Deleted translation using Weblate (French (Belgium)) 2020-11-23 02:17:54 +01:00
Samantaz Fox 84a7e84486 Translated using Weblate (French)
Currently translated at 100.0% (120 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-11-23 02:17:54 +01:00
Samantaz Fox d4988f1d4c Added translation using Weblate (French (Belgium)) 2020-11-23 02:17:54 +01:00
Sylvia van Os 04e52f0a8a Move About dialog into own activity 2020-11-23 02:17:18 +01:00
Sylvia van Os 370db97af1 Release 1.3.0 2020-11-22 19:43:53 +01:00
Sylvia van Os 84d7f4fbba Fix unit tests 2020-11-22 18:26:05 +01:00
Sylvia van Os afcbca251c Merge pull request #108 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-22 17:22:59 +01:00
Samantaz Fox aa9df04c9c Translated using Weblate (French)
Currently translated at 99.1% (119 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-11-22 17:19:32 +01:00
Allan Nordhøy a24452a962 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.1% (119 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2020-11-22 17:19:32 +01:00
Samantaz Fox e74176abb0 Translated using Weblate (French)
Currently translated at 99.1% (119 of 120 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-11-22 17:19:32 +01:00
Sylvia van Os 6f4cec4cf4 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-22 17:15:41 +01:00
Sylvia van Os febd0cf463 Really fix change detection 2020-11-22 17:13:02 +01:00
Sylvia van Os a5f91486e9 Merge pull request #107 from SamantazFox/patch-1
Propose more explicit settings names
2020-11-22 17:12:44 +01:00
Samantaz Fox d8300640af Propose more explicit settings names 2020-11-22 16:46:15 +01:00
Sylvia van Os afef158169 Merge pull request #106 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-21 23:14:40 +01:00
Samantaz Fox a728d1d84d Translated using Weblate (French)
Currently translated at 79.6% (94 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-11-21 23:12:42 +01:00
Sylvia van Os 9f88b6348b Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-21 23:10:56 +01:00
Sylvia van Os 6929ba1c0d Ask for confirmation before leaving edit view after changes 2020-11-21 23:08:19 +01:00
Sylvia van Os 49b296b983 Merge pull request #105 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-21 16:31:27 +01:00
Allan Nordhøy f21a75b19a Translated using Weblate (Dutch)
Currently translated at 73.7% (87 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nl/
2020-11-21 16:28:58 +01:00
Allan Nordhøy 8946b0a9e1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.1% (117 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/
2020-11-21 16:28:57 +01:00
Allan Nordhøy eae470f13c Translated using Weblate (Italian)
Currently translated at 73.7% (87 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/it/
2020-11-21 16:28:57 +01:00
Allan Nordhøy 5ce046b3f4 Translated using Weblate (French)
Currently translated at 74.5% (88 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/fr/
2020-11-21 16:28:57 +01:00
Allan Nordhøy a51debb2e1 Translated using Weblate (Spanish)
Currently translated at 62.7% (74 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/es/
2020-11-21 16:28:57 +01:00
Allan Nordhøy 7312a4bd1a Translated using Weblate (German)
Currently translated at 73.7% (87 of 118 strings)

Translation: Catima/Catima
Translate-URL: https://hosted.weblate.org/projects/catima/catima/de/
2020-11-21 16:28:57 +01:00
Sylvia van Os 3c1a54e456 Remove no longer relevant unit tests 2020-11-20 15:09:16 +01:00
Sylvia van Os 6d4babf944 Always show all import/export options 2020-11-20 14:56:11 +01:00
Sylvia van Os 7ecdf52f1a Fix typo 2020-11-20 00:29:49 +01:00
Sylvia van Os c6f28272d9 Release 1.2.2 2020-11-19 21:16:36 +01:00
Sylvia van Os ba8c20f415 Merge branch 'master' of github.com:TheLastProject/loyalty-card-locker into master 2020-11-19 16:48:55 +01:00
Sylvia van Os b41dcc7ba1 Add IzzyOnDroid button 2020-11-19 16:45:33 +01:00
Sylvia van Os 6a14b5706b Merge pull request #102 from weblate/weblate-catima-catima
Translations update from Weblate
2020-11-17 18:36:27 +01:00
opsik 5bde6796b9 Translated using Weblate (Russian)
Currently translated at 66.6% (2 of 3 strings)

Translation: Catima/Fastlane
Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/ru/
2020-11-17 18:32:39 +01:00
Sylvia van Os 3c797b5ec9 Remember active group tab 2020-11-17 18:30:47 +01:00
2136 changed files with 41236 additions and 7107 deletions

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
+41 -14
View File
@@ -1,27 +1,54 @@
name: Android CI
on:
workflow_dispatch:
push:
branches: [ master ]
branches:
- main
- staging
- trying
pull_request:
branches: [ master ]
branches:
- main
permissions:
actions: none
checks: none
contents: read
deployments: none
discussions: none
id-token: none
issues: none
packages: none
pages: none
pull-requests: none
repository-projects: none
security-events: none
statuses: none
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- uses: actions/checkout@v4.0.0
- 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
- name: set up OpenJDK 17
run: |
sudo apt-get update
sudo apt-get install -y openjdk-17-jdk-headless
sudo update-alternatives --auto java
- name: Build
run: ./gradlew assembleRelease
- name: Check lint
run: ./gradlew lintRelease
- name: Run unit tests
run: ./gradlew testReleaseUnitTest
- name: FindBugs
run: ./gradlew findbugs
run: timeout 5m ./gradlew testReleaseUnitTest || { ./gradlew --stop && timeout 5m ./gradlew testReleaseUnitTest; }
- name: SpotBugs
run: ./gradlew spotbugsRelease
- name: Archive test results
if: always()
uses: actions/upload-artifact@v3.1.3
with:
name: test-results
path: app/build/reports
@@ -1,31 +0,0 @@
name: Compress Images on Push to Master
on:
push:
branches:
- master
paths:
- '**.jpg'
- '**.jpeg'
- '**.png'
- '**.webp'
jobs:
build:
name: calibreapp/image-actions
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Compress Images
id: calibre
uses: calibreapp/image-actions@master
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
compressOnly: true
- name: Create New Pull Request If Needed
if: steps.calibre.outputs.markdown != ''
uses: peter-evans/create-pull-request@master
with:
title: Compressed Images
branch-suffix: timestamp
commit-message: Compressed Images
body: ${{ steps.calibre.outputs.markdown }}
@@ -0,0 +1,42 @@
name: Convert CHANGELOG to Fastlane
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'CHANGELOG.md'
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:
convert_changelog_to_fastlane:
runs-on: ubuntu-latest
name: Convert CHANGELOG to Fastlane
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v4.0.0
- name: Setup Python
uses: actions/setup-python@v4.7.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
with:
title: "Update Fastlane changelogs"
commit-message: "Update Fastlane changelogs"
branch-suffix: timestamp
@@ -0,0 +1,39 @@
name: Write contributors to file
on:
workflow_dispatch:
schedule:
- cron: '3 4 * * 0'
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:
contributors_to_file:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
name: Write contributors to file
steps:
- name: Checkout repo
id: checkout
uses: actions/checkout@v4.0.0
- name: Update contributors
id: update_contributors
uses: TheLastProject/contributors-to-file-action@v3.0.1
with:
file_in_repo: app/src/main/res/raw/contributors.txt
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
with:
title: "Update contributors"
commit-message: "Update contributors"
branch-suffix: timestamp
@@ -0,0 +1,77 @@
name: Generate feature graphic
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'fastlane/**/title.txt'
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:
generate-feature-graphic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
- name: Install requirements
run: |
sudo apt-get update
sudo apt-get install optipng mat2
# Install 200 weight versions of relevant Noto (to use for languages not supported by Lexend Deca)
sudo apt-get install fonts-noto-extra fonts-noto-cjk-extra
# Custom fonts
mkdir "$HOME/.fonts"
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
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
with:
title: "Update feature graphic"
commit-message: "Update feature graphic"
branch-suffix: timestamp
+35
View File
@@ -0,0 +1,35 @@
name: Update locales
on:
workflow_dispatch:
push:
branches:
- main
paths:
- app/src/main/res/values/settings.xml
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:
update-locales:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
- name: Update locales
run: .scripts/locales.py
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
with:
title: "Update locales"
commit-message: "Update locales"
branch-suffix: timestamp
+12 -5
View File
@@ -1,8 +1,15 @@
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
local.properties
.idea/
.DS_Store
/build
/captures
build/
captures/
**/release
**/debug
app/*.log
# Bundle
/.bundle/
/vendor/bundle
/lib/bundler/man/
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/python3
import os
import re
changelogs = {}
with open('CHANGELOG.md') as changelog:
version_code = None
text = []
for line in changelog:
if line.startswith("## "):
if version_code != None:
changelogs[version_code] = text
text = []
match = re.match("## \S* - (\d*).*", line)
if not match:
raise ValueError(f"Invalid version line: {line}")
version_code = match.group(1)
elif line:
# Turn Markdown [links](to_url) into links (to_url)
text.append(re.sub(r'\[(.*?)\]\((.*?)\)', r'\1 (\2)', line))
for version, description in changelogs.items():
description = "".join(description).strip()
if not description:
continue
with open(os.path.join("fastlane", "metadata", "android", "en-US", "changelogs", f"{version}.txt"), "w") as fastlane_file:
fastlane_file.write(description)
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/python3
import csv
import json
import msgpack
MSGPACK = "bootstrapdata.msgpack"
OUTFILE = "stocard_stores.csv"
def load(fh):
data = []
for r in msgpack.Unpacker(fh, raw=False):
if r["collection"] == "/loyalty-card-providers/":
d = json.loads(r["data"])
data.append([r["resource_id"], d["name"], d["default_barcode_format"]])
return data
def save(data, output_file=OUTFILE):
with open(output_file, "w") as fh:
writer = csv.writer(fh, lineterminator="\n")
writer.writerow(["_id", "name", "barcodeFormat"])
for row in data:
writer.writerow(row)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
epilog=f"INPUT_FILE must be a .msgpack or .apk and defaults to {MSGPACK}; "
f"OUTPUT_FILE defaults to {OUTFILE}")
parser.add_argument("input_file", metavar="INPUT_FILE", nargs="?", default=MSGPACK)
parser.add_argument("output_file", metavar="OUTPUT_FILE", nargs="?", default=OUTFILE)
args = parser.parse_args()
if args.input_file.lower().endswith(".apk"):
import zipfile
with zipfile.ZipFile(args.input_file) as zf:
with zf.open(f"assets/{MSGPACK}") as fh:
data = load(fh)
else:
with open(args.input_file, "rb") as fh:
data = load(fh)
save(data, args.output_file)
@@ -0,0 +1,15 @@
<svg width="1024" height="500" viewBox="0 0 1024 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1024" height="500" fill="#223355"/>
<text fill="white" xml:space="preserve" style="" font-family="Yesteryear" font-size="150" letter-spacing="0em"><tspan x="470.082" y="285.511">Catima
</tspan></text>
<path d="M381.046 147.001L236.3 211.446L276.524 301.79L421.27 237.345L381.046 147.001Z" fill="#F0F0F0" stroke="#C80000" stroke-width="2"/>
<path d="M402.077 219.13L240.07 147L191.984 255.004L353.99 327.135L402.077 219.13Z" fill="#F0F0F0" stroke="#C80000" stroke-width="2"/>
<path d="M437.17 236.241L251.831 183.096L220.071 293.855L405.41 347L437.17 236.241Z" fill="#C80000" stroke="#C80000" stroke-width="6" stroke-linejoin="round"/>
<path d="M412.879 178.633H220.071V293.855H412.879V178.633Z" fill="#FF0000" stroke="#FF0000" stroke-width="6" stroke-linejoin="round"/>
<path d="M221.482 296.217C238.316 296.217 251.963 269.366 251.963 236.244C251.963 203.121 238.316 176.27 221.482 176.27C204.647 176.27 191 203.121 191 236.244C191 269.366 204.647 296.217 221.482 296.217Z" fill="#FF0000" stroke="#FF0000" stroke-width="3.44232" stroke-linejoin="round"/>
<path d="M307.256 250.444C307.256 253.187 306.289 255.842 304.526 257.944C302.763 260.045 300.316 261.458 297.614 261.934C294.913 262.41 292.13 261.92 289.755 260.548C287.379 259.177 285.563 257.012 284.625 254.435" stroke="#F0F0F0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M330.301 254.298C329.363 256.875 327.547 259.04 325.171 260.411C322.796 261.783 320.013 262.273 317.312 261.797C314.61 261.321 312.163 259.908 310.4 257.807C308.637 255.706 307.671 253.05 307.671 250.307" stroke="#F0F0F0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M248.345 225.937L266.818 207.465L285.29 225.937" stroke="#F0F0F0" stroke-width="2"/>
<path d="M329.625 225.937L348.098 207.465L366.571 225.937" stroke="#F0F0F0" stroke-width="2"/>
<text fill="white" xml:space="preserve" style="" font-family="Lexend Deca" font-size="35" font-weight="200" letter-spacing="0em"><tspan x="466" y="340">Loyalty Card Wallet</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,93 @@
Copyright 2018 The Lexend Project Authors (https://github.com/googlefonts/lexend), with Reserved Font Name “RevReading Lexend”.
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,94 @@
Copyright (c) 2011 by Brian J. Bonislawsky DBA Astigmatic (AOETI)
(astigma@astigmatic.com), with Reserved Font Names "Yesteryear"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/python3
import subprocess
import xml.etree.ElementTree as ET
root = ET.parse("app/src/main/res/values/settings.xml").getroot()
for e in root.findall("string-array"):
if e.get("name") == "locale_values":
locales = [x.text for x in e if x.text]
break
locales = [
# e.g. de or es-rAR (not es-AR)
loc.replace("-", "-r") if "-" in loc and loc[loc.index("-") + 1] != "r" else loc
for loc in locales
]
res = ", ".join(f'"{loc}"' for loc in locales)
sed = [
"sed",
"-i",
f"s/resourceConfigurations .*/resourceConfigurations += [{res}]/",
"app/build.gradle"
]
subprocess.run(sed, check=True)
with open("app/src/main/res/xml/locales_config.xml", "w") 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')
for loc in locales:
if loc != "en":
# e.g. de or en-AR (not es-rAR)
loc = loc.replace("-r", "-")
fh.write(f' <locale android:name="{loc}" />\n')
fh.write('</locale-config>\n')
+505 -136
View File
@@ -1,42 +1,490 @@
# Changelog
## v1.2.1 (2020-11-17)
## Unreleased - 132
Changes:
- Refine "Add card" workflow
- Validation flow improvements
## v2.26.0 - 131 (2023-09-14)
- Move "Archive mode" into "Display options" (previously "Show details") menu
- Android 13 per-app language support
- Embed privacy policy, changelog and license in the app
## v2.25.3 - 130 (2023-08-25)
- Minor UI fixes
- Fix valid from and expiry dates being reset when rotating the card editing screen
- Fix crash when rotating screen while the color picker is shown
- Stocard import fixes
## v2.25.2 - 129 (2023-07-27)
- Improved Catima importer (fixes cards missing when importing)
- Fix crash when rotating screen while setting valid from/expiry date
- Minor UI tweaks
## v2.25.1 - 128 (2023-07-17)
- Fix rare crash
## v2.25.0 - 127 (2023-07-09)
- Barcode rendering improvements
- Basic interoperability with external apps (Android 6.0+)
- Reorganized settings screen
- Fix importing from some browsers that add a trailing / to the share URL
## v2.24.2 - 126 (2023-06-18)
- Various RTL fixes
## v2.24.1 - 125 (2023-06-11)
- Deal more gracefully with missing header colours
## v2.24.0 - 124 (2023-06-10)
- Support selecting exactly which details to view in card overview
## v2.23.3 - 123 (2023-06-03)
- Minor UI improvements
- Fix new design not being usable on devices with square screens
## v2.23.2 - 122 (2023-05-30)
- Long-press card icon in view activity to change it
- Improve button styling in Groups screen
- Fix long barcode values causing barcode to scale down to nothing
## v2.23.1 - 121 (2023-05-27)
- Update used libraries
## v2.23.0 - 120 (2023-05-25)
- Complete redesign of main and loyalty card view screens
- Material You design for the settings screen
- Fix crash when using "Take a photo" with disabled camera app
## v2.22.1 - 119 (2023-04-14)
- Use Material You colours on more devices (Google library update)
## v2.22.0 - 118 (2023-03-18)
- Support setting start of card validity
- Fix Stocard import (Stocard's export format changed)
## v2.21.2 - 117 (2023-01-27)
- Remove unnecessary permissions
- Target Android 13
## v2.21.1 - 116 (2022-12-06)
- Fix quick spend dialog not allowing , separator
- Support loading image from file manager
## v2.21.0 - 115 (2022-11-06)
- Open image in gallery on long-press
- Apply Material style to dialogs
- Support creating card by sharing an image to Catima
- Add quick spend button to card screen
## v2.20.0 - 114 (2022-09-21)
- Add Monochrome icon for Android 13
- Improve first launch screen
- Fidme import fixes
## v2.19.0 - 113 (2022-08-14)
- Add previous and next buttons to the loyalty card view
- Fix foreground colour on edit button
- Replace floppy disk save icon with checkmark
## v2.18.2 - 112 (2022-07-29)
- Make the possibility to set a custom header more visible
## v2.18.1 - 111 (2022-07-24)
- Arabic language support
- Display archived card count in group overview
- Fix balance parsing bugs (made cards not savable in Arabic and other language with non-Western numbers)
- Fix custom theme not applying to main screen correctly
- Improve display of selected cards
- Fix crash when leaving cardview in RTL layouts for cards with expiry or balance
- Fix back arrow in card view pointing the wrong way in RTL layouts
## v2.17.1 - 109 (2022-06-28)
- Fix incorrect text colour on "No barcode" button
## v2.17.0 - 108 (2022-06-24)
- Add card duplication feature
- Don't allow choosing expiry before 1970 (they never worked anyway)
- Add support for archiving cards
- Move delete from edit to view
- Remove rotation lock icon in favour of a new rotation lock setting
## v2.16.3 - 107 (2022-04-15)
- Stocard import fixes
## v2.16.2 - 106 (2022-03-31)
- Fix some character sequences being shown as a single character
## v2.16.1 - 105 (2022-03-25)
- Fix gray block appearing on invalid value for barcode
- Stocard import fixes
## v2.16.0 - 104 (2022-03-09)
- Save card detail expansion state
- Minor UI fixes
## v2.15.2 - 103 (2022-02-11)
- Fix manual language selection not applying everywhere
- Fix crash in edit view on regionless locale
## v2.15.1 - 102 (2022-02-10)
- Various minor fixes
- Fix crash when using Norwegian translation
## v2.15.0 - 101 (2022-02-06)
- Fix cropper not using theme colour
- Fix minor theming issues
- Add pure black dark theme for OLED screens
## v2.14.1 - 100 (2022-01-15)
- Hide search, expand and sort icons until there is at least 1 card
- Various theming fixes
## v2.14.0 - 99 (2022-01-14)
- Material You redesign
## v2.13.1 - 98 (2022-01-09)
- Fix various TalkBack-related bugs
## v2.13.0 - 97 (2022-01-03)
- Fixed pressing the save button multiple times creating multiple entries
- Lower card header size when hiding details to fit even more cards
- Restructure edit screen
- Improve star icon contrast in main view
## v2.12.0 - 96 (2021-12-23)
- Add CODE 93 support
- Various minor bugfixes and improvements
## v2.11.2 - 95 (2021-12-04)
- Fix crash on sharing card
## v2.11.1 - 94 (2021-11-30)
- Fix blurriness of main screen letter icons
- Fix icons sometimes disappearing after selection
- Fix status bar icons possibly being invisible on Android 5
## v2.11.0 - 93 (2021-11-28)
- Add Catima to [Quick Access Device Controls](https://developer.android.com/guide/topics/ui/device-control)
- Fix some groups not showing up correctly in group management screen
## v2.10.0 - 92 (2021-11-20)
- New main screen layout
- Fix bottomsheet sizing issues when switching in and out of fullscreen
## v2.9.0 - 91 (2021-11-14)
- Improved group management support
- Support cropping images
- Fix image data loss when saving after rotating in edit view
- Ability to set a custom image as card icon
## v2.8.1 - 90 (2021-10-27)
- Fix dots in card view having the wrong colour when changing theme manually
- Fix crash in card view on rotation/theme change
- Fix flashing of cards list
- Fix text overlaying star icon
## v2.8.0 - 89 (2021-10-25)
- Fix swiping between groups not working on an empty group
- Allow password-protecting exports
- Improve usage of space for QR codes
- Save the last used zoom level per card
- Fix a crash when swiping right after a tap
## v2.7.3 - 88 (2021-10-10)
- Fix incorrect migration making first card become invisible
## v2.7.2 - 87 (2021-10-09)
- Fix regression breaking import/export
## v2.7.1 - 86 (2021-10-07)
- Improve search with spaces
## v2.7.0 - 85 (2021-10-05)
Android 4.4 is no longer supported starting with this release. If you want to use Catima on Android 4.4, please use version 2.6.1.
- Improved Android 12 support
- Improved about screen
- Search now ignores accents
## v2.6.1 - 84 (2021-09-25)
- Minor bugfixes and improvements
## v2.6.0 - 83 (2021-09-19)
- Support for changing the sorting order
- Prevent Out Of Memory on scanning large pictures for barcode
## v2.5.0 - 82 (2021-09-10)
- Improved support for screen readers
- Don't crash when trying to open a video from gallery
- Swipe support on loyalty card view screen
- Don't reset group on back button press
## v2.4.0 - 81 (2021-08-29)
- Improve card list for landscape and tablet display
- Add theming colour support (thanks, Subhashish Anand!)
- Don't close scan activity on camera error (so manual entry is still possible)
- Add all contributors to the about dialog
## v2.3.0 - 80 (2021-08-19)
- Fix images not imported from backup
- Option to override language
## v2.2.3 - 79 (2021-08-13)
- Fix widget creating different-looking shortcut than app shortcuts
- Replace default Android black screen with splash screen
## v2.2.2 - 78 (2021-08-08)
- Fix crash on rotation in loyalty card edit activity
## v2.2.1 - 77 (2021-08-07)
- Improve Stocard importer
- Fix importing Catima export with multiline note
- Scale card title in acceptable range
- Animation improvements
## v2.2.0 - 76 (2021-08-02)
- Make links in notes clickable
- Pre-select group the user is currently in when creating a new card
- Comma-separate group names in loyalty card view
- Fix maximize button appearing on no barcode
## v2.1.0 - 75 (2021-08-01)
- Fix selected colour in colour changing dialog
- Support for deleting multiple cards at once
- Fix possible ArithmeticException when resizing image
- Fix fullscreen is closed when rotating device
## v2.0.4 - 74 (2021-07-27)
- Fix shortcut creation
- Generate card-specific shortcut icon
- Fix ability to change loyalty card colour
## v2.0.3 - 73 (2021-07-25)
- Fix loading photos when editing existing card
## v2.0.2 - 72 (2021-07-25)
- Fix inability to configure photos in new loyalty card
## v2.0.1 - 71 (2021-07-21)
- Several minor translation and UI fixes
- Fix crash in import/sharing loyalty card on Android 6
## v2.0 - 70 (2021-07-14)
- BREAKING CHANGE: The backup format changed, see https://github.com/TheLastProject/Catima/wiki/Export-format
- BREAKING CHANGE: The URL sharing format changed, see https://github.com/TheLastProject/Catima/wiki/Card-sharing-URL-format
- Make it possible to enable or disable the flashlight while scanning
- Add UPC-E support
- Support adding a front and back photo to each card
- Support importing password-protected zip files
- Support importing from Stocard (Beta)
- Fix useless whitespace in notes from Fidme import
- Support new Voucher Vault export format
- Fix Floating Action Buttons being behind other UI elements on Android 4
- Fix loyalty card viewer appbar top margin
## v1.14.1 - 69 (2021-06-14)
- Add missing barcode ID to export
- Don't show update barcode dialog if value is the same as card ID
- Add Finnish translation
## v1.14 - 68 (2021-06-07)
- Support new PDF417 export from Voucher Vault
- Support copying multiple barcodes at once
- Support sharing multiple loyalty cards at once
- Ask to update barcode value if card ID changes
## v1.13 - 67 (2021-04-10)
- Add option to set a separate barcode value from card ID
- Simplify font sizing configuration
- Several small UI fixes
- Use letter icon for shortcuts too
- Always show all barcode types in manual entry
- Remove privacy policy first start dialog
## v1.12 - 66 (2021-03-30)
- Support importing [Fidme](https://play.google.com/store/apps/details?id=fr.snapp.fidme) exports
- Allow importing a card from a picture stored in the user's Android gallery
- Fix multiline note cutoff
- Change "Thank you" text on privacy dialog to "Accept" because Huawei is overly pedantic
## v1.11 - 64 (2021-03-21)
- Add privacy policy dialog on first start (required by Huawei)
## v1.10 - 63 (2021-03-07)
- Support importing [Voucher Vault](https://github.com/tim-smart/vouchervault/) exports
- Option to keep the screen on while viewing a loyalty card
- Option to suspend the lock screen while viewing a loyalty card
## v1.9.2 - 62 (2021-02-24)
- Fix parsing balance for countries using space as separator
## v1.9.1 - 61 (2021-02-23)
- Improve balance parsing logic
- Fix currency decimal display on main screen
## v1.9 - 59 (2021-02-22)
- Add balance support
- Reorganize barcode tab of edit view
## v1.8.1 - 58 (2021-02-12)
- Fix Crash on versions before Android 7
## v1.8 - 57 (2021-01-28)
- Add support for scaling the barcode when moving to top to fit even more small scanners
- Fix bottom sheet jumping after switching to fullscreen
- Make header in loyalty card view small in landscape mode
- Fix cards not staying in group when group gets renamed
## v1.7.1 - 56 (2021-01-18)
- Fix crash on switching to barcode tab in edit view if there is no barcode
## v1.7.0 - 55 (2021-01-18)
- Separate edit UI in tabs to make it feel more spacious
- Add expiry field support
## v1.6.2 - 54 (2021-01-04)
- Fix edit button or more info bottom sheet drawing over barcode ID
## v1.6.1 - 64 (2020-12-16)
- Fix regression causing manual barcode entry to not be saved
## v1.6.0 - 52 (2020-12-15)
- Automatically focus text field when creating or editing a group
- Fix blurry icons (use SVG everywhere)
- Always open camera but add manual scan button to camera view
## v1.5.1 - 51 (2020-12-03)
- Fix bottomsheet background being transparent
## v1.5.0 - 50 (2020-12-03)
- Improve contrast by always using white text on red buttons
- Draggable bottom sheet in loyalty card view
## v1.4.1 - 49 (2020-12-01)
- Improved translations
- Small UI fixes
## v1.4.0 - 48 (2020-11-28)
- Move About screen into its own activity
- Ask user if they want to use their camera or manually enter ID on add/edit card
- Make group ordering manual instead of forced alphabetically
## v1.3.0 - 47 (2020-11-22)
- Always show all import/export options and show a toast on actual issues (improves compat with XPrivacyLua)
- Ask for confirmation when leaving edit view after making changes without saving
## v1.2.2 - 46 (2020-11-19)
- Remember active group tab between screens and sessions
## v1.2.1 - 45 (2020-11-17)
- Fix home screen swiping triggering during vertical swipes too
## v1.2.0 (2020-11-17)
Changes:
## v1.2.0 - 44 (2020-11-17)
- Add swiping between groups on the home screen
- Fix crash with cards lacking header colour
## v1.1.0 (2020-11-11)
Changes:
## v1.1.0 - 43 (2020-11-11)
- Improved edit UI
- Removed header text colour option (now automatically generated based on brightness)
- Updated translations
## v1.0.1 (2020-11-07)
Changes:
## v1.0.1 - 42 (2020-11-07)
- Fix crash in search with no groups
## v1.0 (2020-11-06)
Changes:
## v1.0 - 41 (2020-11-06)
- Added rounded edges to card icons on main overview
- Added support for grouping entries
## v0.29 (2020-10-29)
Changes:
## v0.29 - 40 (2020-10-29)
- Rebrand to Catima
- Removed intro
@@ -45,31 +493,23 @@ Changes:
- Add favourites support
- Fix disabled auto-rotate being ignored
## v0.28 (2020-03-09)
Changes:
## v0.28 - 39 (2020-03-09)
- Fix barcode centering when exiting full screen ([#351](https://github.com/brarcher/loyalty-card-locker/pull/351))
- Allow backup export location to be selected ([#352](https://github.com/brarcher/loyalty-card-locker/pull/352))
- Update translations ([#357](https://github.com/brarcher/loyalty-card-locker/pull/357)) & ([#362](https://github.com/brarcher/loyalty-card-locker/pull/362))
## v0.27 (2020-01-26)
Changes:
## v0.27 - 38 (2020-01-26)
- Tapping on a barcode now moves it to the top of the screen ([#348](https://github.com/brarcher/loyalty-card-locker/pull/348))
- Add white space around barcodes to improve scanning in dark mode ([#328](https://github.com/brarcher/loyalty-card-locker/issues/328))
- Fix swapped import buttons. ([#346](https://github.com/brarcher/loyalty-card-locker/pull/346))
## v0.26.1 (2020-01-09)
Changes:
## v0.26.1 - 37 (2020-01-09)
- Fix issue with sharing cards without background color ([#343](https://github.com/brarcher/loyalty-card-locker/pull/343))
## v0.26 (2020-01-05)
Changes:
## v0.26 - 36 (2020-01-05)
- Add ability to search for a card ([#320](https://github.com/brarcher/loyalty-card-locker/pull/320))
- Add ability to share and receive loyalty cards ([#321](https://github.com/brarcher/loyalty-card-locker/pull/321))
@@ -86,57 +526,41 @@ Changes:
- Polish
- Russian
## v0.25.4 (2019-10-04)
Changes:
## v0.25.4 - 35 (2019-10-04)
- Enable app backups
- Update French and Slovenian translations
## v0.25.3 (2019-03-02)
Changes:
## v0.25.3 - 34 (2019-03-02)
- Update Russian translations
## v0.25.2 (2019-01-05)
Changes:
## v0.25.2 - 33 (2019-01-05)
- Update and add translations
## v0.25.1 (2018-10-14)
Changes:
## v0.25.1 - 32 (2018-10-14)
- Fix creating new card by manually entering barcode ([issue #272](https://github.com/brarcher/loyalty-card-locker/issues/272))
## v0.25 (2018-10-07)
Changes:
## v0.25 - 31 (2018-10-07)
- Sort card list case insensitive ([pull #266](https://github.com/brarcher/loyalty-card-locker/pull/266))
- Add setting to lock orientation for all cards ([pull #269](https://github.com/brarcher/loyalty-card-locker/pull/269)
## v0.24 (2018-07-31)
Changes:
## v0.24 - 30 (2018-07-31)
- Add a setting to control screen brightness when displaying a barcode ([pull #259](https://github.com/brarcher/loyalty-card-locker/pull/259))
- Add Greek translations ([pull #252](https://github.com/brarcher/loyalty-card-locker/pull/252))
- Add Slovenian translations ([pull #260](https://github.com/brarcher/loyalty-card-locker/pull/260))
- Update translations ([pull #260](https://github.com/brarcher/loyalty-card-locker/pull/260), [pull #254](https://github.com/brarcher/loyalty-card-locker/pull/254))
## v0.23.4 (2018-05-12)
Changes:
## v0.23.4 - 29 (2018-05-12)
- Fix Spanish translations ([pull #244](https://github.com/brarcher/loyalty-card-locker/pull/244))
- Update translations ([pull #244](https://github.com/brarcher/loyalty-card-locker/pull/244))
## v0.23.3 (2018-05-05)
Changes:
## v0.23.3 - 28 (2018-05-05)
- Added translations
- Polish ([pull #232](https://github.com/brarcher/loyalty-card-locker/pull/232))
@@ -144,87 +568,63 @@ Changes:
- Slovak ([pull #232](https://github.com/brarcher/loyalty-card-locker/pull/232))
- Updated translations ([pull #239](https://github.com/brarcher/loyalty-card-locker/pull/239))
## v0.23.2 (2018-03-11)
Changes:
## v0.23.2 - 27 (2018-03-11)
- Reduce min SDK from 17 to 15. ([pull #226](https://github.com/brarcher/loyalty-card-locker/pull/226))
- Remove usage of legacy apache library, used only in unit tests but no longer needed. ([pull #225](https://github.com/brarcher/loyalty-card-locker/pull/225))
## v0.23.1 (2018-03-07)
Changes:
## v0.23.1 - 26 (2018-03-07)
- Prevent crash when rendering a barcode exhausts the application's memory. ([pull #219](https://github.com/brarcher/loyalty-card-locker/pull/219))
## v0.23 (2018-02-28)
Changes:
## v0.23 - 25 (2018-02-28)
- Reduce space in header when viewing a card. ([pull #213](https://github.com/brarcher/loyalty-card-locker/pull/213))
- Disable beep when scanning a barcode. ([pull #216](https://github.com/brarcher/loyalty-card-locker/pull/216))
## v0.22 (2018-02-19)
Changes:
## v0.22 - 24 (2018-02-19)
- Update translations. ([pull #208](https://github.com/brarcher/loyalty-card-locker/pull/208))
- Barcode rendering updates: ([pull #209](https://github.com/brarcher/loyalty-card-locker/pull/209))
- Reload card view activity when screen is rotated, so barcode image is correct size.
- Render 1D barcodes in a larger space, allowing them to better fill the screen.
## v0.21 (2018-02-17)
Changes:
## v0.21 - 23 (2018-02-17)
- Add quiet space at the start/end of barcodes. ([pull #200](https://github.com/brarcher/loyalty-card-locker/pull/200))
- Add options to configure the colors used for the store name font and background. ([pull #203](https://github.com/brarcher/loyalty-card-locker/pull/203))
- Add options to adjust font sizes on the card listing page and single card page. ([pull #204](https://github.com/brarcher/loyalty-card-locker/pull/204))
## v0.20 (2018-02-10)
Changes:
## v0.20 - 22 (2018-02-10)
- Changes to Card view to display the note, allow the card ID to take multiple lines, and show the store name. ([pull #197](https://github.com/brarcher/loyalty-card-locker/pull/197))
## v0.19 (2018-02-01)
Changes:
## v0.19 - 21 (2018-02-01)
- Improved layout for card list. ([pull #188](https://github.com/brarcher/loyalty-card-locker/pull/188))
- Improved layout when viewing a card. ([pull #190](https://github.com/brarcher/loyalty-card-locker/pull/190))
## v0.18.1 (2018-01-24)
Changes:
## v0.18.1 - 20 (2018-01-24)
- Workaround crash during install on some Android versions (likely Android 5 and below). ([pull #184](https://github.com/brarcher/loyalty-card-locker/pull/184))
## v0.18 (2018-01-19)
Changes:
## v0.18 - 19 (2018-01-19)
- Fix crash when importing certain types of corrupted CSV files. ([pull #177](https://github.com/brarcher/loyalty-card-locker/pull/177))
- Fix importing backups directly from the file system. ([pull #180](https://github.com/brarcher/loyalty-card-locker/pull/180))
- Fix importing backups from certain types of content providers. ([pull #179](https://github.com/brarcher/loyalty-card-locker/pull/179))
## v0.17 (2018-01-11)
Changes:
## v0.17 - 18 (2018-01-11)
- Fix issue on Android SDK 24+ where using the file chooser import option would cause a crash. ([pull #170](https://github.com/brarcher/loyalty-card-locker/pull/170))
- New icon and color scheme. ([pull #171](https://github.com/brarcher/loyalty-card-locker/pull/171))
## v0.16 (2017-11-29)
Changes:
## v0.16 - 17 (2017-11-29)
- Add support for adding loyalty card shortcuts from the launcher/homescreen. ([pull #161](https://github.com/brarcher/loyalty-card-locker/pull/161))
- Remove support for adding loyalty card shortcuts from the app itself. This removes the need for the shortcut permission. ([pull #163](https://github.com/brarcher/loyalty-card-locker/pull/163))
## v0.15 (2017-11-25)
Changes:
## v0.15 - 16 (2017-11-25)
- Add support for adding shortcuts to home screen when adding or editing a card. ([pull #155](https://github.com/brarcher/loyalty-card-locker/pull/155))
- Remove widget, as it was a poor substitute for shortcuts. ([pull #155](https://github.com/brarcher/loyalty-card-locker/pull/155))
@@ -232,37 +632,27 @@ Changes:
- Report more accurate mime type when exporting backup data. ([pull #156](https://github.com/brarcher/loyalty-card-locker/pull/156))
- Fix bug where a card could not be edited. ([pull #155](https://github.com/brarcher/loyalty-card-locker/pull/155))
## v0.14 (2017-10-26)
Changes:
## v0.14 - 15 (2017-10-26)
- Add support for app shortcuts (Android 7.1+), where the most recently used cards will appear as shortcuts. ([pull #145](https://github.com/brarcher/loyalty-card-locker/pull/145))
- Add a widget which works like a pinned app shortcut, to support devices which run below Android 7.1. ([pull #142](https://github.com/brarcher/loyalty-card-locker/pull/142))
## v0.13 (2017-07-25)
Changes:
## v0.13 - 14 (2017-07-25)
- Add screen rotation lock menu option when displaying a card. If locked, the screen will transition to its "natural" orientation and further screen rotation will be blocked. ([pull #128](https://github.com/brarcher/loyalty-card-locker/pull/128))
- If a card is selected from the main screen but cannot be loaded, the application fails gracefully and posts a message. ([pull #132](https://github.com/brarcher/loyalty-card-locker/pull/132))
- Fix case where layout IDs for intro wizard could not be found. ([pull #128](https://github.com/brarcher/loyalty-card-locker/pull/128))
## v0.12 (2017-07-16)
Changes:
## v0.12 - 13 (2017-07-16)
- A change in v0.11 reduced the memory usage of barcode drawing, but affected the barcode dimensions. This is now changed to maintain the barcode dimensions while reducing memory usage. ([pull #126](https://github.com/brarcher/loyalty-card-locker/pull/126))
- Update German and French translations. ([pull #122](https://github.com/brarcher/loyalty-card-locker/pull/122), [pull #124](https://github.com/brarcher/loyalty-card-locker/pull/124), [pull #125](https://github.com/brarcher/loyalty-card-locker/pull/125))
## v0.11.1 (2017-06-29)
Changes:
## v0.11.1 - 12 (2017-06-29)
- Prevent a crash when rotation the screen in the first run intro wizard.
## v0.11 (2017-06-26)
Improvements:
## v0.11 - 11 (2017-06-26)
- When editing a card ID, pre-populate the existing ID to start. ([pull #94](https://github.com/brarcher/loyalty-card-locker/pull/94))
- Limit the width of generated barcodes to reduce memory usage and out of memory errors. ([pull #103](https://github.com/brarcher/loyalty-card-locker/pull/103))
@@ -270,15 +660,13 @@ Improvements:
- Change the color scheme to be softer and compatible with the app icon, and change the layout when viewing a card to be cleaner. ([pull #107](https://github.com/brarcher/loyalty-card-locker/pull/107))
- Add an intro wizard which launches on the app's first launch. ([pull #108](https://github.com/brarcher/loyalty-card-locker/pull/108))
## v0.10 (2017-02-12)
Improvements:
## v0.10 - 10 (2017-02-12)
- Changed the default import/export filename. ([pull #84](https://github.com/brarcher/loyalty-card-locker/pull/84))
- Correct string on the import/export page. ([pull #87](https://github.com/brarcher/loyalty-card-locker/pull/87))
- Improve layout of card view page. The text should be easier to read, and is selectable with a long click. ([pull #91](https://github.com/brarcher/loyalty-card-locker/pull/91))
## v0.9 (2017-01-17)
## v0.9 - 9 (2017-01-17)
The "Locker" part of the name was not intuitive. To help remedy this a new application icon was created by betsythefc which better represents the purpose of the application: to store loyalty cards which use barcodes. Along with this new icon the name of the application has been changed to "Loyalty Card Keychain".
@@ -288,55 +676,36 @@ Additional features/improvements:
- Translations for Lithuanian added. ([pull #62](https://github.com/brarcher/loyalty-card-locker/pull/62))
- Translations for French added. ([pull #80](https://github.com/brarcher/loyalty-card-locker/pull/80))
## v0.8 (2016-11-22)
New features/improvements:
## v0.8 - 8 (2016-11-22)
- Screen brightness increased to its maximum when displaying a card, to help barcode scanners successfully capture the barcode. ([pull #54](https://github.com/brarcher/loyalty-card-locker/pull/54))
- Add a delete confirmation when deleting a card. ([pull #55](https://github.com/brarcher/loyalty-card-locker/pull/55))
- Add translations for German ([pull #57](https://github.com/brarcher/loyalty-card-locker/pull/57)) and Czech ([pull #58](https://github.com/brarcher/loyalty-card-locker/pull/58)).
- Clarification change for Italian translation. ([pull #66](https://github.com/brarcher/loyalty-card-locker/pull/66))
## v0.7 (2016-07-14)
New features/improvements:
## v0.7 - 7 (2016-07-14)
- Long-click of a card brings up option to copy card ID to the clipboard. ([pull #49](https://github.com/brarcher/loyalty-card-locker/issues/49))
- Back button on Import/Export view now works, moving user to main view
Bug fixes:
- Back button on Input/Export view now works, moving user to main view
## v0.6 (2016-05-23)
New features/improvements:
## v0.6 - 6 (2016-05-23)
- Allow user to enter barcode manually. If a user elects to enter a barcode manually, a list of all valid and supported barcode images is displayed. The user then may select the barcode image which matches what the user wants. [issue #33](https://github.com/brarcher/loyalty-card-locker/issues/33), [pull #44](https://github.com/brarcher/loyalty-card-locker/pull/44)
Bug fixes:
- Resolve issue where some displayed barcodes were blurry. ([issue #37](https://github.com/brarcher/loyalty-card-locker/issues/37))
## v0.5 (2016-05-16)
New features/improvements:
## v0.5 - 5 (2016-05-16)
- An about dialog can be opened from the main screen, which gives details about the application and project on GitHub ([issue #19](https://github.com/brarcher/loyalty-card-locker/issues/19))
- Allow loyalty card information to be imported from/exported to a CSV file in external storage ([issue #36](https://github.com/brarcher/loyalty-card-locker/issues/36), [issue #20](https://github.com/brarcher/loyalty-card-locker/issues/20))
## v0.4 (2016-04-09)
New features/improvements:
## v0.4 - 4 (2016-04-09)
- Dutch translation
- Allow name field to be editable after adding loyalty card
- Add an optional note field
Bug fixes:
- Resolve all issues identified by FindBugs and require all FindBugs issues be resolved prior to pull request acceptance
## v0.3 (2016-02-11)
## v0.3 - 3 (2016-02-11)
- Now officially supports the following list of 1D and 2D barcodes:
- AZTEC
@@ -353,13 +722,13 @@ Bug fixes:
- Generated barcodes are larger, easier to scan from a scanning device
## v0.2 (2016-02-07)
## v0.2 - 2 (2016-02-07)
- Italian translations
- Support for all 1D barcode types. (Originally only product 1D barcodes were supported)
- Add required camera permission, which was initially missing.
## v0.1 (2016-01-30)
## v0.1 - 1 (2016-01-30)
- Ability to create/edit/delete loyalty cards
- Capture barcode of loyalty card using a camera
+27 -14
View File
@@ -1,14 +1,27 @@
How to Submit Patches to the Loyalty Card Keychain Project
How to Submit Patches to the Catima Project
===============================================================================
https://github.com/brarcher/budget-watch
https://github.com/TheLastProject/Catima
This document is intended to act as a guide to help you contribute to the
Loyalty Card Keychain 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.
## Test Your Code
## Translation Changes
Translation changes are managed through [Weblate](https://hosted.weblate.org/projects/catima/).
Please do not supply translation updates directly through GitHub.
Weblate requires an account to translate changes, so please log in before
you start translating.
While using Weblate, please do not ignore any of its warnings. They exist
for good reason.
## Code Changes
### Test Your Code
There are four possible tests you can run to verify your code. The first
is unit tests, which check the basic functionality of the application, and
@@ -21,21 +34,21 @@ These are the Android lint checker, run using:
# ./gradlew lintRelease
and FindBugs, run using:
and SpotBugs, run using:
# ./gradlew findbugs
# ./gradlew spotbugsRelease
The final check is by testing the application on a live device and verifying
the basic functionality works as expected.
## Make Sure Your Code is Tested
### Make Sure Your Code is Tested
The Loyalty Card Keychain code uses a fair number of unit tests to verify that
The Catima code uses a fair number of unit tests to verify that
the basic functionality is working. Submissions which add functionality
or significantly change the existing code should include additional tests
to verify the proper operation of the proposed changes.
## Explain Your Work
### Explain Your Work
At the top of every patch you should include a description of the problem you
are trying to solve, how you solved it, and why you chose the solution you
@@ -44,7 +57,7 @@ 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
### 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
@@ -82,10 +95,10 @@ your real name, saying:
Signed-off-by: Random J Developer <random@developer.example.org>
## Submit Patch(es) for Review
### Submit Patch(es) for Review
Finally, you will need to submit your patches so that they can be reviewed
and potentially merged into the main Loyalty Card Keychain repository. The preferred
way to do this is to submit a Pull Request to the Loyalty Card Keychain project.
Changes need to apply cleanly onto the master branch and pass all
and potentially merged into the main Catima repository. The preferred
way to do this is to submit a Pull Request to the Catima project.
Changes need to apply cleanly onto the main branch and pass all
unit tests and produce no errors during static analysis.
+3
View File
@@ -0,0 +1,3 @@
github: TheLastProject
custom:
- "https://paypal.me/sylviavanos"
+123 -86
View File
@@ -1,58 +1,80 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
CFPropertyList (3.0.6)
rexml
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.1.0)
aws-partitions (1.388.0)
aws-sdk-core (3.109.1)
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.239.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.39.0)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.83.1)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sdk-s3 (1.134.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.2.2)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.0.3)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
declarative-option (0.1.0)
digest-crc (0.6.1)
rake (~> 13.0)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
emoji_regex (3.2.0)
excon (0.78.0)
faraday (1.1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.103.0)
faraday (1.10.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday_middleware (1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
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 (~> 1.0)
fastimage (2.2.0)
fastlane (2.165.0)
fastimage (2.2.7)
fastlane (2.215.1)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.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
commander-fastlane (>= 4.4.6, < 5.0.0)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
@@ -61,20 +83,23 @@ GEM
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-api-client (>= 0.37.0, < 0.39.0)
google-cloud-storage (>= 1.15.0, < 2.0.0)
highline (>= 1.7.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
@@ -82,73 +107,83 @@ GEM
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3)
google-api-client (0.38.0)
google-apis-androidpublisher_v3 (0.49.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.1)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.9)
httpclient (>= 2.8.1, < 3.0)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.12)
google-cloud-core (1.5.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-cloud-errors (~> 1.0)
google-cloud-env (1.4.0)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.0.1)
google-cloud-storage (1.29.1)
addressable (~> 2.5)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-api-client (~> 0.33)
google-cloud-core (~> 1.2)
googleauth (~> 0.9)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (0.14.0)
faraday (>= 0.17.3, < 2.0)
googleauth (1.8.0)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.14)
highline (1.7.10)
http-cookie (1.0.3)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.4.0)
json (2.3.1)
jwt (2.2.2)
memoist (0.16.2)
mini_magick (4.10.1)
mini_mime (1.0.2)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
mini_magick (4.12.0)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.0.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
naturally (2.2.0)
os (1.1.1)
plist (3.5.0)
public_suffix (4.0.6)
rake (13.0.1)
representable (3.0.4)
naturally (2.2.1)
optparse (0.1.1)
os (1.1.4)
plist (3.7.0)
public_suffix (5.0.3)
rake (13.0.6)
representable (3.2.0)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.6)
rouge (2.0.7)
ruby2_keywords (0.0.2)
rubyzip (2.3.0)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.14.0)
addressable (~> 2.3)
faraday (>= 0.17.3, < 2.0)
signet (0.18.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
simctl (1.6.10)
CFPropertyList
naturally
slack-notifier (2.3.2)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
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-spinner (0.9.3)
@@ -156,18 +191,20 @@ GEM
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
unf_ext (0.0.8.2)
unicode-display_width (2.4.2)
webrick (1.8.1)
word_wrap (1.0.0)
xcodeproj (1.19.0)
xcodeproj (1.22.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)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
@@ -177,4 +214,4 @@ DEPENDENCIES
fastlane
BUNDLED WITH
2.1.4
2.3.26
+18
View File
@@ -0,0 +1,18 @@
**Last updated**
August 30 2023
# Privacy Policy
Catima does not collect or transmit any personal information.
To ensure correct app functionality, we require access to the following:
- Camera: We need access to your camera to be able to scan barcodes. The app can still be used when camera access is denied, but you will have to manually type the barcode information.
- Storage (Android 5 and 6 only): We need access to your device storage to create or import backups. The app can still be used when storage access is denied, but you will not be able to create or import backups.
Catima offers a feature to share cards with other users. All the relevant data is in the generated shareable URLs and never transmitted to our servers. When viewed through catima.app, the data in the URL is rendered using client-side Javascript to further ensure no data is ever transmitted to us.
# Changes
This Privacy Policy may be updated from time to time for any reason. We will notify you of any changes to our Privacy Policy by posting the new Privacy Policy to https://catima.app/privacy-policy/. A snapshot of the Privacy Policy is available within the Catima app, though it may be outdated. When the Privacy Policy on the website and in the app differ, the website should be considered leading. You are advised to consult the Privacy Policy regularly for any changes, as continued use is deemed approval of all changes.
# Contact us
If you have any questions regarding privacy while using the Application, or have questions about our practices, please contact us via email at catima.g9ex3@hackerchick.me.
+13
View File
@@ -0,0 +1,13 @@
# Security Policy
Catima is designed to use as little permissions as possible to limit both the attack surface as well as the damage that can be done when abusing a security flaw.
## Supported Versions
Only the most recent stable release is supported.
## Reporting a Vulnerability
Security vulnerabilities can be reported through [GitHub Security Advisories](https://github.com/CatimaLoyalty/Android/security/advisories) or [the contact info written on my personal website](https://sylviavanos.nl/#contact). Currently, Matrix is the only end-to-end encrypted option.
Please note that only security vulnerabilities in Catima should be reported as stated above. For other issues, including antivirus false positives and malicious applications trying to trick people into granting them Catima's "Read Cards" permission, please use [regular issues](https://github.com/CatimaLoyalty/Android/issues).
-1
View File
@@ -1 +0,0 @@
/build
+126 -41
View File
@@ -1,80 +1,165 @@
apply plugin: 'com.android.application'
apply plugin: 'findbugs'
import com.github.spotbugs.snom.SpotBugsTask
findbugs {
sourceSets = []
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 {
compileSdkVersion 29
compileSdk 33
defaultConfig {
applicationId "me.hackerchick.catima"
minSdkVersion 16
targetSdkVersion 29
versionCode 44
versionName "1.2.0"
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"]
//testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
flavorDimensions "version"
productFlavors {
fdroid {
dimension "version"
}
screengrab {
dimension "version"
applicationIdSuffix = ".screengrab"
}
}
buildTypes {
release {
minifyEnabled false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue "string", "app_name", "Catima"
}
debug {
applicationIdSuffix ".debug"
resValue "string", "app_name", "Catima Debug"
}
}
lintOptions {
disable "GoogleAppIndexingWarning"
disable "ButtonStyle"
disable "AlwaysShowAction"
disable "MissingTranslation"
disable "MissingPrefix"
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 {
includeAndroidResources = true
all {
testLogging {
events 'started', 'passed', 'skipped', 'failed'
}
}
includeAndroidResources true
}
}
lint {
lintConfig file('lint.xml')
}
namespace 'protect.card_locker'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.journeyapps:zxing-android-embedded:3.5.0@aar'
implementation 'com.google.zxing:core:3.3.0'
implementation 'org.apache.commons:commons-csv:1.5'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.jaredrummler:colorpicker:1.0.2'
implementation group: 'com.google.guava', name: 'guava', version: '20.0'
implementation 'com.github.apl-devs:appintro:v4.2.0'
implementation "com.vanniktech:vntnumberpickerpreference:1.0.0"
implementation 'androidx.cardview:cardview:1.0.0'
testImplementation 'junit:junit:4.12'
testImplementation "org.robolectric:robolectric:4.0.2"
// 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'
// Screenshots
testImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
testImplementation 'com.android.support.test:rules:1.0.2'
testImplementation 'com.android.support.test:runner:1.0.2'
testImplementation 'tools.fastlane:screengrab:2.1.1'
}
task findbugs(type: FindBugs, dependsOn: 'assembleDebug') {
tasks.withType(SpotBugsTask) {
description 'Run findbugs'
description 'Run spotbugs'
group 'verification'
classes = fileTree('build/intermediates/javac/debug/compileDebugJavaWithJavac/classes')
source = fileTree('src/main/java')
classpath = files()
effort = 'max'
excludeFilter = file("./config/findbugs/exclude.xml")
//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)
}
}
}
@@ -6,5 +6,8 @@
<Match>
<Class name="~.*Manifest\$.*"/>
</Match>
<Match>
<Class name="~.*Binding" />
</Match>
</FindBugsFilter>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="AlwaysShowAction" severity="ignore" />
<issue id="ButtonStyle" severity="ignore" />
<issue id="GoogleAppIndexingWarning" severity="ignore" />
<issue id="MissingTranslation" severity="ignore" />
<issue id="MissingPrefix" severity="ignore" />
</lint>
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":41,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
@@ -1,15 +0,0 @@
package protect.card_locker;
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application>
{
public ApplicationTest()
{
super(Application.class);
}
}
+128 -37
View File
@@ -1,13 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="protect.card_locker"
xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission
android:name="android.permission.CAMERA"/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<permission
android:description="@string/permissionReadCardsDescription"
android:icon="@drawable/ic_launcher_foreground"
android:label="@string/permissionReadCardsLabel"
android:name="${applicationId}.READ_CARDS"
android:protectionLevel="dangerous" />
<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="23" />
<uses-feature
android:name="android.hardware.camera"
@@ -22,76 +27,162 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:theme="@style/AppTheme"
android:localeConfig="@xml/locales_config">
<activity
android:name="protect.card_locker.MainActivity"
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
android:theme="@style/Theme.App.Starting">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
<activity
android:name=".AboutActivity"
android:label="@string/about"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".ManageGroupsActivity"
android:label="@string/groups"
android:theme="@style/AppTheme.NoActionBar">
</activity>
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".ManageGroupActivity"
android:label="@string/group_edit"
android:theme="@style/AppTheme.NoActionBar"/>
<activity
android:name=".LoyaltyCardViewActivity"
android:exported="true"
android:theme="@style/AppTheme.NoActionBar"
android:label=""
android:windowSoftInputMode="stateHidden"
android:exported="true"/>
android:windowSoftInputMode="stateHidden" />
<activity
android:name=".LoyaltyCardEditActivity"
android:exported="true"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden"
android:exported="true">
<intent-filter android:label="@string/app_name">
android:windowSoftInputMode="stateHidden">
<intent-filter
android:autoVerify="true"
android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "https://github.com/brarcher/loyalty-card-locker/” -->
<data android:scheme="https"
android:host="@string/intent_import_card_from_url_host"
android:pathPrefix="@string/intent_import_card_from_url_path_prefix" />
<data android:scheme="https"
android:host="@string/intent_import_card_from_url_host_old"
android:pathPrefix="@string/intent_import_card_from_url_path_prefix_old" />
<!-- Main card sharing URIs -->
<data android:scheme="http" />
<data android:scheme="https" />
<data
android:host="@string/intent_import_card_from_url_host_catima_app"
android:pathPrefix="@string/intent_import_card_from_url_path_prefix_catima_app" />
</intent-filter>
<intent-filter android:label="@string/app_name">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Old card sharing URIs -->
<data android:scheme="http" />
<data android:scheme="https" />
<data
android:host="@string/intent_import_card_from_url_host_thelastproject"
android:pathPrefix="@string/intent_import_card_from_url_path_prefix_thelastproject" />
<data
android:host="@string/intent_import_card_from_url_host_brarcher"
android:pathPrefix="@string/intent_import_card_from_url_path_prefix_brarcher" />
</intent-filter>
</activity>
<activity
android:name=".ScanActivity"
android:label="@string/scanCardBarcode"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".BarcodeSelectorActivity"
android:label="@string/selectBarcodeTitle"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden"/>
android:windowSoftInputMode="stateHidden" />
<activity
android:name=".preferences.SettingsActivity"
android:label="@string/settings"/>
android:label="@string/settings"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".ImportExportActivity"
android:label="@string/importExport"
android:theme="@style/AppTheme.NoActionBar"/>
android:exported="true"
android:theme="@style/AppTheme.NoActionBar">
<!-- ZIP Intent Filter -->
<intent-filter
android:label="@string/importCards">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/zip" />
<data android:scheme="content"/>
<data android:host="*"/>
</intent-filter>
<!-- JSON Intent Filter -->
<intent-filter
android:label="@string/importCards">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/json" />
<data android:scheme="content"/>
<data android:host="*"/>
</intent-filter>
<!-- CSV Intent Filter -->
<intent-filter
android:label="@string/importCards">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content"/>
<data android:host="*" />
<data android:mimeType="text/comma-separated-values" />
</intent-filter>
</activity>
<activity
android:name=".CardShortcutConfigure"
android:exported="true"
android:label="@string/cardShortcut"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".UCropWrapper"
android:theme="@style/AppTheme.NoActionBar" />
<provider
android:name=".contentprovider.CardsContentProvider"
android:authorities="${applicationId}.contentprovider.cards"
android:exported="true"
android:readPermission="${applicationId}.READ_CARDS"/>
<provider
android:name="androidx.core.content.FileProvider"
android:grantUriPermissions="true"
android:authorities="${applicationId}"
android:exported="false"
android:authorities="${applicationId}">
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths"/>
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">
<intent-filter>
<action android:name="android.service.controls.ControlsProviderService" />
</intent-filter>
</service>
</application>
</manifest>
@@ -0,0 +1,142 @@
package protect.card_locker;
import android.os.Bundle;
import android.text.Spanned;
import android.view.MenuItem;
import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.StringRes;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import protect.card_locker.databinding.AboutActivityBinding;
public class AboutActivity extends CatimaAppCompatActivity {
private static final String TAG = "Catima";
private AboutActivityBinding binding;
private AboutContent content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = AboutActivityBinding.inflate(getLayoutInflater());
content = new AboutContent(this);
setTitle(content.getPageTitle());
setContentView(binding.getRoot());
setSupportActionBar(binding.toolbar);
enableToolbarBackButton();
TextView copyright = binding.creditsSub;
copyright.setText(content.getCopyrightShort());
TextView versionHistory = binding.versionHistorySub;
versionHistory.setText(content.getVersionHistory());
binding.versionHistory.setTag("https://catima.app/changelog/");
binding.translate.setTag("https://hosted.weblate.org/engage/catima/");
binding.license.setTag("https://github.com/CatimaLoyalty/Android/blob/main/LICENSE");
binding.repo.setTag("https://github.com/CatimaLoyalty/Android/");
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");
boolean installedFromGooglePlay = Utils.installedFromGooglePlay(this);
// Hide Google Play rate button if not on Google Play
binding.rate.setVisibility(installedFromGooglePlay ? View.VISIBLE : View.GONE);
// Hide donate button on Google Play (Google Play doesn't allow donation links)
binding.donate.setVisibility(installedFromGooglePlay ? View.GONE : View.VISIBLE);
bindClickListeners();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
content.destroy();
clearClickListeners();
binding = null;
}
private void bindClickListeners() {
binding.versionHistory.setOnClickListener(this::showHistory);
binding.translate.setOnClickListener(this::openExternalBrowser);
binding.license.setOnClickListener(this::showLicense);
binding.repo.setOnClickListener(this::openExternalBrowser);
binding.privacy.setOnClickListener(this::showPrivacy);
binding.reportError.setOnClickListener(this::openExternalBrowser);
binding.rate.setOnClickListener(this::openExternalBrowser);
binding.donate.setOnClickListener(this::openExternalBrowser);
binding.credits.setOnClickListener(view -> showCredits());
}
private void clearClickListeners() {
binding.versionHistory.setOnClickListener(null);
binding.translate.setOnClickListener(null);
binding.license.setOnClickListener(null);
binding.repo.setOnClickListener(null);
binding.privacy.setOnClickListener(null);
binding.reportError.setOnClickListener(null);
binding.rate.setOnClickListener(null);
binding.donate.setOnClickListener(null);
binding.credits.setOnClickListener(null);
}
private void showCredits() {
new MaterialAlertDialogBuilder(this)
.setTitle(R.string.credits)
.setMessage(content.getContributorInfo())
.setPositiveButton(R.string.ok, null)
.show();
}
private void showHistory(View view) {
showHTML(R.string.version_history, content.getHistoryInfo(), view);
}
private void showLicense(View view) {
showHTML(R.string.license, content.getLicenseInfo(), view);
}
private void showPrivacy(View view) {
showHTML(R.string.privacy_policy, content.getPrivacyInfo(), view);
}
private void showHTML(@StringRes int title, final Spanned text, View view) {
int dialogContentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
TextView textView = new TextView(this);
textView.setText(text);
Utils.makeTextViewLinksClickable(textView, text);
ScrollView scrollView = new ScrollView(this);
scrollView.addView(textView);
scrollView.setPadding(dialogContentPadding, dialogContentPadding / 2, dialogContentPadding, 0);
new MaterialAlertDialogBuilder(this)
.setTitle(title)
.setView(scrollView)
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.view_online, (dialog, which) -> openExternalBrowser(view))
.show();
}
private void openExternalBrowser(View view) {
Object tag = view.getTag();
if (tag instanceof String && ((String) tag).startsWith("https://")) {
(new OpenWebLinkHandler()).openBrowser(this, (String) tag);
}
}
}
@@ -0,0 +1,162 @@
package protect.card_locker;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.text.Spanned;
import android.util.Log;
import androidx.core.text.HtmlCompat;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class AboutContent {
public static final String TAG = "Catima";
public Context context;
public AboutContent(Context context) {
this.context = context;
}
public void destroy() {
this.context = null;
}
public String getPageTitle() {
return String.format(context.getString(R.string.about_title_fmt), context.getString(R.string.app_name));
}
public String getAppVersion() {
String version = "?";
try {
PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
version = pi.versionName;
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Package name not found", e);
}
return version;
}
public int getCurrentYear() {
return Calendar.getInstance().get(Calendar.YEAR);
}
public String getCopyright() {
return String.format(context.getString(R.string.app_copyright_fmt), getCurrentYear());
}
public String getCopyrightShort() {
return context.getString(R.string.app_copyright_short);
}
public String getContributors() {
String contributors;
try {
contributors = "<br/>" + Utils.readTextFile(context, R.raw.contributors);
} catch (IOException ignored) {
return "";
}
return contributors.replace("\n", "<br />");
}
public String getHistory() {
String versionHistory;
try {
versionHistory = Utils.readTextFile(context, R.raw.changelog)
.replace("# Changelog\n\n", "");
} catch (IOException ignored) {
return "";
}
return Utils.linkify(Utils.basicMDToHTML(versionHistory))
.replace("\n", "<br />");
}
public String getLicense() {
try {
return Utils.readTextFile(context, R.raw.license);
} catch (IOException ignored) {
return "";
}
}
public String getPrivacy() {
String privacyPolicy;
try {
privacyPolicy = Utils.readTextFile(context, R.raw.privacy)
.replace("# Privacy Policy\n", "");
} catch (IOException ignored) {
return "";
}
return Utils.linkify(Utils.basicMDToHTML(privacyPolicy))
.replace("\n", "<br />");
}
public String getThirdPartyLibraries() {
final List<ThirdPartyInfo> usedLibraries = new ArrayList<>();
usedLibraries.add(new ThirdPartyInfo("Color Picker", "https://github.com/jaredrummler/ColorPicker", "Apache 2.0"));
usedLibraries.add(new ThirdPartyInfo("Commons CSV", "https://commons.apache.org/proper/commons-csv/", "Apache 2.0"));
usedLibraries.add(new ThirdPartyInfo("NumberPickerPreference", "https://github.com/invissvenska/NumberPickerPreference", "GNU LGPL 3.0"));
usedLibraries.add(new ThirdPartyInfo("uCrop", "https://github.com/Yalantis/uCrop", "Apache 2.0"));
usedLibraries.add(new ThirdPartyInfo("Zip4j", "https://github.com/srikanth-lingala/zip4j", "Apache 2.0"));
usedLibraries.add(new ThirdPartyInfo("ZXing", "https://github.com/zxing/zxing", "Apache 2.0"));
usedLibraries.add(new ThirdPartyInfo("ZXing Android Embedded", "https://github.com/journeyapps/zxing-android-embedded", "Apache 2.0"));
StringBuilder result = new StringBuilder("<br/>");
for (ThirdPartyInfo entry : usedLibraries) {
result.append("<br/>")
.append(entry.toHtml());
}
return result.toString();
}
public String getUsedThirdPartyAssets() {
final List<ThirdPartyInfo> usedAssets = new ArrayList<>();
usedAssets.add(new ThirdPartyInfo("Android icons", "https://fonts.google.com/icons?selected=Material+Icons", "Apache 2.0"));
StringBuilder result = new StringBuilder().append("<br/>");
for (ThirdPartyInfo entry : usedAssets) {
result.append("<br/>")
.append(entry.toHtml());
}
return result.toString();
}
public String getContributorInfo() {
StringBuilder contributorInfo = new StringBuilder();
contributorInfo.append(getCopyright());
contributorInfo.append("\n\n");
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));
return contributorInfo.toString();
}
public Spanned getHistoryInfo() {
return HtmlCompat.fromHtml(getHistory(), HtmlCompat.FROM_HTML_MODE_COMPACT);
}
public Spanned getLicenseInfo() {
return HtmlCompat.fromHtml(getLicense(), HtmlCompat.FROM_HTML_MODE_LEGACY);
}
public Spanned getPrivacyInfo() {
return HtmlCompat.fromHtml(getPrivacy(), HtmlCompat.FROM_HTML_MODE_COMPACT);
}
public String getVersionHistory() {
return String.format(context.getString(R.string.debug_version_fmt), getAppVersion());
}
}
@@ -0,0 +1,5 @@
package protect.card_locker;
public interface BarcodeImageWriterResultCallback {
void onBarcodeImageWriterResult(boolean success);
}
@@ -1,28 +1,35 @@
package protect.card_locker;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import java.lang.ref.WeakReference;
import protect.card_locker.async.CompatCallable;
/**
* This task will generate a barcode and load it into an ImageView.
* Only a weak reference of the ImageView is kept, so this class will not
* prevent the ImageView from being garbage collected.
*/
class BarcodeImageWriterTask extends AsyncTask<Void, Void, Bitmap>
{
public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
private static final String TAG = "Catima";
private static final int IS_VALID = 999;
private final Context mContext;
private boolean isSuccesful;
// When drawn in a smaller window 1D barcodes for some reason end up
// squished, whereas 2D barcodes look fine.
private static final int MAX_WIDTH_1D = 1500;
@@ -30,14 +37,25 @@ class BarcodeImageWriterTask extends AsyncTask<Void, Void, Bitmap>
private final WeakReference<ImageView> imageViewReference;
private final WeakReference<TextView> textViewReference;
private final String cardId;
private final BarcodeFormat format;
private String cardId;
private final CatimaBarcode format;
private final int imageHeight;
private final int imageWidth;
private final int imagePadding;
private final boolean widthPadding;
private final boolean showFallback;
private final BarcodeImageWriterResultCallback callback;
BarcodeImageWriterTask(
Context context, ImageView imageView, String cardIdString,
CatimaBarcode barcodeFormat, TextView textView,
boolean showFallback, BarcodeImageWriterResultCallback callback, boolean roundCornerPadding
) {
mContext = context;
isSuccesful = true;
this.callback = callback;
BarcodeImageWriterTask(ImageView imageView, String cardIdString,
BarcodeFormat barcodeFormat, TextView textView)
{
// Use a WeakReference to ensure the ImageView can be garbage collected
imageViewReference = new WeakReference<>(imageView);
textViewReference = new WeakReference<>(textView);
@@ -45,39 +63,55 @@ class BarcodeImageWriterTask extends AsyncTask<Void, Void, Bitmap>
cardId = cardIdString;
format = barcodeFormat;
int imageViewHeight = imageView.getHeight();
int imageViewWidth = imageView.getWidth();
// Some barcodes already have internal whitespace and shouldn't get extra padding
// TODO: Get rid of this hack by somehow detecting this extra whitespace
if (roundCornerPadding && !barcodeFormat.hasInternalPadding()) {
imagePadding = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, context.getResources().getDisplayMetrics()));
} else {
imagePadding = 0;
}
if (format.isSquare() && imageViewWidth > imageViewHeight) {
imageViewWidth -= imagePadding;
widthPadding = true;
} else {
imageViewHeight -= imagePadding;
widthPadding = false;
}
final int MAX_WIDTH = getMaxWidth(format);
if(imageView.getWidth() < MAX_WIDTH)
{
imageHeight = imageView.getHeight();
imageWidth = imageView.getWidth();
}
else
{
if (format.isSquare()) {
imageHeight = imageWidth = Math.min(imageViewHeight, Math.min(MAX_WIDTH, imageViewWidth));
} else if (imageView.getWidth() < MAX_WIDTH) {
imageHeight = imageViewHeight;
imageWidth = imageViewWidth;
} else {
// Scale down the image to reduce the memory needed to produce it
imageWidth = MAX_WIDTH;
double ratio = (double)MAX_WIDTH / (double)imageView.getWidth();
imageHeight = (int)(imageView.getHeight() * ratio);
double ratio = (double) MAX_WIDTH / (double) imageViewWidth;
imageHeight = (int) (imageViewHeight * ratio);
}
this.showFallback = showFallback;
}
BarcodeImageWriterTask(ImageView imageView, String cardIdString, BarcodeFormat barcodeFormat)
{
this(imageView, cardIdString, barcodeFormat, null);
}
private int getMaxWidth(BarcodeFormat format)
{
switch(format)
{
private int getMaxWidth(CatimaBarcode format) {
switch (format.format()) {
// 2D barcodes
case AZTEC:
case DATA_MATRIX:
case MAXICODE:
case PDF_417:
case QR_CODE:
return MAX_WIDTH_2D;
// 2D but rectangular versions get blurry otherwise
case DATA_MATRIX:
return MAX_WIDTH_1D;
// 1D barcodes:
case CODABAR:
case CODE_39:
@@ -96,23 +130,53 @@ class BarcodeImageWriterTask extends AsyncTask<Void, Void, Bitmap>
}
}
public Bitmap doInBackground(Void... params)
{
if (cardId.isEmpty())
{
private String getFallbackString(CatimaBarcode format) {
switch (format.format()) {
// 2D barcodes
case AZTEC:
return "AZTEC";
case DATA_MATRIX:
return "DATA_MATRIX";
case PDF_417:
return "PDF_417";
case QR_CODE:
return "QR_CODE";
// 1D barcodes:
case CODABAR:
return "C0C";
case CODE_39:
return "CODE_39";
case CODE_93:
return "CODE_93";
case CODE_128:
return "CODE_128";
case EAN_8:
return "32123456";
case EAN_13:
return "5901234123457";
case ITF:
return "1003";
case UPC_A:
return "123456789012";
case UPC_E:
return "0123456";
default:
throw new IllegalArgumentException("No fallback known for this barcode type");
}
}
private Bitmap generate() {
if (cardId.isEmpty()) {
return null;
}
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix bitMatrix;
try
{
try
{
bitMatrix = writer.encode(cardId, format, imageWidth, imageHeight, null);
}
catch(Exception e)
{
try {
try {
bitMatrix = writer.encode(cardId, format.format(), imageWidth, imageHeight, null);
} catch (Exception e) {
// Cast a wider net here and catch any exception, as there are some
// cases where an encoder may fail if the data is invalid for the
// barcode type. If this happens, we want to fail gracefully.
@@ -127,11 +191,9 @@ class BarcodeImageWriterTask extends AsyncTask<Void, Void, Bitmap>
int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];
for (int y = 0; y < bitMatrixHeight; y++)
{
for (int y = 0; y < bitMatrixHeight; y++) {
int offset = y * bitMatrixWidth;
for (int x = 0; x < bitMatrixWidth; x++)
{
for (int x = 0; x < bitMatrixWidth; x++) {
int color = bitMatrix.get(x, y) ? BLACK : WHITE;
pixels[offset + x] = color;
}
@@ -151,57 +213,108 @@ class BarcodeImageWriterTask extends AsyncTask<Void, Void, Bitmap>
int widthScale = imageWidth / bitMatrixHeight;
int scalingFactor = Math.min(heightScale, widthScale);
if(scalingFactor > 1)
{
if (scalingFactor > 1) {
bitmap = Bitmap.createScaledBitmap(bitmap, bitMatrixWidth * scalingFactor, bitMatrixHeight * scalingFactor, false);
}
return bitmap;
}
catch (WriterException e)
{
} catch (WriterException e) {
Log.e(TAG, "Failed to generate barcode of type " + format + ": " + cardId, e);
}
catch(OutOfMemoryError e)
{
} catch (OutOfMemoryError e) {
Log.w(TAG, "Insufficient memory to render barcode, "
+ imageWidth + "x" + imageHeight + ", " + format.name()
+ ", length=" + cardId.length(), e);
+ imageWidth + "x" + imageHeight + ", " + format.name()
+ ", length=" + cardId.length(), e);
}
return null;
}
protected void onPostExecute(Bitmap result)
{
public Bitmap doInBackground(Void... params) {
// Only do the hard tasks if we've not already been cancelled
if (!Thread.currentThread().isInterrupted()) {
Bitmap bitmap = generate();
if (bitmap == null) {
isSuccesful = false;
if (showFallback && !Thread.currentThread().isInterrupted()) {
Log.i(TAG, "Barcode generation failed, generating fallback...");
cardId = getFallbackString(format);
bitmap = generate();
return bitmap;
}
} else {
return bitmap;
}
}
// We've been interrupted - create a empty fallback
Bitmap.Config config = Bitmap.Config.ARGB_8888;
return Bitmap.createBitmap(imageWidth, imageHeight, config);
}
public void onPostExecute(Object castResult) {
Bitmap result = (Bitmap) castResult;
Log.i(TAG, "Finished generating barcode image of type " + format + ": " + cardId);
ImageView imageView = imageViewReference.get();
if(imageView == null)
{
if (imageView == null) {
// The ImageView no longer exists, nothing to do
return;
}
String formatPrettyName = format.prettyName();
imageView.setTag(isSuccesful);
imageView.setImageBitmap(result);
imageView.setContentDescription(mContext.getString(R.string.barcodeImageDescriptionWithType, formatPrettyName));
TextView textView = textViewReference.get();
if(result != null)
{
if (result != null) {
Log.i(TAG, "Displaying barcode");
if (widthPadding) {
imageView.setPadding(imagePadding / 2, 0, imagePadding / 2, 0);
} else {
imageView.setPadding(0, imagePadding / 2, 0, imagePadding / 2);
}
imageView.setVisibility(View.VISIBLE);
if (isSuccesful) {
imageView.setColorFilter(null);
} else {
imageView.setColorFilter(Color.LTGRAY, PorterDuff.Mode.LIGHTEN);
}
if (textView != null) {
textView.setVisibility(View.VISIBLE);
textView.setText(format.name());
textView.setText(formatPrettyName);
}
}
else
{
} else {
Log.i(TAG, "Barcode generation failed, removing image from display");
imageView.setVisibility(View.GONE);
if (textView != null) {
textView.setVisibility(View.GONE);
}
}
if (callback != null) {
callback.onBarcodeImageWriterResult(isSuccesful);
}
}
@Override
public void onPreExecute() {
// No Action
}
/**
* Provided to comply with Callable while keeping the original Syntax of AsyncTask
*
* @return generated Bitmap
*/
@Override
public Bitmap call() {
return doInBackground();
}
}
@@ -2,31 +2,23 @@ package protect.card_locker;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.util.Pair;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ListView;
import android.widget.Toast;
import com.google.common.collect.ImmutableMap;
import com.google.zxing.BarcodeFormat;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Map;
import java.util.ArrayList;
import androidx.appcompat.widget.Toolbar;
import protect.card_locker.databinding.BarcodeSelectorActivityBinding;
/**
* This activity is callable and will allow a user to enter
@@ -34,193 +26,73 @@ import java.util.Map;
* the data. The user may then select any barcode, where its
* data and type will be returned to the caller.
*/
public class BarcodeSelectorActivity extends AppCompatActivity
{
public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements BarcodeSelectorAdapter.BarcodeSelectorListener {
private BarcodeSelectorActivityBinding binding;
private static final String TAG = "Catima";
// Result this activity will return
public static final String BARCODE_CONTENTS = "contents";
public static final String BARCODE_FORMAT = "format";
// These are all the barcode types that the zxing library
// is able to generate a barcode for, and thus should be
// the only barcodes which we should attempt to scan.
public static final Collection<String> SUPPORTED_BARCODE_TYPES = Collections.unmodifiableList(
Arrays.asList(
BarcodeFormat.AZTEC.name(),
BarcodeFormat.CODE_39.name(),
BarcodeFormat.CODE_128.name(),
BarcodeFormat.CODABAR.name(),
BarcodeFormat.DATA_MATRIX.name(),
BarcodeFormat.EAN_8.name(),
BarcodeFormat.EAN_13.name(),
BarcodeFormat.ITF.name(),
BarcodeFormat.PDF_417.name(),
BarcodeFormat.QR_CODE.name(),
BarcodeFormat.UPC_A.name()
));
private final Handler typingDelayHandler = new Handler(Looper.getMainLooper());
public static final Integer INPUT_DELAY = 250;
private Map<String, Pair<Integer, Integer>> barcodeViewMap;
private LinkedList<AsyncTask> barcodeGeneratorTasks = new LinkedList<>();
private BarcodeSelectorAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.barcode_selector_activity);
Toolbar toolbar = findViewById(R.id.toolbar);
binding = BarcodeSelectorActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.selectBarcodeTitle);
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null)
{
actionBar.setDisplayHomeAsUpEnabled(true);
}
enableToolbarBackButton();
barcodeViewMap = ImmutableMap.<String, Pair<Integer, Integer>>builder()
.put(BarcodeFormat.AZTEC.name(), new Pair<>(R.id.aztecBarcode, R.id.aztecBarcodeText))
.put(BarcodeFormat.CODE_39.name(), new Pair<>(R.id.code39Barcode, R.id.code39BarcodeText))
.put(BarcodeFormat.CODE_128.name(), new Pair<>(R.id.code128Barcode, R.id.code128BarcodeText))
.put(BarcodeFormat.CODABAR.name(), new Pair<>(R.id.codabarBarcode, R.id.codabarBarcodeText))
.put(BarcodeFormat.DATA_MATRIX.name(), new Pair<>(R.id.datamatrixBarcode, R.id.datamatrixBarcodeText))
.put(BarcodeFormat.EAN_8.name(), new Pair<>(R.id.ean8Barcode, R.id.ean8BarcodeText))
.put(BarcodeFormat.EAN_13.name(), new Pair<>(R.id.ean13Barcode, R.id.ean13BarcodeText))
.put(BarcodeFormat.ITF.name(), new Pair<>(R.id.itfBarcode, R.id.itfBarcodeText))
.put(BarcodeFormat.PDF_417.name(), new Pair<>(R.id.pdf417Barcode, R.id.pdf417BarcodeText))
.put(BarcodeFormat.QR_CODE.name(), new Pair<>(R.id.qrcodeBarcode, R.id.qrcodeBarcodeText))
.put(BarcodeFormat.UPC_A.name(), new Pair<>(R.id.upcaBarcode, R.id.upcaBarcodeText))
.build();
EditText cardId = binding.cardId;
ListView mBarcodeList = binding.barcodes;
mAdapter = new BarcodeSelectorAdapter(this, new ArrayList<>(), this);
mBarcodeList.setAdapter(mAdapter);
EditText cardId = findViewById(R.id.cardId);
cardId.addTextChangedListener(new TextWatcher()
{
cardId.addTextChangedListener(new SimpleTextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
// Noting to do
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Delay the input processing so we avoid overload
typingDelayHandler.removeCallbacksAndMessages(null);
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
Log.d(TAG, "Entered text: " + s);
typingDelayHandler.postDelayed(() -> {
Log.d(TAG, "Entered text: " + s);
// Stop any async tasks which may not have been started yet
for(AsyncTask task : barcodeGeneratorTasks)
{
task.cancel(false);
}
barcodeGeneratorTasks.clear();
// Update barcodes
for(String key : barcodeViewMap.keySet())
{
ImageView image = findViewById(barcodeViewMap.get(key).first);
TextView text = findViewById(barcodeViewMap.get(key).second);
createBarcodeOption(image, key, s.toString(), text);
}
View noBarcodeButtonView = findViewById(R.id.noBarcode);
setButtonListener(noBarcodeButtonView, s.toString());
noBarcodeButtonView.setEnabled(s.length() > 0);
}
@Override
public void afterTextChanged(Editable s)
{
// Noting to do
runOnUiThread(() -> {
generateBarcodes(s.toString());
});
}, INPUT_DELAY);
}
});
final Bundle b = getIntent().getExtras();
final String initialCardId = b != null ? b.getString("initialCardId") : null;
if(initialCardId != null)
{
if (initialCardId != null) {
cardId.setText(initialCardId);
} else {
generateBarcodes("");
}
}
private void setButtonListener(final View button, final String cardId)
{
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "Selected no barcode");
Intent result = new Intent();
result.putExtra(BARCODE_FORMAT, "");
result.putExtra(BARCODE_CONTENTS, cardId);
BarcodeSelectorActivity.this.setResult(RESULT_OK, result);
finish();
}
});
}
private void createBarcodeOption(final ImageView image, final String formatType, final String cardId, final TextView text)
{
final BarcodeFormat format = BarcodeFormat.valueOf(formatType);
if(format == null)
{
Log.w(TAG, "Unsupported barcode format: " + formatType);
return;
}
image.setImageBitmap(null);
image.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Log.d(TAG, "Selected barcode type " + formatType);
Intent result = new Intent();
result.putExtra(BARCODE_FORMAT, formatType);
result.putExtra(BARCODE_CONTENTS, cardId);
BarcodeSelectorActivity.this.setResult(RESULT_OK, result);
finish();
}
});
if(image.getHeight() == 0)
{
// The size of the ImageView is not yet available as it has not
// yet been drawn. Wait for it to be drawn so the size is available.
image.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
Log.d(TAG, "Global layout finished, type: + " + formatType + ", width: " + image.getWidth());
if (Build.VERSION.SDK_INT < 16)
{
image.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
else
{
image.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
Log.d(TAG, "Generating barcode for type " + formatType);
BarcodeImageWriterTask task = new BarcodeImageWriterTask(image, cardId, format, text);
barcodeGeneratorTasks.add(task);
task.execute();
}
});
}
else
{
Log.d(TAG, "Generating barcode for type " + formatType);
BarcodeImageWriterTask task = new BarcodeImageWriterTask(image, cardId, format, text);
barcodeGeneratorTasks.add(task);
task.execute();
private void generateBarcodes(String value) {
// Update barcodes
ArrayList<CatimaBarcodeWithValue> barcodes = new ArrayList<>();
for (BarcodeFormat barcodeFormat : CatimaBarcode.barcodeFormats) {
CatimaBarcode catimaBarcode = CatimaBarcode.fromBarcode(barcodeFormat);
barcodes.add(new CatimaBarcodeWithValue(catimaBarcode, value));
}
mAdapter.setBarcodes(barcodes);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if (item.getItemId() == android.R.id.home)
{
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
setResult(Activity.RESULT_CANCELED);
finish();
return true;
@@ -228,4 +100,26 @@ public class BarcodeSelectorActivity extends AppCompatActivity
return super.onOptionsItemSelected(item);
}
@Override
public void onRowClicked(int inputPosition, View view) {
CatimaBarcodeWithValue barcodeWithValue = mAdapter.getItem(inputPosition);
CatimaBarcode catimaBarcode = barcodeWithValue.catimaBarcode();
if (!mAdapter.isValid(view)) {
Toast.makeText(this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
return;
}
String barcodeFormat = catimaBarcode.format().name();
String value = barcodeWithValue.value();
Log.d(TAG, "Selected barcode type " + barcodeFormat);
Intent result = new Intent();
result.putExtra(BARCODE_FORMAT, barcodeFormat);
result.putExtra(BARCODE_CONTENTS, value);
BarcodeSelectorActivity.this.setResult(RESULT_OK, result);
finish();
}
}
@@ -0,0 +1,105 @@
package protect.card_locker;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import protect.card_locker.async.TaskHandler;
import protect.card_locker.databinding.BarcodeLayoutBinding;
public class BarcodeSelectorAdapter extends ArrayAdapter<CatimaBarcodeWithValue> {
private static final String TAG = "Catima";
private final TaskHandler mTasks = new TaskHandler();
private final BarcodeSelectorListener mListener;
private static class ViewHolder {
ImageView image;
TextView text;
}
public interface BarcodeSelectorListener {
void onRowClicked(int inputPosition, View view);
}
public BarcodeSelectorAdapter(Context context, ArrayList<CatimaBarcodeWithValue> barcodes, BarcodeSelectorListener barcodeSelectorListener) {
super(context, 0, barcodes);
mListener = barcodeSelectorListener;
}
public void setBarcodes(ArrayList<CatimaBarcodeWithValue> barcodes) {
clear();
addAll(barcodes);
notifyDataSetChanged();
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CatimaBarcodeWithValue catimaBarcodeWithValue = getItem(position);
CatimaBarcode catimaBarcode = catimaBarcodeWithValue.catimaBarcode();
String value = catimaBarcodeWithValue.value();
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
BarcodeLayoutBinding barcodeLayoutBinding = BarcodeLayoutBinding.inflate(inflater, parent, false);
convertView = barcodeLayoutBinding.getRoot();
viewHolder.image = barcodeLayoutBinding.barcodeImage;
viewHolder.text = barcodeLayoutBinding.barcodeName;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
createBarcodeOption(viewHolder.image, catimaBarcode.format().name(), value, viewHolder.text);
View finalConvertView = convertView;
convertView.setOnClickListener(view -> mListener.onRowClicked(position, finalConvertView));
return convertView;
}
public boolean isValid(View view) {
ViewHolder viewHolder = (ViewHolder) view.getTag();
return viewHolder.image.getTag() != null && (boolean) viewHolder.image.getTag();
}
private void createBarcodeOption(final ImageView image, final String formatType, final String cardId, final TextView text) {
final CatimaBarcode format = CatimaBarcode.fromName(formatType);
image.setImageBitmap(null);
image.setClipToOutline(true);
if (image.getHeight() == 0) {
// The size of the ImageView is not yet available as it has not
// yet been drawn. Wait for it to be drawn so the size is available.
image.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Log.d(TAG, "Global layout finished, type: + " + formatType + ", width: " + image.getWidth());
image.getViewTreeObserver().removeOnGlobalLayoutListener(this);
Log.d(TAG, "Generating barcode for type " + formatType);
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getContext(), image, cardId, format, text, true, null, true);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
});
} else {
Log.d(TAG, "Generating barcode for type " + formatType);
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getContext(), image, cardId, format, text, true, null, true);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
}
}
@@ -0,0 +1,23 @@
package protect.card_locker;
public class BarcodeValues {
private final String mFormat;
private final String mContent;
public BarcodeValues(String format, String content) {
mFormat = format;
mContent = content;
}
public String format() {
return mFormat;
}
public String content() {
return mContent;
}
public boolean isEmpty() {
return mFormat == null && mContent == null;
}
}
@@ -0,0 +1,76 @@
package protect.card_locker;
import android.database.Cursor;
import androidx.recyclerview.widget.RecyclerView;
public abstract class BaseCursorAdapter<V extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<V> {
public Cursor mCursor;
private boolean mDataValid;
private int mRowIDColumn;
private String mRowIDColumnName;
public BaseCursorAdapter(Cursor inputCursor, String rowIDColumnName) {
setHasStableIds(true);
mRowIDColumnName = rowIDColumnName;
swapCursor(inputCursor);
}
public abstract void onBindViewHolder(V inputHolder, Cursor inputCursor);
@Override
public void onBindViewHolder(V inputHolder, int inputPosition) {
if (!mDataValid) {
throw new IllegalStateException("Cannot bind view holder when cursor is in invalid state.");
}
if (!mCursor.moveToPosition(inputPosition)) {
throw new IllegalStateException("Could not move cursor to position " + inputPosition + " when trying to bind view holder");
}
onBindViewHolder(inputHolder, mCursor);
}
@Override
public int getItemCount() {
if (mDataValid) {
return mCursor.getCount();
} else {
return 0;
}
}
@Override
public long getItemId(int inputPosition) {
if (!mDataValid) {
throw new IllegalStateException("Cannot lookup item id when cursor is in invalid state.");
}
if (!mCursor.moveToPosition(inputPosition)) {
throw new IllegalStateException("Could not move cursor to position " + inputPosition + " when trying to get an item id");
}
return mCursor.getLong(mRowIDColumn);
}
public void swapCursor(Cursor inputCursor) {
if (inputCursor == mCursor) {
return;
}
if (inputCursor != null) {
mCursor = inputCursor;
mRowIDColumn = mCursor.getColumnIndex(mRowIDColumnName);
mDataValid = true;
notifyDataSetChanged();
} else {
notifyItemRangeRemoved(0, getItemCount());
mCursor = null;
mRowIDColumn = -1;
mDataValid = false;
}
}
}
@@ -1,83 +1,105 @@
package protect.card_locker;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Parcelable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
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;
/**
* The configuration screen for creating a shortcut.
*/
public class CardShortcutConfigure extends AppCompatActivity
{
public class CardShortcutConfigure extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
private SimpleToolbarListActivityBinding binding;
static final String TAG = "Catima";
private SQLiteDatabase mDatabase;
private LoyaltyCardCursorAdapter mAdapter;
@Override
public void onCreate(Bundle bundle)
{
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
binding = SimpleToolbarListActivityBinding.inflate(getLayoutInflater());
mDatabase = new DBHelper(this).getReadableDatabase();
// Set the result to CANCELED. This will cause nothing to happen if the
// aback button is pressed.
setResult(RESULT_CANCELED);
setContentView(R.layout.main_activity);
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setVisibility(View.GONE);
final DBHelper db = new DBHelper(this);
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
toolbar.setTitle(R.string.shortcutSelectCard);
setSupportActionBar(toolbar);
// If there are no cards, bail
if(db.getLoyaltyCardCount() == 0)
{
int cardCount = DBHelper.getLoyaltyCardCount(mDatabase);
if (cardCount == 0) {
Toast.makeText(this, R.string.noCardsMessage, Toast.LENGTH_LONG).show();
finish();
}
final ListView cardList = findViewById(R.id.list);
cardList.setVisibility(View.VISIBLE);
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 = db.getLoyaltyCardCursor();
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
mAdapter = new LoyaltyCardCursorAdapter(this, cardCursor, this, null);
cardList.setAdapter(mAdapter);
}
final LoyaltyCardCursorAdapter adapter = new LoyaltyCardCursorAdapter(this, cardCursor);
cardList.setAdapter(adapter);
private void onClickAction(int position) {
Cursor selected = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
selected.moveToPosition(position);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(selected);
cardList.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Cursor selected = (Cursor) parent.getItemAtPosition(position);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(selected);
Log.d(TAG, "Creating shortcut for card " + loyaltyCard.store + "," + loyaltyCard.id);
Log.d(TAG, "Creating shortcut for card " + loyaltyCard.store + "," + loyaltyCard.id);
ShortcutInfoCompat shortcut = ShortcutHelper.createShortcutBuilder(CardShortcutConfigure.this, loyaltyCard).build();
Intent shortcutIntent = new Intent(CardShortcutConfigure.this, LoyaltyCardViewActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
// Prevent instances of the view activity from piling up; if one exists let this
// one replace it.
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Bundle bundle = new Bundle();
bundle.putInt("id", loyaltyCard.id);
bundle.putBoolean("view", true);
shortcutIntent.putExtras(bundle);
setResult(RESULT_OK, ShortcutManagerCompat.createShortcutResultIntent(CardShortcutConfigure.this, shortcut));
Parcelable icon = Intent.ShortcutIconResource.fromContext(CardShortcutConfigure.this, R.mipmap.ic_launcher);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, loyaltyCard.store);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
setResult(RESULT_OK, intent);
finish();
}
finish();
}
});
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
getMenuInflater().inflate(R.menu.card_details_menu, inputMenu);
return super.onCreateOptionsMenu(inputMenu);
}
@Override
public boolean onOptionsItemSelected(MenuItem inputItem) {
int id = inputItem.getItemId();
if (id == R.id.action_display_options) {
mAdapter.showDisplayOptionsDialog();
invalidateOptionsMenu();
return true;
}
return super.onOptionsItemSelected(inputItem);
}
@Override
public void onRowClicked(int inputPosition) {
onClickAction(inputPosition);
}
@Override
public void onRowLongClicked(int inputPosition) {
// do nothing
}
}
@@ -0,0 +1,165 @@
package protect.card_locker;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.service.controls.Control;
import android.service.controls.ControlsProviderService;
import android.service.controls.DeviceTypes;
import android.service.controls.actions.ControlAction;
import android.service.controls.templates.StatelessTemplate;
import android.util.Log;
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 {
public static final String PREFIX = "catima-";
static final String TAG = "Catima";
private SQLiteDatabase mDatabase;
@Override
public void onCreate() {
super.onCreate();
mDatabase = new DBHelper(this).getReadableDatabase();
}
@NonNull
@Override
public Flow.Publisher<Control> createPublisherForAllAvailable() {
Cursor loyaltyCardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.Unarchived);
return subscriber -> {
while (loyaltyCardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(loyaltyCardCursor);
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", card.id);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
subscriber.onNext(
new Control.StatelessBuilder(PREFIX + card.id, pendingIntent)
.setControlId(PREFIX + card.id)
.setTitle(card.store)
.setDeviceType(DeviceTypes.TYPE_GENERIC_OPEN_CLOSE)
.setSubtitle(card.note)
.setCustomIcon(Icon.createWithBitmap(getIcon(this, card)))
.build()
);
}
subscriber.onComplete();
};
}
@NonNull
@Override
public Flow.Publisher<Control> createPublisherFor(@NonNull List<String> controlIds) {
return subscriber -> {
subscriber.onSubscribe(new NoOpSubscription());
for (String controlId : controlIds) {
Control control;
Integer cardId = this.controlIdToCardId(controlId);
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, cardId);
if (card != null) {
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", card.id);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
control = new Control.StatefulBuilder(controlId, pendingIntent)
.setTitle(card.store)
.setDeviceType(DeviceTypes.TYPE_GENERIC_OPEN_CLOSE)
.setSubtitle(card.note)
.setStatus(Control.STATUS_OK)
.setControlTemplate(new StatelessTemplate(controlId))
.setCustomIcon(Icon.createWithBitmap(getIcon(this, card)))
.build();
} else {
Intent mainScreenIntent = new Intent(this, MainActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), -1, mainScreenIntent, PendingIntent.FLAG_IMMUTABLE);
control = new Control.StatefulBuilder(controlId, pendingIntent)
.setStatus(Control.STATUS_NOT_FOUND)
.build();
}
Log.d(TAG, "Dispatching widget " + controlId);
subscriber.onNext(control);
}
subscriber.onComplete();
};
}
private Bitmap getIcon(Context context, LoyaltyCard loyaltyCard) {
Bitmap cardIcon = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
if (cardIcon != null) {
return cardIcon;
}
return Utils.generateIcon(this, loyaltyCard.store, loyaltyCard.headerColor).getLetterTile();
}
private Integer controlIdToCardId(String controlId) {
if (controlId == null)
return null;
if (!controlId.startsWith(PREFIX)) {
Log.w(TAG, "Unsupported control ID format: " + controlId);
return null;
}
controlId = controlId.substring(PREFIX.length());
try {
return Integer.parseInt(controlId);
} catch (RuntimeException ex) {
Log.e(TAG, "Unsupported control ID format. Expected numeric after prefix, found: " + controlId);
return null;
}
}
@Override
public void performControlAction(@NonNull String controlId, @NonNull ControlAction action, @NonNull Consumer<Integer> consumer) {
consumer.accept(ControlAction.RESPONSE_OK);
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("id", controlIdToCardId(controlId));
startActivity(openIntent);
closePowerScreenOnAndroid11();
}
@SuppressWarnings({"MissingPermission", "deprecation"})
private void closePowerScreenOnAndroid11() {
// Android 12 will auto-close the power screen, but earlier versions won't
// Lint complains about this but on Android 11 the permission is not needed
// On Android 12, we don't need it, and Google will probably get angry if we ask for it
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) {
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
}
/**
* A no-op subscription.
* <p>
* Flow.Subscriptions are made to last during time and receive periodic updates.
* Our app does not require sending periodic updates of loyalty cards, so we are just ignoring anything in the subscription
* Also, our db is quick enough to respond that the Publisher is immediately sending and completing data.
* This facility is overkill, but if we don't call onSubscribe the service won't work
*/
private static class NoOpSubscription implements Flow.Subscription {
@Override
public void request(long l) {
}
@Override
public void cancel() {
}
}
}
@@ -0,0 +1,56 @@
package protect.card_locker;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.WindowInsetsControllerCompat;
public class CatimaAppCompatActivity extends AppCompatActivity {
@Override
protected void attachBaseContext(Context base) {
// Apply chosen language
super.attachBaseContext(Utils.updateBaseContextLocale(base));
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Utils.patchColors(this);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
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));
}
// XXX android 9 and below has a nasty rendering bug if the theme was patched earlier
Utils.postPatchColors(this);
}
protected void enableToolbarBackButton() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public void onMockedRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
}
}
@@ -0,0 +1,96 @@
package protect.card_locker;
import com.google.zxing.BarcodeFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CatimaBarcode {
public static final List<BarcodeFormat> barcodeFormats = Collections.unmodifiableList(Arrays.asList(
BarcodeFormat.AZTEC,
BarcodeFormat.CODE_39,
BarcodeFormat.CODE_93,
BarcodeFormat.CODE_128,
BarcodeFormat.CODABAR,
BarcodeFormat.DATA_MATRIX,
BarcodeFormat.EAN_8,
BarcodeFormat.EAN_13,
BarcodeFormat.ITF,
BarcodeFormat.PDF_417,
BarcodeFormat.QR_CODE,
BarcodeFormat.UPC_A,
BarcodeFormat.UPC_E
));
public static final List<String> barcodePrettyNames = Collections.unmodifiableList(Arrays.asList(
"Aztec",
"Code 39",
"Code 93",
"Code 128",
"Codabar",
"Data Matrix",
"EAN 8",
"EAN 13",
"ITF",
"PDF 417",
"QR Code",
"UPC A",
"UPC E"
));
private final BarcodeFormat mBarcodeFormat;
private CatimaBarcode(BarcodeFormat barcodeFormat) {
mBarcodeFormat = barcodeFormat;
}
public static CatimaBarcode fromBarcode(BarcodeFormat barcodeFormat) {
return new CatimaBarcode(barcodeFormat);
}
public static CatimaBarcode fromName(String name) {
return new CatimaBarcode(BarcodeFormat.valueOf(name));
}
public static CatimaBarcode fromPrettyName(String prettyName) {
try {
return new CatimaBarcode(barcodeFormats.get(barcodePrettyNames.indexOf(prettyName)));
} catch (IndexOutOfBoundsException e) {
throw new IllegalArgumentException("No barcode type with pretty name " + prettyName + " known!");
}
}
public boolean isSupported() {
return barcodeFormats.contains(mBarcodeFormat);
}
public boolean isSquare() {
return mBarcodeFormat == BarcodeFormat.AZTEC
|| mBarcodeFormat == BarcodeFormat.MAXICODE
|| mBarcodeFormat == BarcodeFormat.QR_CODE;
}
public boolean hasInternalPadding() {
return mBarcodeFormat == BarcodeFormat.PDF_417
|| mBarcodeFormat == BarcodeFormat.QR_CODE;
}
public BarcodeFormat format() {
return mBarcodeFormat;
}
public String name() {
return mBarcodeFormat.name();
}
public String prettyName() {
int index = barcodeFormats.indexOf(mBarcodeFormat);
if (index == -1 || index >= barcodePrettyNames.size()) {
return mBarcodeFormat.name();
}
return barcodePrettyNames.get(index);
}
}
@@ -0,0 +1,19 @@
package protect.card_locker;
public class CatimaBarcodeWithValue {
private final CatimaBarcode mCatimaBarcode;
private final String mValue;
public CatimaBarcodeWithValue(CatimaBarcode catimaBarcode, String value) {
mCatimaBarcode = catimaBarcode;
mValue = value;
}
public CatimaBarcode catimaBarcode() {
return mCatimaBarcode;
}
public String value() {
return mValue;
}
}
@@ -0,0 +1,25 @@
package protect.card_locker;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
public class CatimaCaptureManager extends CaptureManager {
private final Context mContext;
public CatimaCaptureManager(Activity activity, DecoratedBarcodeView barcodeView) {
super(activity, barcodeView);
mContext = activity.getApplicationContext();
}
@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();
}
}
@@ -1,106 +0,0 @@
package protect.card_locker;
import android.database.Cursor;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* Class for exporting the database into CSV (Comma Separate Values)
* format.
*/
public class CsvDatabaseExporter implements DatabaseExporter
{
public void exportData(DBHelper db, OutputStreamWriter output) throws IOException, InterruptedException
{
CSVPrinter printer = new CSVPrinter(output, CSVFormat.RFC4180);
// Print the version
printer.printRecord("2");
printer.println();
// Print the header for groups
printer.printRecord(DBHelper.LoyaltyCardDbGroups.ID);
Cursor groupCursor = db.getGroupCursor();
while(groupCursor.moveToNext())
{
Group group = Group.toGroup(groupCursor);
printer.printRecord(group._id);
if(Thread.currentThread().isInterrupted())
{
throw new InterruptedException();
}
}
groupCursor.close();
// Print an empty line
printer.println();
// Print the header for cards
printer.printRecord(DBHelper.LoyaltyCardDbIds.ID,
DBHelper.LoyaltyCardDbIds.STORE,
DBHelper.LoyaltyCardDbIds.NOTE,
DBHelper.LoyaltyCardDbIds.CARD_ID,
DBHelper.LoyaltyCardDbIds.HEADER_COLOR,
DBHelper.LoyaltyCardDbIds.BARCODE_TYPE,
DBHelper.LoyaltyCardDbIds.STAR_STATUS);
Cursor cardCursor = db.getLoyaltyCardCursor();
while(cardCursor.moveToNext())
{
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
printer.printRecord(card.id,
card.store,
card.note,
card.cardId,
card.headerColor,
card.barcodeType,
card.starStatus);
if(Thread.currentThread().isInterrupted())
{
throw new InterruptedException();
}
}
cardCursor.close();
// Print an empty line
printer.println();
// Print the header for card group mappings
printer.printRecord(DBHelper.LoyaltyCardDbIdsGroups.cardID,
DBHelper.LoyaltyCardDbIdsGroups.groupID);
Cursor cardCursor2 = db.getLoyaltyCardCursor();
while(cardCursor2.moveToNext())
{
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor2);
for (Group group : db.getLoyaltyCardGroups(card.id)) {
printer.printRecord(card.id, group._id);
}
if(Thread.currentThread().isInterrupted())
{
throw new InterruptedException();
}
}
cardCursor2.close();
printer.close();
}
}
@@ -1,320 +0,0 @@
package protect.card_locker;
import android.database.sqlite.SQLiteDatabase;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.List;
/**
* Class for importing a database from CSV (Comma Separate Values)
* formatted data.
*
* The database's loyalty cards are expected to appear in the CSV data.
* A header is expected for the each table showing the names of the columns.
*/
public class CsvDatabaseImporter implements DatabaseImporter
{
public void importData(DBHelper db, InputStreamReader input) throws IOException, FormatException, InterruptedException
{
BufferedReader bufferedReader = new BufferedReader(input);
bufferedReader.mark(100);
Integer version = 1;
try {
version = Integer.parseInt(bufferedReader.readLine());
} catch (NumberFormatException _e) {
// Assume version 1
}
bufferedReader.reset();
switch (version) {
case 1:
parseV1(db, bufferedReader);
break;
case 2:
parseV2(db, bufferedReader);
break;
default:
throw new FormatException(String.format("No code to parse version %s", version));
}
}
public void parseV1(DBHelper db, BufferedReader input) throws IOException, FormatException, InterruptedException
{
final CSVParser parser = new CSVParser(input, CSVFormat.RFC4180.withHeader());
SQLiteDatabase database = db.getWritableDatabase();
database.beginTransaction();
try
{
for (CSVRecord record : parser)
{
importLoyaltyCard(database, db, record);
if(Thread.currentThread().isInterrupted())
{
throw new InterruptedException();
}
}
parser.close();
database.setTransactionSuccessful();
}
catch(IllegalArgumentException|IllegalStateException e)
{
throw new FormatException("Issue parsing CSV data", e);
}
finally
{
database.endTransaction();
database.close();
}
}
public void parseV2(DBHelper db, BufferedReader input) throws IOException, FormatException, InterruptedException
{
SQLiteDatabase database = db.getWritableDatabase();
database.beginTransaction();
Integer part = 0;
String stringPart = "";
try {
while (true) {
String tmp = input.readLine();
if (tmp == null || tmp.isEmpty()) {
switch (part) {
case 0:
// This is the version info, ignore
break;
case 1:
parseV2Groups(db, database, stringPart);
break;
case 2:
parseV2Cards(db, database, stringPart);
break;
case 3:
parseV2CardGroups(db, database, stringPart);
break;
default:
throw new FormatException("Issue parsing CSV data, too many parts for v2 parsing");
}
if (tmp == null) {
break;
}
part += 1;
stringPart = "";
} else {
stringPart += tmp + "\n";
}
}
database.setTransactionSuccessful();
} catch (FormatException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
database.endTransaction();
database.close();
}
}
public void parseV2Groups(DBHelper db, SQLiteDatabase database, String data) throws IOException, FormatException, InterruptedException
{
// Parse groups
final CSVParser groupParser = new CSVParser(new StringReader(data), CSVFormat.RFC4180.withHeader());
try {
for (CSVRecord record : groupParser) {
importGroup(database, db, record);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
groupParser.close();
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
}
}
public void parseV2Cards(DBHelper db, SQLiteDatabase database, String data) throws IOException, FormatException, InterruptedException
{
// Parse cards
final CSVParser cardParser = new CSVParser(new StringReader(data), CSVFormat.RFC4180.withHeader());
try {
for (CSVRecord record : cardParser) {
importLoyaltyCard(database, db, record);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
cardParser.close();
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
}
}
public void parseV2CardGroups(DBHelper db, SQLiteDatabase database, String data) throws IOException, FormatException, InterruptedException
{
// Parse card group mappings
final CSVParser cardGroupParser = new CSVParser(new StringReader(data), CSVFormat.RFC4180.withHeader());
try {
for (CSVRecord record : cardGroupParser) {
importCardGroupMapping(database, db, record);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
cardGroupParser.close();
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
}
}
/**
* Extract a string from the items array. The index into the array
* is determined by looking up the index in the fields map using the
* "key" as the key. If no such key exists, defaultValue is returned
* if it is not null. Otherwise, a FormatException is thrown.
*/
private String extractString(String key, CSVRecord record, String defaultValue)
throws FormatException
{
String toReturn = defaultValue;
if(record.isMapped(key))
{
toReturn = record.get(key);
}
else
{
if(defaultValue == null)
{
throw new FormatException("Field not used but expected: " + key);
}
}
return toReturn;
}
/**
* Extract an integer from the items array. The index into the array
* is determined by looking up the index in the fields map using the
* "key" as the key. If no such key exists, or the data is not a valid
* int, a FormatException is thrown.
*/
private Integer extractInt(String key, CSVRecord record, boolean nullIsOk)
throws FormatException
{
if(record.isMapped(key) == false)
{
throw new FormatException("Field not used but expected: " + key);
}
String value = record.get(key);
if(value.isEmpty() && nullIsOk)
{
return null;
}
try
{
return Integer.parseInt(record.get(key));
}
catch(NumberFormatException e)
{
throw new FormatException("Failed to parse field: " + key, e);
}
}
/**
* Import a single loyalty card into the database using the given
* session.
*/
private void importLoyaltyCard(SQLiteDatabase database, DBHelper helper, CSVRecord record)
throws IOException, FormatException
{
int id = extractInt(DBHelper.LoyaltyCardDbIds.ID, record, false);
String store = extractString(DBHelper.LoyaltyCardDbIds.STORE, record, "");
if(store.isEmpty())
{
throw new FormatException("No store listed, but is required");
}
String note = extractString(DBHelper.LoyaltyCardDbIds.NOTE, record, "");
String cardId = extractString(DBHelper.LoyaltyCardDbIds.CARD_ID, record, "");
if(cardId.isEmpty())
{
throw new FormatException("No card ID listed, but is required");
}
String barcodeType = extractString(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE, record, "");
Integer headerColor = null;
if(record.isMapped(DBHelper.LoyaltyCardDbIds.HEADER_COLOR))
{
headerColor = extractInt(DBHelper.LoyaltyCardDbIds.HEADER_COLOR, record, true);
}
int starStatus = 0;
try {
starStatus = extractInt(DBHelper.LoyaltyCardDbIds.STAR_STATUS, record, false);
} catch (FormatException _e ) {
// This field did not exist in versions 0.28 and before
// We catch this exception so we can still import old backups
}
if (starStatus != 1) starStatus = 0;
helper.insertLoyaltyCard(database, id, store, note, cardId, barcodeType, headerColor, starStatus);
}
/**
* Import a single group into the database using the given
* session.
*/
private void importGroup(SQLiteDatabase database, DBHelper helper, CSVRecord record)
throws IOException, FormatException
{
String id = extractString(DBHelper.LoyaltyCardDbGroups.ID, record, null);
helper.insertGroup(database, id);
}
/**
* Import a single card to group mapping into the database using the given
* session.
*/
private void importCardGroupMapping(SQLiteDatabase database, DBHelper helper, CSVRecord record)
throws IOException, FormatException
{
Integer cardId = extractInt(DBHelper.LoyaltyCardDbIdsGroups.cardID, record, false);
String groupId = extractString(DBHelper.LoyaltyCardDbIdsGroups.groupID, record, null);
List<Group> cardGroups = helper.getLoyaltyCardGroups(cardId);
cardGroups.add(helper.getGroup(groupId));
helper.setLoyaltyCardGroups(database, cardId, cardGroups);
}
}
File diff suppressed because it is too large. Load diff
@@ -1,8 +0,0 @@
package protect.card_locker;
public enum DataFormat
{
CSV,
;
}
@@ -1,17 +0,0 @@
package protect.card_locker;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* Interface for a class which can export the contents of the database
* in a given format.
*/
public interface DatabaseExporter
{
/**
* Export the database to the output stream in a given format.
* @throws IOException
*/
void exportData(DBHelper db, OutputStreamWriter output) throws IOException, InterruptedException;
}
@@ -1,19 +0,0 @@
package protect.card_locker;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* Interface for a class which can import the contents of a stream
* into the database.
*/
public interface DatabaseImporter
{
/**
* Import data from the input stream in a given format into
* the database.
* @throws IOException
* @throws FormatException
*/
void importData(DBHelper db, InputStreamReader input) throws IOException, FormatException, InterruptedException;
}
@@ -5,15 +5,12 @@ package protect.card_locker;
* encountered with the format of data being
* imported or exported.
*/
public class FormatException extends Exception
{
public FormatException(String message)
{
public class FormatException extends Exception {
public FormatException(String message) {
super(message);
}
public FormatException(String message, Exception rootCause)
{
public FormatException(String message, Exception rootCause) {
super(message, rootCause);
}
}
@@ -2,19 +2,39 @@ package protect.card_locker;
import android.database.Cursor;
public class Group
{
public final String _id;
import androidx.annotation.Nullable;
public Group(final String _id)
{
public class Group {
public final String _id;
public final int order;
public Group(final String _id, final int order) {
this._id = _id;
this.order = order;
}
public static Group toGroup(Cursor cursor)
{
public static Group toGroup(Cursor cursor) {
String _id = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbGroups.ID));
int order = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbGroups.ORDER));
return new Group(_id);
return new Group(_id, order);
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj == null) {
return false;
}
if (!(obj instanceof Group)) {
return false;
}
Group anotherGroup = (Group) obj;
return _id.equals(anotherGroup._id) && order == anotherGroup.order;
}
@Override
public int hashCode() {
String combined = _id + "_" + order;
return combined.hashCode();
}
}
@@ -1,53 +1,100 @@
package protect.card_locker;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
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;
class GroupCursorAdapter extends CursorAdapter
{
Settings settings;
DBHelper db;
public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListItemViewHolder> {
public final Context mContext;
private final GroupAdapterListener mListener;
SQLiteDatabase mDatabase;
public GroupCursorAdapter(Context context, Cursor cursor)
{
super(context, cursor, 0);
settings = new Settings(context);
public GroupCursorAdapter(Context inputContext, Cursor inputCursor, GroupAdapterListener inputListener) {
super(inputCursor, DBHelper.LoyaltyCardDbGroups.ORDER);
setHasStableIds(true);
mContext = inputContext;
mListener = inputListener;
mDatabase = new DBHelper(inputContext).getReadableDatabase();
db = new DBHelper(context);
swapCursor(inputCursor);
}
// The newView method is used to inflate a new view and return it,
// you don't bind any data to the view at this point.
@NonNull
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
return LayoutInflater.from(context).inflate(R.layout.group_layout, parent, false);
public GroupCursorAdapter.GroupListItemViewHolder onCreateViewHolder(@NonNull ViewGroup inputParent, int inputViewType) {
return new GroupListItemViewHolder(
GroupLayoutBinding.inflate(
LayoutInflater.from(inputParent.getContext()),
inputParent,
false
)
);
}
// The bindView method is used to bind all data to a given view
// such as setting the text on a TextView.
@Override
public void bindView(View view, Context context, Cursor cursor)
{
// Find fields to populate in inflated template
TextView nameField = (TextView) view.findViewById(R.id.name);
TextView countField = (TextView) view.findViewById(R.id.cardCount);
public void onBindViewHolder(GroupListItemViewHolder inputHolder, Cursor inputCursor) {
Group group = Group.toGroup(inputCursor);
// Extract properties from cursor
Group group = Group.toGroup(cursor);
inputHolder.mName.setText(group._id);
// Populate fields with extracted properties
nameField.setText(group._id);
countField.setText(String.format(context.getString(R.string.groupCardCount), db.getGroupCardCount(group._id)));
int groupCardCount = DBHelper.getGroupCardCount(mDatabase, group._id);
int archivedCardCount = DBHelper.getArchivedCardsCount(mDatabase, group._id);
nameField.setTextSize(settings.getCardTitleListFontSize());
countField.setTextSize(settings.getCardNoteListFontSize());
Resources resources = mContext.getResources();
String cardCountText;
if (archivedCardCount > 0) {
cardCountText = resources.getQuantityString(R.plurals.groupCardCountWithArchived, groupCardCount, groupCardCount, archivedCardCount);
} else {
cardCountText = resources.getQuantityString(R.plurals.groupCardCount, groupCardCount, groupCardCount);
}
inputHolder.mCardCount.setText(cardCountText);
applyClickEvents(inputHolder);
}
private void applyClickEvents(GroupListItemViewHolder inputHolder) {
inputHolder.mMoveDown.setOnClickListener(view -> mListener.onMoveDownButtonClicked(inputHolder.itemView));
inputHolder.mMoveUp.setOnClickListener(view -> mListener.onMoveUpButtonClicked(inputHolder.itemView));
inputHolder.mEdit.setOnClickListener(view -> mListener.onEditButtonClicked(inputHolder.itemView));
inputHolder.mDelete.setOnClickListener(view -> mListener.onDeleteButtonClicked(inputHolder.itemView));
}
public interface GroupAdapterListener {
void onMoveDownButtonClicked(View view);
void onMoveUpButtonClicked(View view);
void onEditButtonClicked(View view);
void onDeleteButtonClicked(View view);
}
public static class GroupListItemViewHolder extends RecyclerView.ViewHolder {
public TextView mName, mCardCount;
public Button mMoveUp, mMoveDown, mEdit, mDelete;
public GroupListItemViewHolder(GroupLayoutBinding groupLayoutBinding) {
super(groupLayoutBinding.getRoot());
mName = groupLayoutBinding.name;
mCardCount = groupLayoutBinding.cardCount;
mMoveUp = groupLayoutBinding.moveUp;
mMoveDown = groupLayoutBinding.moveDown;
mEdit = groupLayoutBinding.edit;
mDelete = groupLayoutBinding.delete;
}
}
}
@@ -0,0 +1,7 @@
package protect.card_locker;
public enum ImageLocationType {
front,
back,
icon
}
@@ -2,210 +2,313 @@ package protect.card_locker;
import android.Manifest;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.text.InputType;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.Toast;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
public class ImportExportActivity extends AppCompatActivity
{
private static final String TAG = "Catima";
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;
private static final int PERMISSIONS_EXTERNAL_STORAGE = 1;
private static final int CHOOSE_EXPORT_LOCATION = 2;
private static final int CHOOSE_EXPORTED_FILE = 3;
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;
import protect.card_locker.importexport.ImportExportResult;
import protect.card_locker.importexport.ImportExportResultType;
public class ImportExportActivity extends CatimaAppCompatActivity {
private ImportExportActivityBinding binding;
private static final String TAG = "Catima";
private ImportExportTask importExporter;
private String importAlertTitle;
private String importAlertMessage;
private DataFormat importDataFormat;
private String exportPassword;
private ActivityResultLauncher<Intent> fileCreateLauncher;
private ActivityResultLauncher<String> fileOpenLauncher;
private ActivityResultLauncher<Intent> filePickerLauncher;
final private TaskHandler mTasks = new TaskHandler();
@Override
protected void onCreate(Bundle savedInstanceState)
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.import_export_activity);
Toolbar toolbar = findViewById(R.id.toolbar);
binding = ImportExportActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.importExport);
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null)
{
actionBar.setDisplayHomeAsUpEnabled(true);
enableToolbarBackButton();
Intent fileIntent = getIntent();
if (fileIntent != null && fileIntent.getType() != null) {
chooseImportType(false, fileIntent.getData());
}
// If the application does not have permissions to external
// storage, ask for it now
// would use ActivityResultContracts.CreateDocument() but mime type cannot be set
fileCreateLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Intent intent = result.getData();
if (intent == null) {
Log.e(TAG, "Activity returned NULL data");
return;
}
Uri uri = intent.getData();
if (uri == null) {
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);
}
if (ContextCompat.checkSelfPermission(ImportExportActivity.this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(ImportExportActivity.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(ImportExportActivity.this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
PERMISSIONS_EXTERNAL_STORAGE);
}
});
fileOpenLauncher = registerForActivityResult(new ActivityResultContracts.GetContent(), result -> {
if (result == null) {
Log.e(TAG, "Activity returned NULL data");
return;
}
openFileForImport(result, null);
});
filePickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Intent intent = result.getData();
if (intent == null) {
Log.e(TAG, "Activity returned NULL data");
return;
}
Uri uri = intent.getData();
if (uri == null) {
Log.e(TAG, "Activity returned NULL uri");
return;
}
openFileForImport(intent.getData(), null);
});
// Check that there is a file manager available
final Intent intentCreateDocumentAction = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intentCreateDocumentAction.addCategory(Intent.CATEGORY_OPENABLE);
intentCreateDocumentAction.setType("text/csv");
intentCreateDocumentAction.putExtra(Intent.EXTRA_TITLE, "Catima.csv");
intentCreateDocumentAction.setType("application/zip");
intentCreateDocumentAction.putExtra(Intent.EXTRA_TITLE, "catima.zip");
Button exportButton = binding.exportButton;
exportButton.setOnClickListener(v -> {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(ImportExportActivity.this);
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 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);
builder.setView(container);
builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
exportPassword = input.getText().toString();
try {
fileCreateLauncher.launch(intentCreateDocumentAction);
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), R.string.failedOpeningFileManager, Toast.LENGTH_LONG).show();
Log.e(TAG, "No activity found to handle intent", e);
}
});
builder.setNegativeButton(R.string.cancel, (dialogInterface, i) -> dialogInterface.cancel());
builder.show();
Button exportButton = findViewById(R.id.exportButton);
exportButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
chooseFileWithIntent(intentCreateDocumentAction, CHOOSE_EXPORT_LOCATION);
}
});
// Check that there is a file manager available
final Intent intentGetContentAction = new Intent(Intent.ACTION_GET_CONTENT);
intentGetContentAction.addCategory(Intent.CATEGORY_OPENABLE);
intentGetContentAction.setType("*/*");
Button importFilesystem = findViewById(R.id.importOptionFilesystemButton);
importFilesystem.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
chooseFileWithIntent(intentGetContentAction, CHOOSE_EXPORTED_FILE);
}
});
if(isCallable(getApplicationContext(), intentGetContentAction) == false)
{
findViewById(R.id.dividerImportFilesystem).setVisibility(View.GONE);
findViewById(R.id.importOptionFilesystemTitle).setVisibility(View.GONE);
findViewById(R.id.importOptionFilesystemExplanation).setVisibility(View.GONE);
importFilesystem.setVisibility(View.GONE);
}
Button importFilesystem = binding.importOptionFilesystemButton;
importFilesystem.setOnClickListener(v -> chooseImportType(false, null));
// Check that there is an app that data can be imported from
final Intent intentPickAction = new Intent(Intent.ACTION_PICK);
Button importApplication = binding.importOptionApplicationButton;
importApplication.setOnClickListener(v -> chooseImportType(true, null));
}
Button importApplication = findViewById(R.id.importOptionApplicationButton);
importApplication.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
chooseFileWithIntent(intentPickAction, CHOOSE_EXPORTED_FILE);
}
});
if(isCallable(getApplicationContext(), intentPickAction) == false)
{
findViewById(R.id.dividerImportApplication).setVisibility(View.GONE);
findViewById(R.id.importOptionApplicationTitle).setVisibility(View.GONE);
findViewById(R.id.importOptionApplicationExplanation).setVisibility(View.GONE);
importApplication.setVisibility(View.GONE);
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);
}
}
private void startImport(final InputStream target, final Uri targetUri)
{
ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener()
{
@Override
public void onTaskComplete(boolean success)
{
onImportComplete(success, targetUri);
}
};
private void chooseImportType(boolean choosePicker,
@Nullable Uri fileData) {
importExporter = new ImportExportTask(ImportExportActivity.this,
DataFormat.CSV, target, listener);
importExporter.execute();
List<CharSequence> betaImportOptions = new ArrayList<>();
betaImportOptions.add("Fidme");
betaImportOptions.add("Stocard");
List<CharSequence> importOptions = new ArrayList<>();
for (String importOption : getResources().getStringArray(R.array.import_types_array)) {
if (betaImportOptions.contains(importOption)) {
importOption = importOption + " (BETA)";
}
importOptions.add(importOption);
}
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setTitle(R.string.chooseImportType)
.setItems(importOptions.toArray(new CharSequence[importOptions.size()]), (dialog, which) -> {
switch (which) {
// Catima
case 0:
importAlertTitle = getString(R.string.importCatima);
importAlertMessage = getString(R.string.importCatimaMessage);
importDataFormat = DataFormat.Catima;
break;
// Fidme
case 1:
importAlertTitle = getString(R.string.importFidme);
importAlertMessage = getString(R.string.importFidmeMessage);
importDataFormat = DataFormat.Fidme;
break;
// Loyalty Card Keychain
case 2:
importAlertTitle = getString(R.string.importLoyaltyCardKeychain);
importAlertMessage = getString(R.string.importLoyaltyCardKeychainMessage);
importDataFormat = DataFormat.Catima;
break;
// Stocard
case 3:
importAlertTitle = getString(R.string.importStocard);
importAlertMessage = getString(R.string.importStocardMessage);
importDataFormat = DataFormat.Stocard;
break;
// Voucher Vault
case 4:
importAlertTitle = getString(R.string.importVoucherVault);
importAlertMessage = getString(R.string.importVoucherVaultMessage);
importDataFormat = DataFormat.VoucherVault;
break;
default:
throw new IllegalArgumentException("Unknown DataFormat");
}
if (fileData != null) {
openFileForImport(fileData, null);
return;
}
new MaterialAlertDialogBuilder(this)
.setTitle(importAlertTitle)
.setMessage(importAlertMessage)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
if (choosePicker) {
final Intent intentPickAction = new Intent(Intent.ACTION_PICK);
filePickerLauncher.launch(intentPickAction);
} else {
fileOpenLauncher.launch("*/*");
}
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), R.string.failedOpeningFileManager, Toast.LENGTH_LONG).show();
Log.e(TAG, "No activity found to handle intent", e);
}
}
})
.setNegativeButton(R.string.cancel, null)
.show();
});
builder.show();
}
private void startExport(final OutputStream target, final Uri targetUri)
{
ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener()
{
private void startImport(final InputStream target, final Uri targetUri, final DataFormat dataFormat, final char[] password, final boolean closeWhenDone) {
mTasks.flushTaskList(TaskHandler.TYPE.IMPORT, true, false, false);
ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener() {
@Override
public void onTaskComplete(boolean success)
{
onExportComplete(success, targetUri);
}
};
importExporter = new ImportExportTask(ImportExportActivity.this,
DataFormat.CSV, target, listener);
importExporter.execute();
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
{
if(requestCode == PERMISSIONS_EXTERNAL_STORAGE)
{
// If request is cancelled, the result arrays are empty.
boolean success = grantResults.length > 0;
for(int grant : grantResults)
{
if(grant != PackageManager.PERMISSION_GRANTED)
{
success = false;
public void onTaskComplete(ImportExportResult result, DataFormat dataFormat) {
onImportComplete(result, targetUri, dataFormat);
if (closeWhenDone) {
try {
target.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
};
if(success == false)
{
// External storage permission rejected, inform user that
// import/export is prevented
Toast.makeText(getApplicationContext(), R.string.noExternalStoragePermissionError,
Toast.LENGTH_LONG).show();
importExporter = new ImportExportTask(ImportExportActivity.this,
dataFormat, target, password, listener);
mTasks.executeTask(TaskHandler.TYPE.IMPORT, importExporter);
}
private void startExport(final OutputStream target, final Uri targetUri, char[] password, final boolean closeWhenDone) {
mTasks.flushTaskList(TaskHandler.TYPE.EXPORT, true, false, false);
ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener() {
@Override
public void onTaskComplete(ImportExportResult result, DataFormat dataFormat) {
onExportComplete(result, targetUri);
if (closeWhenDone) {
try {
target.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
};
}
importExporter = new ImportExportTask(ImportExportActivity.this,
DataFormat.Catima, target, password, listener);
mTasks.executeTask(TaskHandler.TYPE.EXPORT, importExporter);
}
@Override
protected void onDestroy()
{
if(importExporter != null && importExporter.getStatus() != AsyncTask.Status.RUNNING)
{
importExporter.cancel(true);
}
protected void onDestroy() {
mTasks.flushTaskList(TaskHandler.TYPE.IMPORT, true, false, false);
mTasks.flushTaskList(TaskHandler.TYPE.EXPORT, true, false, false);
super.onDestroy();
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == android.R.id.home)
{
if (id == android.R.id.home) {
finish();
return true;
}
@@ -213,187 +316,84 @@ public class ImportExportActivity extends AppCompatActivity
return super.onOptionsItemSelected(item);
}
private void onImportComplete(boolean success, Uri path)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
private void retryWithPassword(DataFormat dataFormat, Uri uri) {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setTitle(R.string.passwordRequired);
if(success)
{
builder.setTitle(R.string.importSuccessfulTitle);
}
else
{
builder.setTitle(R.string.importFailedTitle);
}
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
builder.setView(input);
int messageId = success ? R.string.importSuccessful : R.string.importFailed;
final String message = getResources().getString(messageId);
builder.setMessage(message);
builder.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
openFileForImport(uri, input.getText().toString().toCharArray());
});
builder.setNegativeButton(R.string.cancel, (dialogInterface, i) -> dialogInterface.cancel());
builder.show();
}
private String buildResultDialogMessage(ImportExportResult result, boolean isImport) {
int messageId;
if (result.resultType() == ImportExportResultType.Success) {
messageId = isImport ? R.string.importSuccessful : R.string.exportSuccessful;
} else {
messageId = isImport ? R.string.importFailed : R.string.exportFailed;
}
StringBuilder messageBuilder = new StringBuilder(getResources().getString(messageId));
if (result.developerDetails() != null) {
messageBuilder.append("\n\n");
messageBuilder.append(getResources().getString(R.string.include_if_asking_support));
messageBuilder.append("\n\n");
messageBuilder.append(result.developerDetails());
}
return messageBuilder.toString();
}
private void onImportComplete(ImportExportResult result, Uri path, DataFormat dataFormat) {
ImportExportResultType resultType = result.resultType();
if (resultType == ImportExportResultType.BadPassword) {
retryWithPassword(dataFormat, path);
return;
}
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setTitle(resultType == ImportExportResultType.Success ? R.string.importSuccessfulTitle : R.string.importFailedTitle);
builder.setMessage(buildResultDialogMessage(result, true));
builder.setNeutralButton(R.string.ok, (dialog, which) -> dialog.dismiss());
builder.create().show();
}
private void onExportComplete(boolean success, final Uri path)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
private void onExportComplete(ImportExportResult result, final Uri path) {
ImportExportResultType resultType = result.resultType();
if(success)
{
builder.setTitle(R.string.exportSuccessfulTitle);
}
else
{
builder.setTitle(R.string.exportFailedTitle);
}
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setTitle(resultType == ImportExportResultType.Success ? R.string.exportSuccessfulTitle : R.string.exportFailedTitle);
builder.setMessage(buildResultDialogMessage(result, false));
builder.setNeutralButton(R.string.ok, (dialog, which) -> dialog.dismiss());
int messageId = success ? R.string.exportSuccessful : R.string.exportFailed;
final String message = getResources().getString(messageId);
builder.setMessage(message);
builder.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
if(success)
{
if (resultType == ImportExportResultType.Success) {
final CharSequence sendLabel = ImportExportActivity.this.getResources().getText(R.string.sendLabel);
builder.setPositiveButton(sendLabel, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, path);
sendIntent.setType("text/csv");
builder.setPositiveButton(sendLabel, (dialog, which) -> {
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, path);
sendIntent.setType("text/csv");
// set flag to give temporary permission to external app to use the FileProvider
sendIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// set flag to give temporary permission to external app to use the FileProvider
sendIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
ImportExportActivity.this.startActivity(Intent.createChooser(sendIntent,
sendLabel));
ImportExportActivity.this.startActivity(Intent.createChooser(sendIntent,
sendLabel));
dialog.dismiss();
}
dialog.dismiss();
});
}
builder.create().show();
}
/**
* Determines if there is at least one activity that can perform the given intent
*/
private boolean isCallable(Context context, final Intent intent)
{
PackageManager manager = context.getPackageManager();
if(manager == null)
{
return false;
}
List<ResolveInfo> list = manager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for(ResolveInfo info : list)
{
if(info.activityInfo.exported)
{
// There is one activity which is available to be called
return true;
}
}
return false;
}
private void chooseFileWithIntent(Intent intent, int requestCode)
{
try
{
startActivityForResult(intent, requestCode);
}
catch (ActivityNotFoundException e)
{
Log.e(TAG, "No activity found to handle intent", e);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK || (requestCode != CHOOSE_EXPORT_LOCATION && requestCode != CHOOSE_EXPORTED_FILE))
{
Log.w(TAG, "Failed onActivityResult(), result=" + resultCode);
return;
}
Uri uri = data.getData();
if(uri == null)
{
Log.e(TAG, "Activity returned a NULL URI");
return;
}
try
{
if (requestCode == CHOOSE_EXPORT_LOCATION)
{
OutputStream writer;
if (uri.getScheme() != null)
{
writer = getContentResolver().openOutputStream(uri);
}
else
{
writer = new FileOutputStream(new File(uri.toString()));
}
Log.e(TAG, "Starting file export with: " + uri.toString());
startExport(writer, uri);
}
else
{
InputStream reader;
if(uri.getScheme() != null)
{
reader = getContentResolver().openInputStream(uri);
}
else
{
reader = new FileInputStream(new File(uri.toString()));
}
Log.e(TAG, "Starting file export with: " + uri.toString());
startImport(reader, uri);
}
}
catch(FileNotFoundException e)
{
Log.e(TAG, "Failed to import/export file: " + uri.toString(), e);
if (requestCode == CHOOSE_EXPORT_LOCATION)
{
onExportComplete(false, uri);
}
else
{
onImportComplete(false, uri);
}
}
}
}
@@ -2,19 +2,25 @@ package protect.card_locker;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
class ImportExportTask extends AsyncTask<Void, Void, Boolean>
{
import protect.card_locker.async.CompatCallable;
import protect.card_locker.importexport.DataFormat;
import protect.card_locker.importexport.ImportExportResult;
import protect.card_locker.importexport.ImportExportResultType;
import protect.card_locker.importexport.MultiFormatExporter;
import protect.card_locker.importexport.MultiFormatImporter;
public class ImportExportTask implements CompatCallable<ImportExportResult> {
private static final String TAG = "Catima";
private Activity activity;
@@ -22,6 +28,7 @@ class ImportExportTask extends AsyncTask<Void, Void, Boolean>
private DataFormat format;
private OutputStream outputStream;
private InputStream inputStream;
private char[] password;
private TaskCompleteListener listener;
private ProgressDialog progress;
@@ -29,63 +36,48 @@ class ImportExportTask extends AsyncTask<Void, Void, Boolean>
/**
* Constructor which will setup a task for exporting to the given file
*/
ImportExportTask(Activity activity, DataFormat format, OutputStream output,
TaskCompleteListener listener)
{
ImportExportTask(Activity activity, DataFormat format, OutputStream output, char[] password,
TaskCompleteListener listener) {
super();
this.activity = activity;
this.doImport = false;
this.format = format;
this.outputStream = output;
this.password = password;
this.listener = listener;
}
/**
* Constructor which will setup a task for importing from the given InputStream.
*/
ImportExportTask(Activity activity, DataFormat format, InputStream input,
TaskCompleteListener listener)
{
ImportExportTask(Activity activity, DataFormat format, InputStream input, char[] password,
TaskCompleteListener listener) {
super();
this.activity = activity;
this.doImport = true;
this.format = format;
this.inputStream = input;
this.password = password;
this.listener = listener;
}
private boolean performImport(InputStream stream, DBHelper db)
{
boolean result = false;
private ImportExportResult performImport(Context context, InputStream stream, SQLiteDatabase database, char[] password) {
ImportExportResult importResult = MultiFormatImporter.importData(context, database, stream, format, password);
try
{
InputStreamReader reader = new InputStreamReader(stream, Charset.forName("UTF-8"));
result = MultiFormatImporter.importData(db, reader, format);
reader.close();
}
catch(IOException e)
{
Log.e(TAG, "Unable to import file", e);
}
Log.i(TAG, "Import result: " + importResult);
Log.i(TAG, "Import result: " + result);
return result;
return importResult;
}
private boolean performExport(OutputStream stream, DBHelper db)
{
boolean result = false;
private ImportExportResult performExport(Context context, OutputStream stream, SQLiteDatabase database, char[] password) {
ImportExportResult result;
try
{
OutputStreamWriter writer = new OutputStreamWriter(stream, Charset.forName("UTF-8"));
result = MultiFormatExporter.exportData(db, writer, format);
try {
OutputStreamWriter writer = new OutputStreamWriter(stream, StandardCharsets.UTF_8);
result = MultiFormatExporter.exportData(context, database, stream, format, password);
writer.close();
}
catch (IOException e)
{
} catch (IOException e) {
result = new ImportExportResult(ImportExportResultType.GenericFailure, e.toString());
Log.e(TAG, "Unable to export file", e);
}
@@ -94,56 +86,58 @@ class ImportExportTask extends AsyncTask<Void, Void, Boolean>
return result;
}
protected void onPreExecute()
{
public void onPreExecute() {
progress = new ProgressDialog(activity);
progress.setTitle(doImport ? R.string.importing : R.string.exporting);
progress.setOnDismissListener(new DialogInterface.OnDismissListener()
{
progress.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog)
{
ImportExportTask.this.cancel(true);
public void onDismiss(DialogInterface dialog) {
ImportExportTask.this.stop();
}
});
progress.show();
}
protected Boolean doInBackground(Void... nothing)
{
final DBHelper db = new DBHelper(activity);
boolean result;
protected ImportExportResult doInBackground(Void... nothing) {
final SQLiteDatabase database = new DBHelper(activity).getWritableDatabase();
ImportExportResult result;
if(doImport)
{
result = performImport(inputStream, db);
}
else
{
result = performExport(outputStream, db);
if (doImport) {
result = performImport(activity.getApplicationContext(), inputStream, database, password);
} else {
result = performExport(activity.getApplicationContext(), outputStream, database, password);
}
database.close();
return result;
}
protected void onPostExecute(Boolean result)
{
listener.onTaskComplete(result);
public void onPostExecute(Object castResult) {
listener.onTaskComplete((ImportExportResult) castResult, format);
progress.dismiss();
Log.i(TAG, (doImport ? "Import" : "Export") + " Complete");
}
protected void onCancelled()
{
protected void onCancelled() {
progress.dismiss();
Log.i(TAG, (doImport ? "Import" : "Export") + " Cancelled");
}
interface TaskCompleteListener
{
void onTaskComplete(boolean success);
protected void stop() {
// Whelp
}
@Override
public ImportExportResult call() {
return doInBackground();
}
interface TaskCompleteListener {
void onTaskComplete(ImportExportResult result, DataFormat format);
}
}
@@ -3,93 +3,213 @@ package protect.card_locker;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import java.io.InvalidObjectException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Currency;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
public class ImportURIHelper {
private static final String STORE = DBHelper.LoyaltyCardDbIds.STORE;
private static final String NOTE = DBHelper.LoyaltyCardDbIds.NOTE;
private static final String VALID_FROM = DBHelper.LoyaltyCardDbIds.VALID_FROM;
private static final String EXPIRY = DBHelper.LoyaltyCardDbIds.EXPIRY;
private static final String BALANCE = DBHelper.LoyaltyCardDbIds.BALANCE;
private static final String BALANCE_TYPE = DBHelper.LoyaltyCardDbIds.BALANCE_TYPE;
private static final String CARD_ID = DBHelper.LoyaltyCardDbIds.CARD_ID;
private static final String BARCODE_ID = DBHelper.LoyaltyCardDbIds.BARCODE_ID;
private static final String BARCODE_TYPE = DBHelper.LoyaltyCardDbIds.BARCODE_TYPE;
private static final String HEADER_COLOR = DBHelper.LoyaltyCardDbIds.HEADER_COLOR;
private final Context context;
private final String host;
private final String path;
private final String oldHost;
private final String oldPath;
private final String[] hosts = new String[3];
private final String[] paths = new String[3];
private final String shareText;
private final String shareMultipleText;
public ImportURIHelper(Context context) {
this.context = context;
host = context.getResources().getString(R.string.intent_import_card_from_url_host);
path = context.getResources().getString(R.string.intent_import_card_from_url_path_prefix);
oldHost = "brarcher.github.io";
oldPath = "/loyalty-card-locker/share";
this.context = context.getApplicationContext();
hosts[0] = context.getResources().getString(R.string.intent_import_card_from_url_host_catima_app);
paths[0] = context.getResources().getString(R.string.intent_import_card_from_url_path_prefix_catima_app);
hosts[1] = context.getResources().getString(R.string.intent_import_card_from_url_host_thelastproject);
paths[1] = context.getResources().getString(R.string.intent_import_card_from_url_path_prefix_thelastproject);
hosts[2] = context.getResources().getString(R.string.intent_import_card_from_url_host_brarcher);
paths[2] = context.getResources().getString(R.string.intent_import_card_from_url_path_prefix_brarcher);
shareText = context.getResources().getString(R.string.intent_import_card_from_url_share_text);
shareMultipleText = context.getResources().getString(R.string.intent_import_card_from_url_share_multiple_text);
}
private boolean isImportUri(Uri uri) {
return (uri.getHost().equals(host) && uri.getPath().equals(path)) || (uri.getHost().equals(oldHost) && uri.getPath().equals(oldPath));
// Remove trailing slash added by some browsers (if it exists)
final String uriPath = uri.getPath().replaceAll("/$", "");
for (int i = 0; i < hosts.length; i++) {
if (uri.getHost().equals(hosts[i]) && uriPath.equals(paths[i])) {
return true;
}
}
return false;
}
public LoyaltyCard parse(Uri uri) throws InvalidObjectException {
if(!isImportUri(uri)) {
if (!isImportUri(uri)) {
throw new InvalidObjectException("Not an import URI");
}
try {
// These values are allowed to be null
CatimaBarcode barcodeType = null;
Date validFrom = null;
Date expiry = null;
BigDecimal balance = new BigDecimal("0");
Currency balanceType = null;
Integer headerColor = null;
Integer headerTextColor = null;
String store = uri.getQueryParameter(STORE);
String note = uri.getQueryParameter(NOTE);
String cardId = uri.getQueryParameter(CARD_ID);
String barcodeType = uri.getQueryParameter(BARCODE_TYPE);
if (store == null || note == null || cardId == null || barcodeType == null) throw new InvalidObjectException("Not a valid import URI");
// Store everything in a simple key/value hashmap
HashMap<String, String> kv = new HashMap<>();
String unparsedHeaderColor = uri.getQueryParameter(HEADER_COLOR);
if(unparsedHeaderColor != null)
{
// First, grab all query parameters (backwards compatibility)
for (String key : uri.getQueryParameterNames()) {
kv.put(key, uri.getQueryParameter(key));
}
// Then, parse the new and more private fragment part
// Overriding old format entries if they exist
String fragment = uri.getFragment();
if (fragment != null) {
for (String fragmentPart : fragment.split("&")) {
String[] fragmentData = fragmentPart.split("=", 2);
kv.put(fragmentData[0], URLDecoder.decode(fragmentData[1], StandardCharsets.UTF_8.name()));
}
}
// Then use all values we care about
String store = kv.get(STORE);
String note = kv.get(NOTE);
String cardId = kv.get(CARD_ID);
String barcodeId = kv.get(BARCODE_ID);
if (store == null || note == null || cardId == null)
throw new InvalidObjectException("Not a valid import URI: " + uri.toString());
String unparsedBarcodeType = kv.get(BARCODE_TYPE);
if (unparsedBarcodeType != null && !unparsedBarcodeType.equals("")) {
barcodeType = CatimaBarcode.fromName(unparsedBarcodeType);
}
String unparsedBalance = kv.get(BALANCE);
if (unparsedBalance != null && !unparsedBalance.equals("")) {
balance = new BigDecimal(unparsedBalance);
}
String unparsedBalanceType = kv.get(BALANCE_TYPE);
if (unparsedBalanceType != null && !unparsedBalanceType.equals("")) {
balanceType = Currency.getInstance(unparsedBalanceType);
}
String unparsedValidFrom = kv.get(VALID_FROM);
if (unparsedValidFrom != null && !unparsedValidFrom.equals("")) {
validFrom = new Date(Long.parseLong(unparsedValidFrom));
}
String unparsedExpiry = kv.get(EXPIRY);
if (unparsedExpiry != null && !unparsedExpiry.equals("")) {
expiry = new Date(Long.parseLong(unparsedExpiry));
}
String unparsedHeaderColor = kv.get(HEADER_COLOR);
if (unparsedHeaderColor != null) {
headerColor = Integer.parseInt(unparsedHeaderColor);
}
return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor, 0);
} catch (NullPointerException | NumberFormatException ex) {
return new LoyaltyCard(-1, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, 0, Utils.getUnixTime(), 100, 0);
} catch (NumberFormatException | UnsupportedEncodingException | ArrayIndexOutOfBoundsException ex) {
throw new InvalidObjectException("Not a valid import URI");
}
}
private StringBuilder appendFragment(StringBuilder fragment, String key, String value) throws UnsupportedEncodingException {
if (fragment.length() > 0) {
fragment.append("&");
}
// Double-encode the value to make sure it can't accidentally contain symbols that'll break the parser
fragment.append(key).append("=").append(URLEncoder.encode(value, StandardCharsets.UTF_8.name()));
return fragment;
}
// Protected for usage in tests
protected Uri toUri(LoyaltyCard loyaltyCard) {
protected Uri toUri(LoyaltyCard loyaltyCard) throws UnsupportedEncodingException {
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.scheme("https");
uriBuilder.authority(host);
uriBuilder.path(path);
uriBuilder.appendQueryParameter(STORE, loyaltyCard.store);
uriBuilder.appendQueryParameter(NOTE, loyaltyCard.note);
uriBuilder.appendQueryParameter(CARD_ID, loyaltyCard.cardId);
uriBuilder.appendQueryParameter(BARCODE_TYPE, loyaltyCard.barcodeType);
if(loyaltyCard.headerColor != null)
{
uriBuilder.appendQueryParameter(HEADER_COLOR, loyaltyCard.headerColor.toString());
uriBuilder.authority(hosts[0]);
uriBuilder.path(paths[0]);
// Use fragment instead of QueryParameter to not leak this data to the server
StringBuilder fragment = new StringBuilder();
fragment = appendFragment(fragment, STORE, loyaltyCard.store);
fragment = appendFragment(fragment, NOTE, loyaltyCard.note);
fragment = appendFragment(fragment, BALANCE, loyaltyCard.balance.toString());
if (loyaltyCard.balanceType != null) {
fragment = appendFragment(fragment, BALANCE_TYPE, loyaltyCard.balanceType.getCurrencyCode());
}
//StarStatus will not be exported
if (loyaltyCard.validFrom != null) {
fragment = appendFragment(fragment, VALID_FROM, String.valueOf(loyaltyCard.validFrom.getTime()));
}
if (loyaltyCard.expiry != null) {
fragment = appendFragment(fragment, EXPIRY, String.valueOf(loyaltyCard.expiry.getTime()));
}
fragment = appendFragment(fragment, CARD_ID, loyaltyCard.cardId);
if (loyaltyCard.barcodeId != null) {
fragment = appendFragment(fragment, BARCODE_ID, loyaltyCard.barcodeId);
}
if (loyaltyCard.barcodeType != null) {
fragment = appendFragment(fragment, BARCODE_TYPE, loyaltyCard.barcodeType.name());
}
if (loyaltyCard.headerColor != null) {
fragment = appendFragment(fragment, HEADER_COLOR, loyaltyCard.headerColor.toString());
}
// Star status will not be exported
// Front and back pictures are often too big to fit into a message in base64 nicely, not sharing either...
uriBuilder.fragment(fragment.toString());
return uriBuilder.build();
}
private void startShareIntent(Uri uri) {
public void startShareIntent(List<LoyaltyCard> loyaltyCards) throws UnsupportedEncodingException {
int loyaltyCardCount = loyaltyCards.size();
StringBuilder text = new StringBuilder();
if (loyaltyCardCount == 1) {
text.append(shareText);
} else {
text.append(shareMultipleText);
}
text.append("\n\n");
for (int i = 0; i < loyaltyCardCount; i++) {
LoyaltyCard loyaltyCard = loyaltyCards.get(i);
text.append(loyaltyCard.store + ": " + toUri(loyaltyCard));
if (i < (loyaltyCardCount - 1)) {
text.append("\n\n");
}
}
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, shareText + "\n" + uri.toString());
sendIntent.putExtra(Intent.EXTRA_TEXT, text.toString());
sendIntent.setType("text/plain");
Intent shareIntent = Intent.createChooser(sendIntent, null);
shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(shareIntent);
}
public void startShareIntent(LoyaltyCard loyaltyCard) {
startShareIntent(toUri(loyaltyCard));
}
}
@@ -10,6 +10,9 @@ import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.util.Log;
import androidx.core.graphics.PaintCompat;
/**
* Original from https://github.com/andOTP/andOTP/blob/master/app/src/main/java/org/shadowice/flocke/andotp/Utilities/LetterBitmap.java
@@ -18,8 +21,7 @@ import android.text.TextPaint;
* alphabet or digit, if there is no letter or digit available, a default image
* is shown instead.
*/
class LetterBitmap
{
class LetterBitmap {
/**
* The number of available tile colors
@@ -37,59 +39,62 @@ class LetterBitmap
/**
* Constructor for <code>LetterTileProvider</code>
*
* @param context The {@link Context} to use
* @param displayName The name used to create the letter for the tile
* @param key The key used to generate the background color for the tile
* @param context The {@link Context} to use
* @param displayName The name used to create the letter for the tile
* @param key The key used to generate the background color for the tile
* @param tileLetterFontSize The font size used to display the letter
* @param width The desired width of the tile
* @param height The desired height of the tile
* @param backgroundColor (optional) color to use for background.
* @param textColor (optional) color to use for text.
* @param width The desired width of the tile
* @param height The desired height of the tile
* @param backgroundColor (optional) color to use for background.
* @param textColor (optional) color to use for text.
*/
public LetterBitmap(Context context, String displayName, String key, int tileLetterFontSize,
int width, int height, Integer backgroundColor, Integer textColor)
{
int width, int height, Integer backgroundColor, Integer textColor) {
TextPaint paint = new TextPaint();
paint.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD));
if(textColor != null)
{
if (textColor != null) {
paint.setColor(textColor);
}
else
{
} else {
paint.setColor(Color.WHITE);
}
paint.setTextAlign(Paint.Align.CENTER);
paint.setAntiAlias(true);
paint.setTextSize(tileLetterFontSize);
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
if(backgroundColor == null)
{
if (backgroundColor == null) {
mColor = getDefaultColor(context, key);
}
else
{
} else {
mColor = backgroundColor;
}
mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
String firstChar = displayName.substring(0, 1);
String firstChar = displayName.substring(0, 1).toUpperCase();
int firstCharEnd = 2;
while (firstCharEnd <= displayName.length()) {
// Test for the longest render-able string
// But ignore containing only a-Z0-9 to not render things like ffi as a single character
String test = displayName.substring(0, firstCharEnd);
if (!isAlphabetical(test) && PaintCompat.hasGlyph(paint, test)) {
firstChar = test;
}
firstCharEnd++;
}
Log.d("LetterBitmap", "using sequence " + firstChar + " to render first char which has length " + firstChar.length());
final Canvas c = new Canvas();
c.setBitmap(mBitmap);
c.drawColor(mColor);
char [] firstCharArray = new char[1];
firstCharArray[0] = firstChar.toUpperCase().charAt(0);
paint.setTextSize(tileLetterFontSize);
// The bounds that enclose the letter
Rect bounds = new Rect();
paint.getTextBounds(firstChar, 0, firstChar.length(), bounds);
c.drawText(firstChar,
0, firstChar.length(),
width / 2.0f, (height - (bounds.bottom + bounds.top)) / 2.0f
, paint);
paint.getTextBounds(firstCharArray, 0, 1, bounds);
c.drawText(firstCharArray, 0, 1, width / 2.0f, height / 2.0f
+ (bounds.bottom - bounds.top) / 2.0f, paint);
}
/**
@@ -97,16 +102,14 @@ class LetterBitmap
* alphabet or digit, if there is no letter or digit available, a
* default image is shown instead
*/
public Bitmap getLetterTile()
{
public Bitmap getLetterTile() {
return mBitmap;
}
/**
* @return background color used for letter title.
*/
public int getBackgroundColor()
{
public int getBackgroundColor() {
return mColor;
}
@@ -115,20 +118,22 @@ class LetterBitmap
* @return A new or previously chosen color for <code>key</code> used as the
* tile background color
*/
private static int pickColor(String key, TypedArray colors)
{
private static int pickColor(String key, TypedArray colors) {
// String.hashCode() is not supposed to change across java versions, so
// this should guarantee the same key always maps to the same color
final int color = Math.abs(key.hashCode()) % NUM_OF_TILE_COLORS;
return colors.getColor(color, Color.BLACK);
}
private static boolean isAlphabetical(String string) {
return string.matches("[a-zA-Z0-9]*");
}
/**
* Determine the color which the letter tile will use if no default
* color is provided.
*/
public static int getDefaultColor(Context context, String key)
{
public static int getDefaultColor(Context context, String key) {
final Resources res = context.getResources();
TypedArray colors = res.obtainTypedArray(R.array.letter_tile_colors);
@@ -1,65 +1,206 @@
package protect.card_locker;
import android.database.Cursor;
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
{
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;
public final String barcodeType;
@Nullable
public final String barcodeId;
@Nullable
public final CatimaBarcode barcodeType;
@Nullable
public final Integer headerColor;
@Nullable
public final Integer headerTextColor;
public final int starStatus;
public final int archiveStatus;
public final long lastUsed;
public int zoomLevel;
public LoyaltyCard(final int id, final String store, final String note, final String cardId,
final String barcodeType, final Integer headerColor, final Integer headerTextColor,
final int starStatus)
{
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) {
this.id = id;
this.store = store;
this.note = note;
this.validFrom = validFrom;
this.expiry = expiry;
this.balance = balance;
this.balanceType = balanceType;
this.cardId = cardId;
this.barcodeId = barcodeId;
this.barcodeType = barcodeType;
this.headerColor = headerColor;
this.headerTextColor = headerTextColor;
this.starStatus = starStatus;
this.lastUsed = lastUsed;
this.zoomLevel = zoomLevel;
this.archiveStatus = archiveStatus;
}
public static LoyaltyCard toLoyaltyCard(Cursor cursor)
{
protected LoyaltyCard(Parcel in) {
id = in.readInt();
store = in.readString();
note = in.readString();
long tmpValidFrom = in.readLong();
validFrom = tmpValidFrom != -1 ? 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();
String tmpBarcodeType = in.readString();
barcodeType = !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();
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(id);
parcel.writeString(store);
parcel.writeString(note);
parcel.writeLong(validFrom != null ? validFrom.getTime() : -1);
parcel.writeLong(expiry != null ? expiry.getTime() : -1);
parcel.writeValue(balance);
parcel.writeValue(balanceType);
parcel.writeString(cardId);
parcel.writeString(barcodeId);
parcel.writeString(barcodeType != null ? barcodeType.name() : "");
parcel.writeInt(headerColor != null ? headerColor : -1);
parcel.writeInt(starStatus);
parcel.writeLong(lastUsed);
parcel.writeInt(zoomLevel);
parcel.writeInt(archiveStatus);
}
public static LoyaltyCard toLoyaltyCard(Cursor cursor) {
int id = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ID));
String store = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STORE));
String note = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.NOTE));
long validFromLong = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.VALID_FROM));
long expiryLong = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXPIRY));
BigDecimal balance = new BigDecimal(cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE)));
String cardId = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.CARD_ID));
String barcodeType = cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE));
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);
int balanceTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE_TYPE);
int headerColorColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR);
int headerTextColorColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_TEXT_COLOR);
CatimaBarcode barcodeType = null;
Currency balanceType = null;
Date validFrom = null;
Date expiry = null;
Integer headerColor = null;
Integer headerTextColor = null;
if(cursor.isNull(headerColorColumn) == false)
{
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);
}
if(cursor.isNull(headerTextColorColumn) == false)
{
headerTextColor = cursor.getInt(headerTextColorColumn);
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starred, lastUsed, zoomLevel, archived);
}
public static boolean isDuplicate(final LoyaltyCard a, final LoyaltyCard b) {
// Skip lastUsed & zoomLevel
return a.id == b.id && // non-nullable int
a.store.equals(b.store) && // non-nullable String
a.note.equals(b.note) && // non-nullable String
Utils.equals(a.validFrom, b.validFrom) && // nullable Date
Utils.equals(a.expiry, b.expiry) && // nullable Date
a.balance.equals(b.balance) && // non-nullable BigDecimal
Utils.equals(a.balanceType, b.balanceType) && // nullable Currency
a.cardId.equals(b.cardId) && // non-nullable String
Utils.equals(a.barcodeId, b.barcodeId) && // nullable String
Utils.equals(a.barcodeType == null ? null : a.barcodeType.format(),
b.barcodeType == null ? null : b.barcodeType.format()) && // nullable CatimaBarcode with no overridden .equals(), so we need to check .format()
Utils.equals(a.headerColor, b.headerColor) && // nullable Integer
a.starStatus == b.starStatus && // non-nullable int
a.archiveStatus == b.archiveStatus; // non-nullable int
}
@Override
public int describeContents() {
return id;
}
@NonNull
@Override
public String toString() {
return String.format(
"LoyaltyCard{%n id=%s,%n store=%s,%n note=%s,%n validFrom=%s,%n expiry=%s,%n"
+ " balance=%s,%n balanceType=%s,%n cardId=%s,%n barcodeId=%s,%n barcodeType=%s,%n"
+ " headerColor=%s,%n starStatus=%s,%n lastUsed=%s,%n zoomLevel=%s,%n archiveStatus=%s%n}",
this.id,
this.store,
this.note,
this.validFrom,
this.expiry,
this.balance,
this.balanceType,
this.cardId,
this.barcodeId,
this.barcodeType != null ? this.barcodeType.format() : null,
this.headerColor,
this.starStatus,
this.lastUsed,
this.zoomLevel,
this.archiveStatus
);
}
public static final Creator<LoyaltyCard> CREATOR = new Creator<LoyaltyCard>() {
@Override
public LoyaltyCard createFromParcel(Parcel in) {
return new LoyaltyCard(in);
}
return new LoyaltyCard(id, store, note, cardId, barcodeType, headerColor, headerTextColor, starred);
}
@Override
public LoyaltyCard[] newArray(int size) {
return new LoyaltyCard[size];
}
};
}
@@ -1,76 +1,354 @@
package protect.card_locker;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.util.SparseBooleanArray;
import android.util.TypedValue;
import android.view.HapticFeedbackConstants;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import protect.card_locker.preferences.Settings;
class LoyaltyCardCursorAdapter extends CursorAdapter
{
Settings settings;
boolean darkModeEnabled;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.color.MaterialColors;
public LoyaltyCardCursorAdapter(Context context, Cursor cursor)
{
super(context, cursor, 0);
settings = new Settings(context);
darkModeEnabled= MainActivity.isDarkModeEnabled(context);
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;
import androidx.core.graphics.BlendModeColorFilterCompat;
import androidx.core.graphics.BlendModeCompat;
import androidx.recyclerview.widget.RecyclerView;
import protect.card_locker.databinding.LoyaltyCardLayoutBinding;
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
private int mCurrentSelectedIndex = -1;
boolean mDarkModeEnabled;
public final Context mContext;
private final CardAdapterListener mListener;
private final LoyaltyCardListDisplayOptionsManager mLoyaltyCardListDisplayOptions;
protected SparseBooleanArray mSelectedItems;
protected SparseBooleanArray mAnimationItemsIndex;
private boolean mReverseAllAnimations = false;
public LoyaltyCardCursorAdapter(Context inputContext, Cursor inputCursor, CardAdapterListener inputListener, Runnable inputSwapCursorCallback) {
super(inputCursor, DBHelper.LoyaltyCardDbIds.ID);
setHasStableIds(true);
mContext = inputContext;
mListener = inputListener;
Runnable refreshCardsCallback = () -> notifyDataSetChanged();
mLoyaltyCardListDisplayOptions = new LoyaltyCardListDisplayOptionsManager(mContext, refreshCardsCallback, inputSwapCursorCallback);
mSelectedItems = new SparseBooleanArray();
mAnimationItemsIndex = new SparseBooleanArray();
mDarkModeEnabled = Utils.isDarkModeEnabled(inputContext);
swapCursor(inputCursor);
}
// The newView method is used to inflate a new view and return it,
// you don't bind any data to the view at this point.
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
return LayoutInflater.from(context).inflate(R.layout.loyalty_card_layout, parent, false);
public void showDisplayOptionsDialog() {
mLoyaltyCardListDisplayOptions.showDisplayOptionsDialog();
}
// The bindView method is used to bind all data to a given view
// such as setting the text on a TextView.
public boolean showingArchivedCards() {
return mLoyaltyCardListDisplayOptions.showingArchivedCards();
}
@NonNull
@Override
public void bindView(View view, Context context, Cursor cursor)
{
// Find fields to populate in inflated template
ImageView thumbnail = view.findViewById(R.id.thumbnail);
TextView storeField = view.findViewById(R.id.store);
TextView noteField = view.findViewById(R.id.note);
ImageView star = view.findViewById(R.id.star);
public LoyaltyCardListItemViewHolder onCreateViewHolder(@NonNull ViewGroup inputParent, int inputViewType) {
LoyaltyCardLayoutBinding loyaltyCardLayoutBinding = LoyaltyCardLayoutBinding.inflate(
LayoutInflater.from(inputParent.getContext()),
inputParent,
false
);
return new LoyaltyCardListItemViewHolder(loyaltyCardLayoutBinding, mListener);
}
if(darkModeEnabled)
{
star.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
public LoyaltyCard getCard(int position) {
mCursor.moveToPosition(position);
return LoyaltyCard.toLoyaltyCard(mCursor);
}
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
// Invisible until we want to show something more
boolean showDivider = false;
inputHolder.mDivider.setVisibility(View.GONE);
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
Bitmap icon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
if (mLoyaltyCardListDisplayOptions.showingNameBelowThumbnail() && icon != null) {
showDivider = true;
inputHolder.setStoreField(loyaltyCard.store);
} else {
inputHolder.setStoreField(null);
}
// Extract properties from cursor
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor);
// Populate fields with extracted properties
storeField.setText(loyaltyCard.store);
storeField.setTextSize(settings.getCardTitleListFontSize());
if(!loyaltyCard.note.isEmpty())
{
noteField.setVisibility(View.VISIBLE);
noteField.setText(loyaltyCard.note);
noteField.setTextSize(settings.getCardNoteListFontSize());
}
else
{
noteField.setVisibility(View.GONE);
if (mLoyaltyCardListDisplayOptions.showingNote() && !loyaltyCard.note.isEmpty()) {
showDivider = true;
inputHolder.setNoteField(loyaltyCard.note);
} else {
inputHolder.setNoteField(null);
}
if (loyaltyCard.starStatus!=0) star.setVisibility(View.VISIBLE);
else star.setVisibility(View.GONE);
if (mLoyaltyCardListDisplayOptions.showingBalance() && !loyaltyCard.balance.equals(new BigDecimal("0"))) {
inputHolder.setExtraField(inputHolder.mBalanceField, Utils.formatBalance(mContext, loyaltyCard.balance, loyaltyCard.balanceType), null, showDivider);
} else {
inputHolder.setExtraField(inputHolder.mBalanceField, null, null, false);
}
thumbnail.setImageBitmap(Utils.generateIcon(context, loyaltyCard.store, loyaltyCard.headerColor).getLetterTile());
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);
} 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);
} 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.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0, itemSelected(inputCursor.getPosition()));
inputHolder.itemView.setActivated(mSelectedItems.get(inputCursor.getPosition(), false));
applyIconAnimation(inputHolder, inputCursor.getPosition());
applyClickEvents(inputHolder, inputCursor.getPosition());
// Force redraw to fix size not shrinking after data change
inputHolder.mRow.requestLayout();
}
private void applyClickEvents(LoyaltyCardListItemViewHolder inputHolder, final int inputPosition) {
inputHolder.mRow.setOnClickListener(inputView -> mListener.onRowClicked(inputPosition));
inputHolder.mRow.setOnLongClickListener(inputView -> {
mListener.onRowLongClicked(inputPosition);
inputView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
return true;
});
}
private boolean itemSelected(int inputPosition) {
return mSelectedItems.get(inputPosition, false);
}
private void applyIconAnimation(LoyaltyCardListItemViewHolder inputHolder, int inputPosition) {
if (itemSelected(inputPosition)) {
inputHolder.mTickIcon.setVisibility(View.VISIBLE);
if (mCurrentSelectedIndex == inputPosition) {
resetCurrentIndex();
}
} else {
inputHolder.mTickIcon.setVisibility(View.GONE);
if ((mReverseAllAnimations && mAnimationItemsIndex.get(inputPosition, false)) || mCurrentSelectedIndex == inputPosition) {
resetCurrentIndex();
}
}
}
public void toggleSelection(int inputPosition) {
mCurrentSelectedIndex = inputPosition;
if (mSelectedItems.get(inputPosition, false)) {
mSelectedItems.delete(inputPosition);
mAnimationItemsIndex.delete(inputPosition);
} else {
mSelectedItems.put(inputPosition, true);
mAnimationItemsIndex.put(inputPosition, true);
}
notifyDataSetChanged();
}
public void clearSelections() {
mReverseAllAnimations = true;
mSelectedItems.clear();
notifyDataSetChanged();
}
public int getSelectedItemCount() {
return mSelectedItems.size();
}
public ArrayList<LoyaltyCard> getSelectedItems() {
ArrayList<LoyaltyCard> result = new ArrayList<>();
int i;
for (i = 0; i < mSelectedItems.size(); i++) {
mCursor.moveToPosition(mSelectedItems.keyAt(i));
result.add(LoyaltyCard.toLoyaltyCard(mCursor));
}
return result;
}
private void resetCurrentIndex() {
mCurrentSelectedIndex = -1;
}
public interface CardAdapterListener {
void onRowClicked(int inputPosition);
void onRowLongClicked(int inputPosition);
}
public class LoyaltyCardListItemViewHolder extends RecyclerView.ViewHolder {
public TextView mCardText, mStoreField, mNoteField, mBalanceField, mValidFromField, mExpiryField;
public ImageView mCardIcon, mStarBackground, mStarBorder, mTickIcon, mArchivedBackground;
public MaterialCardView mRow;
public ConstraintLayout mStar, mArchived;
public View mDivider;
private int mIconBackgroundColor;
protected LoyaltyCardListItemViewHolder(LoyaltyCardLayoutBinding loyaltyCardLayoutBinding, CardAdapterListener inputListener) {
super(loyaltyCardLayoutBinding.getRoot());
View inputView = loyaltyCardLayoutBinding.getRoot();
mRow = loyaltyCardLayoutBinding.row;
mDivider = loyaltyCardLayoutBinding.infoDivider;
mStoreField = loyaltyCardLayoutBinding.store;
mNoteField = loyaltyCardLayoutBinding.note;
mBalanceField = loyaltyCardLayoutBinding.balance;
mValidFromField = loyaltyCardLayoutBinding.validFrom;
mExpiryField = loyaltyCardLayoutBinding.expiry;
mCardIcon = loyaltyCardLayoutBinding.thumbnail;
mCardText = loyaltyCardLayoutBinding.thumbnailText;
mStar = loyaltyCardLayoutBinding.star;
mStarBackground = loyaltyCardLayoutBinding.starBackground;
mStarBorder = loyaltyCardLayoutBinding.starBorder;
mArchived = loyaltyCardLayoutBinding.archivedIcon;
mArchivedBackground = loyaltyCardLayoutBinding.archiveBackground;
mTickIcon = loyaltyCardLayoutBinding.selectedThumbnail;
inputView.setOnLongClickListener(view -> {
inputListener.onRowClicked(getAdapterPosition());
inputView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
return true;
});
}
private void setExtraField(TextView field, String text, Integer color, boolean showDivider) {
// If text is null, hide the field
// If iconColor is null, use the default text and icon color based on theme
if (text == null) {
field.setVisibility(View.GONE);
field.requestLayout();
return;
}
// Shown when there is a name and/or note and at least 1 extra field
if (showDivider) {
mDivider.setVisibility(View.VISIBLE);
}
field.setText(text);
field.setTextColor(color != null ? color : MaterialColors.getColor(mContext, com.google.android.material.R.attr.colorSecondary, ContextCompat.getColor(mContext, mDarkModeEnabled ? R.color.md_theme_dark_secondary : R.color.md_theme_light_secondary)));
field.setVisibility(View.VISIBLE);
Drawable icon = field.getCompoundDrawables()[0];
if (icon != null) {
icon.mutate();
field.setCompoundDrawablesRelative(icon, null, null, null);
if (color != null) {
icon.setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(color, BlendModeCompat.SRC_ATOP));
} else {
icon.setColorFilter(BlendModeColorFilterCompat.createBlendModeColorFilterCompat(mDarkModeEnabled ? Color.WHITE : Color.BLACK, BlendModeCompat.SRC_ATOP));
}
}
field.requestLayout();
}
public void setStoreField(String text) {
if (text == null) {
mStoreField.setVisibility(View.GONE);
} else {
mStoreField.setVisibility(View.VISIBLE);
mStoreField.setText(text);
}
mStoreField.requestLayout();
}
public void setNoteField(String text) {
if (text == null) {
mNoteField.setVisibility(View.GONE);
} else {
mNoteField.setVisibility(View.VISIBLE);
mNoteField.setText(text);
}
mNoteField.requestLayout();
}
public void toggleCardStateIcon(boolean enableStar, boolean enableArchive, boolean colorByTheme) {
/* the below code does not work in android 5! hence the change of drawable instead
boolean needDarkForeground = Utils.needsDarkForeground(mIconBackgroundColor);
Drawable borderDrawable = mStarBorder.getDrawable().mutate();
Drawable backgroundDrawable = mStarBackground.getDrawable().mutate();
DrawableCompat.setTint(borderDrawable, needsDarkForeground ? Color.BLACK : Color.WHITE);
DrawableCompat.setTint(backgroundDrawable, needsDarkForeground ? Color.BLACK : Color.WHITE);
mStarBorder.setImageDrawable(borderDrawable);
mStarBackground.setImageDrawable(backgroundDrawable);
*/
boolean dark = Utils.needsDarkForeground(mIconBackgroundColor);
if (colorByTheme) {
dark = !mDarkModeEnabled;
}
if (dark) {
mStarBorder.setImageResource(R.drawable.ic_unstarred_white);
mStarBackground.setImageResource(R.drawable.ic_starred_black);
mArchivedBackground.setImageResource(R.drawable.ic_baseline_archive_24_black);
} else {
mStarBorder.setImageResource(R.drawable.ic_unstarred_black);
mStarBackground.setImageResource(R.drawable.ic_starred_white);
mArchivedBackground.setImageResource(R.drawable.ic_baseline_archive_24);
}
if (enableStar) {
mStar.setVisibility(View.VISIBLE);
} else{
mStar.setVisibility(View.GONE);
}
if (enableArchive) {
mArchived.setVisibility(View.VISIBLE);
} else{
mArchived.setVisibility(View.GONE);
}
mStarBorder.invalidate();
mStarBackground.invalidate();
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;
}
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,17 @@
package protect.card_locker;
public enum LoyaltyCardField {
id,
store,
note,
validFrom,
expiry,
balance,
balanceType,
cardId,
barcodeId,
barcodeType,
headerColor,
starStatus,
archiveStatus
}
@@ -0,0 +1,176 @@
package protect.card_locker;
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class LoyaltyCardListDisplayOptionsManager {
public static class LoyaltyCardDisplayOption {
public String name;
public boolean value;
public Consumer<Boolean> callback;
LoyaltyCardDisplayOption(String name, boolean value, Consumer<Boolean> callback) {
this.name = name;
this.value = value;
this.callback = callback;
}
}
public final Context mContext;
private final Runnable mRefreshCardsCallback;
private final Runnable mSwapCursorCallback;
protected SharedPreferences mCardDetailsPref;
private boolean mShowNameBelowThumbnail;
private boolean mShowNote;
private boolean mShowBalance;
private boolean mShowValidity;
private boolean mShowArchivedCards;
public LoyaltyCardListDisplayOptionsManager(Context context, @NonNull Runnable refreshCardsCallback, @Nullable Runnable swapCursorCallback) {
mContext = context;
mRefreshCardsCallback = refreshCardsCallback;
mSwapCursorCallback = swapCursorCallback;
// Retrieve user details preference
mCardDetailsPref = mContext.getSharedPreferences(
mContext.getString(R.string.sharedpreference_card_details),
Context.MODE_PRIVATE);
mShowNameBelowThumbnail = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_name_below_thumbnail), false);
mShowNote = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_note), true);
mShowBalance = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_balance), true);
mShowValidity = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_validity), true);
mShowArchivedCards = mCardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_archived_cards), true);
}
void saveDetailState(int stateId, boolean value) {
SharedPreferences.Editor cardDetailsPrefEditor = mCardDetailsPref.edit();
cardDetailsPrefEditor.putBoolean(mContext.getString(stateId), value);
cardDetailsPrefEditor.apply();
}
public void showNameBelowThumbnail(boolean show) {
mShowNameBelowThumbnail = show;
mRefreshCardsCallback.run();
saveDetailState(R.string.sharedpreference_card_details_show_name_below_thumbnail, show);
}
public boolean showingNameBelowThumbnail() {
return mShowNameBelowThumbnail;
}
public void showNote(boolean show) {
mShowNote = show;
mRefreshCardsCallback.run();
saveDetailState(R.string.sharedpreference_card_details_show_note, show);
}
public boolean showingNote() {
return mShowNote;
}
public void showBalance(boolean show) {
mShowBalance = show;
mRefreshCardsCallback.run();
saveDetailState(R.string.sharedpreference_card_details_show_balance, show);
}
public boolean showingBalance() {
return mShowBalance;
}
public void showValidity(boolean show) {
mShowValidity = show;
mRefreshCardsCallback.run();
saveDetailState(R.string.sharedpreference_card_details_show_validity, show);
}
public boolean showingValidity() {
return mShowValidity;
}
public void showArchivedCards(boolean show) {
if (mSwapCursorCallback == null) {
throw new IllegalStateException("No swap cursor callback is available, can not manage archive state");
}
mShowArchivedCards = show;
mSwapCursorCallback.run();
saveDetailState(R.string.sharedpreference_card_details_show_archived_cards, show);
}
public boolean showingArchivedCards() {
if (mSwapCursorCallback == null) {
throw new IllegalStateException("No swap cursor callback is available, can not manage archive state");
}
return mShowArchivedCards;
}
public void showDisplayOptionsDialog() {
List<LoyaltyCardDisplayOption> displayOptions = new ArrayList<>();
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_name_below_image_thumbnail),
showingNameBelowThumbnail(),
this::showNameBelowThumbnail
));
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_note),
showingNote(),
this::showNote
));
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_balance),
showingBalance(),
this::showBalance
));
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_validity),
showingValidity(),
this::showValidity
));
// Hide "Show archived cards" option unless the callback exists
if (mSwapCursorCallback != null) {
displayOptions.add(new LoyaltyCardDisplayOption(
mContext.getString(R.string.show_archived_cards),
showingArchivedCards(),
this::showArchivedCards
));
}
// We need to convert Boolean[] to boolean[]
boolean[] values = new boolean[displayOptions.size()];
for (int i = 0; i < values.length; i++) values[i] = displayOptions.get(i).value;
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(mContext);
builder.setTitle(R.string.action_display_options);
builder.setMultiChoiceItems(
displayOptions.stream().map(x -> x.name).toArray(String[]::new),
values,
(dialogInterface, i, b) -> displayOptions.get(i).callback.accept(b)
);
builder.setPositiveButton(R.string.ok, (dialog, i) -> dialog.dismiss());
AlertDialog dialog = builder.create();
dialog.show();
}
}
@@ -1,15 +1,17 @@
package protect.card_locker;
import android.app.Application;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.app.AppCompatDelegate;
import protect.card_locker.preferences.Settings;
public class LoyaltyCardLockerApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Settings settings = new Settings(getApplicationContext());
Settings settings = new Settings(this);
AppCompatDelegate.setDefaultNightMode(settings.getTheme());
}
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,238 @@
package protect.card_locker;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
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 {
private ActivityManageGroupBinding binding;
private SQLiteDatabase mDatabase;
private ManageGroupCursorAdapter mAdapter;
private final String SAVE_INSTANCE_ADAPTER_STATE = "adapterState";
private final String SAVE_INSTANCE_CURRENT_GROUP_NAME = "currentGroupName";
protected Group mGroup = null;
private RecyclerView mCardList;
private TextView noGroupCardsText;
private EditText mGroupNameText;
private boolean mGroupNameNotInUse;
@Override
protected void onCreate(Bundle inputSavedInstanceState) {
super.onCreate(inputSavedInstanceState);
binding = ActivityManageGroupBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
mDatabase = new DBHelper(this).getWritableDatabase();
noGroupCardsText = binding.include.noGroupCardsText;
mCardList = binding.include.list;
FloatingActionButton saveButton = binding.fabSave;
mGroupNameText = binding.editTextGroupName;
mGroupNameText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
mGroupNameNotInUse = true;
mGroupNameText.setError(null);
String currentGroupName = mGroupNameText.getText().toString().trim();
if (currentGroupName.length() == 0) {
mGroupNameText.setError(getResources().getText(R.string.group_name_is_empty));
return;
}
if (!mGroup._id.equals(currentGroupName)) {
if (DBHelper.getGroup(mDatabase, currentGroupName) != null) {
mGroupNameNotInUse = false;
mGroupNameText.setError(getResources().getText(R.string.group_name_already_in_use));
} else {
mGroupNameNotInUse = true;
}
}
}
});
Intent intent = getIntent();
String groupId = intent.getStringExtra("group");
if (groupId == null) {
throw (new IllegalArgumentException("this activity expects a group loaded into it's intent"));
}
Log.d("groupId", "groupId: " + groupId);
mGroup = DBHelper.getGroup(mDatabase, groupId);
if (mGroup == null) {
throw (new IllegalArgumentException("cannot load group " + groupId + " from database"));
}
mGroupNameText.setText(mGroup._id);
setTitle(getString(R.string.editGroup, mGroup._id));
mAdapter = new ManageGroupCursorAdapter(this, null, this, mGroup, null);
mCardList.setAdapter(mAdapter);
registerForContextMenu(mCardList);
if (inputSavedInstanceState != null) {
mAdapter.importInGroupState(integerArrayToAdapterState(inputSavedInstanceState.getIntegerArrayList(SAVE_INSTANCE_ADAPTER_STATE)));
mGroupNameText.setText(inputSavedInstanceState.getString(SAVE_INSTANCE_CURRENT_GROUP_NAME));
}
enableToolbarBackButton();
saveButton.setOnClickListener(v -> {
String currentGroupName = mGroupNameText.getText().toString().trim();
if (!currentGroupName.equals(mGroup._id)) {
if (currentGroupName.length() == 0) {
Toast.makeText(getApplicationContext(), R.string.group_name_is_empty, Toast.LENGTH_SHORT).show();
return;
}
if (!mGroupNameNotInUse) {
Toast.makeText(getApplicationContext(), R.string.group_name_already_in_use, Toast.LENGTH_SHORT).show();
return;
}
}
mAdapter.commitToDatabase();
if (!currentGroupName.equals(mGroup._id)) {
DBHelper.updateGroup(mDatabase, mGroup._id, currentGroupName);
}
Toast.makeText(getApplicationContext(), R.string.group_updated, Toast.LENGTH_SHORT).show();
finish();
});
// this setText is here because content_main.xml is reused from main activity
noGroupCardsText.setText(getResources().getText(R.string.noGiftCardsGroup));
updateLoyaltyCardList();
}
private ArrayList<Integer> adapterStateToIntegerArray(HashMap<Integer, Boolean> adapterState) {
ArrayList<Integer> ret = new ArrayList<>(adapterState.size() * 2);
for (Map.Entry<Integer, Boolean> entry : adapterState.entrySet()) {
ret.add(entry.getKey());
ret.add(entry.getValue() ? 1 : 0);
}
return ret;
}
private HashMap<Integer, Boolean> integerArrayToAdapterState(ArrayList<Integer> in) {
HashMap<Integer, Boolean> ret = new HashMap<>();
if (in.size() % 2 != 0) {
throw (new RuntimeException("failed restoring adapterState from integer array list"));
}
for (int i = 0; i < in.size(); i += 2) {
ret.put(in.get(i), in.get(i + 1) == 1);
}
return ret;
}
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
getMenuInflater().inflate(R.menu.card_details_menu, inputMenu);
return super.onCreateOptionsMenu(inputMenu);
}
@Override
public boolean onOptionsItemSelected(MenuItem inputItem) {
int id = inputItem.getItemId();
if (id == R.id.action_display_options) {
mAdapter.showDisplayOptionsDialog();
invalidateOptionsMenu();
return true;
}
return super.onOptionsItemSelected(inputItem);
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putIntegerArrayList(SAVE_INSTANCE_ADAPTER_STATE, adapterStateToIntegerArray(mAdapter.exportInGroupState()));
outState.putString(SAVE_INSTANCE_CURRENT_GROUP_NAME, mGroupNameText.getText().toString());
}
private void updateLoyaltyCardList() {
mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase));
if (mAdapter.getItemCount() == 0) {
mCardList.setVisibility(View.GONE);
noGroupCardsText.setVisibility(View.VISIBLE);
} else {
mCardList.setVisibility(View.VISIBLE);
noGroupCardsText.setVisibility(View.GONE);
}
}
private void leaveWithoutSaving() {
if (hasChanged()) {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(ManageGroupActivity.this);
builder.setTitle(R.string.leaveWithoutSaveTitle);
builder.setMessage(R.string.leaveWithoutSaveConfirmation);
builder.setPositiveButton(R.string.confirm, (dialog, which) -> finish());
builder.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
AlertDialog dialog = builder.create();
dialog.show();
} else {
finish();
}
}
@Override
public void onBackPressed() {
leaveWithoutSaving();
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
private boolean hasChanged() {
return mAdapter.hasChanged() || !mGroup._id.equals(mGroupNameText.getText().toString().trim());
}
@Override
public void onRowLongClicked(int inputPosition) {
mAdapter.toggleSelection(inputPosition);
}
@Override
public void onRowClicked(int inputPosition) {
mAdapter.toggleSelection(inputPosition);
}
}
@@ -0,0 +1,109 @@
package protect.card_locker;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ManageGroupCursorAdapter extends LoyaltyCardCursorAdapter {
private HashMap<Integer, Integer> mIndexCardMap;
private HashMap<Integer, Boolean> mInGroupOverlay;
private HashMap<Integer, Boolean> mIsLoyaltyCardInGroupCache;
private HashMap<Integer, List<Group>> mGetGroupCache;
final private Group mGroup;
final private SQLiteDatabase mDatabase;
public ManageGroupCursorAdapter(Context inputContext, Cursor inputCursor, CardAdapterListener inputListener, Group group, Runnable inputSwapCursorCallback) {
super(inputContext, inputCursor, inputListener, inputSwapCursorCallback);
mGroup = new Group(group._id, group.order);
mInGroupOverlay = new HashMap<>();
mDatabase = new DBHelper(inputContext).getWritableDatabase();
}
@Override
public void swapCursor(Cursor inputCursor) {
super.swapCursor(inputCursor);
mIndexCardMap = new HashMap<>();
mIsLoyaltyCardInGroupCache = new HashMap<>();
mGetGroupCache = new HashMap<>();
}
@Override
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
Boolean overlayValue = mInGroupOverlay.get(loyaltyCard.id);
if ((overlayValue != null ? overlayValue : isLoyaltyCardInGroup(loyaltyCard.id))) {
mAnimationItemsIndex.put(inputCursor.getPosition(), true);
mSelectedItems.put(inputCursor.getPosition(), true);
}
mIndexCardMap.put(inputCursor.getPosition(), loyaltyCard.id);
super.onBindViewHolder(inputHolder, inputCursor);
}
private List<Group> getGroups(int cardId) {
List<Group> cache = mGetGroupCache.get(cardId);
if (cache != null) {
return cache;
}
List<Group> groups = DBHelper.getLoyaltyCardGroups(mDatabase, cardId);
mGetGroupCache.put(cardId, groups);
return groups;
}
private boolean isLoyaltyCardInGroup(int cardId) {
Boolean cache = mIsLoyaltyCardInGroupCache.get(cardId);
if (cache != null) {
return cache;
}
List<Group> groups = getGroups(cardId);
if (groups.contains(mGroup)) {
mIsLoyaltyCardInGroupCache.put(cardId, true);
return true;
}
mIsLoyaltyCardInGroupCache.put(cardId, false);
return false;
}
@Override
public void toggleSelection(int inputPosition) {
super.toggleSelection(inputPosition);
Integer cardId = mIndexCardMap.get(inputPosition);
if (cardId == null) {
throw (new RuntimeException("cardId should not be null here"));
}
Boolean overlayValue = mInGroupOverlay.get(cardId);
if (overlayValue == null) {
mInGroupOverlay.put(cardId, !isLoyaltyCardInGroup(cardId));
} else {
mInGroupOverlay.remove(cardId);
}
}
public boolean hasChanged() {
return mInGroupOverlay.size() > 0;
}
public void commitToDatabase() {
for (Map.Entry<Integer, Boolean> entry : mInGroupOverlay.entrySet()) {
int cardId = entry.getKey();
List<Group> groups = getGroups(cardId);
if (entry.getValue()) {
groups.add(mGroup);
} else {
groups.remove(mGroup);
}
DBHelper.setLoyaltyCardGroups(mDatabase, cardId, groups);
}
}
public void importInGroupState(HashMap<Integer, Boolean> cardIdInGroupMap) {
mInGroupOverlay = new HashMap<>(cardIdInGroupMap);
}
public HashMap<Integer, Boolean> exportInGroupState() {
return new HashMap<>(mInGroupOverlay);
}
}
@@ -1,61 +1,74 @@
package protect.card_locker;
import android.content.DialogInterface;
import android.database.Cursor;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.InputType;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import java.util.List;
public class ManageGroupsActivity extends AppCompatActivity
{
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 protect.card_locker.databinding.ManageGroupsActivityBinding;
public class ManageGroupsActivity extends CatimaAppCompatActivity implements GroupCursorAdapter.GroupAdapterListener {
private ManageGroupsActivityBinding binding;
private static final String TAG = "Catima";
private AlertDialog newGroupDialog;
private final DBHelper db = new DBHelper(this);
private SQLiteDatabase mDatabase;
private TextView mHelpText;
private RecyclerView mGroupList;
GroupCursorAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.manage_groups_activity);
Toolbar toolbar = findViewById(R.id.toolbar);
binding = ManageGroupsActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.groups);
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null)
{
actionBar.setDisplayHomeAsUpEnabled(true);
}
enableToolbarBackButton();
newGroupDialog = createNewGroupDialog();
updateGroupList();
mDatabase = new DBHelper(this).getWritableDatabase();
}
@Override
protected void onResume() {
super.onResume();
updateGroupList();
FloatingActionButton addButton = binding.fabAdd;
addButton.setOnClickListener(v -> createGroup());
addButton.bringToFront();
FloatingActionButton addButton = findViewById(R.id.fabAdd);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
newGroupDialog.show();
}
});
mGroupList = binding.include.list;
mHelpText = binding.include.helpText;
// Init group list
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
mGroupList.setLayoutManager(mLayoutManager);
mGroupList.setItemAnimator(new DefaultItemAnimator());
mAdapter = new GroupCursorAdapter(this, null, this);
mGroupList.setAdapter(mAdapter);
updateGroupList();
}
@Override
@@ -63,34 +76,31 @@ public class ManageGroupsActivity extends AppCompatActivity
super.onBackPressed();
}
private void updateGroupList()
{
final ListView groupList = findViewById(R.id.list);
final TextView helpText = findViewById(R.id.helpText);
final DBHelper db = new DBHelper(this);
private void updateGroupList() {
mAdapter.swapCursor(DBHelper.getGroupCursor(mDatabase));
if(db.getGroupCount() > 0)
{
groupList.setVisibility(View.VISIBLE);
helpText.setVisibility(View.GONE);
}
else
{
groupList.setVisibility(View.GONE);
helpText.setVisibility(View.VISIBLE);
if (DBHelper.getGroupCount(mDatabase) == 0) {
mGroupList.setVisibility(View.GONE);
mHelpText.setVisibility(View.VISIBLE);
return;
}
Cursor groupCursor = db.getGroupCursor();
mGroupList.setVisibility(View.VISIBLE);
mHelpText.setVisibility(View.GONE);
}
final GroupCursorAdapter adapter = new GroupCursorAdapter(this, groupCursor);
groupList.setAdapter(adapter);
registerForContextMenu(groupList);
private void invalidateHomescreenActiveTab() {
SharedPreferences activeTabPref = getApplicationContext().getSharedPreferences(
getString(R.string.sharedpreference_active_tab),
Context.MODE_PRIVATE);
SharedPreferences.Editor activeTabPrefEditor = activeTabPref.edit();
activeTabPrefEditor.putInt(getString(R.string.sharedpreference_active_tab), 0);
activeTabPrefEditor.apply();
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
@@ -100,87 +110,142 @@ public class ManageGroupsActivity extends AppCompatActivity
return super.onOptionsItemSelected(item);
}
public void editGroup(View view) {
LinearLayout parentRow = (LinearLayout) view.getParent();
private void createGroup() {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
TextView groupNameTextView = (TextView) parentRow.findViewById(R.id.name);
final String groupName = (String) groupNameTextView.getText();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Header
builder.setTitle(R.string.enter_group_name);
// Layout
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
params.leftMargin = contentPadding;
params.topMargin = contentPadding / 2;
params.rightMargin = contentPadding;
// EditText with spacing
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setText(groupName);
builder.setView(input);
input.setLayoutParams(params);
layout.addView(input);
builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
db.updateGroup(groupName, input.getText().toString());
updateGroupList();
}
});
builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
// Set layout
builder.setView(layout);
// Buttons
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
DBHelper.insertGroup(mDatabase, input.getText().toString().trim());
updateGroupList();
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
// Now that the dialog exists, we can bind something that affects the OK button
input.addTextChangedListener(new SimpleTextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
String groupName = s.toString().trim();
if (groupName.length() == 0) {
input.setError(getString(R.string.group_name_is_empty));
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
return;
}
if (DBHelper.getGroup(mDatabase, groupName) != null) {
input.setError(getString(R.string.group_name_already_in_use));
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
return;
}
input.setError(null);
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
}
});
dialog.show();
// Disable button (must be done **after** dialog is shown to prevent crash
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
// Set focus on input field
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
input.requestFocus();
}
public void deleteGroup(View view) {
LinearLayout parentRow = (LinearLayout) view.getParent();
private String getGroupName(View view) {
TextView groupNameTextView = view.findViewById(R.id.name);
return (String) groupNameTextView.getText();
}
TextView groupNameTextView = (TextView) parentRow.findViewById(R.id.name);
private void moveGroup(View view, boolean up) {
List<Group> groups = DBHelper.getGroups(mDatabase);
final String groupName = getGroupName(view);
final String groupName = (String) groupNameTextView.getText();
int currentIndex = DBHelper.getGroup(mDatabase, groupName).order;
int newIndex;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// Reinsert group in correct position
if (up) {
newIndex = currentIndex - 1;
} else {
newIndex = currentIndex + 1;
}
// Don't try to move out of bounds
if (newIndex < 0 || newIndex >= groups.size()) {
return;
}
Group group = groups.remove(currentIndex);
groups.add(newIndex, group);
// Update database
DBHelper.reorderGroups(mDatabase, groups);
// Update UI
updateGroupList();
// Ordering may have changed, so invalidate
invalidateHomescreenActiveTab();
}
@Override
public void onMoveDownButtonClicked(View view) {
moveGroup(view, false);
}
@Override
public void onMoveUpButtonClicked(View view) {
moveGroup(view, true);
}
@Override
public void onEditButtonClicked(View view) {
Intent intent = new Intent(this, ManageGroupActivity.class);
intent.putExtra("group", getGroupName(view));
startActivity(intent);
}
@Override
public void onDeleteButtonClicked(View view) {
final String groupName = getGroupName(view);
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setTitle(R.string.deleteConfirmationGroup);
builder.setMessage(groupName);
builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
db.deleteGroup(groupName);
updateGroupList();
}
});
builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
DBHelper.deleteGroup(mDatabase, groupName);
updateGroupList();
// Delete may change ordering, so invalidate
invalidateHomescreenActiveTab();
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
dialog.show();
}
private AlertDialog createNewGroupDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.enter_group_name);
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
db.insertGroup(input.getText().toString());
updateGroupList();
}
});
builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog dialog = builder.create();
return dialog;
}
}
@@ -1,57 +0,0 @@
package protect.card_locker;
import android.util.Log;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class MultiFormatExporter
{
private static final String TAG = "Catima";
/**
* Attempts to export data to the output stream in the
* given format, if possible.
*
* The output stream is closed on success.
*
* @return true if the database was successfully exported,
* false otherwise. If false, partial data may have been
* written to the output stream, and it should be discarded.
*/
public static boolean exportData(DBHelper db, OutputStreamWriter output, DataFormat format)
{
DatabaseExporter exporter = null;
switch(format)
{
case CSV:
exporter = new CsvDatabaseExporter();
break;
}
if(exporter != null)
{
try
{
exporter.exportData(db, output);
return true;
}
catch(IOException e)
{
Log.e(TAG, "Failed to export data", e);
}
catch(InterruptedException e)
{
Log.e(TAG, "Failed to export data", e);
}
return false;
}
else
{
Log.e(TAG, "Unsupported data format exported: " + format.name());
return false;
}
}
}
@@ -1,62 +0,0 @@
package protect.card_locker;
import android.util.Log;
import java.io.IOException;
import java.io.InputStreamReader;
public class MultiFormatImporter
{
private static final String TAG = "Catima";
/**
* Attempts to import data from the input stream of the
* given format into the database.
*
* The input stream is not closed, and doing so is the
* responsibility of the caller.
*
* @return true if the database was successfully imported,
* false otherwise. If false, no data was written to
* the database.
*/
public static boolean importData(DBHelper db, InputStreamReader input, DataFormat format)
{
DatabaseImporter importer = null;
switch(format)
{
case CSV:
importer = new CsvDatabaseImporter();
break;
}
if(importer != null)
{
try
{
importer.importData(db, input);
return true;
}
catch(IOException e)
{
Log.e(TAG, "Failed to input data", e);
}
catch(FormatException e)
{
Log.e(TAG, "Failed to input data", e);
}
catch(InterruptedException e)
{
Log.e(TAG, "Failed to input data", e);
}
return false;
}
else
{
Log.e(TAG, "Unsupported data format imported: " + format.name());
return false;
}
}
}
@@ -0,0 +1,29 @@
package protect.card_locker;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class OpenWebLinkHandler {
private static final String TAG = "Catima";
public void openBrowser(AppCompatActivity activity, String url) {
if (url == null) {
return;
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
try {
activity.startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(activity, R.string.failedToOpenUrl, Toast.LENGTH_LONG).show();
Log.e(TAG, "No activity found to handle intent", e);
}
}
}
@@ -0,0 +1,94 @@
package protect.card_locker;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class PermissionUtils {
/**
* Check if storage read permission is needed.
*
* This is only necessary on Android 6.0 (Marshmallow) and below. See
* https://github.com/CatimaLoyalty/Android/issues/979 for more info.
*
* @param activity
* @return
*/
private static boolean needsStorageReadPermission(Activity activity) {
// Testing showed this permission wasn't needed for anything Catima did past Marshmallow
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return false;
}
return ContextCompat.checkSelfPermission(activity, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED;
}
/**
* Check if camera permission is needed.
*
* @param activity
* @return
*/
public static boolean needsCameraPermission(Activity activity) {
// Android only introduced the runtime permission system in Marshmallow (Android 6.0)
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
}
return ContextCompat.checkSelfPermission(activity, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED;
}
/**
* Call onRequestPermissionsResult after storage read permission was granted.
* Mocks a successful grant if a grant is not necessary.
*
* @param activity
* @param requestCode
*/
public static void requestStorageReadPermission(CatimaAppCompatActivity activity, int requestCode) {
String[] permissions = new String[]{ android.Manifest.permission.READ_EXTERNAL_STORAGE };
int[] mockedResults = new int[]{ PackageManager.PERMISSION_GRANTED };
if (needsStorageReadPermission(activity)) {
ActivityCompat.requestPermissions(activity, permissions, requestCode);
} else {
// FIXME: This points to onMockedRequestPermissionResult instead of to
// onRequestPermissionResult because onRequestPermissionResult was only introduced in
// Android 6.0 (SDK 23) and we and to support Android 5.0 (SDK 21) too.
//
// When minSdk becomes 23, this should point to onRequestPermissionResult directly and
// the activity input variable should be changed from CatimaAppCompatActivity to
// Activity.
activity.onMockedRequestPermissionsResult(requestCode, permissions, mockedResults);
}
}
/**
* Call onRequestPermissionsResult after camera permission was granted.
* Mocks a successful grant if a grant is not necessary.
*
* @param activity
* @param requestCode
*/
public static void requestCameraPermission(CatimaAppCompatActivity activity, int requestCode) {
String[] permissions = new String[]{ Manifest.permission.CAMERA };
int[] mockedResults = new int[]{ PackageManager.PERMISSION_GRANTED };
if (needsCameraPermission(activity)) {
ActivityCompat.requestPermissions(activity, permissions, requestCode);
} else {
// FIXME: This points to onMockedRequestPermissionResult instead of to
// onRequestPermissionResult because onRequestPermissionResult was only introduced in
// Android 6.0 (SDK 23) and we and to support Android 5.0 (SDK 21) too.
//
// When minSdk becomes 23, this should point to onRequestPermissionResult directly and
// the activity input variable should be changed from CatimaAppCompatActivity to
// Activity.
activity.onMockedRequestPermissionsResult(requestCode, permissions, mockedResults);
}
}
}
@@ -0,0 +1,429 @@
package protect.card_locker;
import static protect.card_locker.BarcodeSelectorActivity.BARCODE_CONTENTS;
import static protect.card_locker.BarcodeSelectorActivity.BARCODE_FORMAT;
import android.Manifest;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.text.InputType;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.zxing.ResultPoint;
import com.google.zxing.client.android.Intents;
import com.journeyapps.barcodescanner.BarcodeCallback;
import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
import java.util.List;
import protect.card_locker.databinding.CustomBarcodeScannerBinding;
import protect.card_locker.databinding.ScanActivityBinding;
/**
* Custom Scannner Activity extending from Activity to display a custom layout form scanner view.
* <p>
* Based on https://github.com/journeyapps/zxing-android-embedded/blob/0fdfbce9fb3285e985bad9971c5f7c0a7a334e7b/sample/src/main/java/example/zxing/CustomScannerActivity.java
* originally licensed under Apache 2.0
*/
public class ScanActivity extends CatimaAppCompatActivity {
private ScanActivityBinding binding;
private CustomBarcodeScannerBinding customBarcodeScannerBinding;
private static final String TAG = "Catima";
private static final int MEDIUM_SCALE_FACTOR_DIP = 460;
private static final int COMPAT_SCALE_FACTOR_DIP = 320;
private static final int PERMISSION_SCAN_ADD_FROM_IMAGE = 100;
private CaptureManager capture;
private DecoratedBarcodeView barcodeScannerView;
private String cardId;
private String addGroup;
private boolean torch = false;
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;
static final String STATE_SCANNER_ACTIVE = "scannerActive";
private boolean mScannerActive = true;
private void extractIntentFields(Intent intent) {
final Bundle b = intent.getExtras();
cardId = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_CARDID) : null;
addGroup = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) : null;
Log.d(TAG, "Scan activity: id=" + cardId);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ScanActivityBinding.inflate(getLayoutInflater());
customBarcodeScannerBinding = CustomBarcodeScannerBinding.bind(binding.zxingBarcodeScanner);
setTitle(R.string.scanCardBarcode);
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();
extractIntentFields(getIntent());
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()));
customBarcodeScannerBinding.fabOtherOptions.setOnClickListener(view -> {
setScannerActive(false);
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)
},
(dialogInterface, i) -> {
switch (i) {
case 0:
addWithoutBarcode();
break;
case 1:
addManually();
break;
case 2:
addFromImage();
break;
default:
throw new IllegalArgumentException("Unknown 'Add a card in a different way' dialog option");
}
}
);
builder.setOnCancelListener(dialogInterface -> setScannerActive(true));
builder.show();
});
barcodeScannerView = binding.zxingBarcodeScanner;
// 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);
Intent captureIntent = new Intent();
Bundle captureIntentBundle = new Bundle();
captureIntentBundle.putBoolean(Intents.Scan.BEEP_ENABLED, false);
captureIntent.putExtras(captureIntentBundle);
capture.initializeFromIntent(captureIntent, savedInstanceState);
barcodeScannerView.decodeSingle(new BarcodeCallback() {
@Override
public void barcodeResult(BarcodeResult result) {
Intent scanResult = new Intent();
Bundle scanResultBundle = new Bundle();
scanResultBundle.putString(BARCODE_CONTENTS, result.getText());
scanResultBundle.putString(BARCODE_FORMAT, result.getBarcodeFormat().name());
if (addGroup != null) {
scanResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
}
scanResult.putExtras(scanResultBundle);
ScanActivity.this.setResult(RESULT_OK, scanResult);
finish();
}
@Override
public void possibleResultPoints(List<ResultPoint> resultPoints) {
}
});
}
@Override
protected void onResume() {
super.onResume();
if (mScannerActive) {
capture.onResume();
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
showCameraPermissionMissingText(false);
}
scaleScreen();
}
@Override
protected void onPause() {
super.onPause();
capture.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
capture.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
capture.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean(STATE_SCANNER_ACTIVE, mScannerActive);
}
@Override
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mScannerActive = savedInstanceState.getBoolean(STATE_SCANNER_ACTIVE);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
getMenuInflater().inflate(R.menu.scan_menu, menu);
}
barcodeScannerView.setTorchOff();
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
setResult(Activity.RESULT_CANCELED);
finish();
return true;
} else if (item.getItemId() == R.id.action_toggle_flashlight) {
if (torch) {
torch = false;
barcodeScannerView.setTorchOff();
item.setTitle(R.string.turn_flashlight_on);
item.setIcon(R.drawable.ic_flashlight_off_white_24dp);
} else {
torch = true;
barcodeScannerView.setTorchOn();
item.setTitle(R.string.turn_flashlight_off);
item.setIcon(R.drawable.ic_flashlight_on_white_24dp);
}
}
return super.onOptionsItemSelected(item);
}
private void setScannerActive(boolean isActive) {
if (isActive) {
barcodeScannerView.resume();
} else {
barcodeScannerView.pause();
}
mScannerActive = isActive;
}
private void returnResult(String barcodeContents, String barcodeFormat) {
Intent manualResult = new Intent();
Bundle manualResultBundle = new Bundle();
manualResultBundle.putString(BARCODE_CONTENTS, barcodeContents);
manualResultBundle.putString(BARCODE_FORMAT, barcodeFormat);
if (addGroup != null) {
manualResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
}
manualResult.putExtras(manualResultBundle);
ScanActivity.this.setResult(RESULT_OK, manualResult);
finish();
}
private void handleActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(requestCode, resultCode, intent, this);
if (barcodeValues.isEmpty()) {
setScannerActive(true);
return;
}
returnResult(barcodeValues.content(), barcodeValues.format());
}
private void addWithoutBarcode() {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setOnCancelListener(dialogInterface -> setScannerActive(true));
// Header
builder.setTitle(R.string.addWithoutBarcode);
// Layout
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
params.leftMargin = contentPadding;
params.topMargin = contentPadding / 2;
params.rightMargin = contentPadding;
// Description
TextView currentTextview = new TextView(this);
currentTextview.setText(getString(R.string.enter_card_id));
currentTextview.setLayoutParams(params);
layout.addView(currentTextview);
// EditText with spacing
final EditText input = new EditText(this);
input.setInputType(InputType.TYPE_CLASS_TEXT);
input.setLayoutParams(params);
layout.addView(input);
// Set layout
builder.setView(layout);
// Buttons
builder.setPositiveButton(getString(R.string.ok), (dialog, which) -> {
returnResult(input.getText().toString(), "");
});
builder.setNegativeButton(getString(R.string.cancel), (dialog, which) -> dialog.cancel());
AlertDialog dialog = builder.create();
// Now that the dialog exists, we can bind something that affects the OK button
input.addTextChangedListener(new SimpleTextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() == 0) {
input.setError(getString(R.string.card_id_must_not_be_empty));
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
} else {
input.setError(null);
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true);
}
}
});
dialog.show();
// Disable button (must be done **after** dialog is shown to prevent crash
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
// Set focus on input field
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
input.requestFocus();
}
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);
}
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/*");
Intent chooserIntent = Intent.createChooser(photoPickerIntent, getString(R.string.addFromImage));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { contentIntent });
try {
photoPickerLauncher.launch(chooserIntent);
} catch (ActivityNotFoundException e) {
setScannerActive(true);
Toast.makeText(getApplicationContext(), R.string.failedLaunchingPhotoPicker, 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 -> {
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);
}
private void scaleScreen() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenHeight = displayMetrics.heightPixels;
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);
}
private int obtainThemeAttribute(int attribute) {
TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(attribute, typedValue, true);
return typedValue.data;
}
private void navigateToSystemPermissionSetting() {
Intent permissionIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", getPackageName(), null));
permissionIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(permissionIntent);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
onMockedRequestPermissionsResult(requestCode, permissions, grantResults);
}
public void onMockedRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
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();
} else {
setScannerActive(true);
Toast.makeText(this, R.string.storageReadPermissionRequired, Toast.LENGTH_LONG).show();
}
}
}
}
@@ -1,20 +1,26 @@
package protect.card_locker;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
class ShortcutHelper
{
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
// launcher will show all 5. Instead, the number is limited
@@ -22,6 +28,13 @@ class ShortcutHelper
// chance of being shown.
private static final int MAX_SHORTCUTS = 3;
// https://developer.android.com/reference/android/graphics/drawable/AdaptiveIconDrawable.html
private static final int ADAPTIVE_BITMAP_SCALE = 1;
private static final int ADAPTIVE_BITMAP_SIZE = 108 * ADAPTIVE_BITMAP_SCALE;
private static final int ADAPTIVE_BITMAP_VISIBLE_SIZE = 72 * ADAPTIVE_BITMAP_SCALE;
private static final int ADAPTIVE_BITMAP_IMAGE_SIZE = ADAPTIVE_BITMAP_VISIBLE_SIZE + 5 * ADAPTIVE_BITMAP_SCALE;
private static final int PADDING_COLOR_OVERLAY = Color.argb(127, 0, 0, 0);
/**
* Add a card to the app shortcuts, and maintain a list of the most
* recently used cards. If there is already a shortcut for the card,
@@ -29,125 +42,120 @@ class ShortcutHelper
* card exceeds the max number of shortcuts, then the least recently
* used card shortcut is discarded.
*/
@TargetApi(25)
static void updateShortcuts(Context context, LoyaltyCard card, Intent intent)
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1)
{
ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class);
LinkedList<ShortcutInfo> list = new LinkedList<>(shortcutManager.getDynamicShortcuts());
static void updateShortcuts(Context context, LoyaltyCard card) {
LinkedList<ShortcutInfoCompat> list = new LinkedList<>(ShortcutManagerCompat.getDynamicShortcuts(context));
String shortcutId = Integer.toString(card.id);
SQLiteDatabase database = new DBHelper(context).getReadableDatabase();
// Sort the shortcuts by rank, so working with the relative order will be easier.
// This sorts so that the lowest rank is first.
Collections.sort(list, new Comparator<ShortcutInfo>()
{
@Override
public int compare(ShortcutInfo o1, ShortcutInfo o2)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1)
{
return o1.getRank() - o2.getRank();
}
else
{
return 0;
}
}
});
String shortcutId = Integer.toString(card.id);
Integer foundIndex = null;
// Sort the shortcuts by rank, so working with the relative order will be easier.
// This sorts so that the lowest rank is first.
Collections.sort(list, Comparator.comparingInt(ShortcutInfoCompat::getRank));
for(int index = 0; index < list.size(); index++)
{
if(list.get(index).getId().equals(shortcutId))
{
// Found the item already
foundIndex = index;
break;
}
Integer foundIndex = null;
for (int index = 0; index < list.size(); index++) {
if (list.get(index).getId().equals(shortcutId)) {
// Found the item already
foundIndex = index;
break;
}
}
if(foundIndex != null)
{
// If the item is already found, then the list needs to be
// reordered, so that the selected item now has the lowest
// rank, thus letting it survive longer.
ShortcutInfo found = list.remove(foundIndex.intValue());
list.addFirst(found);
}
else
{
// The item is new to the list. First, we need to trim the list
// until it is able to accept a new item, then the item is
// inserted.
while(list.size() >= MAX_SHORTCUTS)
{
list.pollLast();
}
if (foundIndex != null) {
// If the item is already found, then the list needs to be
// reordered, so that the selected item now has the lowest
// rank, thus letting it survive longer.
ShortcutInfoCompat found = list.remove(foundIndex.intValue());
list.addFirst(found);
} else {
// The item is new to the list. We add it and trim the list later.
ShortcutInfoCompat shortcut = createShortcutBuilder(context, card).build();
list.addFirst(shortcut);
}
ShortcutInfo shortcut = new ShortcutInfo.Builder(context, Integer.toString(card.id))
.setShortLabel(card.store)
.setLongLabel(card.store)
.setIntent(intent)
.build();
LinkedList<ShortcutInfoCompat> finalList = new LinkedList<>();
int rank = 0;
list.addFirst(shortcut);
}
// The ranks are now updated; the order in the list is the rank.
for (int index = 0; index < list.size(); index++) {
ShortcutInfoCompat prevShortcut = list.get(index);
LinkedList<ShortcutInfo> finalList = new LinkedList<>();
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(database, Integer.parseInt(prevShortcut.getId()));
// The ranks are now updated; the order in the list is the rank.
for(int index = 0; index < list.size(); index++)
{
ShortcutInfo prevShortcut = list.get(index);
Intent shortcutIntent = prevShortcut.getIntent();
// Prevent instances of the view activity from piling up; if one exists let this
// one replace it.
shortcutIntent.setFlags(shortcutIntent.getFlags() | Intent.FLAG_ACTIVITY_SINGLE_TOP);
ShortcutInfo updatedShortcut = new ShortcutInfo.Builder(context, prevShortcut.getId())
.setShortLabel(prevShortcut.getShortLabel())
.setLongLabel(prevShortcut.getLongLabel())
.setIntent(shortcutIntent)
.setIcon(Icon.createWithResource(context, R.drawable.circle))
.setRank(index)
// skip outdated cards that no longer exist
if (loyaltyCard != null) {
ShortcutInfoCompat updatedShortcut = createShortcutBuilder(context, loyaltyCard)
.setRank(rank)
.build();
finalList.addLast(updatedShortcut);
}
rank++;
shortcutManager.setDynamicShortcuts(finalList);
// trim the list
if (rank >= MAX_SHORTCUTS) {
break;
}
}
}
ShortcutManagerCompat.setDynamicShortcuts(context, finalList);
}
/**
* Remove the given card id from the app shortcuts, if such a
* shortcut exists.
*/
@TargetApi(25)
static void removeShortcut(Context context, int cardId)
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1)
{
ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class);
List<ShortcutInfo> list = shortcutManager.getDynamicShortcuts();
static void removeShortcut(Context context, int cardId) {
List<ShortcutInfoCompat> list = ShortcutManagerCompat.getDynamicShortcuts(context);
String shortcutId = Integer.toString(cardId);
String shortcutId = Integer.toString(cardId);
for(int index = 0; index < list.size(); index++)
{
if(list.get(index).getId().equals(shortcutId))
{
list.remove(index);
break;
}
for (int index = 0; index < list.size(); index++) {
if (list.get(index).getId().equals(shortcutId)) {
list.remove(index);
break;
}
shortcutManager.setDynamicShortcuts(list);
}
ShortcutManagerCompat.setDynamicShortcuts(context, list);
}
static @NotNull
Bitmap createAdaptiveBitmap(@NotNull Bitmap in, int paddingColor) {
Bitmap ret = Bitmap.createBitmap(ADAPTIVE_BITMAP_SIZE, ADAPTIVE_BITMAP_SIZE, Bitmap.Config.ARGB_8888);
Canvas output = new Canvas(ret);
output.drawColor(ColorUtils.compositeColors(PADDING_COLOR_OVERLAY, paddingColor));
Bitmap resized = Utils.resizeBitmap(in, ADAPTIVE_BITMAP_IMAGE_SIZE);
output.drawBitmap(resized, (ADAPTIVE_BITMAP_SIZE - resized.getWidth()) / 2f, (ADAPTIVE_BITMAP_SIZE - resized.getHeight()) / 2f, null);
return ret;
}
static ShortcutInfoCompat.Builder createShortcutBuilder(Context context, LoyaltyCard loyaltyCard) {
Intent intent = new Intent(context, LoyaltyCardViewActivity.class);
intent.setAction(Intent.ACTION_MAIN);
// Prevent instances of the view activity from piling up; if one exists let this
// 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);
intent.putExtras(bundle);
Bitmap iconBitmap = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
if (iconBitmap == null) {
iconBitmap = Utils.generateIcon(context, loyaltyCard, true).getLetterTile();
} else {
iconBitmap = createAdaptiveBitmap(iconBitmap, Utils.getHeaderColor(context, loyaltyCard));
}
IconCompat icon = IconCompat.createWithAdaptiveBitmap(iconBitmap);
return new ShortcutInfoCompat.Builder(context, Integer.toString(loyaltyCard.id))
.setShortLabel(loyaltyCard.store)
.setLongLabel(loyaltyCard.store)
.setIntent(intent)
.setIcon(icon);
}
}
@@ -0,0 +1,18 @@
package protect.card_locker;
import android.text.Editable;
import android.text.TextWatcher;
public class SimpleTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
}
@@ -0,0 +1,29 @@
package protect.card_locker;
public class ThirdPartyInfo {
private final String mName;
private final String mUrl;
private final String mLicense;
public ThirdPartyInfo(String name, String url, String license) {
mName = name;
mUrl = url;
mLicense = license;
}
public String name() {
return mName;
}
public String url() {
return mUrl;
}
public String license() {
return mLicense;
}
public String toHtml() {
return String.format("<a href=\"%s\">%s</a> (%s)", url(), name(), license());
}
}
@@ -0,0 +1,82 @@
package protect.card_locker;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
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;
public class UCropWrapper extends UCropActivity {
public static final String UCROP_TOOLBAR_TYPEFACE_STYLE = "ucop_toolbar_typeface_style";
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
boolean darkMode = Utils.isDarkModeEnabled(this);
// 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);
} else {
// icons are always white back then
if (!darkMode) {
getWindow().setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), getWindow().getStatusBarColor()));
}
}
// find and check views that we wish to color modify
// for when we update ucrop or switch to another cropper
View check = findViewById(com.yalantis.ucrop.R.id.wrapper_controls);
if (check instanceof FrameLayout) {
FrameLayout controls = (FrameLayout) check;
check = findViewById(com.yalantis.ucrop.R.id.wrapper_states);
if (check instanceof LinearLayout) {
LinearLayout states = (LinearLayout) check;
for (int i = 0; i < controls.getChildCount(); i++) {
check = controls.getChildAt(i);
if (check instanceof AppCompatImageView) {
AppCompatImageView controlsBackgroundImage = (AppCompatImageView) check;
// everything gathered and are as expected, now perform color patching
Utils.patchColors(this);
int colorSurface = MaterialColors.getColor(this, com.google.android.material.R.attr.colorSurface, ContextCompat.getColor(this, R.color.md_theme_light_surface));
int colorOnSurface = MaterialColors.getColor(this, com.google.android.material.R.attr.colorOnSurface, ContextCompat.getColor(this, R.color.md_theme_light_onSurface));
Drawable controlsBackgroundImageDrawable = controlsBackgroundImage.getBackground();
controlsBackgroundImageDrawable.mutate();
controlsBackgroundImageDrawable.setTint(darkMode ? colorOnSurface : colorSurface);
controlsBackgroundImage.setBackgroundDrawable(controlsBackgroundImageDrawable);
states.setBackgroundColor(darkMode ? colorSurface : colorOnSurface);
break;
}
}
}
}
// change toolbar font
check = findViewById(com.yalantis.ucrop.R.id.toolbar_title);
if (check instanceof MaterialTextView) {
MaterialTextView toolbarTextview = (MaterialTextView) check;
Intent intent = getIntent();
int style = intent.getIntExtra(UCROP_TOOLBAR_TYPEFACE_STYLE, -1);
if (style != -1) {
toolbarTextview.setTypeface(Typeface.defaultFromStyle(style));
}
}
}
}
@@ -1,20 +1,120 @@
package protect.card_locker;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.ImageDecoder;
import android.graphics.Matrix;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.text.Layout;
import android.text.Spanned;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
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.exifinterface.media.ExifInterface;
import androidx.palette.graphics.Palette;
import com.google.android.material.color.DynamicColors;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.common.HybridBinarizer;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Currency;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import protect.card_locker.preferences.Settings;
public class Utils {
private static final String TAG = "Catima";
// Activity request codes
public static final int MAIN_REQUEST = 1;
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 String CARD_IMAGE_FILENAME_REGEX = "^(card_)(\\d+)(_(?:front|back|icon)\\.png)$";
static final double LUMINANCE_MIDPOINT = 0.5;
static final int BITMAP_SIZE_SMALL = 512;
static final int BITMAP_SIZE_BIG = 2048;
static public LetterBitmap generateIcon(Context context, LoyaltyCard loyaltyCard, boolean forShortcut) {
return generateIcon(context, loyaltyCard.store, loyaltyCard.headerColor, forShortcut);
}
static public LetterBitmap generateIcon(Context context, String store, Integer backgroundColor) {
return generateIcon(context, store, backgroundColor, false);
}
static public LetterBitmap generateIcon(Context context, String store, Integer backgroundColor, boolean forShortcut) {
if (store.length() == 0) {
return null;
}
int tileLetterFontSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterFontSize);
int pixelSize = context.getResources().getDimensionPixelSize(R.dimen.cardThumbnailSize);
int tileLetterFontSize;
if (forShortcut) {
tileLetterFontSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterFontSizeForShortcut);
} else {
tileLetterFontSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterFontSize);
}
int pixelSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterImageSize);
if (backgroundColor == null) {
backgroundColor = LetterBitmap.getDefaultColor(context, store);
@@ -27,4 +127,691 @@ public class Utils {
static public boolean needsDarkForeground(Integer backgroundColor) {
return ColorUtils.calculateLuminance(backgroundColor) > LUMINANCE_MIDPOINT;
}
/**
* 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
* BarcodeValues object if the activity was cancelled or nothing could be found.
*
* @param requestCode
* @param resultCode
* @param intent
* @param context
* @return BarcodeValues
*/
static public BarcodeValues parseSetBarcodeActivityResult(int requestCode, int resultCode, Intent intent, Context context) {
String contents;
String format;
if (resultCode != Activity.RESULT_OK) {
return new BarcodeValues(null, null);
}
if (requestCode == Utils.BARCODE_IMPORT_FROM_IMAGE_FILE) {
Log.i(TAG, "Received image file with possible barcode");
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_SCAN || requestCode == Utils.SELECT_BARCODE_REQUEST) {
if (requestCode == Utils.BARCODE_SCAN) {
Log.i(TAG, "Received barcode information from camera");
} else if (requestCode == Utils.SELECT_BARCODE_REQUEST) {
Log.i(TAG, "Received barcode information from typing it");
}
contents = intent.getStringExtra(BarcodeSelectorActivity.BARCODE_CONTENTS);
format = intent.getStringExtra(BarcodeSelectorActivity.BARCODE_FORMAT);
Log.i(TAG, "Read barcode id: " + contents);
Log.i(TAG, "Read format: " + format);
return new BarcodeValues(format, contents);
}
throw new UnsupportedOperationException("Unknown request code for parseSetBarcodeActivityResult");
}
static public Bitmap retrieveImageFromUri(Context context, Uri data) throws IOException {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ImageDecoder.Source image_source = ImageDecoder.createSource(context.getContentResolver(), data);
return ImageDecoder.decodeBitmap(image_source, (decoder, info, source) -> decoder.setMutableRequired(true));
} else {
return getBitmapSdkLessThan29(data, context);
}
}
@SuppressWarnings("deprecation")
private static Bitmap getBitmapSdkLessThan29(Uri data, Context context) throws IOException {
return MediaStore.Images.Media.getBitmap(context.getContentResolver(), data);
}
static public BarcodeValues getBarcodeFromBitmap(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);
} catch (OutOfMemoryError e) {
Log.w(TAG, "Ran OOM in getBarcodeFromBitmap! 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);
}
static private BarcodeValues getBarcodeFromBitmapReal(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());
// ...and then turned into a binary bitmap from its luminance
LuminanceSource source = new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
try {
Result barcodeResult = new MultiFormatReader().decode(binaryBitmap);
return new BarcodeValues(barcodeResult.getBarcodeFormat().name(), barcodeResult.getText());
} catch (NotFoundException e) {
return new BarcodeValues(null, null);
}
}
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());
}
static public Boolean hasExpired(Date expiryDate) {
// Note: In #1083 it was discovered that `DatePickerFragment` may sometimes store the expiryDate
// at 12:00 PM instead of 12:00 AM in the DB. While this has been fixed and the 12-hour difference
// is not a problem for the way the comparison currently works, it's good to keep in mind such
// dates may exist in the DB in case the comparison changes in the future and the new one relies
// on both dates being set at 12:00 AM.
return expiryDate.before(getStartOfToday().getTime());
}
static private Calendar getStartOfToday() {
// today
Calendar date = new GregorianCalendar();
// reset hour, minutes, seconds and millis
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
return date;
}
static public String formatBalance(Context context, BigDecimal value, Currency currency) {
NumberFormat numberFormat = NumberFormat.getInstance();
if (currency == null) {
numberFormat.setMaximumFractionDigits(0);
return context.getResources().getQuantityString(R.plurals.balancePoints, value.intValue(), numberFormat.format(value));
}
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
currencyFormat.setCurrency(currency);
currencyFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());
currencyFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits());
return currencyFormat.format(value);
}
static public String formatBalanceWithoutCurrencySymbol(BigDecimal value, Currency currency) {
NumberFormat numberFormat = NumberFormat.getInstance();
if (currency == null) {
numberFormat.setMaximumFractionDigits(0);
return numberFormat.format(value);
}
numberFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());
numberFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits());
return numberFormat.format(value);
}
static public BigDecimal parseBalance(String value, Currency currency) throws ParseException {
NumberFormat numberFormat = NumberFormat.getInstance();
if (currency == null) {
numberFormat.setMaximumFractionDigits(0);
} else {
numberFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());
numberFormat.setMaximumFractionDigits(currency.getDefaultFractionDigits());
}
Log.d(TAG, numberFormat.parse(value).toString());
return new BigDecimal(numberFormat.parse(value).toString());
}
static public byte[] bitmapToByteArray(Bitmap bitmap) {
if (bitmap == null) {
return null;
}
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
return bos.toByteArray();
}
static public Bitmap resizeBitmap(Bitmap bitmap, double maxSize) {
if (bitmap == null) {
return null;
}
double width = bitmap.getWidth();
double height = bitmap.getHeight();
if (height > width) {
double scale = height / maxSize;
height = maxSize;
width = width / scale;
} else if (width > height) {
double scale = width / maxSize;
width = maxSize;
height = height / scale;
} else {
height = maxSize;
width = maxSize;
}
return Bitmap.createScaledBitmap(bitmap, (int) Math.round(width), (int) Math.round(height), true);
}
static public Bitmap rotateBitmap(Bitmap bitmap, ExifInterface exifInterface) {
switch (exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED)) {
case ExifInterface.ORIENTATION_ROTATE_90:
return rotateBitmap(bitmap, 90f);
case ExifInterface.ORIENTATION_ROTATE_180:
return rotateBitmap(bitmap, 180f);
case ExifInterface.ORIENTATION_ROTATE_270:
return rotateBitmap(bitmap, 270f);
default:
return bitmap;
}
}
static public Bitmap rotateBitmap(Bitmap bitmap, float rotation) {
if (rotation == 0) {
return bitmap;
}
Matrix matrix = new Matrix();
matrix.postRotate(rotation);
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
}
static public String getCardImageFileName(int loyaltyCardId, ImageLocationType type) {
StringBuilder cardImageFileNameBuilder = new StringBuilder();
cardImageFileNameBuilder.append("card_");
cardImageFileNameBuilder.append(loyaltyCardId);
cardImageFileNameBuilder.append("_");
if (type == ImageLocationType.front) {
cardImageFileNameBuilder.append("front");
} else if (type == ImageLocationType.back) {
cardImageFileNameBuilder.append("back");
} else if (type == ImageLocationType.icon) {
cardImageFileNameBuilder.append("icon");
} else {
throw new IllegalArgumentException("Unknown image type");
}
cardImageFileNameBuilder.append(".png");
return cardImageFileNameBuilder.toString();
}
/**
* Returns a card image filename (string) with the ID replaced according to the map if the input is a valid card image filename (string), otherwise null.
*
* @param fileName e.g. "card_1_front.png"
* @param idMap e.g. Map.of(1, 2)
* @return String e.g. "card_2_front.png"
*/
static public String getRenamedCardImageFileName(final String fileName, final Map<Integer, Integer> idMap) {
Pattern pattern = Pattern.compile(CARD_IMAGE_FILENAME_REGEX);
Matcher matcher = pattern.matcher(fileName);
if (matcher.matches()) {
StringBuilder cardImageFileNameBuilder = new StringBuilder();
cardImageFileNameBuilder.append(matcher.group(1));
try {
int id = Integer.parseInt(matcher.group(2));
cardImageFileNameBuilder.append(idMap.getOrDefault(id, id));
} catch (NumberFormatException _e) {
return null;
}
cardImageFileNameBuilder.append(matcher.group(3));
return cardImageFileNameBuilder.toString();
}
return null;
}
static public void saveCardImage(Context context, Bitmap bitmap, String fileName) throws FileNotFoundException {
if (bitmap == null) {
context.deleteFile(fileName);
return;
}
FileOutputStream out = context.openFileOutput(fileName, Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
}
static public void saveCardImage(Context context, Bitmap bitmap, int loyaltyCardId, ImageLocationType type) throws FileNotFoundException {
saveCardImage(context, bitmap, getCardImageFileName(loyaltyCardId, type));
}
public static File retrieveCardImageAsFile(Context context, String fileName) {
return context.getFileStreamPath(fileName);
}
public static File retrieveCardImageAsFile(Context context, int loyaltyCardId, ImageLocationType type) {
return retrieveCardImageAsFile(context, getCardImageFileName(loyaltyCardId, type));
}
static public Bitmap retrieveCardImage(Context context, String fileName) {
FileInputStream in;
try {
in = context.openFileInput(fileName);
} catch (FileNotFoundException e) {
return null;
}
return BitmapFactory.decodeStream(in);
}
static public Bitmap retrieveCardImage(Context context, int loyaltyCardId, ImageLocationType type) {
return retrieveCardImage(context, getCardImageFileName(loyaltyCardId, type));
}
static public <T, U> U mapGetOrDefault(Map<T, U> map, T key, U defaultValue) {
U value = map.get(key);
if (value == null) {
return defaultValue;
}
return value;
}
static public Locale stringToLocale(String localeString) {
String[] localeParts = localeString.split("-");
if (localeParts.length == 1) {
return new Locale(localeParts[0]);
}
if (localeParts[1].startsWith("r")) {
localeParts[1] = localeParts[1].substring(1);
}
return new Locale(localeParts[0], localeParts[1]);
}
static public Context updateBaseContextLocale(Context context) {
Settings settings = new Settings(context);
Locale chosenLocale = settings.getLocale();
// New API is broken on Android 6 and lower when selecting locales with both language and country, so still keeping this
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
Resources res = context.getResources();
Configuration configuration = res.getConfiguration();
setLocalesSdkLessThan24(chosenLocale, configuration, res);
return context;
}
/* Documentation at https://developer.android.com/reference/androidx/appcompat/app/AppCompatDelegate#setApplicationLocales(androidx.core.os.LocaleListCompat)
For API levels below that, the developer has two options:
- They can opt-in to automatic storage handled through the library...
- The second option is that they can choose to handle storage themselves.
In order to do so they must use this API to initialize locales during app-start up and provide their stored locales.
In this case, API should be called before Activity.onCreate() in the activity lifecycle, e.g. in attachBaseContext().
Note: Developers should gate this to API versions <33.
We are handling storage ourselves (courtesy of the in-app language picker), so we take the second approach.
So according to docs, we should have the API < 33 check.
*/
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
AppCompatDelegate.setApplicationLocales(chosenLocale != null ? LocaleListCompat.create(chosenLocale) : LocaleListCompat.getEmptyLocaleList());
}
return context;
}
@SuppressWarnings("deprecation")
private static void setLocalesSdkLessThan24(Locale chosenLocale, Configuration configuration, Resources res) {
configuration.locale = chosenLocale != null ? chosenLocale : Locale.getDefault();
res.updateConfiguration(configuration, res.getDisplayMetrics());
}
/**
* Android 13 settings seems to "force" the user to select country of locale, but many app-supported locales either only have language, not country
* or have a country the user doesn't want, which creates a mismatch between the app's supported locales and the system locale.
* <br>
* Example: The user chooses Espanol (Espana) in system settings, but the app only supports Espanol (Argentina) and the "plain" Espanol.
* <br>
* This method returns the app-supported locale that is most similar to the system one.
* @param appLocales Locales supported by the app
* @param sysLocale Per-app locale in system settings
* @return The app-supported locale that best matches the system per-app locale
*/
@NonNull
public static Locale getBestMatchLocale(@NonNull List<Locale> appLocales, @NonNull Locale sysLocale) {
int highestMatchMagnitude = appLocales.stream()
.mapToInt(appLocale -> calculateMatchMagnitudeOfTwoLocales(appLocale, sysLocale))
.max()
.orElseThrow(() -> new IllegalArgumentException("appLocales is empty"));
for (int i = 0; i < appLocales.size(); i++) {
Locale appLocale = appLocales.get(i);
if (calculateMatchMagnitudeOfTwoLocales(appLocale, sysLocale) == highestMatchMagnitude) {
return appLocale;
}
}
throw new AssertionError("This is not possible; there must be a locale whose match magnitude == " + highestMatchMagnitude + " with " + sysLocale.toLanguageTag());
}
private static int calculateMatchMagnitudeOfTwoLocales(@NonNull Locale appLocale, @NonNull Locale sysLocale) {
List<String> appLocaleAdjusted = new ArrayList<>();
List<String> sysLocaleAdjusted = new ArrayList<>();
appLocaleAdjusted.add(appLocale.getLanguage());
sysLocaleAdjusted.add(sysLocale.getLanguage());
if (!appLocale.getCountry().isEmpty() && !sysLocale.getCountry().isEmpty()) {
appLocaleAdjusted.add(appLocale.getCountry());
sysLocaleAdjusted.add(sysLocale.getCountry());
}
if (!appLocale.getVariant().isEmpty() && !sysLocale.getVariant().isEmpty()) {
appLocaleAdjusted.add(appLocale.getVariant());
sysLocaleAdjusted.add(sysLocale.getVariant());
}
if (!appLocale.getScript().isEmpty() && !sysLocale.getScript().isEmpty()) {
appLocaleAdjusted.add(appLocale.getScript());
sysLocaleAdjusted.add(sysLocale.getScript());
}
if (appLocaleAdjusted.equals(sysLocaleAdjusted)) {
return appLocaleAdjusted.size();
}
return 0;
}
static public long getUnixTime() {
return System.currentTimeMillis() / 1000;
}
static public boolean isDarkModeEnabled(Context inputContext) {
int nightModeSetting = new Settings(inputContext).getTheme();
if (nightModeSetting == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) {
Configuration config = inputContext.getResources().getConfiguration();
int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
return (currentNightMode == Configuration.UI_MODE_NIGHT_YES);
} else {
return nightModeSetting == AppCompatDelegate.MODE_NIGHT_YES;
}
}
public static File createTempFile(Context context, String name) {
return new File(context.getCacheDir() + "/" + name);
}
public static File copyToTempFile(Context context, InputStream input, String name) throws IOException {
File file = createTempFile(context, name);
try (input; FileOutputStream out = new FileOutputStream(file)) {
byte[] buf = new byte[4096];
int len;
while ((len = input.read(buf)) != -1) {
out.write(buf, 0, len);
}
return file;
}
}
public static String saveTempImage(Context context, Bitmap in, String name, Bitmap.CompressFormat format) {
File image = createTempFile(context, name);
try (FileOutputStream out = new FileOutputStream(image)) {
in.compress(format, 100, out);
return image.getAbsolutePath();
} catch (IOException e) {
Log.d("store temp image", "failed writing temp file for temporary image, name: " + name);
return null;
}
}
public static Bitmap loadImage(String path) {
try {
return BitmapFactory.decodeStream(new FileInputStream(path));
} catch (IOException e) {
Log.d("load image", "failed loading image from " + path);
return null;
}
}
public static Bitmap loadTempImage(Context context, String name) {
return loadImage(context.getCacheDir() + "/" + name);
}
// https://stackoverflow.com/a/59324801/8378787
public static int getComplementaryColor(int color) {
int R = color & 255;
int G = (color >> 8) & 255;
int B = (color >> 16) & 255;
int A = (color >> 24) & 255;
R = 255 - R;
G = 255 - G;
B = 255 - B;
return R + (G << 8) + (B << 16) + (A << 24);
}
// replace colors in the current theme
public static void patchColors(AppCompatActivity activity) {
Settings settings = new Settings(activity);
String color = settings.getColor();
Resources.Theme theme = activity.getTheme();
Resources resources = activity.getResources();
if (color.equals(resources.getString(R.string.settings_key_pink_theme))) {
theme.applyStyle(R.style.pink, true);
} else if (color.equals(resources.getString(R.string.settings_key_magenta_theme))) {
theme.applyStyle(R.style.magenta, true);
} else if (color.equals(resources.getString(R.string.settings_key_violet_theme))) {
theme.applyStyle(R.style.violet, true);
} else if (color.equals(resources.getString(R.string.settings_key_blue_theme))) {
theme.applyStyle(R.style.blue, true);
} else if (color.equals(resources.getString(R.string.settings_key_sky_blue_theme))) {
theme.applyStyle(R.style.skyblue, true);
} else if (color.equals(resources.getString(R.string.settings_key_green_theme))) {
theme.applyStyle(R.style.green, true);
} else if (color.equals(resources.getString(R.string.settings_key_brown_theme))) {
theme.applyStyle(R.style.brown, true);
} else if (color.equals(resources.getString(R.string.settings_key_catima_theme))) {
// catima theme is AppTheme itself, no dynamic colors nor applyStyle
} else {
// final catch all in case of invalid theme value from older versions
// also handles R.string.settings_key_system_theme
DynamicColors.applyToActivityIfAvailable(activity);
}
if (isDarkModeEnabled(activity) && settings.getOledDark()) {
theme.applyStyle(R.style.DarkBackground, true);
}
}
// XXX android 9 and below has issues with patched theme where the background becomes a
// rendering mess
// use after views are inflated
public static void postPatchColors(AppCompatActivity activity) {
TypedValue typedValue = new TypedValue();
activity.getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true);
activity.findViewById(android.R.id.content).setBackgroundColor(typedValue.data);
}
public static int getHeaderColorFromImage(Bitmap image, int fallback) {
if (image == null) {
return fallback;
}
return new Palette.Builder(image).generate().getDominantColor(androidx.appcompat.R.attr.colorPrimary);
}
public static int getRandomHeaderColor(Context context) {
TypedArray colors = context.getResources().obtainTypedArray(R.array.letter_tile_colors);
final int color = (int) (Math.random() * colors.length());
return colors.getColor(color, Color.BLACK);
}
public static String readTextFile(Context context, @RawRes int resourceId) throws IOException {
InputStream input = context.getResources().openRawResource(resourceId);
BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
StringBuilder result = new StringBuilder();
while (true) {
String nextLine = reader.readLine();
if (nextLine == null) {
reader.close();
break;
}
result.append("\n");
result.append(nextLine);
}
return result.toString();
}
// Very crude Markdown to HTML conversion.
// Only supports what's currently being used in CHANGELOG.md and PRIVACY.md.
// May break easily.
public static String basicMDToHTML(final String input) {
return input
.replaceAll("(?m)^#\\s+(.*)", "<h1>$1</h1>")
.replaceAll("(?m)^##\\s+(.*)", "<h2>$1</h2>")
.replaceAll("\\[([^]]+)\\]\\((https?://[\\w@#%&+=:?/.-]+)\\)", "<a href=\"$2\">$1</a>")
.replaceAll("\\*\\*([^*]+)\\*\\*", "<b>$1</b>")
.replaceAll("(?m)^-\\s+(.*)", "<ul><li>&nbsp;$1</li></ul>")
.replace("</ul>\n<ul>", "");
}
// Very crude autolinking.
// Only supports what's currently being used in CHANGELOG.md and PRIVACY.md.
// May break easily.
public static String linkify(final String input) {
return input
.replaceAll("([\\w.-]+@[\\w-]+(\\.[\\w-]+)+)", "<a href=\"mailto:$1\">$1</a>")
.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) {
if (icon != null) {
Log.d("onResume", "setting icon image");
textWhenNoImage.setVisibility(View.GONE);
backgroundOrIcon.setImageBitmap(icon);
backgroundOrIcon.setBackgroundColor(Color.TRANSPARENT);
} else {
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);
}
}
public static boolean installedFromGooglePlay(Context context) {
try {
String packageName = context.getPackageName();
String installer;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
installer = context.getPackageManager().getInstallSourceInfo(packageName).getInstallingPackageName();
} else {
installer = context.getPackageManager().getInstallerPackageName(packageName);
}
return installer.equals("com.android.vending");
} catch (Throwable ignored) {
return false;
}
}
public static int getHeaderColor(Context context, LoyaltyCard loyaltyCard) {
return loyaltyCard.headerColor != null ? loyaltyCard.headerColor : LetterBitmap.getDefaultColor(context, loyaltyCard.store);
}
public static String checksum(InputStream input) throws IOException {
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] buf = new byte[4096];
int len;
while ((len = input.read(buf)) != -1) {
md.update(buf, 0, len);
}
StringBuilder sb = new StringBuilder();
for (byte b : md.digest()) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException _e) {
return null;
}
}
public static boolean equals(final Object a, final Object b) {
if (a == null && b == null) {
return true;
} else if (a == null || b == null) {
return false;
}
return a.equals(b);
}
@SuppressLint("ClickableViewAccessibility")
public static void makeTextViewLinksClickable(final TextView textView, final Spanned text) {
textView.setOnTouchListener((v, event) -> {
int action = event.getAction();
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX() - textView.getTotalPaddingLeft() + textView.getScrollX();
int y = (int) event.getY() - textView.getTotalPaddingTop() + textView.getScrollY();
Layout layout = textView.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
ClickableSpan[] links = text.getSpans(off, off, ClickableSpan.class);
if (links.length != 0) {
ClickableSpan link = links[0];
if (action == MotionEvent.ACTION_UP) {
link.onClick(textView);
}
return true;
}
}
return false;
});
}
}
@@ -0,0 +1,35 @@
package protect.card_locker;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import net.lingala.zip4j.io.inputstream.ZipInputStream;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
public class ZipUtils {
public static Bitmap readImage(ZipInputStream zipInputStream) {
return BitmapFactory.decodeStream(zipInputStream);
}
public static JSONObject readJSON(ZipInputStream zipInputStream) throws IOException, JSONException {
return new JSONObject(read(zipInputStream));
}
private static String read(ZipInputStream zipInputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
Reader reader = new BufferedReader(new InputStreamReader(zipInputStream, StandardCharsets.UTF_8));
int c;
while ((c = reader.read()) != -1) {
stringBuilder.append((char) c);
}
return stringBuilder.toString();
}
}
@@ -0,0 +1,9 @@
package protect.card_locker.async;
import java.util.concurrent.Callable;
public interface CompatCallable<T> extends Callable<T> {
void onPostExecute(Object result);
void onPreExecute();
}
@@ -0,0 +1,175 @@
package protect.card_locker.async;
import android.os.Handler;
import android.os.Looper;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* AsyncTask has been deprecated so this provides very rudimentary compatibility without
* needing to redo too many Parts.
* <p>
* However this is a much, much more cooperative Behaviour than before so
* the callers need to ensure we do NOT rely on forced cancellation and feed less into the
* ThreadPools so we don't OOM/Overload the Users device
* <p>
* This assumes single-threaded callers.
*/
public class TaskHandler {
public enum TYPE {
BARCODE,
IMPORT,
EXPORT
}
HashMap<TYPE, ThreadPoolExecutor> executors = generateExecutors();
final private HashMap<TYPE, LinkedList<Future<?>>> taskList = new HashMap<>();
private final Handler uiHandler = new Handler(Looper.getMainLooper());
private HashMap<TYPE, ThreadPoolExecutor> generateExecutors() {
HashMap<TYPE, ThreadPoolExecutor> initExecutors = new HashMap<>();
for (TYPE type : TYPE.values()) {
replaceExecutor(initExecutors, type, false, false);
}
return initExecutors;
}
/**
* Replaces (or initializes) an Executor with a clean (new) one
*
* @param executors Map Reference
* @param type Which Queue
* @param flushOld attempt shutdown
* @param waitOnOld wait for Termination
*/
private void replaceExecutor(HashMap<TYPE, ThreadPoolExecutor> executors, TYPE type, Boolean flushOld, Boolean waitOnOld) {
ThreadPoolExecutor oldExecutor = executors.get(type);
if (oldExecutor != null) {
if (flushOld) {
oldExecutor.shutdownNow();
}
if (waitOnOld) {
try {
//noinspection ResultOfMethodCallIgnored
oldExecutor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
executors.put(type, (ThreadPoolExecutor) Executors.newCachedThreadPool());
}
/**
* Queue a Pseudo-AsyncTask for execution
*
* @param type Queue
* @param callable PseudoAsyncTask
*/
public void executeTask(TYPE type, CompatCallable<?> callable) {
Runnable runner = () -> {
try {
// Run on the UI Thread
uiHandler.post(callable::onPreExecute);
// Background
final Object result = callable.call();
// Post results on UI Thread so we can show them
uiHandler.post(() -> {
callable.onPostExecute(result);
});
} catch (Exception e) {
e.printStackTrace();
}
};
LinkedList<Future<?>> list = taskList.get(type);
if (list == null) {
list = new LinkedList<>();
}
ThreadPoolExecutor executor = executors.get(type);
if (executor != null) {
Future<?> task = executor.submit(runner);
// Test Queue Cancellation:
// task.cancel(true);
list.push(task);
taskList.put(type, list);
}
}
/**
* This will attempt to cancel a currently running list of Tasks
* Useful to ignore scheduled tasks - but not able to hard-stop tasks that are running
*
* @param type Which Queue to target
* @param forceCancel attempt to close the Queue and force-replace it after
* @param waitForFinish wait and return after the old executor finished. Times out after 5s
* @param waitForCurrentlyRunning wait before cancelling tasks. Useful for tests.
*/
public void flushTaskList(TYPE type, Boolean forceCancel, Boolean waitForFinish, Boolean waitForCurrentlyRunning) {
// Only used for Testing
if (waitForCurrentlyRunning) {
ThreadPoolExecutor oldExecutor = executors.get(type);
if (oldExecutor != null) {
try {
//noinspection ResultOfMethodCallIgnored
oldExecutor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// Attempt to cancel known Tasks and clean the List
LinkedList<Future<?>> tasks = taskList.get(type);
if (tasks != null) {
for (Future<?> task : tasks) {
if (!task.isDone() || !task.isCancelled()) {
// Interrupt any Task we can
task.cancel(true);
}
}
}
tasks = new LinkedList<>();
taskList.put(type, tasks);
if (forceCancel || waitForFinish) {
ThreadPoolExecutor oldExecutor = executors.get(type);
if (oldExecutor != null) {
if (forceCancel) {
if (waitForFinish) {
try {
//noinspection ResultOfMethodCallIgnored
oldExecutor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
oldExecutor.shutdownNow();
replaceExecutor(executors, type, true, false);
} else {
try {
//noinspection ResultOfMethodCallIgnored
oldExecutor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
@@ -0,0 +1,172 @@
package protect.card_locker.contentprovider;
import static protect.card_locker.DBHelper.LoyaltyCardDbIds;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Build;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import protect.card_locker.BuildConfig;
import protect.card_locker.DBHelper;
import protect.card_locker.preferences.Settings;
public class CardsContentProvider extends ContentProvider {
private static final String TAG = "Catima";
public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".contentprovider.cards";
public static class Version {
public static final String MAJOR_COLUMN = "major";
public static final String MINOR_COLUMN = "minor";
public static final int MAJOR = 1;
public static final int MINOR = 0;
}
private static final int URI_VERSION = 0;
private static final int URI_CARDS = 1;
private static final int URI_GROUPS = 2;
private static final int URI_CARD_GROUPS = 3;
private static final String[] CARDS_DEFAULT_PROJECTION = new String[]{
LoyaltyCardDbIds.ID,
LoyaltyCardDbIds.STORE,
LoyaltyCardDbIds.VALID_FROM,
LoyaltyCardDbIds.EXPIRY,
LoyaltyCardDbIds.BALANCE,
LoyaltyCardDbIds.BALANCE_TYPE,
LoyaltyCardDbIds.NOTE,
LoyaltyCardDbIds.HEADER_COLOR,
LoyaltyCardDbIds.CARD_ID,
LoyaltyCardDbIds.BARCODE_ID,
LoyaltyCardDbIds.BARCODE_TYPE,
LoyaltyCardDbIds.STAR_STATUS,
LoyaltyCardDbIds.LAST_USED,
LoyaltyCardDbIds.ARCHIVE_STATUS,
};
private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH) {{
addURI(AUTHORITY, "version", URI_VERSION);
addURI(AUTHORITY, "cards", URI_CARDS);
addURI(AUTHORITY, "groups", URI_GROUPS);
addURI(AUTHORITY, "card_groups", URI_CARD_GROUPS);
}};
@Override
public boolean onCreate() {
return true;
}
@Nullable
@Override
public Cursor query(@NonNull final Uri uri,
@Nullable final String[] projection,
@Nullable final String selection,
@Nullable final String[] selectionArgs,
@Nullable final String sortOrder) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// Disable the content provider on SDK < 23 since it grants dangerous
// permissions at install-time
Log.w(TAG, "Content provider read is only available for SDK >= 23");
return null;
}
final Settings settings = new Settings(getContext());
if (!settings.getAllowContentProviderRead()) {
Log.w(TAG, "Content provider read is disabled");
return null;
}
final String table;
String[] updatedProjection = projection;
switch (uriMatcher.match(uri)) {
case URI_VERSION:
return queryVersion();
case URI_CARDS:
table = DBHelper.LoyaltyCardDbIds.TABLE;
// Restrict columns to the default projection (omit internal columns such as zoom level)
if (projection == null) {
updatedProjection = CARDS_DEFAULT_PROJECTION;
} else {
final Set<String> defaultProjection = new HashSet<>(Arrays.asList(CARDS_DEFAULT_PROJECTION));
updatedProjection = Arrays.stream(projection).filter(defaultProjection::contains).toArray(String[]::new);
}
break;
case URI_GROUPS:
table = DBHelper.LoyaltyCardDbGroups.TABLE;
break;
case URI_CARD_GROUPS:
table = DBHelper.LoyaltyCardDbIdsGroups.TABLE;
break;
default:
Log.w(TAG, "Unrecognized URI " + uri);
return null;
}
final DBHelper dbHelper = new DBHelper(getContext());
final SQLiteDatabase database = dbHelper.getReadableDatabase();
return database.query(
table,
updatedProjection,
selection,
selectionArgs,
null,
null,
sortOrder
);
}
private Cursor queryVersion() {
final String[] columns = new String[]{Version.MAJOR_COLUMN, Version.MINOR_COLUMN};
final MatrixCursor matrixCursor = new MatrixCursor(columns);
matrixCursor.addRow(new Object[]{Version.MAJOR, Version.MINOR});
return matrixCursor;
}
@Nullable
@Override
public String getType(@NonNull final Uri uri) {
// MIME types are not relevant (for now at least)
return null;
}
@Nullable
@Override
public Uri insert(@NonNull final Uri uri,
@Nullable final ContentValues values) {
// This content provider is read-only for now, so we always return null
return null;
}
@Override
public int delete(@NonNull final Uri uri,
@Nullable final String selection,
@Nullable final String[] selectionArgs) {
// This content provider is read-only for now, so we always return 0
return 0;
}
@Override
public int update(@NonNull final Uri uri,
@Nullable final ContentValues values,
@Nullable final String selection,
@Nullable final String[] selectionArgs) {
// This content provider is read-only for now, so we always return 0
return 0;
}
}
@@ -0,0 +1,68 @@
package protect.card_locker.importexport;
import org.apache.commons.csv.CSVRecord;
import protect.card_locker.FormatException;
public class CSVHelpers {
/**
* Extract a string from the items array. The index into the array
* is determined by looking up the index in the fields map using the
* "key" as the key. If no such key exists, defaultValue is returned.
*/
static String extractString(String key, CSVRecord record, String defaultValue) {
if (record.isMapped(key)) {
return record.get(key);
}
return defaultValue;
}
/**
* Extract an integer from the items array. The index into the array
* is determined by looking up the index in the fields map using the
* "key" as the key. If no such key exists, or the data is not a valid
* int, a FormatException is thrown.
*/
static Integer extractInt(String key, CSVRecord record)
throws FormatException {
if (!record.isMapped(key)) {
throw new FormatException("Field not used but expected: " + key);
}
String value = record.get(key);
if (value.isEmpty()) {
throw new FormatException("Field is empty: " + key);
}
try {
return Integer.parseInt(record.get(key));
} catch (NumberFormatException e) {
throw new FormatException("Failed to parse field: " + key, e);
}
}
/**
* Extract a long from the items array. The index into the array
* is determined by looking up the index in the fields map using the
* "key" as the key. If no such key exists, or the data is not a valid
* int, a FormatException is thrown.
*/
static Long extractLong(String key, CSVRecord record)
throws FormatException {
if (!record.isMapped(key)) {
throw new FormatException("Field not used but expected: " + key);
}
String value = record.get(key);
if (value.isEmpty()) {
throw new FormatException("Field is empty: " + key);
}
try {
return Long.parseLong(record.get(key));
} catch (NumberFormatException e) {
throw new FormatException("Failed to parse field: " + key, e);
}
}
}
@@ -0,0 +1,194 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import net.lingala.zip4j.io.outputstream.ZipOutputStream;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.EncryptionMethod;
import net.lingala.zip4j.util.InternalZipConstants;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import protect.card_locker.DBHelper;
import protect.card_locker.Group;
import protect.card_locker.ImageLocationType;
import protect.card_locker.LoyaltyCard;
import protect.card_locker.Utils;
/**
* Class for exporting the database into CSV (Comma Separate Values)
* format.
*/
public class CatimaExporter implements Exporter {
public void exportData(Context context, SQLiteDatabase database, OutputStream output, char[] password) throws IOException, InterruptedException {
// Necessary vars
int readLen;
byte[] readBuffer = new byte[InternalZipConstants.BUFF_SIZE];
// Create zip output stream
ZipOutputStream zipOutputStream;
if (password != null && password.length > 0) {
zipOutputStream = new ZipOutputStream(output, password);
} else {
zipOutputStream = new ZipOutputStream(output);
}
// Generate CSV
ByteArrayOutputStream catimaOutputStream = new ByteArrayOutputStream();
OutputStreamWriter catimaOutputStreamWriter = new OutputStreamWriter(catimaOutputStream, StandardCharsets.UTF_8);
writeCSV(database, catimaOutputStreamWriter);
// Add CSV to zip file
ZipParameters csvZipParameters = createZipParameters("catima.csv", password);
zipOutputStream.putNextEntry(csvZipParameters);
InputStream csvInputStream = new ByteArrayInputStream(catimaOutputStream.toByteArray());
while ((readLen = csvInputStream.read(readBuffer)) != -1) {
zipOutputStream.write(readBuffer, 0, readLen);
}
zipOutputStream.closeEntry();
// Loop over all cards again
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
// For each card
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
// For each image
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
// If it exists, add to the .zip file
Bitmap image = Utils.retrieveCardImage(context, card.id, imageLocationType);
if (image != null) {
ZipParameters imageZipParameters = createZipParameters(Utils.getCardImageFileName(card.id, imageLocationType), password);
zipOutputStream.putNextEntry(imageZipParameters);
InputStream imageInputStream = new ByteArrayInputStream(Utils.bitmapToByteArray(image));
while ((readLen = imageInputStream.read(readBuffer)) != -1) {
zipOutputStream.write(readBuffer, 0, readLen);
}
zipOutputStream.closeEntry();
}
}
}
zipOutputStream.close();
}
private ZipParameters createZipParameters(String fileName, char[] password) {
ZipParameters zipParameters = new ZipParameters();
zipParameters.setFileNameInZip(fileName);
if (password != null && password.length > 0) {
zipParameters.setEncryptFiles(true);
zipParameters.setEncryptionMethod(EncryptionMethod.AES);
}
return zipParameters;
}
private void writeCSV(SQLiteDatabase database, OutputStreamWriter output) throws IOException, InterruptedException {
CSVPrinter printer = new CSVPrinter(output, CSVFormat.RFC4180);
// Print the version
printer.printRecord("2");
printer.println();
// Print the header for groups
printer.printRecord(DBHelper.LoyaltyCardDbGroups.ID);
Cursor groupCursor = DBHelper.getGroupCursor(database);
while (groupCursor.moveToNext()) {
Group group = Group.toGroup(groupCursor);
printer.printRecord(group._id);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
groupCursor.close();
// Print an empty line
printer.println();
// Print the header for cards
printer.printRecord(DBHelper.LoyaltyCardDbIds.ID,
DBHelper.LoyaltyCardDbIds.STORE,
DBHelper.LoyaltyCardDbIds.NOTE,
DBHelper.LoyaltyCardDbIds.VALID_FROM,
DBHelper.LoyaltyCardDbIds.EXPIRY,
DBHelper.LoyaltyCardDbIds.BALANCE,
DBHelper.LoyaltyCardDbIds.BALANCE_TYPE,
DBHelper.LoyaltyCardDbIds.CARD_ID,
DBHelper.LoyaltyCardDbIds.BARCODE_ID,
DBHelper.LoyaltyCardDbIds.BARCODE_TYPE,
DBHelper.LoyaltyCardDbIds.HEADER_COLOR,
DBHelper.LoyaltyCardDbIds.STAR_STATUS,
DBHelper.LoyaltyCardDbIds.LAST_USED,
DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS);
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor);
printer.printRecord(card.id,
card.store,
card.note,
card.validFrom != null ? card.validFrom.getTime() : "",
card.expiry != null ? card.expiry.getTime() : "",
card.balance,
card.balanceType,
card.cardId,
card.barcodeId,
card.barcodeType != null ? card.barcodeType.name() : "",
card.headerColor,
card.starStatus,
card.lastUsed,
card.archiveStatus);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
cardCursor.close();
// Print an empty line
printer.println();
// Print the header for card group mappings
printer.printRecord(DBHelper.LoyaltyCardDbIdsGroups.cardID,
DBHelper.LoyaltyCardDbIdsGroups.groupID);
Cursor cardCursor2 = DBHelper.getLoyaltyCardCursor(database);
while (cardCursor2.moveToNext()) {
LoyaltyCard card = LoyaltyCard.toLoyaltyCard(cardCursor2);
for (Group group : DBHelper.getLoyaltyCardGroups(database, card.id)) {
printer.printRecord(card.id, group._id);
}
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
cardCursor2.close();
printer.close();
}
}
@@ -0,0 +1,524 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import net.lingala.zip4j.io.inputstream.ZipInputStream;
import net.lingala.zip4j.model.LocalFileHeader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Currency;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import protect.card_locker.CatimaBarcode;
import protect.card_locker.DBHelper;
import protect.card_locker.FormatException;
import protect.card_locker.Group;
import protect.card_locker.ImageLocationType;
import protect.card_locker.LoyaltyCard;
import protect.card_locker.Utils;
import protect.card_locker.ZipUtils;
/**
* Class for importing a database from CSV (Comma Separate Values)
* formatted data.
* <p>
* The database's loyalty cards are expected to appear in the CSV data.
* A header is expected for the each table showing the names of the columns.
*/
public class CatimaImporter implements Importer {
public static class ImportedData {
public final List<LoyaltyCard> cards;
public final List<String> groups;
public final List<Map.Entry<Integer, String>> cardGroups;
ImportedData(final List<LoyaltyCard> cards, final List<String> groups, final List<Map.Entry<Integer, String>> cardGroups) {
this.cards = cards;
this.groups = groups;
this.cardGroups = cardGroups;
}
}
public void importData(Context context, SQLiteDatabase database, File inputFile, char[] password) throws IOException, FormatException, InterruptedException {
// Pass #1: get hashes and parse CSV
InputStream input1 = new FileInputStream(inputFile);
InputStream bufferedInputStream1 = new BufferedInputStream(input1);
bufferedInputStream1.mark(100);
ZipInputStream zipInputStream1 = new ZipInputStream(bufferedInputStream1, password);
// First, check if this is a zip file
boolean isZipFile = false;
LocalFileHeader localFileHeader;
Map<String, String> imageChecksums = new HashMap<>();
ImportedData importedData = null;
while ((localFileHeader = zipInputStream1.getNextEntry()) != null) {
isZipFile = true;
String fileName = Uri.parse(localFileHeader.getFileName()).getLastPathSegment();
if (fileName.equals("catima.csv")) {
importedData = importCSV(zipInputStream1);
} else if (fileName.endsWith(".png")) {
if (!fileName.matches(Utils.CARD_IMAGE_FILENAME_REGEX)) {
throw new FormatException("Unexpected PNG file in import: " + fileName);
}
imageChecksums.put(fileName, Utils.checksum(zipInputStream1));
} else {
throw new FormatException("Unexpected file in import: " + fileName);
}
}
if (!isZipFile) {
// This is not a zip file, try importing as bare CSV
bufferedInputStream1.reset();
importedData = importCSV(bufferedInputStream1);
}
input1.close();
if (importedData == null) {
throw new FormatException("No imported data");
}
Map<Integer, Integer> idMap = saveAndDeduplicate(context, database, importedData, imageChecksums);
if (isZipFile) {
// Pass #2: save images
InputStream input2 = new FileInputStream(inputFile);
InputStream bufferedInputStream2 = new BufferedInputStream(input2);
ZipInputStream zipInputStream2 = new ZipInputStream(bufferedInputStream2, password);
while ((localFileHeader = zipInputStream2.getNextEntry()) != null) {
String fileName = Uri.parse(localFileHeader.getFileName()).getLastPathSegment();
if (fileName.endsWith(".png")) {
String newFileName = Utils.getRenamedCardImageFileName(fileName, idMap);
Utils.saveCardImage(context, ZipUtils.readImage(zipInputStream2), newFileName);
}
}
input2.close();
}
}
public Map<Integer, Integer> saveAndDeduplicate(Context context, SQLiteDatabase database, final ImportedData data, final Map<String, String> imageChecksums) throws IOException {
Map<Integer, Integer> idMap = new HashMap<>();
Set<String> existingImages = DBHelper.imageFiles(context, database);
for (LoyaltyCard card : data.cards) {
LoyaltyCard existing = DBHelper.getLoyaltyCard(database, card.id);
if (existing == null) {
DBHelper.insertLoyaltyCard(database, card.id, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
} else if (!isDuplicate(context, existing, card, existingImages, imageChecksums)) {
long newId = DBHelper.insertLoyaltyCard(database, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
idMap.put(card.id, (int) newId);
}
}
for (String group : data.groups) {
DBHelper.insertGroup(database, group);
}
for (Map.Entry<Integer, String> entry : data.cardGroups) {
int cardId = idMap.getOrDefault(entry.getKey(), entry.getKey());
String groupId = entry.getValue();
// For existing & newly imported cards, add the groups from the import to the internal state
List<Group> cardGroups = DBHelper.getLoyaltyCardGroups(database, cardId);
cardGroups.add(DBHelper.getGroup(database, groupId));
DBHelper.setLoyaltyCardGroups(database, cardId, cardGroups);
}
return idMap;
}
public boolean isDuplicate(Context context, final LoyaltyCard existing, final LoyaltyCard card, final Set<String> existingImages, final Map<String, String> imageChecksums) throws IOException {
if (!LoyaltyCard.isDuplicate(existing, card)) {
return false;
}
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
String name = Utils.getCardImageFileName(existing.id, imageLocationType);
boolean exists = existingImages.contains(name);
if (exists != imageChecksums.containsKey(name)) {
return false;
}
if (exists) {
File file = Utils.retrieveCardImageAsFile(context, name);
if (!imageChecksums.get(name).equals(Utils.checksum(new FileInputStream(file)))) {
return false;
}
}
}
return true;
}
public ImportedData importCSV(InputStream input) throws IOException, FormatException, InterruptedException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
int version = parseVersion(bufferedReader);
switch (version) {
case 1:
return parseV1(bufferedReader);
case 2:
return parseV2(bufferedReader);
default:
throw new FormatException(String.format("No code to parse version %s", version));
}
}
public ImportedData parseV1(BufferedReader input) throws IOException, FormatException, InterruptedException {
ImportedData data = new ImportedData(new ArrayList<>(), new ArrayList<>(), new ArrayList<>());
final CSVParser parser = new CSVParser(input, CSVFormat.RFC4180.builder().setHeader().build());
try {
for (CSVRecord record : parser) {
LoyaltyCard card = importLoyaltyCard(record);
data.cards.add(card);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
parser.close();
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
}
return data;
}
public ImportedData parseV2(BufferedReader input) throws IOException, FormatException, InterruptedException {
List<LoyaltyCard> cards = new ArrayList<>();
List<String> groups = new ArrayList<>();
List<Map.Entry<Integer, String>> cardGroups = new ArrayList<>();
int part = 0;
StringBuilder stringPart = new StringBuilder();
try {
while (true) {
String tmp = input.readLine();
if (tmp == null || tmp.isEmpty()) {
boolean sectionParsed = false;
switch (part) {
case 0:
// This is the version info, ignore
sectionParsed = true;
break;
case 1:
try {
groups = parseV2Groups(stringPart.toString());
sectionParsed = true;
} catch (FormatException e) {
// We may have a multiline field, try again
}
break;
case 2:
try {
cards = parseV2Cards(stringPart.toString());
sectionParsed = true;
} catch (FormatException e) {
// We may have a multiline field, try again
}
break;
case 3:
try {
cardGroups = parseV2CardGroups(stringPart.toString());
sectionParsed = true;
} catch (FormatException e) {
// We may have a multiline field, try again
}
break;
default:
throw new FormatException("Issue parsing CSV data, too many parts for v2 parsing");
}
if (tmp == null) {
break;
}
if (sectionParsed) {
part += 1;
stringPart = new StringBuilder();
} else {
stringPart.append(tmp).append('\n');
}
} else {
stringPart.append(tmp).append('\n');
}
}
} catch (FormatException e) {
throw new FormatException("Issue parsing CSV data", e);
}
return new ImportedData(cards, groups, cardGroups);
}
public List<String> parseV2Groups(String data) throws IOException, FormatException, InterruptedException {
// Parse groups
final CSVParser groupParser = new CSVParser(new StringReader(data), CSVFormat.RFC4180.builder().setHeader().build());
List<CSVRecord> records = new ArrayList<>();
try {
for (CSVRecord record : groupParser) {
records.add(record);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
groupParser.close();
}
List<String> groups = new ArrayList<>();
for (CSVRecord record : records) {
String group = importGroup(record);
groups.add(group);
}
return groups;
}
public List<LoyaltyCard> parseV2Cards(String data) throws IOException, FormatException, InterruptedException {
// Parse cards
final CSVParser cardParser = new CSVParser(new StringReader(data), CSVFormat.RFC4180.builder().setHeader().build());
List<CSVRecord> records = new ArrayList<>();
try {
for (CSVRecord record : cardParser) {
records.add(record);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
cardParser.close();
}
List<LoyaltyCard> cards = new ArrayList<>();
for (CSVRecord record : records) {
LoyaltyCard card = importLoyaltyCard(record);
cards.add(card);
}
return cards;
}
public List<Map.Entry<Integer, String>> parseV2CardGroups(String data) throws IOException, FormatException, InterruptedException {
// Parse card group mappings
final CSVParser cardGroupParser = new CSVParser(new StringReader(data), CSVFormat.RFC4180.builder().setHeader().build());
List<CSVRecord> records = new ArrayList<>();
try {
for (CSVRecord record : cardGroupParser) {
records.add(record);
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
cardGroupParser.close();
}
List<Map.Entry<Integer, String>> cardGroups = new ArrayList<>();
for (CSVRecord record : records) {
Map.Entry<Integer, String> entry = importCardGroupMapping(record);
cardGroups.add(entry);
}
return cardGroups;
}
/**
* Parse the version number of the import file
*
* @param reader the reader containing the import file
* @return the parsed version number, defaulting to 1 if none is found
* @throws IOException there was a problem reading the file
*/
private int parseVersion(BufferedReader reader) throws IOException {
reader.mark(10); // slightly over the search limit just to be sure
StringBuilder sb = new StringBuilder();
int searchLimit = 5; // gives you version numbers up to 99999
int codePoint;
// search until the next whitespace, indicating the end of the version
while (!Character.isWhitespace(codePoint = reader.read())) {
// we found something that isn't a digit, or we ran out of chars
if (!Character.isDigit(codePoint) || searchLimit <= 0) {
reader.reset();
return 1; // default value
}
sb.append((char) codePoint);
searchLimit--;
}
reader.reset();
if (sb.length() == 0) {
return 1;
}
return Integer.parseInt(sb.toString());
}
/**
* Import a single loyalty card into the database using the given
* session.
*/
private LoyaltyCard importLoyaltyCard(CSVRecord record) throws FormatException {
int id = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ID, record);
String store = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.STORE, record, "");
if (store.isEmpty()) {
throw new FormatException("No store listed, but is required");
}
String note = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.NOTE, record, "");
Date validFrom = null;
Long validFromLong;
try {
validFromLong = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.VALID_FROM, record);
} catch (FormatException ignored) {
validFromLong = null;
}
if (validFromLong != null) {
validFrom = new Date(validFromLong);
}
Date expiry = null;
Long expiryLong;
try {
expiryLong = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.EXPIRY, record);
} catch (FormatException ignored) {
expiryLong = null;
}
if (expiryLong != null) {
expiry = new Date(expiryLong);
}
// These fields did not exist in versions 1.8.1 and before
// We default to 0 so we can still import old backups
BigDecimal balance = new BigDecimal("0");
String balanceString = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BALANCE, record, null);
if (balanceString != null) {
try {
balance = new BigDecimal(CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BALANCE, record, null));
} catch (NumberFormatException ignored) {
}
}
Currency balanceType = null;
String unparsedBalanceType = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BALANCE_TYPE, record, "");
if (!unparsedBalanceType.isEmpty()) {
balanceType = Currency.getInstance(unparsedBalanceType);
}
String cardId = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.CARD_ID, record, "");
if (cardId.isEmpty()) {
throw new FormatException("No card ID listed, but is required");
}
String barcodeId = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BARCODE_ID, record, "");
if (barcodeId.isEmpty()) {
barcodeId = null;
}
CatimaBarcode barcodeType = null;
String unparsedBarcodeType = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE, record, "");
if (!unparsedBarcodeType.isEmpty()) {
barcodeType = CatimaBarcode.fromName(unparsedBarcodeType);
}
Integer headerColor = null;
try {
headerColor = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.HEADER_COLOR, record);
} catch (FormatException ignored) {
}
int starStatus = 0;
try {
starStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.STAR_STATUS, record);
} catch (FormatException _e) {
// This field did not exist in versions 0.28 and before
// We catch this exception so we can still import old backups
}
if (starStatus != 1) starStatus = 0;
int archiveStatus = 0;
try {
archiveStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS, record);
} catch (FormatException _e) {
// This field did not exist in versions 2.16.3 and before
// We catch this exception so we can still import old backups
}
if (archiveStatus != 1) archiveStatus = 0;
Long lastUsed = 0L;
try {
lastUsed = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.LAST_USED, record);
} catch (FormatException _e) {
// This field did not exist in versions 2.5.0 and before
// We catch this exception so we can still import old backups
}
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed, DBHelper.DEFAULT_ZOOM_LEVEL, archiveStatus);
}
/**
* Import a single group into the database using the given
* session.
*/
private String importGroup(CSVRecord record) throws FormatException {
String id = CSVHelpers.extractString(DBHelper.LoyaltyCardDbGroups.ID, record, null);
if (id == null) {
throw new FormatException("Group has no ID: " + record);
}
return id;
}
/**
* Import a single card to group mapping into the database using the given
* session.
*/
private Map.Entry<Integer, String> importCardGroupMapping(CSVRecord record) throws FormatException {
int cardId = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIdsGroups.cardID, record);
String groupId = CSVHelpers.extractString(DBHelper.LoyaltyCardDbIdsGroups.groupID, record, null);
if (groupId == null) {
throw new FormatException("Group has no ID: " + record);
}
return Map.entry(cardId, groupId);
}
}
@@ -0,0 +1,8 @@
package protect.card_locker.importexport;
public enum DataFormat {
Catima,
Fidme,
Stocard,
VoucherVault;
}
@@ -0,0 +1,20 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import java.io.IOException;
import java.io.OutputStream;
/**
* Interface for a class which can export the contents of the database
* in a given format.
*/
public interface Exporter {
/**
* Export the database to the output stream in a given format.
*
* @throws IOException
*/
void exportData(Context context, SQLiteDatabase database, OutputStream output, char[] password) throws IOException, InterruptedException;
}
@@ -0,0 +1,164 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import net.lingala.zip4j.io.inputstream.ZipInputStream;
import net.lingala.zip4j.model.LocalFileHeader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import org.json.JSONException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import protect.card_locker.CatimaBarcode;
import protect.card_locker.DBHelper;
import protect.card_locker.FormatException;
import protect.card_locker.LoyaltyCard;
import protect.card_locker.Utils;
/**
* Class for importing a database from CSV (Comma Separate Values)
* formatted data.
* <p>
* The database's loyalty cards are expected to appear in the CSV data.
* A header is expected for the each table showing the names of the columns.
*/
public class FidmeImporter implements Importer {
public static class ImportedData {
public final List<LoyaltyCard> cards;
ImportedData(final List<LoyaltyCard> cards) {
this.cards = cards;
}
}
public void importData(Context context, SQLiteDatabase database, File inputFile, char[] password) throws IOException, FormatException, JSONException, ParseException {
InputStream input = new FileInputStream(inputFile);
// We actually retrieve a .zip file
ZipInputStream zipInputStream = new ZipInputStream(input, password);
StringBuilder loyaltyCards = new StringBuilder();
byte[] buffer = new byte[1024];
int read = 0;
LocalFileHeader localFileHeader;
while ((localFileHeader = zipInputStream.getNextEntry()) != null) {
if (localFileHeader.getFileName().equals("loyalty_programs.csv")) {
while ((read = zipInputStream.read(buffer, 0, 1024)) >= 0) {
loyaltyCards.append(new String(buffer, 0, read, StandardCharsets.UTF_8));
}
}
}
if (loyaltyCards.length() == 0) {
throw new FormatException("Couldn't find loyalty_programs.csv in zip file or it is empty");
}
final CSVParser fidmeParser = new CSVParser(new StringReader(loyaltyCards.toString()), CSVFormat.RFC4180.builder().setDelimiter(';').setHeader().build());
ImportedData importedData = new ImportedData(new ArrayList<>());
try {
for (CSVRecord record : fidmeParser) {
LoyaltyCard card = importLoyaltyCard(context, record);
if (card != null) {
importedData.cards.add(card);
}
if (Thread.currentThread().isInterrupted()) {
throw new InterruptedException();
}
}
} catch (IllegalArgumentException | IllegalStateException | InterruptedException e) {
throw new FormatException("Issue parsing CSV data", e);
} finally {
fidmeParser.close();
}
zipInputStream.close();
input.close();
saveAndDeduplicate(database, importedData);
}
/**
* Import a single loyalty card into the database using the given
* session.
*/
private LoyaltyCard importLoyaltyCard(Context context, CSVRecord record) throws FormatException {
// A loyalty card export from Fidme contains the following fields:
// Retailer (store name)
// Program (program name)
// Added at (YYYY-MM-DD HH:MM:SS UTC)
// Reference (card ID)
// Firstname (card holder first name)
// Lastname (card holder last name)
// The store is called Retailer
String store = CSVHelpers.extractString("Retailer", record, "");
if (store.isEmpty()) {
throw new FormatException("No store listed, but is required");
}
// There seems to be no note field in the CSV? So let's combine other fields instead...
String program = CSVHelpers.extractString("Program", record, "").trim();
String addedAt = CSVHelpers.extractString("Added At", record, "").trim();
String firstName = CSVHelpers.extractString("Firstname", record, "").trim();
String lastName = CSVHelpers.extractString("Lastname", record, "").trim();
String combinedName = String.format("%s %s", firstName, lastName).trim();
StringBuilder noteBuilder = new StringBuilder();
if (!program.isEmpty()) noteBuilder.append(program).append('\n');
if (!addedAt.isEmpty()) noteBuilder.append(addedAt).append('\n');
if (!combinedName.isEmpty()) noteBuilder.append(combinedName).append('\n');
String note = noteBuilder.toString().trim();
// The ID is called reference
String cardId = CSVHelpers.extractString("Reference", record, "");
if (cardId.isEmpty()) {
// Fidme deletes the card id if a card is expired
// Because Catima considers the card id a required field, we ignore these expired cards
// https://github.com/CatimaLoyalty/Android/issues/1005
return null;
}
// Sadly, Fidme exports don't contain the card type
// I guess they have an online DB of all the different companies and what type they use
// TODO: Hook this into our own loyalty card DB if we ever get one
CatimaBarcode barcodeType = null;
// No favourite data or colour in the export either
int starStatus = 0;
int archiveStatus = 0;
int headerColor = Utils.getRandomHeaderColor(context);
// TODO: Front and back image
// use -1 for the ID, it will be ignored when inserting the card into the DB
return new LoyaltyCard(-1, store, note, null, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, starStatus, Utils.getUnixTime(), DBHelper.DEFAULT_ZOOM_LEVEL, archiveStatus);
}
public void saveAndDeduplicate(SQLiteDatabase database, final ImportedData data) {
// This format does not have IDs that can cause conflicts
// Proper deduplication for all formats will be implemented later
for (LoyaltyCard card : data.cards) {
// Do not use card.id which is set to -1
DBHelper.insertLoyaltyCard(database, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
}
}
}
@@ -0,0 +1,23 @@
package protect.card_locker.importexport;
public class ImportExportResult {
private ImportExportResultType resultType;
private String developerDetails;
public ImportExportResult(ImportExportResultType resultType) {
this(resultType, null);
}
public ImportExportResult(ImportExportResultType resultType, String developerDetails) {
this.resultType = resultType;
this.developerDetails = developerDetails;
}
public ImportExportResultType resultType() {
return resultType;
}
public String developerDetails() {
return developerDetails;
}
}
@@ -0,0 +1,7 @@
package protect.card_locker.importexport;
public enum ImportExportResultType {
Success,
GenericFailure,
BadPassword;
}
@@ -0,0 +1,27 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import org.json.JSONException;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import protect.card_locker.FormatException;
/**
* Interface for a class which can import the contents of a stream
* into the database.
*/
public interface Importer {
/**
* Import data from the input stream in a given format into
* the database.
*
* @throws IOException
* @throws FormatException
*/
void importData(Context context, SQLiteDatabase database, File inputFile, char[] password) throws IOException, FormatException, InterruptedException, JSONException, ParseException;
}
@@ -0,0 +1,50 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.io.OutputStream;
public class MultiFormatExporter {
private static final String TAG = "Catima";
/**
* Attempts to export data to the output stream in the
* given format, if possible.
* <p>
* The output stream is closed on success.
*
* @return ImportExportResult.Success if the database was successfully exported,
* another ImportExportResult otherwise. If not Success, partial data may have been
* written to the output stream, and it should be discarded.
*/
public static ImportExportResult exportData(Context context, SQLiteDatabase database, OutputStream output, DataFormat format, char[] password) {
Exporter exporter = null;
switch (format) {
case Catima:
exporter = new CatimaExporter();
break;
default:
Log.e(TAG, "Failed to export data, unknown format " + format.name());
break;
}
String error;
if (exporter != null) {
try {
exporter.exportData(context, database, output, password);
return new ImportExportResult(ImportExportResultType.Success);
} catch (Exception e) {
Log.e(TAG, "Failed to export data", e);
error = e.toString();
}
} else {
error = "Unsupported data format exported: " + format.name();
Log.e(TAG, error);
}
return new ImportExportResult(ImportExportResultType.GenericFailure, error);
}
}
@@ -0,0 +1,85 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import net.lingala.zip4j.exception.ZipException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import protect.card_locker.Utils;
public class MultiFormatImporter {
private static final String TAG = "Catima";
private static final String TEMP_ZIP_NAME = MultiFormatImporter.class.getSimpleName() + ".zip";
/**
* Attempts to import data from the input stream of the
* given format into the database.
* <p>
* The input stream is not closed, and doing so is the
* responsibility of the caller.
*
* @return ImportExportResult.Success if the database was successfully imported,
* or another result otherwise. If no Success, no data was written to
* the database.
*/
public static ImportExportResult importData(Context context, SQLiteDatabase database, InputStream input, DataFormat format, char[] password) {
Importer importer = null;
switch (format) {
case Catima:
importer = new CatimaImporter();
break;
case Fidme:
importer = new FidmeImporter();
break;
case Stocard:
importer = new StocardImporter();
break;
case VoucherVault:
importer = new VoucherVaultImporter();
break;
}
String error = null;
if (importer != null) {
File inputFile;
try {
inputFile = Utils.copyToTempFile(context, input, TEMP_ZIP_NAME);
database.beginTransaction();
try {
importer.importData(context, database, inputFile, password);
database.setTransactionSuccessful();
return new ImportExportResult(ImportExportResultType.Success);
} catch (ZipException e) {
if (e.getType().equals(ZipException.Type.WRONG_PASSWORD)) {
return new ImportExportResult(ImportExportResultType.BadPassword);
} else {
Log.e(TAG, "Failed to import data", e);
error = e.toString();
}
} catch (Exception e) {
Log.e(TAG, "Failed to import data", e);
error = e.toString();
} finally {
database.endTransaction();
if (!inputFile.delete()) {
Log.w(TAG, "Failed to delete temporary ZIP file (should not be a problem) " + inputFile);
}
}
} catch (IOException e) {
Log.e(TAG, "Failed to copy ZIP file", e);
error = e.toString();
}
} else {
error = "Unsupported data format imported: " + format.name();
Log.e(TAG, error);
}
return new ImportExportResult(ImportExportResultType.GenericFailure, error);
}
}
@@ -0,0 +1,406 @@
package protect.card_locker.importexport;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.util.Log;
import androidx.annotation.NonNull;
import com.google.zxing.BarcodeFormat;
import net.lingala.zip4j.io.inputstream.ZipInputStream;
import net.lingala.zip4j.model.LocalFileHeader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import org.json.JSONArray;
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;
import java.text.ParseException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import protect.card_locker.CatimaBarcode;
import protect.card_locker.DBHelper;
import protect.card_locker.FormatException;
import protect.card_locker.ImageLocationType;
import protect.card_locker.LoyaltyCard;
import protect.card_locker.R;
import protect.card_locker.Utils;
import protect.card_locker.ZipUtils;
/**
* Class for importing a database from CSV (Comma Separate Values)
* formatted data.
* <p>
* The database's loyalty cards are expected to appear in the CSV data.
* A header is expected for the each table showing the names of the columns.
*/
public class StocardImporter implements Importer {
public static class StocardProvider {
public String name = null;
public String barcodeFormat = null;
public Bitmap logo = null;
}
public static class StocardRecord {
public String providerId = null;
public String store = null;
public String label = null;
public String note = null;
public String cardId = null;
public String barcodeType = null;
public Long lastUsed = null;
public Bitmap frontImage = null;
public Bitmap backImage = null;
@NonNull
@Override
public String toString() {
return String.format(
"StocardRecord{%n providerId=%s,%n store=%s,%n label=%s,%n note=%s,%n cardId=%s,%n"
+ " barcodeType=%s,%n lastUsed=%s,%n frontImage=%s,%n backImage=%s%n}",
this.providerId,
this.store,
this.label,
this.note,
this.cardId,
this.barcodeType,
this.lastUsed,
this.frontImage,
this.backImage
);
}
}
public static class ZIPData {
public final Map<String, StocardRecord> cards;
public final Map<String, StocardProvider> providers;
ZIPData(final Map<String, StocardRecord> cards, final Map<String, StocardProvider> providers) {
this.cards = cards;
this.providers = providers;
}
}
public static class ImportedData {
public final List<LoyaltyCard> cards;
public final Map<Integer, Map<ImageLocationType, Bitmap>> images;
ImportedData(final List<LoyaltyCard> cards, final Map<Integer, Map<ImageLocationType, Bitmap>> images) {
this.cards = cards;
this.images = images;
}
}
public static final String PROVIDER_PREFIX = "/loyalty-card-providers/";
private static final String TAG = "Catima";
public void importData(Context context, SQLiteDatabase database, File inputFile, char[] password) throws IOException, FormatException, JSONException, ParseException {
ZIPData zipData = new ZIPData(new HashMap<>(), new HashMap<>());
final CSVParser parser = new CSVParser(new InputStreamReader(context.getResources().openRawResource(R.raw.stocard_stores), StandardCharsets.UTF_8), CSVFormat.RFC4180.builder().setHeader().build());
try {
for (CSVRecord record : parser) {
StocardProvider provider = new StocardProvider();
provider.name = record.get("name").trim();
provider.barcodeFormat = record.get("barcodeFormat").trim();
zipData.providers.put(record.get("_id").trim(), provider);
}
parser.close();
} catch (IllegalArgumentException | IllegalStateException e) {
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();
if (zipData.cards.keySet().size() == 0) {
throw new FormatException("Couldn't find any loyalty cards in this Stocard export.");
}
ImportedData importedData = importLoyaltyCardHashMap(context, zipData);
saveAndDeduplicate(context, database, importedData);
}
public ZIPData importZIP(ZipInputStream zipInputStream, final ZIPData zipData) throws IOException, FormatException, JSONException {
Map<String, StocardRecord> cards = zipData.cards;
Map<String, StocardProvider> providers = zipData.providers;
String[] customProvidersBaseName = null;
String[] cardBaseName = null;
String customProviderId = "";
String cardName = "";
LocalFileHeader localFileHeader;
while ((localFileHeader = zipInputStream.getNextEntry()) != null) {
String fileName = localFileHeader.getFileName();
String[] nameParts = fileName.split("/");
if (nameParts.length < 2) {
continue;
}
String userId = nameParts[1];
if (customProvidersBaseName == null) {
// FIXME: can we use the points-account/statement/content.json balance info somehow?
/*
Known files:
extracts/<user-UUID>/users/<user-UUID>/
analytics-properties/content.json
devices/<device-UUID>/
analytics-properties/content.json
content.json
ip-location-wifi/content.json
enabled-regions/<UUID>/content.json
loyalty-card-custom-providers/<provider-UUID>/content.json - custom providers
loyalty-cards/<card-UUID>/
card-linked-coupons/accounts/default/
content.json
user-coupons/<UUID>/content.json
content.json - card itself
images/back.png - back image (legacy)
images/back/back.jpg - back image
images/back/content.json
images/front.png - front image (legacy)
images/front/content.json
images/front/front.jpg - front image
notes/default/content.json - note
points-account/
content.json
statement/content.json
usages/<UUID>/content.json - timestamps
usage-statistics/content.json - timestamps
reward-program-balances/<UUID>/content.json
*/
customProvidersBaseName = new String[]{
"extracts",
userId,
"users",
userId,
"loyalty-card-custom-providers"
};
cardBaseName = new String[]{
"extracts",
userId,
"users",
userId,
"loyalty-cards"
};
}
if (startsWith(nameParts, customProvidersBaseName, 1)) {
// Extract providerId
customProviderId = nameParts[customProvidersBaseName.length];
StocardProvider provider = providers.get(customProviderId);
if (provider == null) {
provider = new StocardProvider();
providers.put(customProviderId, provider);
}
// Name file
if (fileName.endsWith(customProviderId + "/content.json")) {
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
provider.name = jsonObject.getString("name");
} else if (fileName.endsWith("logo.png")) {
provider.logo = ZipUtils.readImage(zipInputStream);
} else if (!fileName.endsWith("/")) {
Log.d(TAG, "Unknown or unused loyalty-card-custom-providers file " + fileName + ", skipping...");
}
} else if (startsWith(nameParts, cardBaseName, 1)) {
// Extract cardName
cardName = nameParts[cardBaseName.length];
StocardRecord record = cards.get(cardName);
if (record == null) {
record = new StocardRecord();
cards.put(cardName, record);
}
// This is the card itself
if (fileName.endsWith(cardName + "/content.json")) {
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
record.cardId = jsonObject.getString("input_id");
if (jsonObject.has("input_provider_name")) {
record.store = jsonObject.getString("input_provider_name");
}
if (jsonObject.has("label")) {
String label = jsonObject.getString("label");
if (!label.isBlank()) {
record.label = label;
}
}
// Provider ID can be either custom or not, extract whatever version is relevant
String customProviderPrefix = "/users/" + userId + "/loyalty-card-custom-providers/";
String providerId = jsonObject
.getJSONObject("input_provider_reference")
.getString("identifier");
if (providerId.startsWith(customProviderPrefix)) {
providerId = providerId.substring(customProviderPrefix.length());
} else if (providerId.startsWith(PROVIDER_PREFIX)) {
providerId = providerId.substring(PROVIDER_PREFIX.length());
} else {
throw new FormatException("Unsupported provider ID format: " + providerId);
}
record.providerId = providerId;
if (jsonObject.has("input_barcode_format")) {
record.barcodeType = jsonObject.getString("input_barcode_format");
}
} else if (fileName.endsWith("notes/default/content.json")) {
record.note = ZipUtils.readJSON(zipInputStream).getString("content");
} else if (fileName.endsWith("usage-statistics/content.json")) {
JSONArray usages = ZipUtils.readJSON(zipInputStream).getJSONArray("usages");
for (int i = 0; i < usages.length(); i++) {
JSONObject lastUsedObject = usages.getJSONObject(i);
String lastUsedString = lastUsedObject.getJSONObject("time").getString("value");
long timeStamp = Instant.parse(lastUsedString).getEpochSecond();
if (record.lastUsed == null || timeStamp > record.lastUsed) {
record.lastUsed = timeStamp;
}
}
} else if (fileName.matches(".*/usages/[^/]+/content.json")) {
JSONObject lastUsedObject = ZipUtils.readJSON(zipInputStream);
String lastUsedString = lastUsedObject.getJSONObject("time").getString("value");
long timeStamp = Instant.parse(lastUsedString).getEpochSecond();
if (record.lastUsed == null || timeStamp > record.lastUsed) {
record.lastUsed = timeStamp;
}
} else if (fileName.endsWith("/images/front.png") || fileName.endsWith("/images/front/front.jpg")) {
record.frontImage = ZipUtils.readImage(zipInputStream);
} else if (fileName.endsWith("/images/back.png") || fileName.endsWith("/images/back/back.jpg")) {
record.backImage = ZipUtils.readImage(zipInputStream);
} else if (!fileName.endsWith("/")) {
Log.d(TAG, "Unknown or unused loyalty-cards file " + fileName + ", skipping...");
}
} else if (!fileName.endsWith("/")) {
Log.d(TAG, "Unknown or unused file " + fileName + ", skipping...");
}
}
return new ZIPData(cards, providers);
}
public ImportedData importLoyaltyCardHashMap(Context context, final ZIPData zipData) throws FormatException {
ImportedData importedData = new ImportedData(new ArrayList<>(), new HashMap<>());
int tempID = 0;
List<String> cardKeys = new ArrayList<>(zipData.cards.keySet());
Collections.sort(cardKeys);
for (String key : cardKeys) {
StocardRecord record = zipData.cards.get(key);
if (record.providerId == null) {
Log.d(TAG, "Missing providerId for card " + record + ", ignoring...");
continue;
}
if (record.cardId == null) {
throw new FormatException("No card ID listed, but is required");
}
StocardProvider provider = zipData.providers.get(record.providerId);
// Read store from card, if not available (old export), fall back to providerData
String store = record.store != null ? record.store : provider != null ? provider.name : record.providerId;
String note = record.note != null ? record.note : "";
String barcodeTypeString = record.barcodeType != null ? record.barcodeType : provider != null ? provider.barcodeFormat : null;
if (record.label != null && !record.label.equals(store) && !record.label.equals(note)) {
note = note.isEmpty() ? record.label : note + "\n" + record.label;
}
CatimaBarcode barcodeType = null;
if (barcodeTypeString != null && !barcodeTypeString.isEmpty()) {
if (barcodeTypeString.equals("RSS_DATABAR_EXPANDED")) {
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.RSS_EXPANDED);
} else if (barcodeTypeString.equals("GS1_128")) {
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.CODE_128);
} else {
barcodeType = CatimaBarcode.fromName(barcodeTypeString);
}
}
int headerColor = Utils.getRandomHeaderColor(context);
if (provider != null && provider.logo != null) {
headerColor = Utils.getHeaderColorFromImage(provider.logo, headerColor);
}
long lastUsed = record.lastUsed != null ? record.lastUsed : Utils.getUnixTime();
LoyaltyCard card = new LoyaltyCard(tempID, store, note, null, null, BigDecimal.valueOf(0), null, record.cardId, null, barcodeType, headerColor, 0, lastUsed, DBHelper.DEFAULT_ZOOM_LEVEL, 0);
importedData.cards.add(card);
Map<ImageLocationType, Bitmap> images = new HashMap<>();
if (provider != null && provider.logo != null) {
images.put(ImageLocationType.icon, provider.logo);
}
if (record.frontImage != null) {
images.put(ImageLocationType.front, record.frontImage);
}
if (record.backImage != null) {
images.put(ImageLocationType.back, record.backImage);
}
importedData.images.put(tempID, images);
tempID++;
}
return importedData;
}
public void saveAndDeduplicate(Context context, SQLiteDatabase database, final ImportedData data) throws IOException {
// This format does not have IDs that can cause conflicts
// Proper deduplication for all formats will be implemented later
for (LoyaltyCard card : data.cards) {
// card.id is temporary and only used to index the images Map
long id = DBHelper.insertLoyaltyCard(database, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
for (Map.Entry<ImageLocationType, Bitmap> entry : data.images.get(card.id).entrySet()) {
Utils.saveCardImage(context, entry.getValue(), (int) id, entry.getKey());
}
}
}
private boolean startsWith(String[] full, String[] start, int minExtraLength) {
if (full.length - minExtraLength < start.length) {
return false;
}
for (int i = 0; i < start.length; i++) {
if (!start[i].contentEquals(full[i])) {
return false;
}
}
return true;
}
}
@@ -0,0 +1,169 @@
package protect.card_locker.importexport;
import android.annotation.SuppressLint;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import com.google.zxing.BarcodeFormat;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
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;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Currency;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import protect.card_locker.CatimaBarcode;
import protect.card_locker.DBHelper;
import protect.card_locker.FormatException;
import protect.card_locker.LoyaltyCard;
import protect.card_locker.Utils;
/**
* Class for importing a database from CSV (Comma Separate Values)
* formatted data.
* <p>
* The database's loyalty cards are expected to appear in the CSV data.
* A header is expected for the each table showing the names of the columns.
*/
public class VoucherVaultImporter implements Importer {
public static class ImportedData {
public final List<LoyaltyCard> cards;
ImportedData(final List<LoyaltyCard> cards) {
this.cards = cards;
}
}
public void importData(Context context, SQLiteDatabase database, File inputFile, char[] password) throws IOException, FormatException, JSONException, ParseException {
InputStream input = new FileInputStream(inputFile);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
JSONArray jsonArray = new JSONArray(sb.toString());
bufferedReader.close();
input.close();
ImportedData importedData = importJSON(jsonArray);
saveAndDeduplicate(database, importedData);
}
public ImportedData importJSON(JSONArray jsonArray) throws FormatException, JSONException, ParseException {
ImportedData importedData = new ImportedData(new ArrayList<>());
// See https://github.com/tim-smart/vouchervault/issues/4#issuecomment-788226503 for more info
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonCard = jsonArray.getJSONObject(i);
String store = jsonCard.getString("description");
Date expiry = null;
if (!jsonCard.isNull("expires")) {
@SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
expiry = dateFormat.parse(jsonCard.getString("expires"));
}
BigDecimal balance = new BigDecimal("0");
if (jsonCard.has("balanceMilliunits")) {
if (!jsonCard.isNull("balanceMilliunits")) {
balance = new BigDecimal(String.valueOf(jsonCard.getInt("balanceMilliunits") / 1000.0));
}
} else if (!jsonCard.isNull("balance")) {
balance = new BigDecimal(String.valueOf(jsonCard.getDouble("balance")));
}
Currency balanceType = Currency.getInstance("USD");
String cardId = jsonCard.getString("code");
CatimaBarcode barcodeType = null;
String codeTypeFromJSON = jsonCard.getString("codeType");
switch (codeTypeFromJSON) {
case "CODE128":
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.CODE_128);
break;
case "CODE39":
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.CODE_39);
break;
case "EAN13":
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.EAN_13);
break;
case "PDF417":
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.PDF_417);
break;
case "QR":
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE);
break;
case "TEXT":
break;
default:
throw new FormatException("Unknown barcode type found: " + codeTypeFromJSON);
}
int headerColor;
String colorFromJSON = jsonCard.getString("color");
switch (colorFromJSON) {
case "GREY":
headerColor = Color.GRAY;
break;
case "BLUE":
headerColor = Color.BLUE;
break;
case "GREEN":
headerColor = Color.GREEN;
break;
case "ORANGE":
headerColor = Color.rgb(255, 165, 0);
break;
case "PURPLE":
headerColor = Color.rgb(128, 0, 128);
break;
case "RED":
headerColor = Color.RED;
break;
case "YELLOW":
headerColor = Color.YELLOW;
break;
default:
throw new FormatException("Unknown colour type found: " + colorFromJSON);
}
// use -1 for the ID, it will be ignored when inserting the card into the DB
importedData.cards.add(new LoyaltyCard(-1, store, "", null, expiry, balance, balanceType, cardId, null, barcodeType, headerColor, 0, Utils.getUnixTime(), DBHelper.DEFAULT_ZOOM_LEVEL, 0));
}
return importedData;
}
public void saveAndDeduplicate(SQLiteDatabase database, final ImportedData data) {
// This format does not have IDs that can cause conflicts
// Proper deduplication for all formats will be implemented later
for (LoyaltyCard card : data.cards) {
// Do not use card.id which is set to -1
DBHelper.insertLoyaltyCard(database, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
}
}
}
@@ -2,97 +2,92 @@ package protect.card_locker.preferences;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import java.util.Locale;
import androidx.annotation.IntegerRes;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.preference.PreferenceManager;
import protect.card_locker.R;
import protect.card_locker.Utils;
public class Settings
{
private Context context;
private SharedPreferences settings;
public class Settings {
private final Context mContext;
private SharedPreferences mSettings;
public Settings(Context context)
{
this.context = context;
this.settings = PreferenceManager.getDefaultSharedPreferences(context);
public Settings(Context context) {
mContext = context.getApplicationContext();
mSettings = PreferenceManager.getDefaultSharedPreferences(context);
}
private String getResString(@StringRes int resId)
{
return context.getString(resId);
private String getResString(@StringRes int resId) {
return mContext.getString(resId);
}
private int getResInt(@IntegerRes int resId)
{
return context.getResources().getInteger(resId);
private int getResInt(@IntegerRes int resId) {
return mContext.getResources().getInteger(resId);
}
private String getString(@StringRes int keyId, String defaultValue)
{
return settings.getString(getResString(keyId), defaultValue);
private String getString(@StringRes int keyId, String defaultValue) {
return mSettings.getString(getResString(keyId), defaultValue);
}
private int getInt(@StringRes int keyId, @IntegerRes int defaultId)
{
return settings.getInt(getResString(keyId), getResInt(defaultId));
private int getInt(@StringRes int keyId, @IntegerRes int defaultId) {
return mSettings.getInt(getResString(keyId), getResInt(defaultId));
}
private boolean getBoolean(@StringRes int keyId, boolean defaultValue)
{
return settings.getBoolean(getResString(keyId), defaultValue);
private boolean getBoolean(@StringRes int keyId, boolean defaultValue) {
return mSettings.getBoolean(getResString(keyId), defaultValue);
}
public int getTheme()
{
public Locale getLocale() {
String value = getString(R.string.settings_key_locale, "");
if (value.length() == 0) {
return null;
}
return Utils.stringToLocale(value);
}
public int getTheme() {
String value = getString(R.string.settings_key_theme, getResString(R.string.settings_key_system_theme));
if(value.equals(getResString(R.string.settings_key_light_theme)))
{
if (value.equals(getResString(R.string.settings_key_light_theme))) {
return AppCompatDelegate.MODE_NIGHT_NO;
}
else if(value.equals(getResString(R.string.settings_key_dark_theme)))
{
} else if (value.equals(getResString(R.string.settings_key_dark_theme))) {
return AppCompatDelegate.MODE_NIGHT_YES;
}
return AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
}
public int getCardTitleListFontSize()
{
return getInt(R.string.settings_key_card_title_list_font_size, R.integer.settings_card_title_list_font_size_sp);
}
public int getCardNoteListFontSize()
{
return getInt(R.string.settings_key_card_note_list_font_size, R.integer.settings_card_note_list_font_size_sp);
}
public int getCardTitleFontSize()
{
return getInt(R.string.settings_key_card_title_font_size, R.integer.settings_card_title_font_size_sp);
}
public int getCardIdFontSize()
{
return getInt(R.string.settings_key_card_id_font_size, R.integer.settings_card_id_font_size_sp);
}
public int getCardNoteFontSize()
{
return getInt(R.string.settings_key_card_note_font_size, R.integer.settings_card_note_font_size_sp);
}
public boolean useMaxBrightnessDisplayingBarcode()
{
public boolean useMaxBrightnessDisplayingBarcode() {
return getBoolean(R.string.settings_key_display_barcode_max_brightness, true);
}
public boolean getLockBarcodeScreenOrientation()
{
return getBoolean(R.string.settings_key_lock_barcode_orientation, false);
public String getCardViewOrientation() {
return getString(R.string.settings_key_card_orientation, getResString(R.string.settings_key_follow_system_orientation));
}
public boolean getKeepScreenOn() {
return getBoolean(R.string.settings_key_keep_screen_on, true);
}
public boolean getDisableLockscreenWhileViewingCard() {
return getBoolean(R.string.settings_key_disable_lockscreen_while_viewing_card, true);
}
public boolean getAllowContentProviderRead() {
return getBoolean(R.string.settings_key_allow_content_provider_read, true);
}
public boolean getOledDark() {
return getBoolean(R.string.settings_key_oled_dark, false);
}
public String getColor() {
return getString(R.string.setting_key_theme_color, mContext.getResources().getString(R.string.settings_key_system_theme));
}
}
@@ -1,81 +1,203 @@
package protect.card_locker.preferences;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.core.os.LocaleListCompat;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import com.google.android.material.color.DynamicColors;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.stream.Collectors;
import protect.card_locker.CatimaAppCompatActivity;
import protect.card_locker.MainActivity;
import protect.card_locker.R;
import protect.card_locker.Utils;
import protect.card_locker.databinding.SettingsActivityBinding;
public class SettingsActivity extends CatimaAppCompatActivity {
private SettingsActivityBinding binding;
private final static String RELOAD_MAIN_STATE = "mReloadMain";
private SettingsFragment fragment;
public class SettingsActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
if(actionBar != null)
{
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
binding = SettingsActivityBinding.inflate(getLayoutInflater());
setTitle(R.string.settings);
setContentView(binding.getRoot());
Toolbar toolbar = binding.toolbar;
setSupportActionBar(toolbar);
enableToolbarBackButton();
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
fragment = new SettingsFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.settings_container, fragment)
.commit();
// restore reload main state
if (savedInstanceState != null) {
fragment.mReloadMain = savedInstanceState.getBoolean(RELOAD_MAIN_STATE);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(RELOAD_MAIN_STATE, fragment.mReloadMain);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == android.R.id.home)
{
finish();
if (id == android.R.id.home) {
finishSettingsActivity();
return true;
}
return super.onOptionsItemSelected(item);
}
public static class SettingsFragment extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
@Override
public void onBackPressed() {
finishSettingsActivity();
}
private void finishSettingsActivity() {
if (fragment.mReloadMain) {
Intent intent = new Intent();
intent.putExtra(MainActivity.RESTART_ACTIVITY_INTENT, true);
setResult(Activity.RESULT_OK, intent);
} else {
setResult(Activity.RESULT_OK);
}
finish();
}
public static class SettingsFragment extends PreferenceFragmentCompat {
private static final String DIALOG_FRAGMENT_TAG = "SettingsFragment";
public boolean mReloadMain;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
findPreference(getResources().getString(R.string.settings_key_theme)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener()
{
@Override
public boolean onPreferenceChange(Preference preference, Object o)
{
if(o.toString().equals(getResources().getString(R.string.settings_key_light_theme)))
{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}
else if(o.toString().equals(getResources().getString(R.string.settings_key_dark_theme)))
{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
else
{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
}
// Show pretty names and summaries
ListPreference themePreference = findPreference(getResources().getString(R.string.settings_key_theme));
assert themePreference != null;
themePreference.setOnPreferenceChangeListener((preference, o) -> {
if (o.toString().equals(getResources().getString(R.string.settings_key_light_theme))) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
} else if (o.toString().equals(getResources().getString(R.string.settings_key_dark_theme))) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
}
getActivity().recreate();
return true;
});
ListPreference themeColorPreference = findPreference(getResources().getString(R.string.setting_key_theme_color));
assert themeColorPreference != null;
themeColorPreference.setOnPreferenceChangeListener((preference, o) -> {
refreshActivity(true);
return true;
});
if (!DynamicColors.isDynamicColorAvailable()) {
themeColorPreference.setEntryValues(R.array.color_values_no_dynamic);
themeColorPreference.setEntries(R.array.color_value_strings_no_dynamic);
}
Preference oledDarkPreference = findPreference(getResources().getString(R.string.settings_key_oled_dark));
assert oledDarkPreference != null;
oledDarkPreference.setOnPreferenceChangeListener((preference, newValue) -> {
refreshActivity(true);
return true;
});
ListPreference localePreference = findPreference(getResources().getString(R.string.settings_key_locale));
assert localePreference != null;
CharSequence[] entryValues = localePreference.getEntryValues();
List<CharSequence> entries = new ArrayList<>();
for (CharSequence entry : entryValues) {
if (entry.length() == 0) {
entries.add(getResources().getString(R.string.settings_system_locale));
} else {
Locale entryLocale = Utils.stringToLocale(entry.toString());
entries.add(entryLocale.getDisplayName(entryLocale));
}
}
localePreference.setEntries(entries.toArray(new CharSequence[entryValues.length]));
// Make locale picker preference in sync with system settings
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
Locale sysLocale = AppCompatDelegate.getApplicationLocales().get(0);
if (sysLocale == null) {
// Corresponds to "System"
localePreference.setValue("");
} else {
// Need to set preference's value to one of localePreference.getEntryValues() to match the locale.
// Locale.toLanguageTag() theoretically should be one of the values in localePreference.getEntryValues()...
// But it doesn't work for some locales. so trying something more heavyweight.
// Obtain all locales supported by the app.
List<Locale> appLocales = Arrays.stream(localePreference.getEntryValues())
.map(Objects::toString)
.map(Utils::stringToLocale)
.collect(Collectors.toList());
// Get the app locale that best matches the system one
Locale bestMatchLocale = Utils.getBestMatchLocale(appLocales, sysLocale);
// Get its index in supported locales
int index = appLocales.indexOf(bestMatchLocale);
// Set preference value to entry value at that index
localePreference.setValue(localePreference.getEntryValues()[index].toString());
}
}
localePreference.setOnPreferenceChangeListener((preference, newValue) -> {
// See corresponding comment in Utils.updateBaseContextLocale for Android 6- notes
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
refreshActivity(true);
return true;
}
String newLocale = (String) newValue;
// If newLocale is empty, that means "System" was selected
AppCompatDelegate.setApplicationLocales(newLocale.isEmpty() ? LocaleListCompat.getEmptyLocaleList() : LocaleListCompat.create(Utils.stringToLocale(newLocale)));
return true;
});
// Disable content provider on SDK < 23 since dangerous permissions
// are granted at install-time
Preference contentProviderReadPreference = findPreference(getResources().getString(R.string.settings_key_allow_content_provider_read));
assert contentProviderReadPreference != null;
contentProviderReadPreference.setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M);
}
private void refreshActivity(boolean reloadMain) {
mReloadMain = reloadMain || mReloadMain;
Activity activity = getActivity();
if (activity != null) {
activity.recreate();
}
}
}
}
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- https://stackoverflow.com/questions/5151591/android-left-to-right-slide-animation/5151774#5151774 -->
<translate
android:duration="200"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- https://stackoverflow.com/questions/5151591/android-left-to-right-slide-animation/5151774#5151774 -->
<translate
android:duration="200"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
Loaded 100 of 2136 files, more files were not shown because too many files have changed in this diff. Show more