From 5a88909cd2a3d749967657299fb2d71fc9d6eca9 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Wed, 6 Oct 2021 19:58:29 +0200 Subject: [PATCH 01/63] Make spotbugs happy --- .../java/protect/card_locker/ImportExportActivity.java | 7 ++++++- .../protect/card_locker/importexport/StocardImporter.java | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java index 22969b746..afc8b45b2 100644 --- a/app/src/main/java/protect/card_locker/ImportExportActivity.java +++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java @@ -20,6 +20,7 @@ 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; @@ -405,6 +406,8 @@ public class ImportExportActivity extends CatimaAppCompatActivity Log.e(TAG, "Starting file export with: " + uri.toString()); startExport(writer, uri); + + writer.close(); } else { @@ -421,9 +424,11 @@ public class ImportExportActivity extends CatimaAppCompatActivity Log.e(TAG, "Starting file import with: " + uri.toString()); startImport(reader, uri, importDataFormat, password); + + reader.close(); } } - catch(FileNotFoundException e) + catch(IOException e) { Log.e(TAG, "Failed to import/export file: " + uri.toString(), e); if (requestCode == CHOOSE_EXPORT_LOCATION) diff --git a/app/src/main/java/protect/card_locker/importexport/StocardImporter.java b/app/src/main/java/protect/card_locker/importexport/StocardImporter.java index b3be826d2..63b4bd844 100644 --- a/app/src/main/java/protect/card_locker/importexport/StocardImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/StocardImporter.java @@ -116,14 +116,14 @@ public class StocardImporter implements Importer .substring("/loyalty-card-providers/".length()) ); - try { + if (jsonObject.has("input_barcode_format")) { loyaltyCardHashMap = appendToLoyaltyCardHashMap( loyaltyCardHashMap, cardName, "barcodeType", jsonObject.getString("input_barcode_format") ); - } catch (JSONException ignored) {} + } } } else if (fileName.endsWith("notes/default.json")) { loyaltyCardHashMap = appendToLoyaltyCardHashMap( From 4e203aebfeac0d262d8066a3907210f788e0a9f3 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Wed, 6 Oct 2021 21:59:45 +0200 Subject: [PATCH 02/63] Improve search with spaces --- CHANGELOG.md | 4 +++ .../java/protect/card_locker/DBHelper.java | 27 ++++++------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aee407a7b..ca2a04ed6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased - 86 + +- 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. diff --git a/app/src/main/java/protect/card_locker/DBHelper.java b/app/src/main/java/protect/card_locker/DBHelper.java index 1469bb84e..d7fc4569d 100644 --- a/app/src/main/java/protect/card_locker/DBHelper.java +++ b/app/src/main/java/protect/card_locker/DBHelper.java @@ -7,6 +7,7 @@ import android.database.DatabaseUtils; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; +import android.text.TextUtils; import java.io.FileNotFoundException; import java.math.BigDecimal; @@ -663,38 +664,26 @@ public class DBHelper extends SQLiteOpenHelper return db.rawQuery("SELECT " + LoyaltyCardDbIds.TABLE + ".* FROM " + LoyaltyCardDbIds.TABLE + " JOIN " + LoyaltyCardDbFTS.TABLE + " ON " + LoyaltyCardDbFTS.TABLE + "." + LoyaltyCardDbFTS.ID + " = " + LoyaltyCardDbIds.TABLE + "." + LoyaltyCardDbIds.ID + - (filter.isEmpty() ? " " : " AND " + LoyaltyCardDbFTS.TABLE + " MATCH ? ") + + (filter.trim().isEmpty() ? " " : " AND " + LoyaltyCardDbFTS.TABLE + " MATCH ? ") + groupFilter.toString() + " ORDER BY " + LoyaltyCardDbIds.TABLE + "." + LoyaltyCardDbIds.STAR_STATUS + " DESC, " + " (CASE WHEN " + LoyaltyCardDbIds.TABLE + "." + orderField + " IS NULL THEN 1 ELSE 0 END), " + LoyaltyCardDbIds.TABLE + "." + orderField + " COLLATE NOCASE " + getDbDirection(order, direction) + ", " + LoyaltyCardDbIds.TABLE + "." + LoyaltyCardDbIds.STORE + " COLLATE NOCASE ASC " + - limitString, filter.isEmpty() ? null : new String[] { filter + '*' }, null); + limitString, filter.trim().isEmpty() ? null : new String[] { TextUtils.join("* ", filter.split(" ")) + '*' }, null); } + /** + * Returns the amount of loyalty cards. + * + * @return Integer + */ public int getLoyaltyCardCount() { SQLiteDatabase db = getReadableDatabase(); return (int) DatabaseUtils.queryNumEntries(db, LoyaltyCardDbIds.TABLE); } - /** - * Returns the amount of loyalty cards with the filter text in either the store or note. - * - * @param filter - * @return Integer - */ - public int getLoyaltyCardCount(String filter) - { - if (filter.isEmpty()) { - return getLoyaltyCardCount(); - } - - SQLiteDatabase db = getReadableDatabase(); - return (int) DatabaseUtils.queryNumEntries(db, LoyaltyCardDbFTS.TABLE, - LoyaltyCardDbFTS.TABLE + " MATCH ? ", withArgs(filter + '*')); - } - /** * Returns a cursor to all groups. * From 5d019a8e5bb3a98bdd724dc3da2afd6fed4ae118 Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Wed, 6 Oct 2021 20:00:07 +0000 Subject: [PATCH 03/63] Update Fastlane changelogs --- fastlane/metadata/android/en-US/changelogs/86.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/86.txt diff --git a/fastlane/metadata/android/en-US/changelogs/86.txt b/fastlane/metadata/android/en-US/changelogs/86.txt new file mode 100644 index 000000000..edf5cb624 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/86.txt @@ -0,0 +1 @@ +- Improve search with spaces \ No newline at end of file From fd7e6e4993fe4ce09ba9392ce9d16ba451eb5fb0 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 7 Oct 2021 20:04:19 +0200 Subject: [PATCH 04/63] Release Catima 2.7.1 --- CHANGELOG.md | 2 +- app/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca2a04ed6..9f84e5709 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased - 86 +## v2.7.1 - 86 (2021-10-07) - Improve search with spaces diff --git a/app/build.gradle b/app/build.gradle index 33a162a1e..d1fb229e3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ android { applicationId "me.hackerchick.catima" minSdkVersion 21 targetSdkVersion 31 - versionCode 85 - versionName "2.7.0" + versionCode 86 + versionName "2.7.1" vectorDrawables.useSupportLibrary true multiDexEnabled true From 4d1f4a64fa76a5b408877e7b547d0af87f498f8a Mon Sep 17 00:00:00 2001 From: Gediminas Murauskas Date: Thu, 7 Oct 2021 16:27:52 +0000 Subject: [PATCH 05/63] 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/ --- app/src/main/res/values-lt/strings.xml | 28 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 4621cdcc5..9a7e96fdd 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -25,7 +25,7 @@ Eksportuoja… Pirmiausia suteikite išorinės saugyklos leidimą, kad galėtumėte importuoti arba eksportuoti korteles Apie - Copylefted libre programinė įranga, licencijuota GPLv3+. + Copylefted libre programinė įranga, licencijuota GPLv3+ Apie %s Versija: %s Revizijos info: %s @@ -45,10 +45,10 @@ Ieškoti Kortelės sparčioji nuoroda Pasirinkite savo vouchervault.json eksportą iš Voucher Vault, kurį norite importuoti. -\nArba sukurkite jį pirmiausia paspausdami Eksportuoti Voucher Vault. +\nSukurkite jį pirmiausia paspausdami Eksportuoti Voucher Vault. Importuoti iš Voucher Vault Pasirinkite savo LoyaltyCardKeychain.csv eksportą iš Loyalty Card Keychain, kurį norite importuoti. -\nArba sukurkite jį iš Loyalty Card Keychain meniu Importas/Eksportas, pirmiausia paspausdami Eksportuoti. +\nSukurkite jį iš Loyalty Card Keychain meniu Importavimas/Eksportavimas, pirmiausia paspausdami Eksportuoti. Importuoti iš Loyalty Card Keychain Loyalty Card Keychain Panašu, kad %s reikšmė nėra tinkama. @@ -79,13 +79,13 @@ Tokia pat kaip kortelės ID Brūkšninio kodo reikšmė Pasirinkite ***-sync.zip eksportą iš Stocard, kad galėtumėte importuoti. -\nArba gaukite susisiekę el. paštu support@stocardapp.com, prašydami eksportuoti jūsų duomenis. +\nGaukite susisiekę el. paštu support@stocardapp.com, prašydami eksportuoti jūsų duomenis. Importuoti iš Stocard Pasirinkite fidme-export-request-xxxxxx.zip eksportą iš FidMe, kurį norite importuoti, ir po to brūkšninių kodų tipus pasirinkite rankiniu būdu. -\nArba sukurkite jį iš savo FidMe profilio, pasirinkę Duomenų apsauga ir pirmiausia paspaudę Išgauti mano duomenis. +\nSukurkite jį iš savo FidMe profilio, pasirinkę Duomenų apsauga ir pirmiausia paspaudę Išgauti mano duomenis. Importuoti iš FidMe - Norėdami importuoti, pasirinkite savo catima.zip eksportą iš Catima. -\nArba sukurkite ją iš kitos Catima programos importavimo / eksportavimo meniu, pirmiausia paspausdami Eksportuoti ten. + Norėdami importuoti, pasirinkite savo catima.zip eksportavimą iš Catima. +\nSukurkite ją iš kitos Catima programos importavimo / eksportavimo meniu, pirmiausia ten paspausdami Eksportuoti. Importuoti iš Catima Priimti Privatumo politikos pranešimas (kurio reikalaujama kai kuriose programėlių parduotuvėse): @@ -145,8 +145,8 @@ Libre trečiųjų šalių ištekliai: %s Libre trečiųjų šalių bibliotekos: %s Paremta Loyalty Card Keychain -\nautorinės teisės © 2016–2020 Branden Archer. - Autorinės teisės © 2019–%d Sylvia van Os. +\nautorinės teisės © 2016–2020 Branden Archer + Autorinės teisės © 2019–%d Sylvia van Os Naudoti kitą programą Norėdami atidaryti failą, naudokite bet kurią programą arba mėgstamą failų tvarkyklę. Naudoti kitą programą @@ -202,4 +202,14 @@ Vėliausiai naudota Pavadinimas Rikiuoti + Padėkos + Šaltinio repozitorija + ir duomenų naudojimas + Įvertinkite šią programėlę + Versijų istorija + Licencija + GitHub + Google Play + Padėkite išversti šią programėlę + Pranešti apie klaidą \ No newline at end of file From b44ef7dfc01dea749a830b34bcd0454bc0b35194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Thu, 7 Oct 2021 05:04:18 +0000 Subject: [PATCH 06/63] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 99.5% (219 of 220 strings) Translation: Catima/Catima Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/ --- app/src/main/res/values-nb-rNO/strings.xml | 30 ++++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 03aa47a5a..12ec0a82f 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -44,7 +44,7 @@ Bruk en hvilken som helst app, eller din favoritt-filutforsker for å åpne en fil. Bruk en annen app Om - Copyleft fri programvare, lisensiert under GPLv3+. + Gemenhetslig fri programvare, lisensiert GPLv3+ Om %s Versjon: %s Utgivelsesinfo: %s @@ -64,7 +64,7 @@ System Drakt Basert på Kundekortknippe -\nopphavsrett 2016–2020 Branden Archer. +\nopphavsrett 2016–2020 Branden Archer Kunne ikke tolke importerings-URI Del Dette kortet har ingen strekkode @@ -124,14 +124,14 @@ Sett strekkodeverdi Samme som kort-ID Strekkodeverdi - Finn en fil som antagelig heter voucher.vault.json å importere. -\nEller opprett den ved å trykke «Eksport» i Voucher Vault først. + Velg din vouchervault.json-eksport fra Voucher Vault å importere. +\nOpprett den ved å trykke «Eksport» i Voucher Vault først. Importer fra Voucher Vault - Velg din LoyaltyCardKeychain.csv - eksporter fra kundekort Nøkkelring til import. -\nEller lage det fra Import/Eksport-menyen i lojalitetskort Nøkkelringen ved å trykke på Eksport det første. + Velg din LoyaltyCardKeychain.csv-eksport fra Kundekortknippe å importere. +\nOpprett den i «Import/Eksport»-menyen i Kundekortknippe ved å trykke «Eksporter» der først. Importer fra Kundekortknippe - Velg din fidme-eksport-be-xxxxxx.zip eksporter fra FidMe til å importere, og velg strekkode typer manuelt etterpå. -\nEller lage den fra FidMe profil ved å velge Beskyttelse av Data og deretter trykke Trekke ut dataene mine første. + Velg din fidme.export-request-xxxxx.zip-eksport fra FidMe å importere, for så å velge strekkodetypene manuelt etterpå- +\nOpprett den i din FidMe-profil ved å velge «Databeskyttelse», for så å trykke «Pakk ut dataen min» først. Maks. skriftstørrelse Verdien er ikke gyldig for valgt strekkodetype Jeg vil dele noen kort med deg @@ -139,7 +139,7 @@ Frie tredjepartsressurser: %s Frie tredjepartsbibliotek: %s Kopierte kort-ID(er) - Opphavsrett © 2019–%d Sylvia van Os. + Opphavsrett © 2019–%d Sylvia van Os Du har endret kortets ID. Ønsker du å også oppdatere strekkoden til samme verdi? Nei Ja @@ -152,7 +152,7 @@ Kortets bakside Kortets forside Velg din ***-sync.zip-eksport fra Stocard å importere. -\nEller få den ved å sende e-post til support@stocardapp.com der du etterspør eksport av dataen din. +\nSkaff den ved å sende e-post til support@stocardapp.com der du etterspør eksport av dataen din. Skriv inn passordet Importer fra Stocard Klarte ikke å lage delbar nettadresse. Rapporter denne feilen. @@ -162,8 +162,8 @@ Slett dette kortet for godt? - Slett dette kortet for godt? - Slett disse %s kortene for godt? + Slett dette kortet for godt\? + Slett disse %d kortene for godt\? Skru på lommelykten Skru av lommelykten @@ -199,11 +199,13 @@ Hjelp med å oversette denne appen Lisens Versjonshistorikk - Velg din catima.zip fra Catima å importere. Eller lag den fra Importer/Eksporter-menyen i en annen Catima-app ved å trykke på \"Eksporter\" der først + Velg din catima.zip-eksport fra Catima å importere. +\nOpprett den fra «Importer/Eksporter»-menyen i en annen Catima-app ved å trykke på «Eksporter» der først Kildekode på GitHub og bruk av data Vurder denne appen på Google Play Rapporter feil - + Bidragsytere + \ No newline at end of file From dc7e9b541a05eb3ee28deec3f1b4969de1a95759 Mon Sep 17 00:00:00 2001 From: Heimen Stoffels Date: Wed, 6 Oct 2021 08:15:08 +0000 Subject: [PATCH 07/63] 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/ --- app/src/main/res/values-nl/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 42d304610..258219503 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -116,15 +116,15 @@ Privacybeleid Accepteren Kies het te importeren vouchervault.json-exportbestand. -\nOf ga naar het exportmenu van Voucher Vault om een exportbestand samen te stellen. +\nGa naar het exportmenu van Voucher Vault om een exportbestand samen te stellen. Importeren uit Voucher Vault Kies het te importeren genaamd LoyaltyCardKeychain.csv-exportbestand. -\nOf ga naar het import-/exportmenu van Klantenkaartkluis om een exportbestand samen te stellen. +\nGa naar het import-/exportmenu van Klantenkaartkluis om een exportbestand samen te stellen. Importeren uit Klantenkaartkluis Kies het te importeren fidme-export-request-xxxxxx.zip-exportbestand en kies nadien de juiste barcodes. -\nOf ga naar je FidMe-profiel en druk op ‘Gegevensbescherming’ om een exportbestand samen te stellen. +\nGa naar je FidMe-profiel en druk op ‘Gegevensbescherming’ om een exportbestand samen te stellen. Kies het te importeren Catima.zip-exportbestand. -\nOf ga naar het import-/exportmenu van Catima op een ander apparaat om een exportbestand samen te stellen. +\nGa naar het import-/exportmenu van Catima op een ander apparaat om een exportbestand samen te stellen. Importeren uit FidMe Importeren uit Catima De afbeelding kan niet worden uitgelezen @@ -155,7 +155,7 @@ Voorzijde van de kaart Voer het wachtwoord in Kies het te importeren Stocard-exportbestand genaamd ***-sync.zip. -\nOf stuur een e-mail naar support@stocardapp.com waarin je vraagt om een exportbestand. +\nStuur een e-mail naar support@stocardapp.com waarin je vraagt om een exportbestand. Importeren uit Stocard De te delen link kan niet worden gegenereerd. Meld deze fout. Zaklamp uitzetten @@ -208,4 +208,4 @@ Help deze app te vertalen Met dank aan Versiegeschiedenis - + \ No newline at end of file From e2b0113687192543b18c462a006cedf47aab3f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Thu, 7 Oct 2021 04:04:39 +0000 Subject: [PATCH 08/63] 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/ --- fastlane/metadata/android/tr-TR/changelogs/86.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/tr-TR/changelogs/86.txt diff --git a/fastlane/metadata/android/tr-TR/changelogs/86.txt b/fastlane/metadata/android/tr-TR/changelogs/86.txt new file mode 100644 index 000000000..193895b7d --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/86.txt @@ -0,0 +1 @@ +- Boşluklu aramaları iyileştir From a555f1c41b89eed8cab604fc32fd3b8343fbd22f Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 8 Oct 2021 11:27:42 +0000 Subject: [PATCH 09/63] 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/ --- app/src/main/res/values-de/strings.xml | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index af7f0f7c9..e8844efdd 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -46,7 +46,7 @@ Beliebige Anwendung oder deinen bevorzugten Dateimanager zur Dateiauswahl verwenden. Aus anderer Anwendung Über - Freie Software, lizensiert unter der GPLv3+. + Freie Software, lizensiert unter der GPLv3+ Über %s Version: %s Revisionsinfo: %s @@ -66,7 +66,7 @@ Farbschema Gib die Kartennummer ein und wähle entweder den Barcode-Typ unten oder wähle \"Diese Karte hat keinen Barcode\" aus. Basierend auf Loyalty Card Keychain -\nCopyright © 2016-2020 Branden Archer. +\nCopyright © 2016-2020 Branden Archer Die Daten werden an einen Ort deiner Wahl geschrieben. Die Import-URI konnte nicht verarbeitet werden Teilen @@ -117,16 +117,16 @@ Annehmen Datenschutzrichtlinie Wählen Sie Ihren vouchervault.json-Export aus Voucher Vault zum Importieren aus. -\nOder erstellen Sie ihn, indem Sie zuerst auf Export in Voucher Vault drücken. +\nErstellen Sie ihn, indem Sie zuerst auf Export in Voucher Vault drücken. Aus Voucher Vault importieren Wählen Sie Ihren LoyaltyCardKeychain.csv-Export aus Loyalty Card Keychain zum Importieren aus. -\nOder erstellen Sie ihn über das Menü Import/Export in Loyalty Card Keychain, indem Sie dort zuerst auf Export drücken. +\nErstellen Sie ihn über das Menü Import/Export in Loyalty Card Keychain, indem Sie dort zuerst auf Export drücken. Aus Loyalty Card Keychain importieren Wählen Sie Ihren fidme-export-request-xxxxxx.zip-Export aus FidMe zum Importieren aus und wählen Sie anschließend die Strichcodetypen manuell aus. \nOder erstellen Sie ihn aus Ihrem FidMe-Profil, indem Sie Datenschutz wählen und dann zuerst auf Meine Daten extrahieren drücken. Aus FidMe importieren Wählen Sie Ihren catima.zip-Export aus Catima zum Importieren aus. -\nOder erstellen Sie ihn aus dem Import/Export-Menü einer anderen Catima-Anwendung, indem Sie dort zuerst Export drücken. +\nErstellen Sie ihn aus dem Import/Export-Menü einer anderen Catima-Anwendung, indem Sie dort zuerst Export drücken. Aus Catima importieren Manuell eingeben Entspricht Kartennummer @@ -139,7 +139,7 @@ Der Wert ist für den gewählten Barcodetyp leider nicht gültig Freie Ressourcen von Drittanbietern: %s Freie Bibliotheken von Drittanbietern: %s - Copyright © 2019–%d Sylvia van Os. + Copyright © 2019–%d Sylvia van Os Ich möchte diese Karten mit dir teilen Kartennummern in die Zwischenablage kopiert Kartennummer(n) kopiert @@ -156,7 +156,7 @@ Bild der Kartenrückseite Bitte gib das Passwort ein Wählen Sie Ihren ***-sync.zip-Export aus Stocard zum Importieren aus. -\nOder Sie erhalten ihn, indem Sie eine E-Mail an support@stocardapp.com senden und um einen Export Ihrer Daten bitten. +\nSie erhalten ihn, indem Sie eine E-Mail an support@stocardapp.com senden und um einen Export Ihrer Daten bitten. Von Stocard importieren Licht ausschalten Licht einschalten @@ -198,4 +198,14 @@ Name Sortieren Umgekehrt + Versionshistorie + Dank an + Hilfe bei der Übersetzung + und Datennutzung + Bewerte die App + auf Google Play + Lizenz + Quellcode + auf GitHub + Fehler melden \ No newline at end of file From b76c4ef352c2acbce0a79bd04eeda0dc582f9cfd Mon Sep 17 00:00:00 2001 From: 109247019824 Date: Fri, 8 Oct 2021 18:34:28 +0000 Subject: [PATCH 10/63] 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/ --- fastlane/metadata/android/bg/changelogs/86.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/bg/changelogs/86.txt diff --git a/fastlane/metadata/android/bg/changelogs/86.txt b/fastlane/metadata/android/bg/changelogs/86.txt new file mode 100644 index 000000000..148ac9c7c --- /dev/null +++ b/fastlane/metadata/android/bg/changelogs/86.txt @@ -0,0 +1 @@ +- Подобрено е търсенето, съдържащо знак за интервал From 1462911ffa275cdf3d244a719ac55e4867a6a7de Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sat, 9 Oct 2021 23:50:57 +0200 Subject: [PATCH 11/63] Fix regression and release 2.7.2 --- CHANGELOG.md | 4 +++ app/build.gradle | 4 +-- .../card_locker/ImportExportActivity.java | 29 ++++++++++++------- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f84e5709..ecd053e12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v2.7.2 - 87 (2021-10-09) + +- Fix regression breaking import/export + ## v2.7.1 - 86 (2021-10-07) - Improve search with spaces diff --git a/app/build.gradle b/app/build.gradle index d1fb229e3..13daae009 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ android { applicationId "me.hackerchick.catima" minSdkVersion 21 targetSdkVersion 31 - versionCode 86 - versionName "2.7.1" + versionCode 87 + versionName "2.7.2" vectorDrawables.useSupportLibrary true multiDexEnabled true diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java index afc8b45b2..eb44bba87 100644 --- a/app/src/main/java/protect/card_locker/ImportExportActivity.java +++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java @@ -188,7 +188,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity builder.show(); } - private void startImport(final InputStream target, final Uri targetUri, final DataFormat dataFormat, final char[] password) + private void startImport(final InputStream target, final Uri targetUri, final DataFormat dataFormat, final char[] password, final boolean closeWhenDone) { ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener() { @@ -196,6 +196,13 @@ public class ImportExportActivity extends CatimaAppCompatActivity public void onTaskComplete(ImportExportResult result, DataFormat dataFormat) { onImportComplete(result, targetUri, dataFormat); + if (closeWhenDone) { + try { + target.close(); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } } }; @@ -204,14 +211,20 @@ public class ImportExportActivity extends CatimaAppCompatActivity importExporter.execute(); } - private void startExport(final OutputStream target, final Uri targetUri) + private void startExport(final OutputStream target, final Uri targetUri, final boolean closeWhenDone) { ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener() { @Override - public void onTaskComplete(ImportExportResult result, DataFormat dataFormat) - { + public void onTaskComplete(ImportExportResult result, DataFormat dataFormat) { onExportComplete(result, targetUri); + if (closeWhenDone) { + try { + target.close(); + } catch (IOException ioException) { + ioException.printStackTrace(); + } + } } }; @@ -405,9 +418,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity } Log.e(TAG, "Starting file export with: " + uri.toString()); - startExport(writer, uri); - - writer.close(); + startExport(writer, uri, true); } else { @@ -423,9 +434,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity Log.e(TAG, "Starting file import with: " + uri.toString()); - startImport(reader, uri, importDataFormat, password); - - reader.close(); + startImport(reader, uri, importDataFormat, password, true); } } catch(IOException e) From 6ecc94526ee225619be141e446e084bc57178fa8 Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Sat, 9 Oct 2021 21:52:10 +0000 Subject: [PATCH 12/63] Update Fastlane changelogs --- fastlane/metadata/android/en-US/changelogs/87.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/87.txt diff --git a/fastlane/metadata/android/en-US/changelogs/87.txt b/fastlane/metadata/android/en-US/changelogs/87.txt new file mode 100644 index 000000000..fdc077328 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/87.txt @@ -0,0 +1 @@ +- Fix regression breaking import/export \ No newline at end of file From 9f0b7604cbf205db4792dca3a1714ced9e0e91ac Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 10 Oct 2021 00:46:20 +0200 Subject: [PATCH 13/63] Fix botched migration and release 2.7.3 --- CHANGELOG.md | 4 ++++ app/build.gradle | 4 ++-- .../java/protect/card_locker/DBHelper.java | 20 ++++++++++++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecd053e12..c52cff790 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 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 diff --git a/app/build.gradle b/app/build.gradle index 13daae009..e7257e7f0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,8 +18,8 @@ android { applicationId "me.hackerchick.catima" minSdkVersion 21 targetSdkVersion 31 - versionCode 87 - versionName "2.7.2" + versionCode 88 + versionName "2.7.3" vectorDrawables.useSupportLibrary true multiDexEnabled true diff --git a/app/src/main/java/protect/card_locker/DBHelper.java b/app/src/main/java/protect/card_locker/DBHelper.java index d7fc4569d..71bdc310b 100644 --- a/app/src/main/java/protect/card_locker/DBHelper.java +++ b/app/src/main/java/protect/card_locker/DBHelper.java @@ -21,7 +21,7 @@ public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "Catima.db"; public static final int ORIGINAL_DATABASE_VERSION = 1; - public static final int DATABASE_VERSION = 12; + public static final int DATABASE_VERSION = 13; public static class LoyaltyCardDbGroups { @@ -294,6 +294,24 @@ public class DBHelper extends SQLiteOpenHelper insertFTS(db, loyaltyCard.id, loyaltyCard.store, loyaltyCard.note); } } + + if(oldVersion < 13 && newVersion >= 13) + { + db.execSQL("DELETE FROM " + LoyaltyCardDbFTS.TABLE + ";"); + + Cursor cursor = db.rawQuery("SELECT * FROM " + LoyaltyCardDbIds.TABLE + ";", null, null); + + if (cursor.moveToFirst()) { + LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); + insertFTS(db, loyaltyCard.id, loyaltyCard.store, loyaltyCard.note); + + while (cursor.moveToNext()) { + loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); + insertFTS(db, loyaltyCard.id, loyaltyCard.store, loyaltyCard.note); + } + } + cursor.close(); + } } private ContentValues generateFTSContentValues(final int id, final String store, final String note) { From fd49466e0dd50b8fb239ed78876074ace11fb500 Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Sat, 9 Oct 2021 22:46:59 +0000 Subject: [PATCH 14/63] Update Fastlane changelogs --- fastlane/metadata/android/en-US/changelogs/88.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/88.txt diff --git a/fastlane/metadata/android/en-US/changelogs/88.txt b/fastlane/metadata/android/en-US/changelogs/88.txt new file mode 100644 index 000000000..e63c500e3 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/88.txt @@ -0,0 +1 @@ +- Fix incorrect migration making first card become invisible \ No newline at end of file From b979b1fc864e294346a38d739637600b46e50b7c Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Sun, 10 Oct 2021 05:15:20 +0000 Subject: [PATCH 15/63] Update contributors --- app/src/main/res/raw/contributors.txt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/raw/contributors.txt b/app/src/main/res/raw/contributors.txt index 3c47d0960..12171cc4c 100644 --- a/app/src/main/res/raw/contributors.txt +++ b/app/src/main/res/raw/contributors.txt @@ -6,19 +6,20 @@ Heimen Stoffels solokot mondstern Taco -Gediminas Murauskas IllusiveMan196 +Gediminas Murauskas +Petr Novák +StoyanDimitrov Joel A Samantaz Fox Nyatsuki +Oğuz Ersen arno-github Sergio Paredes -StoyanDimitrov -Oğuz Ersen -Petr Novák arshbeerSingh huuhaa Michael Moroni +Olivia (Zoe) betsythefc K. Herbert Quentin PAGÈS @@ -35,13 +36,16 @@ Jane Kong Lukas Grassauer Michalis schirinowski +Thomas Bertels inesre lgasp phlostically Kevin Sicong Jiang Miha Frangež +Aditya Das Airat BMN +Biren Flav Franciszek Stefan Izzy @@ -49,6 +53,7 @@ Karol Kosek bittin Maciej Błędkowski Mattia +Michael Gangolf pbeckmann Peer Beckmann QuangDNguyen2211 From 5df7d8a530248ca5af5f4f9ca855285823853d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Nov=C3=A1k?= Date: Sun, 10 Oct 2021 07:57:05 +0000 Subject: [PATCH 16/63] 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/ --- fastlane/metadata/android/cs_CZ/changelogs/86.txt | 1 + fastlane/metadata/android/cs_CZ/changelogs/87.txt | 1 + fastlane/metadata/android/cs_CZ/changelogs/88.txt | 1 + 3 files changed, 3 insertions(+) create mode 100644 fastlane/metadata/android/cs_CZ/changelogs/86.txt create mode 100644 fastlane/metadata/android/cs_CZ/changelogs/87.txt create mode 100644 fastlane/metadata/android/cs_CZ/changelogs/88.txt diff --git a/fastlane/metadata/android/cs_CZ/changelogs/86.txt b/fastlane/metadata/android/cs_CZ/changelogs/86.txt new file mode 100644 index 000000000..2a0f60780 --- /dev/null +++ b/fastlane/metadata/android/cs_CZ/changelogs/86.txt @@ -0,0 +1 @@ +- Zlepšení vyhledávání obsahující mezery diff --git a/fastlane/metadata/android/cs_CZ/changelogs/87.txt b/fastlane/metadata/android/cs_CZ/changelogs/87.txt new file mode 100644 index 000000000..5c4c3a155 --- /dev/null +++ b/fastlane/metadata/android/cs_CZ/changelogs/87.txt @@ -0,0 +1 @@ +- Oprava regrese narušující import/export diff --git a/fastlane/metadata/android/cs_CZ/changelogs/88.txt b/fastlane/metadata/android/cs_CZ/changelogs/88.txt new file mode 100644 index 000000000..32a33d24b --- /dev/null +++ b/fastlane/metadata/android/cs_CZ/changelogs/88.txt @@ -0,0 +1 @@ +- Oprava nesprávné migrace, která způsobila, že první karta se stala neviditelnou From fe7503c3ace705f6b131558e8a37e06223b3e281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 10 Oct 2021 05:12:31 +0000 Subject: [PATCH 17/63] 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/ --- fastlane/metadata/android/tr-TR/changelogs/87.txt | 1 + fastlane/metadata/android/tr-TR/changelogs/88.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 fastlane/metadata/android/tr-TR/changelogs/87.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/88.txt diff --git a/fastlane/metadata/android/tr-TR/changelogs/87.txt b/fastlane/metadata/android/tr-TR/changelogs/87.txt new file mode 100644 index 000000000..51c24270e --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/87.txt @@ -0,0 +1 @@ +- İçe/dışa aktarmayı bozan sorun düzeltildi diff --git a/fastlane/metadata/android/tr-TR/changelogs/88.txt b/fastlane/metadata/android/tr-TR/changelogs/88.txt new file mode 100644 index 000000000..bac6f127f --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/88.txt @@ -0,0 +1 @@ +- İlk kartın görünmez hale gelmesine neden olan yanlış taşıma düzeltildi From 0101b6fa259e81fa27b95471ee3b72c79f40aa95 Mon Sep 17 00:00:00 2001 From: avikkundu <30687032+avikkundu@users.noreply.github.com> Date: Sun, 10 Oct 2021 20:34:49 +0530 Subject: [PATCH 18/63] added translation in bengali (#480) --- app/src/main/res/values-bg/strings.xml | 3 +- app/src/main/res/values-bn-rIN/strings.xml | 90 ++++++++++++++++++++++ app/src/main/res/values-sv/strings.xml | 2 +- 3 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/values-bn-rIN/strings.xml diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 47bf432fa..561a09f74 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -208,4 +208,5 @@ в Google Play и използване на данни Помогнете за превода на приложението - \ No newline at end of file + + diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml new file mode 100644 index 000000000..665bfbff0 --- /dev/null +++ b/app/src/main/res/values-bn-rIN/strings.xml @@ -0,0 +1,90 @@ + + + সংরক্ষণ + বাতিল + তারা মুক্ত + তারা + বারকোড না বারকোড + বারকোড ধরন + বিঃদ্রঃ + দোকানের নাম + কোন ম্যাচিং উপহার কার্ড নেই + উপহার কার্ড নেই + কর্ম যোগ + সব + গোষ্ঠী কার্ড নেই + গোষ্ঠীগুলি নেই + গোষ্ঠীগুলি + গোষ্ঠী নাম লিখুন + রপ্তানি সফল + আগম সফল + url শেয়ার টেক্সট থেকে ইন্টেন্ট ইম্পোর্ট কার্ড + কার্ড দেখা কালিন লকস্ক্রিন নিষ্ক্রিয় + সেটিংস পর্দা খোলা রাখুন + তালাবদ্ধ বার কোড অভিযোজন + সর্বোচ্চ হরফ আকার + সাদাটে থিম + যন্ত্রর থিম + থিম + বিভাগ শিরোনাম + তারা ছবি + ক্যাতিনা আগম + আমদানি লয়্যালটি কার্ড কীচেন + স্টো কার্ড আমদানি করুন + আমদানি ভাউচার ভল্ট + বারকোড আইডি + কার্ড আইডির মতো + বারকোড আইডি সেট করুন + অসমর্থিত বারকোড টাইপ + বারকোড টাইপের জন্য ভুল মান + ক্লিপবোর্ড একাধিক টোস্টে অনুলিপি করুন + url থেকে ইন্টেন্ট ইম্পোর্ট কার্ড একাধিক টেক্সট শেয়ার করে + সামনের চিত্রের বর্ণনা + পিছনের চিত্রের বর্ণনা + ছবি + সদর ছবি স্থাপন + পিছনের ছবি স্থাপন + ছবি অপসারণ + ছবি নেত্তয়া + হালনাগাদ বারকোড প্রশ্ন শিরোনাম + হালনাগাদ বারকোড প্রশ্ন টেক্সট + হাঁ + না + পাসওয়ার্ড প্রয়োজন + শেয়ার ইউআরএল তৈরি করতে ব্যর্থ হয়েছে + টর্চলাইট চালু করুন + টর্চলাইট বন্ধ করুন + লোকেল + সিস্টেম লোকেল + থিম রঙ + কটিমা থিম + গোলাপী থিম + ম্যাজেন্টা থিম + ভায়োলেট থিম + নীল থিম + আকাশী নীল থিম + সবুজ থিম + বাদামী থিম + সাজান + আরও তথ্য টগল করুন + ছবি পরিবর্তন করতে সোয়াইপ করুন + নামের দ্বারা সাজান + সর্বাধিক সম্প্রতি ব্যবহৃত দ্বারা সাজান + মেয়াদ শেষ করে সাজান + বিপরীত + ক্রমানুসার + কোন কার্ড নেই ত্রুটি + স্টোরেজ ত্রুটি নেই + কার্ড আইডি কপি করা হয়েছে + কোন কার্ড বার্তা নেই + কার্ডের শিরোনাম যোগ করুন + কার্ডের শিরোনাম সম্পাদনা করুন + লেবেল পাঠান + ভাগ + নকল করুন ক্লিপবোর্ড এ + নিশ্চিতকরণ মুছে দিন + পর্দা আনলক করুন + নিশ্চিত করুন + মুছে ফেলুন + সম্পাদনা + \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 3e6f66467..ebc840e10 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -198,4 +198,4 @@ Senast använda Namn Sortera - \ No newline at end of file + From 793f1e2f879de68c06224d9b4a4d51e178ae045d Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Sun, 10 Oct 2021 22:34:40 -0400 Subject: [PATCH 19/63] Remove unneeded MultiDex --- app/build.gradle | 1 - .../card_locker/LoyaltyCardLockerApplication.java | 10 +++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e7257e7f0..58602f39c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -80,7 +80,6 @@ android { dependencies { // AndroidX - implementation "androidx.multidex:multidex:2.0.1" implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.1' diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardLockerApplication.java b/app/src/main/java/protect/card_locker/LoyaltyCardLockerApplication.java index 4765f6fc9..c031f7904 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardLockerApplication.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardLockerApplication.java @@ -1,14 +1,18 @@ package protect.card_locker; +import android.app.Application; + import androidx.appcompat.app.AppCompatDelegate; -import androidx.multidex.MultiDexApplication; + import protect.card_locker.preferences.Settings; -public class LoyaltyCardLockerApplication extends MultiDexApplication { +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()); } } From 4a0c8270ef9839455933b3e79d634ed7eff4f3e8 Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Sun, 10 Oct 2021 22:34:53 -0400 Subject: [PATCH 20/63] Replace CardView with MaterialCardView --- app/build.gradle | 1 - .../card_locker/LoyaltyCardCursorAdapter.java | 1 - .../main/res/layout/loyalty_card_edit_activity.xml | 12 ++++++------ app/src/main/res/layout/loyalty_card_layout.xml | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 58602f39c..12b999f33 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,7 +81,6 @@ android { dependencies { // AndroidX implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.1' implementation 'androidx.exifinterface:exifinterface:1.3.3' implementation 'androidx.preference:preference:1.1.1' diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index 7470d1a6c..a0a6d3d7b 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -21,7 +21,6 @@ import java.math.BigDecimal; import java.text.DateFormat; import java.util.ArrayList; -import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; import protect.card_locker.preferences.Settings; diff --git a/app/src/main/res/layout/loyalty_card_edit_activity.xml b/app/src/main/res/layout/loyalty_card_edit_activity.xml index 1201fddd4..634dc05b3 100644 --- a/app/src/main/res/layout/loyalty_card_edit_activity.xml +++ b/app/src/main/res/layout/loyalty_card_edit_activity.xml @@ -68,7 +68,7 @@ android:paddingTop="@dimen/inputPadding" android:orientation="horizontal"> - - + - - + @@ -382,7 +382,7 @@ android:paddingTop="@dimen/inputPadding"> - - + diff --git a/app/src/main/res/layout/loyalty_card_layout.xml b/app/src/main/res/layout/loyalty_card_layout.xml index c1f94cb4b..0456b8340 100644 --- a/app/src/main/res/layout/loyalty_card_layout.xml +++ b/app/src/main/res/layout/loyalty_card_layout.xml @@ -25,7 +25,7 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - - + Date: Mon, 11 Oct 2021 19:58:09 +0200 Subject: [PATCH 21/63] Fix spotbugs RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE --- .../java/protect/card_locker/DBHelper.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/protect/card_locker/DBHelper.java b/app/src/main/java/protect/card_locker/DBHelper.java index 71bdc310b..a784fcea9 100644 --- a/app/src/main/java/protect/card_locker/DBHelper.java +++ b/app/src/main/java/protect/card_locker/DBHelper.java @@ -716,20 +716,22 @@ public class DBHelper extends SQLiteOpenHelper } public List getGroups() { - try(Cursor data = getGroupCursor()) { - List groups = new ArrayList<>(); + Cursor data = getGroupCursor(); - if (!data.moveToFirst()) { - return groups; - } - - groups.add(Group.toGroup(data)); - while (data.moveToNext()) { - groups.add(Group.toGroup(data)); - } + List groups = new ArrayList<>(); + if (!data.moveToFirst()) { + data.close(); return groups; } + + groups.add(Group.toGroup(data)); + while (data.moveToNext()) { + groups.add(Group.toGroup(data)); + } + + data.close(); + return groups; } public void reorderGroups(final List groups) From 683b4f46d9a37115da825e63c0937a1daa955689 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Mon, 11 Oct 2021 20:22:06 +0200 Subject: [PATCH 22/63] Fix spotbugs EI_EXPOSE_REP2 --- app/src/main/java/protect/card_locker/GroupCursorAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/protect/card_locker/GroupCursorAdapter.java b/app/src/main/java/protect/card_locker/GroupCursorAdapter.java index 886c73879..1e89bb091 100644 --- a/app/src/main/java/protect/card_locker/GroupCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/GroupCursorAdapter.java @@ -42,7 +42,7 @@ class GroupCursorAdapter extends BaseCursorAdapter Date: Mon, 11 Oct 2021 17:40:41 +0000 Subject: [PATCH 23/63] 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/ --- app/src/main/res/values-ru/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 2a7bd8e79..bdf2bfaea 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -54,7 +54,7 @@ Версия: %s Информация о версиях: %s Выбор штрих-кода - Введите номер карты и выберите тип штрих-кода. Или выберите \"Эта карта без штрих-кода\". + Введите номер карты и выберите тип штрих-кода (или выберите \"Эта карта без штрих-кода\"). Номер карты скопирован в буфер обмена Логотип карты Настройки From edce6d6cd3511c30a3142090eb9be64b65a9db8f Mon Sep 17 00:00:00 2001 From: Joel A Date: Mon, 11 Oct 2021 18:00:09 +0000 Subject: [PATCH 24/63] 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/ --- app/src/main/res/values-sv/strings.xml | 36 ++++++++++++++++---------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index ebc840e10..62f5904e9 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -5,8 +5,8 @@ Max. teckenstorlek Håll skärmen påslagen Ange kortets ID och välj antingen streckkodstyp nedan, eller \"Detta kort har ingen streckkod\". - Välj den exporterade fidme-export-request-xxxxxx.zip från FidMe som du vill importera och välj streckkodstyper manuellt efteråt, -\neller skapa en från din FidMe-profil först genom att välja \"Data Protection\" och sen trycka på \"Extract my data\". + Välj den exporterade fidme-export-request-xxxxxx.zip från FidMe som du vill importera och välj streckkodstyper manuellt efteråt. +\nSkapa den från din FidMe-profil först genom att välja \"Data Protection\" och sen trycka på \"Extract my data\". Använd vilken app som helst eller den filhanterare du föredrar för att öppna en fil. Använd en annan app Jag vill dela ett kort med dig @@ -21,12 +21,12 @@ %d kort valda Loyalty Card Keychain - Välj den exporterade LoyaltyCardKeychain.csv från Loyalty Card Keychain som du vill importera, -\neller skapa en från Import/Export-menyn i Loyalty Card Keychain först genom att trycka på Exportera. - Välj den exporterade vouchervault.json från Voucher Vault som du vill importera, -\neller skapa en först genom att trycka på Exportera i Voucher Vault. - Välj den exporterade ***-sync.zip från Stocard som du vill importera, -\neller skaffa en först genom att skicka e-post till support@stocardapp.com och be om att få dina data exporterade. + Välj den exporterade LoyaltyCardKeychain.csv från Loyalty Card Keychain som du vill importera. +\nSkapa den från Import/Export-menyn i Loyalty Card Keychain först genom att trycka på Exportera. + Välj den exporterade vouchervault.json från Voucher Vault som du vill importera. +\nSkapa den först genom att trycka på Exportera i Voucher Vault. + Välj den exporterade ***-sync.zip från Stocard som du vill importera. +\nSkaffa den först genom att skicka e-post till support@stocardapp.com och be om att få dina data exporterade. Ange gruppnamn Grupper @@ -90,8 +90,8 @@ Version: %s Om %s Baserad på Loyalty Card Keychain -\ncopyright © 2016–2020 Branden Archer. - Copyright © 2019–%d Sylvia van Os. +\ncopyright © 2016–2020 Branden Archer + Copyright © 2019–%d Sylvia van Os Om Använd en annan app Från filsystemet @@ -158,7 +158,7 @@ Välj förfallodatum Förfallodatum Favoritstjärna - Copyleftad fri programvara, under GPLv3+-licens. + Copyleftad fri programvara, under GPLv3+-licens Fria tredjepartsresurser: %s Fria tredjepartsbibliotek: %s %s verkar inte vara ett giltigt saldo. @@ -166,8 +166,8 @@ Saldo: %s Förhindra skärmlåsning Förhindra rotation - Välj den exporterade catima.zip från Catima som du vill importera, -\neller skapa en från Import/Export-menyn i en annan Catima-app genom att trycka på Exportera där först. + Välj den exporterade catima.zip från Catima som du vill importera. +\nSkapa den från Import/Export-menyn i en annan Catima-app genom att trycka på Exportera där först. Giltigt till: %s Kortdata exporterad Kortdata importerad @@ -198,4 +198,12 @@ Senast använda Namn Sortera - + Licens + och dataanvändning + Betygsätt den här appen + på Google Play + Rapportera ett fel + Versionshistorik + Hjälp till med översättningen av appen + på GitHub + \ No newline at end of file From dc280b4023a8a3d9db1e408902691373eca1ebab Mon Sep 17 00:00:00 2001 From: Joel A Date: Mon, 11 Oct 2021 18:10:15 +0000 Subject: [PATCH 25/63] 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/ --- fastlane/metadata/android/sv-SE/full_description.txt | 1 - fastlane/metadata/android/sv-SE/title.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/fastlane/metadata/android/sv-SE/full_description.txt b/fastlane/metadata/android/sv-SE/full_description.txt index c66bd6586..f0b5d75a4 100644 --- a/fastlane/metadata/android/sv-SE/full_description.txt +++ b/fastlane/metadata/android/sv-SE/full_description.txt @@ -20,4 +20,3 @@ Med detta essentiella verktyg kan du ersätta värdelös plast med kontanter. Förenkla ditt liv och din shopping, och förlora aldrig ett papperskvitto, presentkort eller flygbiljett igen. Ta alla dina belöningar och bonusar med dig, och spara nya efter hand. - diff --git a/fastlane/metadata/android/sv-SE/title.txt b/fastlane/metadata/android/sv-SE/title.txt index 5e021b104..de3041fdc 100644 --- a/fastlane/metadata/android/sv-SE/title.txt +++ b/fastlane/metadata/android/sv-SE/title.txt @@ -1 +1 @@ -Catima — Den Open Source kortplånboken +Catima — Kortplånboken med öppen källkod From 0881d745f5a8a78c9d1fefb0a6d645d54e5809e9 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Mon, 11 Oct 2021 21:16:54 +0200 Subject: [PATCH 26/63] Fix more spotbugs EI_EXPOSE_REP2 --- .../card_locker/LoyaltyCardCursorAdapter.java | 20 ++++++++----------- .../preferences/SettingsActivity.java | 12 ++++------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index 7470d1a6c..1e24b4a70 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -62,7 +62,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter { + inputListener.onRowClicked(getAdapterPosition()); + inputView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + return true; + }); } } } \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java b/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java index 1bf4d8df1..3e88fb87e 100644 --- a/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java +++ b/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java @@ -1,6 +1,7 @@ package protect.card_locker.preferences; +import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; @@ -41,7 +42,6 @@ public class SettingsActivity extends CatimaAppCompatActivity // Display the fragment as the main content. SettingsFragment fragment = new SettingsFragment(); - fragment.setParentReference(this); getSupportFragmentManager().beginTransaction() .replace(R.id.settings_container, fragment) .commit(); @@ -64,11 +64,6 @@ public class SettingsActivity extends CatimaAppCompatActivity public static class SettingsFragment extends PreferenceFragmentCompat { private static final String DIALOG_FRAGMENT_TAG = "SettingsFragment"; - private SettingsActivity parent; - - public void setParentReference(SettingsActivity settingsActivity) { - parent = settingsActivity; - } @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -120,8 +115,9 @@ public class SettingsActivity extends CatimaAppCompatActivity }); localePreference.setOnPreferenceChangeListener((preference, newValue) -> { // Refresh the activity - parent.finish(); - startActivity(parent.getIntent()); + Intent intent = new Intent(getContext(), SettingsActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + getContext().startActivity(intent); return true; }); From 78f2e1698f1c661c42348272ebd8a122602b114b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Oct 2021 19:20:03 +0000 Subject: [PATCH 27/63] 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] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4f2af7dc8..57422a11e 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.0.2' - classpath 'gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.0' + classpath 'gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.5' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From df4cb5b1896a9d97b1369b14c5f2f45cacbf9484 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Oct 2021 02:21:39 +0000 Subject: [PATCH 28/63] 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] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 57422a11e..37a0187d5 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.0.2' + classpath 'com.android.tools.build:gradle:7.0.3' classpath 'gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.5' // NOTE: Do not place your application dependencies here; they belong From c7db676b2b4ef07ffeebffaf0e7b4ae223b9c979 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Tue, 12 Oct 2021 17:31:51 +0200 Subject: [PATCH 29/63] Add IzzyOnDroid badge --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index 37ea6c020..774ecac2c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,6 +4,7 @@ Copylefted libre software (GPLv3+) card management app. [![GitHub Version](https://img.shields.io/github/v/release/TheLastProject/Catima.svg?logo=github&label=GitHub)](https://github.com/TheLastProject/Catima/releases) [![F-Droid Version](https://img.shields.io/f-droid/v/me.hackerchick.catima.svg?logo=f-droid&label=F-Droid)](https://f-droid.org/packages/me.hackerchick.catima/) +[![IzzyOnDroid Version](https://img.shields.io/endpoint?url=https://apt.izzysoft.de/fdroid/api/v1/shield/me.hackerchick.catima)](https://apt.izzysoft.de/fdroid/index/apk/me.hackerchick.catima) [![Google Play Store Version](https://img.shields.io/endpoint?color=blue&logo=google-play&url=https%3A%2F%2Fplayshields.herokuapp.com%2Fplay%3Fi%3Dme.hackerchick.catima%26l%3DGoogle%2520Play%26m%3D%24version)](https://play.google.com/store/apps/details?id=me.hackerchick.catima) ![Android CI](https://github.com/TheLastProject/Catima/workflows/Android%20CI/badge.svg) From 97a5311593feb9acc253602f82fda6fcac13eac7 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Wed, 13 Oct 2021 16:55:05 +0530 Subject: [PATCH 30/63] Fixed Bug where an Empty List (consisting of only a single textview) within the Tab would not swipe left or right --- .../main/java/protect/card_locker/MainActivity.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index d2b0f9319..84d2ced33 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -195,9 +195,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard @Override public void onTabSelected(TabLayout.Tab tab) { selectedTab = tab.getPosition(); + Log.d("onTabSelected","Tab Position "+tab.getPosition()); mGroup = tab.getTag(); updateLoyaltyCardList(); - // Store active tab in Shared Preference to restore next app launch SharedPreferences activeTabPref = getApplicationContext().getSharedPreferences( getString(R.string.sharedpreference_active_tab), @@ -230,6 +230,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mHelpText.setOnTouchListener(gestureTouchListener); mNoMatchingCardsText.setOnTouchListener(gestureTouchListener); mCardList.setOnTouchListener(gestureTouchListener); + mNoGroupCardsText.setOnTouchListener(gestureTouchListener); mAdapter = new LoyaltyCardCursorAdapter(this, null, this); mCardList.setAdapter(mAdapter); @@ -633,6 +634,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + mGestureDetector.onTouchEvent(ev); + return super.dispatchTouchEvent(ev); + } + @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.d(TAG, "On fling"); @@ -648,9 +655,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } Integer currentTab = groupsTabLayout.getSelectedTabPosition(); - + Log.d("onFling","Current Tab "+currentTab); // Swipe right if (velocityX < -150) { + Log.d("onFling","Right Swipe detected "+velocityX); Integer nextTab = currentTab + 1; if (nextTab == groupsTabLayout.getTabCount()) { @@ -664,6 +672,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard // Swipe left if (velocityX > 150) { + Log.d("onFling","Left Swipe detected "+velocityX); Integer nextTab = currentTab - 1; if (nextTab < 0) { From 94fb4b441177e1d3a8655f868929d0285723c965 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Wed, 13 Oct 2021 18:56:54 +0200 Subject: [PATCH 31/63] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c52cff790..b9093c41d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased - 89 + +- Fix swiping between groups not working on an empty group + ## v2.7.3 - 88 (2021-10-10) - Fix incorrect migration making first card become invisible From 0b0a45da05462de4b8a5dc581bd490a3234b9c36 Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Wed, 13 Oct 2021 16:57:17 +0000 Subject: [PATCH 32/63] Update Fastlane changelogs --- fastlane/metadata/android/en-US/changelogs/89.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/89.txt diff --git a/fastlane/metadata/android/en-US/changelogs/89.txt b/fastlane/metadata/android/en-US/changelogs/89.txt new file mode 100644 index 000000000..d72f02b29 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/89.txt @@ -0,0 +1 @@ +- Fix swiping between groups not working on an empty group \ No newline at end of file From 595d10fc4432c339b69e04b60bdcba853d235eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 13 Oct 2021 17:36:39 +0000 Subject: [PATCH 33/63] 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/ --- fastlane/metadata/android/tr-TR/changelogs/89.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 fastlane/metadata/android/tr-TR/changelogs/89.txt diff --git a/fastlane/metadata/android/tr-TR/changelogs/89.txt b/fastlane/metadata/android/tr-TR/changelogs/89.txt new file mode 100644 index 000000000..03c6a751b --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/89.txt @@ -0,0 +1 @@ +- Gruplar arasında kaydırmanın boş bir grup üzerinde çalışmaması düzeltildi From 504a1fd01b58674e3659ca56e53d18ebaf71b874 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 14 Oct 2021 18:37:46 +0200 Subject: [PATCH 34/63] Prepare for Bors --- .github/workflows/android.yml | 8 ++++++-- .github/workflows/autoclose-needs-info.yml | 2 +- .github/workflows/changelog-to-fastlane.yml | 3 ++- .github/workflows/codeql-analysis.yml | 6 ++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 15b9b18c1..04bb77083 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -2,9 +2,13 @@ name: Android CI on: push: - branches: [ master ] + branches: + - master + - staging + - trying pull_request: - branches: [ master ] + branches: + - master jobs: build: diff --git a/.github/workflows/autoclose-needs-info.yml b/.github/workflows/autoclose-needs-info.yml index f48095107..41a807934 100644 --- a/.github/workflows/autoclose-needs-info.yml +++ b/.github/workflows/autoclose-needs-info.yml @@ -2,7 +2,7 @@ name: 'Close issues and PRs needing info for too long' on: schedule: - cron: '30 1 * * *' - + permissions: issues: write pull-requests: write diff --git a/.github/workflows/changelog-to-fastlane.yml b/.github/workflows/changelog-to-fastlane.yml index 613c5df27..147bccae3 100644 --- a/.github/workflows/changelog-to-fastlane.yml +++ b/.github/workflows/changelog-to-fastlane.yml @@ -1,7 +1,8 @@ name: Convert CHANGELOG to Fastlane on: push: - branches: [ master ] + branches: + - master jobs: convert_changelog_to_fastlane: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1f05e5ce1..44bbd448b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,10 +13,12 @@ name: "CodeQL" on: push: - branches: [ master ] + branches: + - master pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: + - master schedule: - cron: '33 1 * * 4' From d05c97946dcb37eb0ebe30de50e9dc41dcb1e518 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 14 Oct 2021 19:07:24 +0200 Subject: [PATCH 35/63] Setup bors --- bors.toml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 bors.toml diff --git a/bors.toml b/bors.toml new file mode 100644 index 000000000..e6c6119ea --- /dev/null +++ b/bors.toml @@ -0,0 +1,4 @@ +status = [ 'build' ] +[committer] +name = "Sylvia van Os" +email = "sylvia@hackerchick.me" From 923982e44989d46d7475527428fae61f793afa78 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 14 Oct 2021 19:37:03 +0200 Subject: [PATCH 36/63] Don't override author info --- bors.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/bors.toml b/bors.toml index e6c6119ea..9f119594c 100644 --- a/bors.toml +++ b/bors.toml @@ -1,4 +1 @@ status = [ 'build' ] -[committer] -name = "Sylvia van Os" -email = "sylvia@hackerchick.me" From f81fb0c67399b3896c1b06ec2f58da9fdd1386d3 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Thu, 14 Oct 2021 19:44:36 +0200 Subject: [PATCH 37/63] Delete merged branch --- bors.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/bors.toml b/bors.toml index 9f119594c..d36046a52 100644 --- a/bors.toml +++ b/bors.toml @@ -1 +1,2 @@ status = [ 'build' ] +delete_merged_branches = true From fc9c61686958322595cf123b99a4aeaf69bde334 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Thu, 14 Oct 2021 23:23:01 +0530 Subject: [PATCH 38/63] 1.Created new method multipleCardsExportImportPasswordProtected() in ImportExportTest.java \n 2.Added 5th Paramete --- .../protect/card_locker/ImportExportTask.java | 2 +- .../importexport/CatimaExporter.java | 16 ++++++- .../card_locker/importexport/Exporter.java | 2 +- .../importexport/MultiFormatExporter.java | 4 +- .../protect/card_locker/ImportExportTest.java | 42 ++++++++++++++++--- 5 files changed, 54 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ImportExportTask.java b/app/src/main/java/protect/card_locker/ImportExportTask.java index 1538185c3..00b78b4d5 100644 --- a/app/src/main/java/protect/card_locker/ImportExportTask.java +++ b/app/src/main/java/protect/card_locker/ImportExportTask.java @@ -77,7 +77,7 @@ class ImportExportTask extends AsyncTask try { OutputStreamWriter writer = new OutputStreamWriter(stream, StandardCharsets.UTF_8); - result = MultiFormatExporter.exportData(context, db, stream, format); + result = MultiFormatExporter.exportData(context, db, stream, format,null); writer.close(); } catch (IOException e) diff --git a/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java b/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java index 4afe49841..124e9d9c9 100644 --- a/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java +++ b/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java @@ -6,6 +6,7 @@ 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; @@ -30,14 +31,21 @@ import protect.card_locker.Utils; */ public class CatimaExporter implements Exporter { - public void exportData(Context context, DBHelper db, OutputStream output) throws IOException, InterruptedException + public void exportData(Context context, DBHelper db, OutputStream output,char[] password) throws IOException, InterruptedException { // Necessary vars int readLen; byte[] readBuffer = new byte[InternalZipConstants.BUFF_SIZE]; // Create zip output stream - ZipOutputStream zipOutputStream = new ZipOutputStream(output); + ZipOutputStream zipOutputStream; + + if(password!=null && password.length>0){ + zipOutputStream = new ZipOutputStream(output,password); + } + else{ + zipOutputStream = new ZipOutputStream(output); + } // Generate CSV ByteArrayOutputStream catimaOutputStream = new ByteArrayOutputStream(); @@ -47,6 +55,10 @@ public class CatimaExporter implements Exporter // Add CSV to zip file ZipParameters csvZipParameters = new ZipParameters(); csvZipParameters.setFileNameInZip("catima.csv"); + if(password!=null && password.length>0){ + csvZipParameters.setEncryptFiles(true); + csvZipParameters.setEncryptionMethod(EncryptionMethod.AES); + } zipOutputStream.putNextEntry(csvZipParameters); InputStream csvInputStream = new ByteArrayInputStream(catimaOutputStream.toByteArray()); while ((readLen = csvInputStream.read(readBuffer)) != -1) { diff --git a/app/src/main/java/protect/card_locker/importexport/Exporter.java b/app/src/main/java/protect/card_locker/importexport/Exporter.java index 6f70f6d80..ad4928030 100644 --- a/app/src/main/java/protect/card_locker/importexport/Exporter.java +++ b/app/src/main/java/protect/card_locker/importexport/Exporter.java @@ -17,5 +17,5 @@ public interface Exporter * Export the database to the output stream in a given format. * @throws IOException */ - void exportData(Context context, DBHelper db, OutputStream output) throws IOException, InterruptedException; + void exportData(Context context, DBHelper db, OutputStream output,char[] password) throws IOException, InterruptedException; } diff --git a/app/src/main/java/protect/card_locker/importexport/MultiFormatExporter.java b/app/src/main/java/protect/card_locker/importexport/MultiFormatExporter.java index 8e95c49c4..b45cf1eda 100644 --- a/app/src/main/java/protect/card_locker/importexport/MultiFormatExporter.java +++ b/app/src/main/java/protect/card_locker/importexport/MultiFormatExporter.java @@ -22,7 +22,7 @@ public class MultiFormatExporter * 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, DBHelper db, OutputStream output, DataFormat format) + public static ImportExportResult exportData(Context context, DBHelper db, OutputStream output, DataFormat format,char[] password) { Exporter exporter = null; @@ -40,7 +40,7 @@ public class MultiFormatExporter { try { - exporter.exportData(context, db, output); + exporter.exportData(context, db, output,password); return ImportExportResult.Success; } catch(IOException e) diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index 41374d496..f0ed57a1e 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -334,7 +334,7 @@ public class ImportExportTest OutputStreamWriter outStream = new OutputStreamWriter(outData); // Export data to CSV format - ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima); + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,null); assertEquals(ImportExportResult.Success, result); outStream.close(); @@ -354,6 +354,36 @@ public class ImportExportTest TestHelpers.getEmptyDb(activity); } + public void multipleCardsExportImportPasswordProtected() throws IOException + { + final int NUM_CARDS = 10; + final String password = "123456789"; + addLoyaltyCards(NUM_CARDS); + + ByteArrayOutputStream outData = new ByteArrayOutputStream(); + OutputStreamWriter outStream = new OutputStreamWriter(outData); + + // Export data to CSV format + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,password.toCharArray()); + assertEquals(ImportExportResult.Success, result); + outStream.close(); + + TestHelpers.getEmptyDb(activity); + + ByteArrayInputStream inData = new ByteArrayInputStream(outData.toByteArray()); + + // Import the CSV data + result = MultiFormatImporter.importData(activity.getApplicationContext(), db, inData, DataFormat.Catima, password.toCharArray()); + assertEquals(ImportExportResult.Success, result); + + assertEquals(NUM_CARDS, db.getLoyaltyCardCount()); + + checkLoyaltyCards(); + + // Clear the database for the next format under test + TestHelpers.getEmptyDb(activity); + } + @Test public void multipleCardsExportImportSomeStarred() throws IOException { @@ -365,7 +395,7 @@ public class ImportExportTest OutputStreamWriter outStream = new OutputStreamWriter(outData); // Export data to CSV format - ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima); + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,null); assertEquals(ImportExportResult.Success, result); outStream.close(); @@ -438,7 +468,7 @@ public class ImportExportTest OutputStreamWriter outStream = new OutputStreamWriter(outData); // Export data to CSV format - ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima); + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,null); assertEquals(ImportExportResult.Success, result); outStream.close(); @@ -482,7 +512,7 @@ public class ImportExportTest OutputStreamWriter outStream = new OutputStreamWriter(outData); // Export into CSV data - ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima); + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,null); assertEquals(ImportExportResult.Success, result); outStream.close(); @@ -513,7 +543,7 @@ public class ImportExportTest OutputStreamWriter outStream = new OutputStreamWriter(outData); // Export data to CSV format - ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima); + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,null); assertEquals(ImportExportResult.Success, result); TestHelpers.getEmptyDb(activity); @@ -901,7 +931,7 @@ public class ImportExportTest // Export everything ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - MultiFormatExporter.exportData(activity.getApplicationContext(), db, outputStream, DataFormat.Catima); + MultiFormatExporter.exportData(activity.getApplicationContext(), db, outputStream, DataFormat.Catima,null); // Wipe database TestHelpers.getEmptyDb(activity); From 44066e65993f034cf49fdd9b65f5a61470375ca9 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Fri, 15 Oct 2021 00:22:51 +0530 Subject: [PATCH 39/63] Extracted zip parameter logic into a new function and used it on imageZipParameters as well --- .../importexport/CatimaExporter.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java b/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java index 124e9d9c9..119443bba 100644 --- a/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java +++ b/app/src/main/java/protect/card_locker/importexport/CatimaExporter.java @@ -53,12 +53,7 @@ public class CatimaExporter implements Exporter writeCSV(db, catimaOutputStreamWriter); // Add CSV to zip file - ZipParameters csvZipParameters = new ZipParameters(); - csvZipParameters.setFileNameInZip("catima.csv"); - if(password!=null && password.length>0){ - csvZipParameters.setEncryptFiles(true); - csvZipParameters.setEncryptionMethod(EncryptionMethod.AES); - } + ZipParameters csvZipParameters = createZipParameters("catima.csv",password); zipOutputStream.putNextEntry(csvZipParameters); InputStream csvInputStream = new ByteArrayInputStream(catimaOutputStream.toByteArray()); while ((readLen = csvInputStream.read(readBuffer)) != -1) { @@ -83,8 +78,7 @@ public class CatimaExporter implements Exporter // If it exists, add to the .zip file Bitmap image = Utils.retrieveCardImage(context, card.id, front); if (image != null) { - ZipParameters imageZipParameters = new ZipParameters(); - imageZipParameters.setFileNameInZip(Utils.getCardImageFileName(card.id, front)); + ZipParameters imageZipParameters = createZipParameters(Utils.getCardImageFileName(card.id, front),password); zipOutputStream.putNextEntry(imageZipParameters); InputStream imageInputStream = new ByteArrayInputStream(Utils.bitmapToByteArray(image)); while ((readLen = imageInputStream.read(readBuffer)) != -1) { @@ -98,6 +92,16 @@ public class CatimaExporter implements Exporter 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(DBHelper db, OutputStreamWriter output) throws IOException, InterruptedException { CSVPrinter printer = new CSVPrinter(output, CSVFormat.RFC4180); From 50ccf6da4674ba183f203ff37da95fa85cb588ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Fri, 15 Oct 2021 13:43:34 +0000 Subject: [PATCH 40/63] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 19.3% (17 of 88 strings) Translation: Catima/Fastlane Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/ --- fastlane/metadata/android/nb-NO/title.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/nb-NO/title.txt b/fastlane/metadata/android/nb-NO/title.txt index ffa4058ad..84c94a88d 100644 --- a/fastlane/metadata/android/nb-NO/title.txt +++ b/fastlane/metadata/android/nb-NO/title.txt @@ -1 +1 @@ -Catima — Den Open Source kortlommen +Catima —den frie kortlommen From 2390568bdf0976d314f0859baf1c6201d00d9b1c Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Fri, 15 Oct 2021 22:51:52 +0530 Subject: [PATCH 41/63] 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. --- .../card_locker/ImportExportActivity.java | 23 +++++++++++++++---- .../protect/card_locker/ImportExportTask.java | 9 ++++---- .../protect/card_locker/ImportExportTest.java | 3 ++- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java index eb44bba87..20f305ffe 100644 --- a/app/src/main/java/protect/card_locker/ImportExportActivity.java +++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java @@ -47,6 +47,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity private String importAlertTitle; private String importAlertMessage; private DataFormat importDataFormat; + private String exportPassword; @Override protected void onCreate(Bundle savedInstanceState) @@ -88,7 +89,19 @@ public class ImportExportActivity extends CatimaAppCompatActivity @Override public void onClick(View v) { - chooseFileWithIntent(intentCreateDocumentAction, CHOOSE_EXPORT_LOCATION); + AlertDialog.Builder builder = new AlertDialog.Builder(ImportExportActivity.this); + builder.setTitle(R.string.passwordRequired); + + final EditText input = new EditText(ImportExportActivity.this); + input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + builder.setView(input); + builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> { + chooseFileWithIntent(intentCreateDocumentAction, CHOOSE_EXPORT_LOCATION); + exportPassword = input.getText().toString(); + }); + builder.setNegativeButton(R.string.cancel, (dialogInterface, i) -> dialogInterface.cancel()); + builder.show(); + } }); @@ -211,7 +224,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity importExporter.execute(); } - private void startExport(final OutputStream target, final Uri targetUri, final boolean closeWhenDone) + private void startExport(final OutputStream target, final Uri targetUri,char[] password, final boolean closeWhenDone) { ImportExportTask.TaskCompleteListener listener = new ImportExportTask.TaskCompleteListener() { @@ -229,7 +242,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity }; importExporter = new ImportExportTask(ImportExportActivity.this, - DataFormat.Catima, target, listener); + DataFormat.Catima, target,password, listener); importExporter.execute(); } @@ -407,6 +420,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity { if (requestCode == CHOOSE_EXPORT_LOCATION) { + OutputStream writer; if (uri.getScheme() != null) { @@ -416,9 +430,8 @@ public class ImportExportActivity extends CatimaAppCompatActivity { writer = new FileOutputStream(new File(uri.toString())); } - Log.e(TAG, "Starting file export with: " + uri.toString()); - startExport(writer, uri, true); + startExport(writer, uri,exportPassword.toCharArray(),true); } else { diff --git a/app/src/main/java/protect/card_locker/ImportExportTask.java b/app/src/main/java/protect/card_locker/ImportExportTask.java index 00b78b4d5..df2d26e0d 100644 --- a/app/src/main/java/protect/card_locker/ImportExportTask.java +++ b/app/src/main/java/protect/card_locker/ImportExportTask.java @@ -35,7 +35,7 @@ class ImportExportTask extends AsyncTask /** * Constructor which will setup a task for exporting to the given file */ - ImportExportTask(Activity activity, DataFormat format, OutputStream output, + ImportExportTask(Activity activity, DataFormat format, OutputStream output,char[] password, TaskCompleteListener listener) { super(); @@ -43,6 +43,7 @@ class ImportExportTask extends AsyncTask this.doImport = false; this.format = format; this.outputStream = output; + this.password = password; this.listener = listener; } @@ -70,14 +71,14 @@ class ImportExportTask extends AsyncTask return importResult; } - private ImportExportResult performExport(Context context, OutputStream stream, DBHelper db) + private ImportExportResult performExport(Context context, OutputStream stream, DBHelper db,char[] password) { ImportExportResult result = ImportExportResult.GenericFailure; try { OutputStreamWriter writer = new OutputStreamWriter(stream, StandardCharsets.UTF_8); - result = MultiFormatExporter.exportData(context, db, stream, format,null); + result = MultiFormatExporter.exportData(context, db, stream, format,password); writer.close(); } catch (IOException e) @@ -118,7 +119,7 @@ class ImportExportTask extends AsyncTask } else { - result = performExport(activity.getApplicationContext(), outputStream, db); + result = performExport(activity.getApplicationContext(), outputStream, db,password); } return result; diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index f0ed57a1e..9ac8bdd58 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -590,8 +590,9 @@ public class ImportExportTest TestTaskCompleteListener listener = new TestTaskCompleteListener(); // Export to the file + final String password = "123456789"; FileOutputStream fileOutputStream = new FileOutputStream(exportFile); - ImportExportTask task = new ImportExportTask(activity, DataFormat.Catima, fileOutputStream, listener); + ImportExportTask task = new ImportExportTask(activity, DataFormat.Catima, fileOutputStream,password.toCharArray(), listener); task.execute(); // Actually run the task to completion From 993589427b2f80613c03ac4b260c1926c24ab7af Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Fri, 15 Oct 2021 23:10:38 +0530 Subject: [PATCH 42/63] Changed password parameter to a char[] instead of null in ImportExportTest.java line 613 --- app/src/test/java/protect/card_locker/ImportExportTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index 9ac8bdd58..53442f9b0 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -610,7 +610,7 @@ public class ImportExportTest FileInputStream fileStream = new FileInputStream(exportFile); - task = new ImportExportTask(activity, DataFormat.Catima, fileStream, null, listener); + task = new ImportExportTask(activity, DataFormat.Catima, fileStream, password.toCharArray(), listener); task.execute(); // Actually run the task to completion From 401fc98b4dc770499185cdee110681af1173453d Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Sat, 16 Oct 2021 00:15:32 +0530 Subject: [PATCH 43/63] Passing password to ZipInputStream constructor in importData method of CatimaImporter.java --- .../java/protect/card_locker/importexport/CatimaImporter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java b/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java index ce1273373..0c42f5210 100644 --- a/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java @@ -48,7 +48,7 @@ public class CatimaImporter implements Importer bufferedInputStream.mark(100); // First, check if this is a zip file - ZipInputStream zipInputStream = new ZipInputStream(bufferedInputStream); + ZipInputStream zipInputStream = new ZipInputStream(bufferedInputStream,password); boolean isZipFile = false; From 32d62dd9ba1293c7375342b3c75292cd6dd3e0a2 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Sat, 16 Oct 2021 01:34:44 +0530 Subject: [PATCH 44/63] Requested Modifications Made. --- .../card_locker/ImportExportActivity.java | 17 +++++++-- app/src/main/res/values/strings.xml | 1 + .../protect/card_locker/ImportExportTest.java | 37 ++++++++++--------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java index 20f305ffe..c5ee29759 100644 --- a/app/src/main/java/protect/card_locker/ImportExportActivity.java +++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java @@ -12,8 +12,10 @@ 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; @@ -90,14 +92,23 @@ public class ImportExportActivity extends CatimaAppCompatActivity public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(ImportExportActivity.this); - builder.setTitle(R.string.passwordRequired); + builder.setTitle(R.string.exportPasswordRequired); + + 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); - builder.setView(input); + input.setLayoutParams(params); + input.setHint("Enter Password"); + + container.addView(input); + builder.setView(container); builder.setPositiveButton(R.string.ok, (dialogInterface, i) -> { - chooseFileWithIntent(intentCreateDocumentAction, CHOOSE_EXPORT_LOCATION); exportPassword = input.getText().toString(); + chooseFileWithIntent(intentCreateDocumentAction, CHOOSE_EXPORT_LOCATION); }); builder.setNegativeButton(R.string.cancel, (dialogInterface, i) -> dialogInterface.cancel()); builder.show(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aa689bccb..d45c44099 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -196,6 +196,7 @@ Yes No Please enter the password + Set a password to protect your export." Could not generate sharable URL. Please report this. Turn flashlight on Turn flashlight off diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index 53442f9b0..230faef6f 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -357,31 +357,34 @@ public class ImportExportTest public void multipleCardsExportImportPasswordProtected() throws IOException { final int NUM_CARDS = 10; - final String password = "123456789"; - addLoyaltyCards(NUM_CARDS); + List passwords = Arrays.asList(null, "123456789".toCharArray()); + for(char[] password : passwords){ + addLoyaltyCards(NUM_CARDS); - ByteArrayOutputStream outData = new ByteArrayOutputStream(); - OutputStreamWriter outStream = new OutputStreamWriter(outData); + ByteArrayOutputStream outData = new ByteArrayOutputStream(); + OutputStreamWriter outStream = new OutputStreamWriter(outData); - // Export data to CSV format - ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,password.toCharArray()); - assertEquals(ImportExportResult.Success, result); - outStream.close(); + // Export data to CSV format + ImportExportResult result = MultiFormatExporter.exportData(activity.getApplicationContext(), db, outData, DataFormat.Catima,password); + assertEquals(ImportExportResult.Success, result); + outStream.close(); - TestHelpers.getEmptyDb(activity); + TestHelpers.getEmptyDb(activity); - ByteArrayInputStream inData = new ByteArrayInputStream(outData.toByteArray()); + ByteArrayInputStream inData = new ByteArrayInputStream(outData.toByteArray()); - // Import the CSV data - result = MultiFormatImporter.importData(activity.getApplicationContext(), db, inData, DataFormat.Catima, password.toCharArray()); - assertEquals(ImportExportResult.Success, result); + // Import the CSV data + result = MultiFormatImporter.importData(activity.getApplicationContext(), db, inData, DataFormat.Catima, password); + assertEquals(ImportExportResult.Success, result); - assertEquals(NUM_CARDS, db.getLoyaltyCardCount()); + assertEquals(NUM_CARDS, db.getLoyaltyCardCount()); - checkLoyaltyCards(); + checkLoyaltyCards(); + + // Clear the database for the next format under test + TestHelpers.getEmptyDb(activity); + } - // Clear the database for the next format under test - TestHelpers.getEmptyDb(activity); } @Test From 7028a1f4ca0c511dd8e811a8e15fb9301fc5b170 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari Date: Sat, 16 Oct 2021 20:04:24 +0530 Subject: [PATCH 45/63] Changes to AlertDialog for entering password --- .../main/java/protect/card_locker/ImportExportActivity.java | 5 ++--- app/src/main/res/values/strings.xml | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java index c5ee29759..40f565010 100644 --- a/app/src/main/java/protect/card_locker/ImportExportActivity.java +++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java @@ -20,7 +20,6 @@ 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; @@ -92,7 +91,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(ImportExportActivity.this); - builder.setTitle(R.string.exportPasswordRequired); + 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); @@ -102,7 +101,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity final EditText input = new EditText(ImportExportActivity.this); input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); input.setLayoutParams(params); - input.setHint("Enter Password"); + input.setHint(R.string.exportPasswordHint); container.addView(input); builder.setView(container); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d45c44099..817ffee8e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -196,7 +196,8 @@ Yes No Please enter the password - Set a password to protect your export." + Set a password to protect your export(optional)" + Enter Password Could not generate sharable URL. Please report this. Turn flashlight on Turn flashlight off From 2c03f193f037f8c7b7fd84aade5c7dbc416ec9b7 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Fri, 15 Oct 2021 14:06:03 +0000 Subject: [PATCH 46/63] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 19.3% (17 of 88 strings) Translation: Catima/Fastlane Translate-URL: https://hosted.weblate.org/projects/catima/fastlane/nb_NO/ --- fastlane/metadata/android/nb-NO/title.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/metadata/android/nb-NO/title.txt b/fastlane/metadata/android/nb-NO/title.txt index 84c94a88d..a5925aaf6 100644 --- a/fastlane/metadata/android/nb-NO/title.txt +++ b/fastlane/metadata/android/nb-NO/title.txt @@ -1 +1 @@ -Catima —den frie kortlommen +Catima — for kundekort, billetter og kuponger 🎴 From d8361cc2882993161c8a333aa7649b2a71ac040e Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sat, 16 Oct 2021 16:49:47 +0200 Subject: [PATCH 47/63] String improvements --- app/src/main/res/values/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 817ffee8e..4e14f6b22 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -196,8 +196,8 @@ Yes No Please enter the password - Set a password to protect your export(optional)" - Enter Password + Set a password to protect your export (optional) + Enter password Could not generate sharable URL. Please report this. Turn flashlight on Turn flashlight off @@ -245,4 +245,4 @@ Rate this app on Google Play Report Error - \ No newline at end of file + From 9998205051c08b2128378cc60b2242c1bb414485 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sat, 16 Oct 2021 17:21:05 +0200 Subject: [PATCH 48/63] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9093c41d..999f8aad7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased - 89 - Fix swiping between groups not working on an empty group +- Allow password-protecting exports ## v2.7.3 - 88 (2021-10-10) From 11164f9a7349c746b50964d9fbbcab602055ee00 Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Sat, 16 Oct 2021 15:21:38 +0000 Subject: [PATCH 49/63] Update Fastlane changelogs --- fastlane/metadata/android/en-US/changelogs/89.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastlane/metadata/android/en-US/changelogs/89.txt b/fastlane/metadata/android/en-US/changelogs/89.txt index d72f02b29..0892136b6 100644 --- a/fastlane/metadata/android/en-US/changelogs/89.txt +++ b/fastlane/metadata/android/en-US/changelogs/89.txt @@ -1 +1,2 @@ -- Fix swiping between groups not working on an empty group \ No newline at end of file +- Fix swiping between groups not working on an empty group +- Allow password-protecting exports \ No newline at end of file From bef750e0477665861e90ed7e9fc146b1be7fab7a Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Sun, 17 Oct 2021 05:10:28 +0000 Subject: [PATCH 50/63] Update contributors --- app/src/main/res/raw/contributors.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/raw/contributors.txt b/app/src/main/res/raw/contributors.txt index 12171cc4c..2e2766214 100644 --- a/app/src/main/res/raw/contributors.txt +++ b/app/src/main/res/raw/contributors.txt @@ -7,15 +7,16 @@ solokot mondstern Taco IllusiveMan196 -Gediminas Murauskas Petr Novák -StoyanDimitrov +Gediminas Murauskas Joel A +Oğuz Ersen +StoyanDimitrov Samantaz Fox Nyatsuki -Oğuz Ersen arno-github Sergio Paredes +Ankit Tiwari arshbeerSingh huuhaa Michael Moroni @@ -63,6 +64,7 @@ Simone Dotto Subhashish Anand Tymofii Lytvynenko Tjipke van der Heide +avikkundu opsik psa-jforestier Robin From c99bf206cce02dc7df44da99c534e66db57f6d56 Mon Sep 17 00:00:00 2001 From: Ankit Tiwari <55471438+ankittiwari101@users.noreply.github.com> Date: Sun, 17 Oct 2021 18:12:56 +0530 Subject: [PATCH 51/63] Dynamically size barcode based on their shape (square or rectangle) (#501) --- .../main/java/protect/card_locker/CatimaBarcode.java | 7 +++++++ .../protect/card_locker/LoyaltyCardViewActivity.java | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/protect/card_locker/CatimaBarcode.java b/app/src/main/java/protect/card_locker/CatimaBarcode.java index 59a1d5305..2b295f5c5 100644 --- a/app/src/main/java/protect/card_locker/CatimaBarcode.java +++ b/app/src/main/java/protect/card_locker/CatimaBarcode.java @@ -63,6 +63,13 @@ public class CatimaBarcode { return barcodeFormats.contains(mBarcodeFormat); } + public boolean isSquare(){ + return mBarcodeFormat == BarcodeFormat.AZTEC + || mBarcodeFormat == BarcodeFormat.DATA_MATRIX + || mBarcodeFormat == BarcodeFormat.MAXICODE + || mBarcodeFormat == BarcodeFormat.QR_CODE; + } + public BarcodeFormat format() { return mBarcodeFormat; } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index 11bb5bd25..91bbb2b2b 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -268,7 +268,10 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements if (imageTypes.get(mainImageIndex) == ImageType.BARCODE) { redrawBarcodeAfterResize(); } - centerGuideline.setGuidelinePercent(0.5f * scale); + if(loyaltyCard!=null && format!=null && format.isSquare()) + centerGuideline.setGuidelinePercent(0.75f * scale); + else + centerGuideline.setGuidelinePercent(0.5f * scale); } @Override @@ -417,6 +420,12 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements setupOrientation(); format = loyaltyCard.barcodeType; + if(format != null && format.isSquare()){ + centerGuideline.setGuidelinePercent(0.75f); + } + else{ + centerGuideline.setGuidelinePercent(0.5f); + } cardIdString = loyaltyCard.cardId; barcodeIdString = loyaltyCard.barcodeId; From 5cacdbd1929e17e8d60cdf3d6ccf49f2aeec6fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miha=20Frange=C5=BE?= Date: Sun, 17 Oct 2021 17:07:32 +0200 Subject: [PATCH 52/63] New Slovenian translations --- app/src/main/res/values-sl/strings.xml | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 8a0944a57..99cc624d4 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -94,4 +94,72 @@ Vrsta črtne kode Ničesar nisem našel. Poskusite spremeniti iskanje. Iskanje + Vnesite geslo + Izberite geslo za zaščito izvoza (neobvezno) + Pomagajte pri prevajanju aplikacije + Zgodovina različic + Rjava + Siva + Zelena + Sinje modra + Modra + Vijolična + Magenta + Roza + Barva teme + Sistem + Jezik + Slika črtne kode tipa %s + Povlecite ali dolgo pritisnite da zamenjate slike + Razvrsti po + Obratno + Stanje + Potek + Nazadnje uporabljene + Ime + Razvrsti + Licence + na GitHubu + Ocenite aplikacijo + Prijavite napako + na Trgovini Google Play + in uporaba podatkov + Izvorna koda + Točke + Valuta + Stanje na računu + Slike ni bilo mogoče prebrati + Črtna koda ni bila najdena + %s točk + Stanje: %s + Uvoz iz? + Izvoz iz aplikacije Catima + Izvoz iz aplikacije Stocard + Izvoz iz aplikacije Voucher Vault + Politika zasebnosti + Izklop svetilke + Vklop svetilke + Vnesite geslo + Sprejmi + Uvoz iz aplikacije Loyalty Card Keychain + Vsebina črtne kode + Enaka kot številka kartice + Nastavi vsebino črtne kode + Ta vrednost ni veljavna pri izbranem tipu čtne kode + Naredi fotografijo + Z vami želim deliti kartice zvestobe + Številke kartic kopirane v odložišče + Uvoz iz aplikacije FidMe + Ne + Da + Slika sprednje strani + Slika zadnje strani + %s ni veljavno stanje. + Nastavi sliko sprednje strani + Nastavi sliko sprednje strani + Fotografije + Spremenili ste številko kartice. Želite posodobiti tudi črtno kodo na enako vrednost? + Posodobi črtno kodo? + Odstrani sliko + Te vrste črtne kode aplikacija ne more prikazati. Morda bo to možno v prihodnosti. \ No newline at end of file From ff63dbfdaab61f1cc13c8450556f66d0138c0e2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miha=20Frange=C5=BE?= Date: Sun, 17 Oct 2021 17:16:44 +0200 Subject: [PATCH 53/63] Fixed bad machine translations --- app/src/main/res/values-sl/strings.xml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 99cc624d4..b3309b865 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -25,7 +25,7 @@ Te kartice zvestobe ni bilo moč najti Uvozi/izvozi Izvozi - Varnostna kopija omogoča varen prenos kartic na druge telefonske naprave. + Varnostna kopija omogoča varen prenos kartic na druge naprave. Uvoz je bil uspešen Uvoz ni uspel Napaka pri uvozu @@ -39,7 +39,7 @@ Izberite specifično datoteko iz datotečnega sistema. Iz datotečnega sistema Uporabi zunanjo aplikacijo - Uporabi zunanjo aplikacijo, kot npr. Dropbox, Google Drive ali ostale upravljalnike datotek, za odpiranje datoteko. + Uporabi zunanjo aplikacijo, kot npr. Dropbox, Google Drive ali ostale upravljalnike datotek, za odpiranje datoteke. Uporabi zunanjo aplikacijo Več o aplikaciji Licencirano s skladu z GPLv3. @@ -57,7 +57,7 @@ Prosim potrdite, če želite izbrisati to kartico\? Kartica Izberite sliko iz galerije - Ročno vnesite ID kartice + Ročno vnesite št. kartice Zapustite brez shranjevanja\? Izhod Premikanje navzdol @@ -71,18 +71,17 @@ Vnesite ime skupine Izvoženi podatki o karticah Uvoženi podatki o karticah - Želim z vami deliti kartico + Z vami želim deliti kartico Preprečitev zaklepanja zaslona Ohranite zaslon vklopljen Vnesite ID kartice in spodaj izberite vrsto črtne kode ali \"Ta kartica nima črtne kode\". Največja velikost pisave Temno - Luč + Svetlo Sistem Tema - Najljubša zvezda - Na podlagi kartice zvestobe obesek za ključe -\ncopyright © 2016-2020 Branden Archer. + Zvezdica za priljubljene + Na podlagi aplikacije Loyalty Card Keychain copyright © 2016-2020 Branden Archer. Podatki bodo zapisani na izbrano mesto. Ni bilo mogoče razčleniti URI uvoza Kopirana kartica ID(s) From 36f0d814f6d22f13637a1e2adbf38862cd8d22a4 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sat, 16 Oct 2021 23:22:38 +0000 Subject: [PATCH 54/63] 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/ --- app/src/main/res/values-de/strings.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e8844efdd..32e2aba63 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -202,10 +202,12 @@ Dank an Hilfe bei der Übersetzung und Datennutzung - Bewerte die App + Bewerte die Anwendung auf Google Play Lizenz Quellcode auf GitHub Fehler melden + Legen Sie ein Passwort fest, um Ihren Export zu schützen (optional) + Passwort eingeben \ No newline at end of file From 0cb75fd42187abfe5f22dad2814f61fa4b5b3c7f Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sat, 16 Oct 2021 23:22:26 +0000 Subject: [PATCH 55/63] 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/ --- app/src/main/res/values-fr/strings.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index ee4353f7a..dc2cb44ec 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -200,12 +200,14 @@ Solde Signaler une erreur sur Google Play - Notez cette app + Notez cette appli utilisation des données sur GitHub Dépôt source Licence - Aidez à traduire cette app + Aidez à traduire cette appli Contributeurs Historique des versions + Définissez un mot de passe pour protéger vos exportations (facultatif) + Entrez le mot de passe \ No newline at end of file From 824b9317648aae0219055bb57ece990add7f731a Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sat, 16 Oct 2021 23:20:40 +0000 Subject: [PATCH 56/63] 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/ --- app/src/main/res/values-it/strings.xml | 28 ++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 325f5ab96..64f0a7147 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -47,7 +47,7 @@ Usa qualsiasi app o il tuo gestore di file preferito per aprire un file. Usa un’altra app Informazioni - Software libero con copyleft, licenza GPLv3+. + Software libero con copyleft, licenza GPLv3+ Informazioni su %s Versione: %s Informazioni sulla revisione: %s @@ -67,7 +67,7 @@ Dati della carta importati Dati della carta importati Basato su Loyalty Card Keychain -\ncopyright © 2016–2020 Branden Archer. +\ncopyright © 2016–2020 Branden Archer I dati verranno scritti in una posizione a tua scelta. Tipo di codice a barre Rimuovi dai preferiti @@ -116,16 +116,16 @@ \nNESSUN DATO VIENE RACCOLTO, cosa che chiunque può confermare dato che la nostra applicazione è un software libero. Informativa sulla riservatezza Seleziona la tua esportazione vouchervault.json da Voucher Vault da importare. -\nOppure crealo premendo prima Esporta in Voucher Vault. +\nCrealo premendo prima Esporta in Voucher Vault. Importa da Voucher Vault Seleziona la tua esportazione LoyaltyCardKeychain.csv da Loyalty Card Keychain per importarla. -\nOppure createlo dal menù Importazione/Esportazione in Loyalty Card Keychain premendo prima su Esporta. +\nCreatelo dal menù Importazione/Esportazione in Loyalty Card Keychain premendo prima su Esporta. Importa da Loyalty Card Keychain Seleziona la tua esportazione fidme-export-request-xxxxxx.zip da FidMe per importare, e seleziona i tipi di codice a barre manualmente dopo. -\nOppure crearlo dal tuo profilo FidMe scegliendo Protezione Dati e poi premendo Estrai i miei dati prima. +\nCrearlo dal tuo profilo FidMe scegliendo Protezione Dati e poi premendo Estrai i miei dati prima. Importa da FidMe Seleziona la tua esportazione catima.zip da Catima per importarla. -\nOppure crealo dal menù Importazione/Esportazione di un\'altra applicazione Catima premendo prima Esporta. +\nCrealo dal menù Importazione/Esportazione di un\'altra applicazione Catima premendo prima Esporta. Importa da Catima Imposta il valore del codice a barre Uguale all\'ID della carta @@ -138,7 +138,7 @@ Il valore non è valido per il tipo di codice a barre selezionato Risorse libre di terze parti: %s Librerie libre di terze parti: %s - Copyright © 2019–%d Sylvia van Os. + Copyright © 2019–%d Sylvia van Os Voglio condividere alcune carte con te Numeri delle carte copiati negli appunti Numero/i della carta copiato/i @@ -155,7 +155,7 @@ Immagine frontale della carta Si prega di inserire la password Seleziona la tua esportazione ***-sync.zip da Stocard per importare. -\nOppure ottenerlo inviando un\'e-mail a support@stocardapp.com chiedendo un\'esportazione dei tuoi dati. +\nOttienilo inviando un\'e-mail a support@stocardapp.com chiedendo un\'esportazione dei tuoi dati. Importa da Stocard Spegni la torcia Accendi la torcia @@ -198,4 +198,16 @@ Usate più di recente Nome Ordina + Licenza + Repository fonti + su GitHub + Inserisci la password + su Google Play + Imposta una password per proteggere la tua esportazione (opzionale) + Cronologia delle versioni + Crediti + Aiuta a tradurre questa app + e utilizzo dei dati + Valuta questa applicazione + Segnala un errore \ No newline at end of file From a2e25512ec265847590b68d2c9adfd07457618d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Sat, 16 Oct 2021 17:54:13 +0000 Subject: [PATCH 57/63] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 99.5% (221 of 222 strings) Translation: Catima/Catima Translate-URL: https://hosted.weblate.org/projects/catima/catima/nb_NO/ --- app/src/main/res/values-nb-rNO/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 12ec0a82f..66c81bf31 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -208,4 +208,6 @@ på Google Play Rapporter feil Bidragsytere + Sett et passord for å beskytte eksporten din (valgfritt) + Skriv inn passord \ No newline at end of file From 1767a009a7151bbaadab8494eb54861264bef33c Mon Sep 17 00:00:00 2001 From: Heimen Stoffels Date: Sat, 16 Oct 2021 16:17:15 +0000 Subject: [PATCH 58/63] 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/ --- app/src/main/res/values-nl/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 258219503..9bd6f9fc6 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -208,4 +208,6 @@ Help deze app te vertalen Met dank aan Versiegeschiedenis + Voer een wachtwoord in + Stel een wachtwoord in om je exportbestand te beveiligen (optioneel) \ No newline at end of file From 09c6d586397e98e14caf9f6d2ad2c11a4b5cba35 Mon Sep 17 00:00:00 2001 From: solokot Date: Sat, 16 Oct 2021 16:24:31 +0000 Subject: [PATCH 59/63] 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/ --- app/src/main/res/values-ru/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index bdf2bfaea..bc6b1a1a2 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -216,4 +216,6 @@ Исходный код Лицензия Помощь в переводе приложения + Защитить файл экспорта паролем (необязательно) + Введите пароль \ No newline at end of file From eaafa56503daba9a692644ab0aa329605e1dd1b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 16 Oct 2021 15:56:12 +0000 Subject: [PATCH 60/63] 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/ --- app/src/main/res/values-tr/strings.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 2f0d2f61e..a851327d0 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -208,4 +208,6 @@ Bu uygulamayı çevirmeye yardımcı olun Emeği Geçenler Sürüm Geçmişi + Dışa aktarmanızı korumak için bir parola belirleyin (isteğe bağlı) + Parola girin \ No newline at end of file From 11cc65bae3fc551d77a984ed93c41117c7aa9e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sat, 16 Oct 2021 15:56:58 +0000 Subject: [PATCH 61/63] 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/ --- fastlane/metadata/android/tr-TR/changelogs/89.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/fastlane/metadata/android/tr-TR/changelogs/89.txt b/fastlane/metadata/android/tr-TR/changelogs/89.txt index 03c6a751b..2fee78bb4 100644 --- a/fastlane/metadata/android/tr-TR/changelogs/89.txt +++ b/fastlane/metadata/android/tr-TR/changelogs/89.txt @@ -1 +1,2 @@ - Gruplar arasında kaydırmanın boş bir grup üzerinde çalışmaması düzeltildi +- Parola korumalı dışa aktarmalara izin ver From 1138d6387e0fa25ec884535ca18a7f4c28f71262 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 17 Oct 2021 19:08:08 +0200 Subject: [PATCH 62/63] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 999f8aad7..49496e81f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Fix swiping between groups not working on an empty group - Allow password-protecting exports +- Improve usage of space for QR codes ## v2.7.3 - 88 (2021-10-10) From cd3baf5bd9b2a664d9603fdded8f68e517193a6d Mon Sep 17 00:00:00 2001 From: TheLastProject Date: Sun, 17 Oct 2021 17:08:28 +0000 Subject: [PATCH 63/63] Update Fastlane changelogs --- fastlane/metadata/android/en-US/changelogs/89.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastlane/metadata/android/en-US/changelogs/89.txt b/fastlane/metadata/android/en-US/changelogs/89.txt index 0892136b6..c76b3d372 100644 --- a/fastlane/metadata/android/en-US/changelogs/89.txt +++ b/fastlane/metadata/android/en-US/changelogs/89.txt @@ -1,2 +1,3 @@ - Fix swiping between groups not working on an empty group -- Allow password-protecting exports \ No newline at end of file +- Allow password-protecting exports +- Improve usage of space for QR codes \ No newline at end of file