diff --git a/CHANGELOG.md b/CHANGELOG.md
index 667594ba7..b6e361651 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,33 @@
+## v0.27 (2020-01-26)
+
+Changes:
+- Tapping on a barcode now moves it to the top of the screen ([#348](https://github.com/brarcher/loyalty-card-locker/pull/348))
+- Add white space around barcodes to improve scanning in dark mode ([#328](https://github.com/brarcher/loyalty-card-locker/issues/328))
+- Fix swapped import buttons. ([#346](https://github.com/brarcher/loyalty-card-locker/pull/346))
+
+## v0.26.1 (2020-01-09)
+
+Changes:
+- Fix issue with sharing cards without background color ([#343](https://github.com/brarcher/loyalty-card-locker/pull/343))
+
+## v0.26 (2020-01-05)
+
+Changes:
+- Add ability to search for a card ([#320](https://github.com/brarcher/loyalty-card-locker/pull/320))
+- Add ability to share and receive loyalty cards ([#321](https://github.com/brarcher/loyalty-card-locker/pull/321))
+- Dark mode support ([#322](https://github.com/brarcher/loyalty-card-locker/pull/322))
+- Loyalty cards can now be barcodeless (e.g. not have a barcode) ([#324](https://github.com/brarcher/loyalty-card-locker/pull/324))
+- Notes can span multiple lines ([#326](https://github.com/brarcher/loyalty-card-locker/pull/326))
+- Improvements with the sizing of notes ([#319](https://github.com/brarcher/loyalty-card-locker/pull/319))
+- Improve notification and app icon visibility ([#330](https://github.com/brarcher/loyalty-card-locker/pull/330))
+- Update target SDK to Android 10
+- Improve the following translations:
+ * German
+ * Italian
+ * Dutch
+ * Polish
+ * Russian
+
## v0.25.4 (2019-10-04)
Changes
diff --git a/app/build.gradle b/app/build.gradle
index ce36923f0..1037c32dd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
applicationId "protect.card_locker"
minSdkVersion 16
targetSdkVersion 29
- versionCode 35
- versionName "0.25.4"
+ versionCode 38
+ versionName "0.27"
}
buildTypes {
release {
diff --git a/app/src/main/java/protect/card_locker/ImportExportActivity.java b/app/src/main/java/protect/card_locker/ImportExportActivity.java
index bd8fac2d3..bbd4eba9a 100644
--- a/app/src/main/java/protect/card_locker/ImportExportActivity.java
+++ b/app/src/main/java/protect/card_locker/ImportExportActivity.java
@@ -81,36 +81,14 @@ public class ImportExportActivity extends AppCompatActivity
}
});
-
- // Check that there is an activity that can bring up a file chooser
- final Intent intentPickAction = new Intent(Intent.ACTION_PICK);
-
- Button importFilesystem = findViewById(R.id.importOptionFilesystemButton);
- importFilesystem.setOnClickListener(new View.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- chooseFileWithIntent(intentPickAction);
- }
- });
-
- if(isCallable(getApplicationContext(), intentPickAction) == false)
- {
- findViewById(R.id.dividerImportFilesystem).setVisibility(View.GONE);
- findViewById(R.id.importOptionFilesystemTitle).setVisibility(View.GONE);
- findViewById(R.id.importOptionFilesystemExplanation).setVisibility(View.GONE);
- importFilesystem.setVisibility(View.GONE);
- }
-
-
- // Check that there is an application that can find content
+ // Check that there is a file manager available
final Intent intentGetContentAction = new Intent(Intent.ACTION_GET_CONTENT);
intentGetContentAction.addCategory(Intent.CATEGORY_OPENABLE);
intentGetContentAction.setType("*/*");
- Button importApplication = findViewById(R.id.importOptionApplicationButton);
- importApplication.setOnClickListener(new View.OnClickListener()
+
+ Button importFilesystem = findViewById(R.id.importOptionFilesystemButton);
+ importFilesystem.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
@@ -120,6 +98,27 @@ public class ImportExportActivity extends AppCompatActivity
});
if(isCallable(getApplicationContext(), intentGetContentAction) == false)
+ {
+ findViewById(R.id.dividerImportFilesystem).setVisibility(View.GONE);
+ findViewById(R.id.importOptionFilesystemTitle).setVisibility(View.GONE);
+ findViewById(R.id.importOptionFilesystemExplanation).setVisibility(View.GONE);
+ importFilesystem.setVisibility(View.GONE);
+ }
+
+ // Check that there is an app that data can be imported from
+ final Intent intentPickAction = new Intent(Intent.ACTION_PICK);
+
+ Button importApplication = findViewById(R.id.importOptionApplicationButton);
+ importApplication.setOnClickListener(new View.OnClickListener()
+ {
+ @Override
+ public void onClick(View v)
+ {
+ chooseFileWithIntent(intentPickAction);
+ }
+ });
+
+ if(isCallable(getApplicationContext(), intentPickAction) == false)
{
findViewById(R.id.dividerImportApplication).setVisibility(View.GONE);
findViewById(R.id.importOptionApplicationTitle).setVisibility(View.GONE);
@@ -127,7 +126,6 @@ public class ImportExportActivity extends AppCompatActivity
importApplication.setVisibility(View.GONE);
}
-
// This option, to import from the fixed location, should always be present
Button importButton = findViewById(R.id.importOptionFixedButton);
diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java
index d3133bcb3..5aeeb0cec 100644
--- a/app/src/main/java/protect/card_locker/ImportURIHelper.java
+++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java
@@ -35,12 +35,24 @@ public class ImportURIHelper {
}
try {
+ // These values are allowed to be null
+ Integer headerColor = null;
+ Integer headerTextColor = null;
+
String store = uri.getQueryParameter(STORE);
String note = uri.getQueryParameter(NOTE);
String cardId = uri.getQueryParameter(CARD_ID);
String barcodeType = uri.getQueryParameter(BARCODE_TYPE);
- Integer headerColor = Integer.parseInt(uri.getQueryParameter(HEADER_COLOR));
- Integer headerTextColor = Integer.parseInt(uri.getQueryParameter(HEADER_TEXT_COLOR));
+ String unparsedHeaderColor = uri.getQueryParameter(HEADER_COLOR);
+ if(unparsedHeaderColor != null)
+ {
+ headerColor = Integer.parseInt(unparsedHeaderColor);
+ }
+ String unparsedHeaderTextColor = uri.getQueryParameter(HEADER_TEXT_COLOR);
+ if(unparsedHeaderTextColor != null)
+ {
+ headerTextColor = Integer.parseInt(unparsedHeaderTextColor);
+ }
return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor);
} catch (NullPointerException | NumberFormatException ex) {
throw new InvalidObjectException("Not a valid import URI");
@@ -57,8 +69,14 @@ public class ImportURIHelper {
uriBuilder.appendQueryParameter(NOTE, loyaltyCard.note);
uriBuilder.appendQueryParameter(CARD_ID, loyaltyCard.cardId);
uriBuilder.appendQueryParameter(BARCODE_TYPE, loyaltyCard.barcodeType);
- uriBuilder.appendQueryParameter(HEADER_COLOR, loyaltyCard.headerColor.toString());
- uriBuilder.appendQueryParameter(HEADER_TEXT_COLOR, loyaltyCard.headerTextColor.toString());
+ if(loyaltyCard.headerColor != null)
+ {
+ uriBuilder.appendQueryParameter(HEADER_COLOR, loyaltyCard.headerColor.toString());
+ }
+ if(loyaltyCard.headerTextColor != null)
+ {
+ uriBuilder.appendQueryParameter(HEADER_TEXT_COLOR, loyaltyCard.headerTextColor.toString());
+ }
return uriBuilder.build();
}
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
index 08bf5f661..4004f0a2e 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
@@ -7,6 +7,8 @@ import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
+
+import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.graphics.ColorUtils;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.core.view.GestureDetectorCompat;
@@ -23,6 +25,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
@@ -62,7 +65,12 @@ public class LoyaltyCardViewActivity extends AppCompatActivity implements Gestur
ImportURIHelper importURIHelper;
Settings settings;
+ String cardIdString;
+ BarcodeFormat format;
+
boolean backgroundNeedsDarkIcons;
+ boolean barcodeIsFullscreen = false;
+ ViewGroup.LayoutParams barcodeImageState;
private void extractIntentFields(Intent intent)
{
@@ -161,6 +169,21 @@ public class LoyaltyCardViewActivity extends AppCompatActivity implements Gestur
savedInstanceState.putInt("id", loyaltyCardId);
super.onSaveInstanceState(savedInstanceState);
+
+ // Allow making barcode fullscreen on tap
+ barcodeImage.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if(barcodeIsFullscreen)
+ {
+ setFullscreen(false);
+ }
+ else
+ {
+ setFullscreen(true);
+ }
+ }
+ });
}
@Override
@@ -179,6 +202,15 @@ public class LoyaltyCardViewActivity extends AppCompatActivity implements Gestur
Log.i(TAG, "To view card: " + loyaltyCardId);
+ if(barcodeIsFullscreen)
+ {
+ // Completely reset state
+ //
+ // This prevents the barcode from taking up the entire screen
+ // on resume and thus being stretched out of proportion.
+ recreate();
+ }
+
// The brightness value is on a scale from [0, ..., 1], where
// '1' is the brightest. We attempt to maximize the brightness
// to help barcode readers scan the barcode.
@@ -232,8 +264,8 @@ public class LoyaltyCardViewActivity extends AppCompatActivity implements Gestur
}
String formatString = loyaltyCard.barcodeType;
- final BarcodeFormat format = !formatString.isEmpty() ? BarcodeFormat.valueOf(formatString) : null;
- final String cardIdString = loyaltyCard.cardId;
+ format = !formatString.isEmpty() ? BarcodeFormat.valueOf(formatString) : null;
+ cardIdString = loyaltyCard.cardId;
cardIdFieldView.setText(loyaltyCard.cardId);
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(cardIdFieldView,
@@ -335,6 +367,18 @@ public class LoyaltyCardViewActivity extends AppCompatActivity implements Gestur
}
}
+ @Override
+ public void onBackPressed() {
+ if (barcodeIsFullscreen)
+ {
+ setFullscreen(false);
+ return;
+ }
+
+ super.onBackPressed();
+ return;
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
@@ -460,5 +504,72 @@ public class LoyaltyCardViewActivity extends AppCompatActivity implements Gestur
{
gestureDetector.onTouchEvent(motionEvent);
return super.onTouchEvent(motionEvent);
+
+ /**
+ * When enabled, hides the status bar and moves the barcode to the top of the screen.
+ *
+ * The purpose of this function is to make sure the barcode can be scanned from the phone
+ * by machines which offer no space to insert the complete device.
+ */
+ private void setFullscreen(boolean enable)
+ {
+ ActionBar actionBar = getSupportActionBar();
+ if(enable && !barcodeIsFullscreen)
+ {
+ // Save previous barcodeImage state
+ barcodeImageState = barcodeImage.getLayoutParams();
+
+ // Hide actionbar
+ if(actionBar != null)
+ {
+ actionBar.hide();
+ }
+
+ // Hide collapsingToolbar
+ collapsingToolbarLayout.setVisibility(View.GONE);
+
+ // Set Android to fullscreen mode
+ getWindow().getDecorView().setSystemUiVisibility(
+ getWindow().getDecorView().getSystemUiVisibility()
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ | View.SYSTEM_UI_FLAG_FULLSCREEN
+ );
+
+ // Make barcode take all space
+ barcodeImage.setLayoutParams(new ConstraintLayout.LayoutParams(
+ ConstraintLayout.LayoutParams.MATCH_PARENT,
+ ConstraintLayout.LayoutParams.MATCH_PARENT
+ ));
+
+ // Move barcode to top
+ barcodeImage.setScaleType(ImageView.ScaleType.FIT_START);
+
+ // Set current state
+ barcodeIsFullscreen = true;
+ }
+ else if(!enable && barcodeIsFullscreen)
+ {
+ // Show actionbar
+ if(actionBar != null)
+ {
+ actionBar.show();
+ }
+
+ // Show collapsingToolbar
+ collapsingToolbarLayout.setVisibility(View.VISIBLE);
+
+ // Unset fullscreen mode
+ getWindow().getDecorView().setSystemUiVisibility(
+ getWindow().getDecorView().getSystemUiVisibility()
+ & ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ & ~View.SYSTEM_UI_FLAG_FULLSCREEN
+ );
+
+ // Turn barcode back to normal
+ barcodeImage.setLayoutParams(barcodeImageState);
+
+ // Set current state
+ barcodeIsFullscreen = false;
+ }
}
}
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 0aba1ff41..bb5054a13 100644
--- a/app/src/main/res/layout/loyalty_card_edit_activity.xml
+++ b/app/src/main/res/layout/loyalty_card_edit_activity.xml
@@ -364,6 +364,8 @@
android:layout_width="0dp"
android:layout_height="@dimen/barcode_disp_height"
android:layout_gravity="center_horizontal"
+ android:padding="10.0dp"
+ android:background="#ffffff"
android:id="@+id/barcode"
android:contentDescription="@string/barcodeImageDescription"
android:layout_weight="1.0"/>
diff --git a/app/src/main/res/layout/loyalty_card_view_layout.xml b/app/src/main/res/layout/loyalty_card_view_layout.xml
index 9c5e8ed54..c19dc91e7 100644
--- a/app/src/main/res/layout/loyalty_card_view_layout.xml
+++ b/app/src/main/res/layout/loyalty_card_view_layout.xml
@@ -45,6 +45,8 @@
android:layout_marginStart="15.0dip"
android:layout_marginEnd="15.0dip"
app:layout_constraintTop_toTopOf="parent"
+ android:padding="10.0dp"
+ android:background="#ffffff"
app:layout_constraintBottom_toTopOf="@+id/centerGuideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index ce263baae..9fca056bb 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -5,12 +5,10 @@
Přidat
ZAtím némáte žádné věrnostní karty. Klikněte na tlačítko "+" (plus) nahoře a začněte.\n\nLoyalty Card Locker umožňuje nosit své věrnostní karty v telefonu, takže jsou vždy na dosah.
-
Obchod
Poznámka
ID karty
Typ čárového kódu
-
Zrušit
Uložit
Naskenovat kartu
@@ -67,8 +65,6 @@
Revizní informace: %s
%s používá tyto knihovny třetích stran: %s
Vyberte čárový kód
- Zadejte hodnotu čárového kódu a potm vyberte kód, který představuje čárový kód, který je na kartě.
-
ID karty zkopírováno do schránky
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 7000a8620..9849360a0 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -2,15 +2,16 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
Loyalty Card Keychain
+ Suche
Neu
Sie haben noch keine Kundenkarte angelegt. Über den \"+\"-Button oben rechts können welche angelegt werden.\n\nDiese App ermöglicht es, Kundenkarten immer mit zu führen.
+ Es passen keine Kundenkarten zum Suchfilter. Bitte probiere verschiedene Begriffe aus.
Geschäft
Notiz
Kartennummer
Barcodeart
-
Abbrechen
Speichern
Karte scannen
@@ -40,7 +41,6 @@
Kein Geschäft angegeben
Keine Kartennummer angegeben
Karte konnte nicht gefunden werden
-
%1$s: %2$s
Import/Export
Import
@@ -79,8 +79,6 @@
%s verwendet folgenden Dritt-Ressourcen: %s
Barcode auswählen
- Fügen Sie die Kundennummer ein, anschließend wählen Sie die korrekte Barcodeart aus.
-
Nummer in die Zwischenablage kopiert
Vorschaubild für die Karte
@@ -113,4 +111,5 @@
Schriftgröße der Kartennummer
Schriftgröße der Notiz
Helligkeit bei Barcode Ansicht erhöhen
+ Barcodeausrichtung sperren
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index 1b182d896..267d4ba70 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -5,12 +5,10 @@
Προσθήκη
Δεν έχετε κάρτες προς το παρόν. Πατήστε το κουμπί \"+\" (συν) στο πάνω μέρος για να ξεκινήσετε.\n\nΤο Loyalty Card Keychain σας δίνει τη δυνατότητα να έχετε τις κάρτες σας στο τηλέφωνο σας, έτσι ώστε να τις έχετε πάντα μαζί σας.
-
Κατάστημα
Σημείωση
Κωδικός Κάρτας
Τύπος Barcode
-
Άκυρο
Αποθήκευση
Φωτογράφιση Κάρτας
@@ -40,7 +38,6 @@
Δεν δώσατε κατάστημα
Δεν δώσατε κωδικό κάρτας
Δεν ήταν δυνατό να εντοπιστεί κάρτα
-
%1$s: %2$s
Εισαγωγή/Εξαγωγή
Εισαγωγή
@@ -79,8 +76,6 @@
Το %s χρησιμοποιεί τους παρακάτω πόρους τρίτων: %s
Επιλέξτε Barcode
- Δώστε την τιμή του barcode και μετά επιλέξτε την εικόνα που αναπαριστά το barcode που θέλετε να χρησιμοποιείσετε
-
Ο κωδικός της κάρτας αντιγράφτηκε στο πρόχειρο
Μικρογραφία κάρτας
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index c7108c300..5c42bcb1c 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -5,12 +5,10 @@
Añadir
Actualmente no tienes ninguna tarjeta guardada. Presiona el botón \"+\" para comenzar.\n\nEsta cartera te permite llevar tus tarjetas de fidelización en tu teléfono para que estén siempre a tu alcance.
-
Tienda
Nota
ID de la Tarjeta
Tipo de Código de Barras
-
Cancelar
Guardar
Escanear Tarjeta
@@ -40,7 +38,6 @@
Establecimiento no especificado
ID de la Tarjeta no especificado
No se ha podido encontrar la tarjeta de fidelización
-
%1$s: %2$s
Importar/Exportar
Importar
@@ -79,8 +76,6 @@
%s utiliza los siguientes recursos de terceros: %s
Selecciona el Código de Barras
- Introduce el valor del código de barras y después presiona en una imagen para seleccionar el tipo de código de barras.
-
ID de la Tarjeta copiado al portapapeles
Miniatura para la tarjeta
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index dbb9112be..2f459495b 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -5,12 +5,10 @@
Ajouter
Aucune carte de fidélité enregistrée. Appuyez sur le bouton \"+\" (plus) pour commencer.\n\nLoyalty Card Locker vous permet d\'enregistrer vos cartes de fidélité sur votre téléphone pour toujours les avoir à portée de main.
-
Nom
Note
Numéro
Type de code-barres
-
Annuler
Enregistrer
Mode capture
@@ -40,7 +38,6 @@
Aucun nom n\'a été saisi
Aucun numéro n\'a été saisi
N\'a pas pu retrouver la carte de fidélité
-
%1$s: %2$s
Importer/Exporter
Importer
@@ -79,8 +76,6 @@
%s utilise les ressources-tierces suivantes : %s
Choisissez le code-barre
- Saisissez les chiffres du code-barres et sélectionnez l\'image qui le représente
-
Numéro de carte copié dans le presse-papier
Miniature pour la carte
diff --git a/app/src/main/res/values-he-rIL/strings.xml b/app/src/main/res/values-he-rIL/strings.xml
index a4aa03a41..d4ab5bac9 100644
--- a/app/src/main/res/values-he-rIL/strings.xml
+++ b/app/src/main/res/values-he-rIL/strings.xml
@@ -5,7 +5,6 @@
מזהה כרטיס
סוג ברקוד
-
ביטול
שמור
צלם כרטיס
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 7e17852d7..d25bc273e 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -2,14 +2,17 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
Carte fedeltà
+ Cerca
Aggiungi
- Non hai ancora alcuna tessera fedeltà al momento. Premi sul bottone "+" (più) in alto per incominciare.\n\nL\'app ti permette di portare con te le tue tessere fedeltà, così da averle sempre a disposizione.
+ Non hai ancora alcuna carta fedeltà. Premi sul bottone +(più) in alto per incominciare.\n\nL\'app ti permette di portare con te le tue carte fedeltà, così da averle sempre a disposizione.
+ Nessuna carta fedeltà corrisponde al filtro. Riprovare con altri valori
Negozio
Note
Codice
Tipo codice a barre
+ Questa carta non ha un codice a barre
Annulla
Salva
@@ -25,6 +28,7 @@
Conferma che vuoi eliminare questa carta.
Ok
Copia ID negli appunti
+ Condividi
Invia…
Aggiunto al launcher
@@ -39,11 +43,14 @@
Nessun negozio inserito
Nessun codice carta inserito
+ Impossibile trovare la carta
+ Impossibile analizzare l\'URI
+
%1$s: %2$s
Importa/Esporta
Importa
Esporta
- Fare il backup dei dati ti permette di spostare le tue tessere da un dispositivo ad un altro.
+ Fare il backup dei dati ti permette di spostare le tue carte da un dispositivo ad un altro.
Importato da: %1$s
Esportato in: %1$s
File mancante: %1$s
@@ -72,18 +79,20 @@
Pubblicato sotto licenza GPLv3.
Informazioni su %s
Versione: %s
- Informazione sulla revisione: %s
+ Informazione sulla versione: %s
%s usa le seguenti librerie di terze parti: %s
%s usa le seguenti risorse di terze parti: %s
Seleziona codice a barre
- Digita il valore del codice a barre, quindi seleziona l\'immagine che rappresenta il codice a barre che vuoi usare.
+ Immettere l\'ID della carta, quindi selezionare l\'immagine che rappresenta il codice a barre desiderato oppure selezionare “Questa carta non ha un codice a barre” per non valorizzare il dato.
ID della carta copiato negli appunti
- Incomincia introduzione
- Benvenuto in Carte fedeltà\n
- Gestisci le tue tessere direttamente dal telefono!\n\n
+ Miniatura carta
+
+ Introduzione
+ Benvenuto in Carte Fedeltà\n
+ Gestisci le tue carte direttamente dal telefono!\n\n
Aggiungi carte\n
Aggiungi una nuova carta premendo il + dall\'elenco delle carte.\n\n
Aggiungi carte\n
@@ -93,6 +102,27 @@
Backup\n
I dati delle tessere possono essere salvati. Per esportare o importare tessere premi Importa/Esporta nel menù nella schermata principale.\n\n
Feedback\n
- Questa app è gratuita, priva di pubblicità e open source. Guarda i dettagli premendo su Informazioni nella schermata principale.\n\nPer favore, lascia un feedback nell\'app store! (:
+ Questa app è gratuita, priva di pubblicità e open source. Guarda i dettagli premendo su \"Informazioni\" nella schermata principale.\n\nPer favore, lascia un feedback nell\'app store! (:
+ Cambia
+ Colore titolo
+ Colore scheda
+ Colore di sfondo del titolo carta
+ Colore del titolo carta
+
+ Impostazioni
+ Interfaccia utente
+ Tema
+ Tema del sistema
+ Tema chiaro
+ Tema scuro
+ Dimensione testo del titolo carta (in lista carte)
+ Dimensione testo delle note carta (in lista carte)
+ Dimensione testo del titolo carta
+ Dimensione testo dell\'ID carta
+ Dimensione testo delle note carta
+ Aumenta luminosità dello schermo quando apro un codice a barre
+ Blocca orientamento del codice a barre
+ Importa carte fedeltà
+ Voglio condividere una carta fedeltà con te
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index b0a48c6e5..3b5d639b2 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -5,12 +5,10 @@
Pridėti
Šiuo metu neturite nė vienos įvestos lojalumo kortelės. Paspauskite "+" (pliuso) pliuso mygtuką, kad pradėtumėte.\n\nLoyalty Card Locker leidžia Jums visada nešiotis lojalumo kortelių informaciją savo telefone ar planšetėje, taip jos visada pasiekiamos.
-
Parduotuvė
Užrašas
Kortelės ID
Brūkšninio kodo tipas
-
Atšaukti
Išsaugoti
Nufotografuoti kortelę
@@ -50,8 +48,6 @@
Revizijos informacija: %s
%s naudoja šias trečiosios šalies bibliotekas: %s
Pasirinkite brūkšninį kodą
- Enter the barcode value then select the image which represents the barcode you want to use
-
Kortelės ID nukopijuota į iškarpinę
diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml
index 0e2bf7147..0b80d7ff2 100644
--- a/app/src/main/res/values-nb-rNO/strings.xml
+++ b/app/src/main/res/values-nb-rNO/strings.xml
@@ -1,19 +1,15 @@
-
-
+
+
Kundekortknippe
Legg til
-
Du har ingen kundekort for øyeblikket. Klikk på \"+\" (pluss)-knappen øverst for å komme igang.\n\nDa har du dem alltid hendig.
-
Butikk
Merknad
Kort-ID
Strekkodetype
-
Avbryt
Lagre
- Fang opp kort
+ Les inn kort
Skriv inn kort
Rediger kort
Rediger
@@ -25,25 +21,19 @@
Bekreft at du ønsker å slette dette kortet.
OK
Kopier ID til utklippstavle
- Send…
+ Send…
Lagt til på hjemmeskjerm
-
Rediger kundekort
Legg til kundekort
Vis kundekort
Skann kortets strekkode
Kort-snarvei
Legg til et kort først
-
Bilde av kortets strekkode
-
Ingen butikk angitt
Ingen kort-ID innskrevet
Kunne ikke finne kundekort
-
%1$s: %2$s
- %1$s - %2$s
-
Import/eksport
Importer
Eksporter
@@ -57,9 +47,9 @@
Eksportert
Kunne ikke eksportere
Klarte ikke å eksportere: %1$s
- Importerer…
- Exporterer…
- Kunne ikke importere eller eksportere kort uten tilgang til ekstern lagring.
+ Importerer…
+ Exporterer…
+ Kan ikke importere eller eksportere kort uten tilgang til ekstern lagring
Data skrives til rotmappen i eksternt lagringsområde.
Importer fra filsystem
Velg spesifikk fil fra filsystemet.
@@ -70,57 +60,57 @@
Importer fra eksporteringsområde
Importer fra området i filsystemet eksporter skrives til.
Bruk eksporteringsplassering
-
- About
- Copyright 2016-%d Branden Archer
+ Om
+ Kopirett 2016-%d Branden Archer
Lisensiert GPLv3+.
- Om %s
- Versjon: %s
- Slippinformasjon: %s
- %s brukfer følgende tredjepartsbibliotek: %s
- %s bruker følgende tredjepartsressurser: %s
-
+ Om %s
+
+ Versjon: %s
+
+ Utgivelsesinfo: %s
+
+ %s brukfer følgende tredjepartsbibliotek: %s
+
+
+ %s bruker følgende tredjepartsressurser: %s
+
Velg strekkode
Skriv inn strekkodeverdien og velg så bildet som representerer strekkoden du ønsker å bruke.
-
Kort-ID kopiert til utklippstavle
-
Miniatyrbilde for kort
-
Start intro
Velkommen til Kundekortknippe\n
Håndter strekkodekodekundekort på din enhet.\n\n
Tillegg av kort\n
- Legg til et nytt kort ved å trykke på pluss-tegnet i kortlisten.\n\n
+ Legg til et nytt kort ved å trykke på + i kortlisten.
+\n
+\n
Tillegg av kort\n
- For å legge til en strekkode, ta bilde av den med kamera, eller skriv den inn manuelt.\n\n
+ Legg til strekkoder med kamera eller skriv dem inn manuelt.
+\n
+\n
Vis kort\n
For å vise et kort, klikk på butikknavnet fra hovedskjermen\n\n
Sikkerhetskopi\n
- Kortene kan sikkerhetskopieres. For å eksportere eller importere kortdata, trykk på \"Importer/eksporter\" i menyen på hovedsiden.\n\n
+ Kortene kan sikkerhetskopieres. For å eksportere eller importere kortdata, trykk på \"Importer/eksporter\" i hovedsidemenyen.
+\n
+\n
Tilbakemeldinger\n
- Dette programmet er reklamefri og gratis fri programvare. Se flere detaljer ved å trykke på \"Om\"-skjermen på hovedsiden.\n\nLevn en vurdering i programbutikken. (:
-
+ Dette programmet er reklamefri og gratis genenslig fri programvare. Se flere detaljer ved å trykke på \"Om\"-skjermen på hovedsiden.
+\n
+\nLevn en vurdering i programbutikken. (:
Endre
- Butikktekstfarge
+ Skriftstørrelse for butikktekst
Overskriftsfarge
Farge for butikktekstbakgrunn
Butikktekstfarge
-
Innstillinger
Brukergrensesnitt
Korttittelskriftstørrelse
- pref_card_title_list_font_size_sp
- Kortmerknadsskriftstørrelse
- pref_card_note_list_font_size_sp
- Korttittelskriftstørrelse
- pref_card_title_font_size_sp
- Kort-ID-skriftstørrelse
- pref_card_id_font_size_sp
- Kortmerknadsskriftstørrelse
- pref_card_note_font_size_sp
+ Skriftstørrelse for kortmerknadsliste
+ Skriftstørrelse for korttittel
+ Skriftstørrelse for kort-ID
+ Skriftstørrelse for kortmerknad
Lysere strekkodevisning
- pref_display_card_max_brightness
Lås strekkodesideretning
- pref_lock_barcode_orientation
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 11e70255f..b4c3d4930 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -2,44 +2,49 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
Klantenkaartkluis
+ Zoeken
Toevoegen
- Er zijn nog geen klantenkaarten aanwezig. Klik op de knop \"+\" (plus) om te beginnen.\n\nKlantenkaartenkluis beheert klantenkaarten op een smartphone of tablet, zodat ze altijd binnen handbereik zijn.
+ Je hebt nog geen klantenkaarten toegevoegd. Druk op de knop \'+\' (plus) om te beginnen.\n\nMet Klantenkaartkluis beheer je je klantenkaarten op je smartphone of tablet zodat ze altijd binnen handbereik zijn.
+ Er zijn geen kaarten die overeenkomen met je zoekopdracht. Probeer het opnieuw.
Winkel
- Opmerking
- Kaart-ID
- Barcodetype
+ Aantekening
+ Kaartnummer
+ Soort barcode
+ Deze kaart heeft geen barcode
Annuleren
Opslaan
Scan een kaart
- Voer een kaart in
+ Voer een kaartnummer in
Kaart bewerken
Bewerken
Verwijderen
Bevestigen
- Draaien blokkeren
- Draaien deblokkeren
+ Draaien niet toestaan
+ Draaien toestaan
Kaart verwijderen
Bevestig dat je deze kaart wilt verwijderen.
Oké
- ID kopiëren naar klembord
+ Kaartnummer kopiëren naar klembord
+ Delen
Versturen…
- Toegevoegd aan beginscherm
+ Toegevoegd aan startscherm
Klantenkaart bewerken
Klantenkaart toevoegen
- Klantenkaart bekijken
- Klantenkaart-barcode scannen
+ Klantenkaart tonen
+ Scan de barcode van de kaart
Kaartsnelkoppeling
- Er zijn geen kaarten; voeg er één toe.
+ Je hebt nog geen kaarten toegevoegd.
- Afbeelding van klantenkaart-barcode
+ Afbeelding van barcode
- Geen winkel ingevoerd
- Geen kaart-ID ingevoerd
- De klantenkaart kan niet worden opgevraagd.
+ Geen winkelnaam ingevoerd
+ Geen kaartnummer ingevoerd
+ De klantenkaart kan niet worden opgevraagd
+ Kan de import-uri niet verwerken
%1$s: %2$s
Importeren/Exporteren
@@ -58,7 +63,7 @@
Bezig met importeren…...
Bezig met exporteren…...
Het importeren of exporteren van kaarten is niet mogelijk zonder de machtiging \'externe opslag\'.
- De gegevens zijn weggeschreven naar de hoogste map op de externe opslag.
+ De gegevens worden weggeschreven naar de hoogste map op de externe opslag.
Importeren uit bestandssysteem
Kies een specifiek bestand uit het bestandssysteem.
Uit bestandssysteem
@@ -75,31 +80,31 @@
Over %s
Versie: %s
Versie-informatie: %s
- %s gebruikt de volgende bibliotheken van derde partijen: %s
- %s gebruikt de volgende bronnen van derde partijen: %s
+ %s gebruikt de volgende bibliotheken van externe partijen: %s
+ %s gebruikt de volgende bronnen van externe partijen: %s
- Barcode selecteren
- Voer de waarde van de barcode in en kies daarna de afbeelding van de barcode die je wilt gebruiken.
+ Barcode toevoegen
+ Voer de barcode in en kies daarna de afbeelding van de barcode die je wilt gebruiken., of druk op “Deze kaart heeft geen barcode” om geen barcode te gebruiken.
- Kaart-ID is gekopieerd naar het klembord
+ Kaartnummer is gekopieerd naar het klembord
- Voorbeeldminiatuur voor kaart
+ Miniatuurvoorbeeld van kaart
Rondleiding starten
Welkom bij Klantenkaartkluis\n
Beheer je op barcodes gebaseerde klantenkaarten op je telefoon!\n\n
Kaarten toevoegen\n
- Voeg een nieuwe kaart toe door in de kaartenlijst op de plus-knop te drukken.\n\n
+ Voeg een kaart toe door in de lijst met kaarten op de plus-knop te drukken.\n\n
Kaarten toevoegen\n
De barcode kan worden toegevoegd door deze handmatig in te voeren of te scannen met de camera.\n\n
Kaart tonen\n
- Als je een kaart wilt tonen, druk dan op het beginscherm op de naam van de winkel.\n\n
+ Toon een kaart door op het kaartoverzicht op de naam van de winkel te drukken.\n\n
Back-uppen\n
- De kaarten kunnen worden geback-upt. Als je kaarten wilt exporteren of importeren, druk dan in het menu op het hoofdscherm op Importeren/Exporteren.\n\n
+ Je kunt je kaarten back-uppen: druk in het menu op het kaartoverzicht op Importeren/Exporteren.\n\n
Feedback\n
- Deze app is gratis, advertentievrij en open source. Bekijk de details hiervan door op Over te drukken in het menu op het hoofdscherm.\n\nGeef feedback in de app-winkel! (:
+ Deze app is gratis, reclamevrij en open source. Bekijk alle details door op \'Over\' te drukken in het menu op het kaartoverzicht.\n\nGeef feedback in de app-winkel! (:
- Wijzigen
+ Aanpassen
Tekstkleur van winkelnaam
Kopkleur
Achtergrondkleur van winkeltekst
@@ -107,11 +112,17 @@
Instellingen
Uiterlijk en bediening
- Kaarttitel lijstlettertypegrootte
- Kaartnotitie lijstlettertypegrootte
- Kaarttitel-lettertypegrootte
- Kaart-ID lettertypegrootte
- Kaartnotitie lettertypegrootte
- Barcodeweergave lichter maken
+ Thema
+ Systeemthema
+ Licht
+ Donker
+ Lettergrootte van kaartnamen op de lijst
+ Lettergrootte van aantekeningen op de lijst
+ Lettergrootte van kaartnamen
+ Lettergrootte van kaartnummer
+ Lettergrootte van aantekeningen
+ Scherm helderder maken bij tonen van barcode
Barcode-oriëntatie vergrendelen
+ Klantenkaart importeren
+ Ik wil een klantenkaart met je delen
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index e7407b63b..d13acbb91 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -2,14 +2,17 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
Loyalty Card Keychain
+ Szukaj
Dodaj
W tej chwili nie masz żadnych kart lojalnościowych. Kliknij przycisk \"+\" (plus) u góry, aby rozpocząć. \n\nLoyalty Locker Card pozwala nosić karty lojalnościowe w telefonie, dzięki czemu są zawsze w zasięgu ręki.
+ Żadne karty lojalnościowe nie pasują do filtra wyszukiwania. Spróbuj użyć innych warunków.
Sklep
Notatka
Identyfikator karty
Typ kodu kreskowego
+ Ta karta nie ma kodu kreskowego
Anuluj
Zapisz
@@ -25,6 +28,7 @@
Potwierdź, że chcesz usunąć tę kartę.
OK
Skopiuj identyfikator do schowka
+ Udostępnij
Wyślij…
Dodano do ekranu głównego
@@ -40,6 +44,7 @@
Nie wprowadzono nazwy sklepu
Nie wprowadzono identyfikatora karty
Nie można wyszukać karty lojalnościowej
+ Nie można przeanalizować identyfikatora importu URI
%1$s: %2$s
Importuj/Eksportuj
@@ -79,20 +84,20 @@
%s wykorzystuje następujące zasoby osób trzecich: %s
Wybierz kod kreskowy
- Wprowadź wartość kodu kreskowego, a następnie wybierz obraz, który reprezentuje kod kreskowy, który chcesz użyć
+ Wprowadź identyfikator karty, a następnie wybierz obraz reprezentujący kod kreskowy, którego chcesz użyć, lub wybierz “Ta karta nie ma kodu kreskowego”, aby nie używać kodu kreskowego.
Skopiowano identyfikator karty do schowka
Miniaturka karty
Pokaż ekran powitalny
- Witamy w Loyalty Card Keychain\n
+ Witaj w Loyalty Card Keychain\n
Zarządzaj kartami sklepowymi/lojalnościowymi opartymi na kodzie kreskowym na swoim telefonie!\n\n
Dodawanie kart\n
Dodaj nową kartę, dotykając znaku plus z listy kart. \n\n
- Dodawanie kart \n
+ Dodawanie kart\n
Aby dodać kod kreskowy, wykonaj zdjęcie aparatem lub wpisz ręcznie. \n\n
- Pokaż kartę \n
+ Pokaż kartę\n
Aby wyświetlić kartę, na głównym ekranie kliknij nazwę sklepu \n\n
Kopia zapasowa\n
Karty można zarchiwizować. Aby wyeksportować lub zaimportować dane karty, dotknij opcji Importuj/eksportuj w menu na stronie głównej. \n\n
@@ -107,6 +112,10 @@
Ustawienia
Interfejs użytkownika
+ Motyw
+ Systemowy
+ Jasny
+ Ciemny
Rozmiar czcionki listy tytułów kart
Rozmiar czcionki listy kart
Rozmiar czcionki tytułu karty
@@ -114,4 +123,6 @@
Rozmiar czcionki notatki karty
Rozjaśnij widok kodu kreskowego
Zablokuj autoobracanie kodów kreskowych
+ Importuj kartę lojalnościową
+ Chcę udostępnić Ci kartę lojalnościową
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index c53f54da3..2de672891 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -2,14 +2,17 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
Карты лояльности
+ Поиск
Добавить карту
Пока нет ни одной карты. Нажмите на кнопку «+» (плюс) сверху для добавления.\n\n«Карты лояльности» позволяют хранить карты скидок в телефоне, так что они всегда будут под рукой.
+ Карт не найдено, попробуйте поискать по-другому.
Магазин
Примечание
Номер карты
Тип штрих-кода
+ Эта карта без штрихкода
Отменить
Сохранить
@@ -25,6 +28,7 @@
Пожалуйста подтвердите удаление карты.
ОК
Скопировать номер карты в буфер обмена
+ Переслать
Отправить…
Карта добавлена на главный экран.
@@ -40,6 +44,7 @@
Название магазина не указано
Номер карты не указан
Карта не найдена
+ Не удалось разобрать импортируемый URI
%1$s: %2$s
Импорт/Экспорт
@@ -79,7 +84,7 @@
%s использует следующие сторонние ресурсы: %s
Выбор штрих-кода
- Введите значение и выберете вид штрих-кода
+ Введите ID карты и выберите тип штрих-кода.
Номер карты скопирован в буфер обмена
@@ -107,6 +112,10 @@
Настройки
Внешний вид
+ Тема
+ Системная тема
+ Светлая тема
+ Тёмная тема
Размер шрифта названия карты для списка
Размер шрифта примечания для списка
Размер шрифта названия карты
@@ -114,4 +123,6 @@
Размер шрифта примечания
Максимальная яркость при показе карты
Портретная ориентация экрана при показе карты
+ Импортировать карту
+ Я хочу поделиться картой с вами
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 6935b8232..73cd286f3 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -5,12 +5,10 @@
Pridať
Zatiaľ nemáte žiadne vernostné karty. Kliknite na tlačidlo \"+\" (plus) vyššie a začnite.\n\nAplikácia Vernostné karty umožňuje nosiť svoje vernostné karty v telefóne, kde sú vždy na dosah.
-
Obchod
Poznámka
ID karty
Typ čiarového kódu
-
Zrušiť
Uložiť
Zosnímať kartu
@@ -40,7 +38,6 @@
Nebol zadaný obchod
Nebolo zadané ID karty
Nie je možné vyhľadať vernostnú kartu
-
%1$s: %2$s
Import/Export
Import
@@ -79,8 +76,6 @@
%s používa tieto knižnice tretích strán: %s
Vyberte čiarový kód
- Zadajte čiarový kód a vyberte obrázok reprezentujúci čiarový kód, ktorý chcete použiť
-
ID karty skopírované do schránky
Náhľad karty
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index 96f51ed59..efeb06d23 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -5,12 +5,10 @@
Dodaj
Trenutno nimate shranjene nobene kartice zvestobe. Kliknite \"+\" (plus) na vrhu, da jih dodate.\n\n Aplikacija Kartice zvestobe Vam omogoča, da imate kartice zvestobe shranjene na Vašem telefonu in vedno v dosegu roke.
-
Shrani
Zabeležka
Št. kartice
Vrsta črne kode
-
Prekliči
Shrani
Slikaj kartico
@@ -40,7 +38,6 @@
Ime trgovine ni bilo vnešeno
Številka kartice ni bila vnešena
Te kartice zvestobe ni bilo moč najti
-
%1$s:%2$s
Uvozi/izvozi
Uvozi
@@ -79,8 +76,6 @@
%suporablja sledeče zunanje vire: %s
Izberite črtno kodo
- Vnesite vrednost črtne kode in izberite črtno kodo, ki jo želite uporabljati
-
Številka kartice je bila kopirana v odložišče
Ikona kartice
diff --git a/app/src/test/java/protect/card_locker/ImportExportActivityTest.java b/app/src/test/java/protect/card_locker/ImportExportActivityTest.java
index 8da091476..3da64ff7d 100644
--- a/app/src/test/java/protect/card_locker/ImportExportActivityTest.java
+++ b/app/src/test/java/protect/card_locker/ImportExportActivityTest.java
@@ -71,7 +71,7 @@ public class ImportExportActivityTest
if(isInstalled)
{
- registerIntentHandler(Intent.ACTION_PICK);
+ registerIntentHandler(Intent.ACTION_GET_CONTENT);
}
Activity activity = Robolectric.setupActivity(ImportExportActivity.class);
@@ -102,7 +102,7 @@ public class ImportExportActivityTest
if(isInstalled)
{
- registerIntentHandler(Intent.ACTION_GET_CONTENT);
+ registerIntentHandler(Intent.ACTION_PICK);
}
Activity activity = Robolectric.setupActivity(ImportExportActivity.class);
diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java
index 015c43395..d6f6a3438 100644
--- a/app/src/test/java/protect/card_locker/ImportURITest.java
+++ b/app/src/test/java/protect/card_locker/ImportURITest.java
@@ -12,6 +12,7 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.io.InvalidObjectException;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static protect.card_locker.DBHelper.LoyaltyCardDbIds;
@@ -53,6 +54,30 @@ public class ImportURITest {
assertEquals(card.store, parsedCard.store);
}
+ @Test
+ public void ensureNoCrashOnMissingHeaderFields() throws InvalidObjectException
+ {
+ // Generate card
+ db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, null, null);
+
+ // Get card
+ LoyaltyCard card = db.getLoyaltyCard(1);
+
+ // Card to URI
+ Uri cardUri = importURIHelper.toUri(card);
+
+ // Parse URI
+ LoyaltyCard parsedCard = importURIHelper.parse(cardUri);
+
+ // Compare everything
+ assertEquals(card.barcodeType, parsedCard.barcodeType);
+ assertEquals(card.cardId, parsedCard.cardId);
+ assertEquals(card.note, parsedCard.note);
+ assertEquals(card.store, parsedCard.store);
+ assertNull(parsedCard.headerColor);
+ assertNull(parsedCard.headerTextColor);
+ }
+
@Test
public void failToParseInvalidUri()
{
diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java
index c4a1f2a7f..4c5ccf73e 100644
--- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java
+++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java
@@ -1,6 +1,7 @@
package protect.card_locker;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.robolectric.Shadows.shadowOf;
@@ -22,6 +23,7 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.widget.TextViewCompat;
@@ -37,7 +39,6 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController;
import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowPackageManager;
import org.robolectric.shadows.ShadowActivity;
import org.robolectric.shadows.ShadowLog;
@@ -727,11 +728,70 @@ public class LoyaltyCardViewActivityTest
// Check if the card switches correctly
tabLayout.getTabAt(1).select();
+ checkAllFields(activity, ViewMode.VIEW_CARD, "store", "note2", BARCODE_DATA, BARCODE_TYPE);
+ }
+
+ @Test
+ public void checkBarcodeFullscreenWorkflow()
+ {
+ ActivityController activityController = createActivityWithLoyaltyCard(false);
+
+ Activity activity = (Activity)activityController.get();
+ DBHelper db = new DBHelper(activity);
+ db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE);
+
activityController.start();
activityController.visible();
activityController.resume();
- checkAllFields(activity, ViewMode.VIEW_CARD, "store", "note2", BARCODE_DATA, BARCODE_TYPE);
+ assertEquals(false, activity.isFinishing());
+
+ ImageView barcodeImage = activity.findViewById(R.id.barcode);
+ View collapsingToolbarLayout = activity.findViewById(R.id.collapsingToolbarLayout);
+
+ // Android should not be in fullscreen mode
+ int uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility();
+ assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions);
+ assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions);
+
+ // Elements should be visible
+ assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
+
+ // Click barcode to toggle fullscreen
+ barcodeImage.performClick();
+
+ // Android should be in fullscreen mode
+ uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility();
+ assertEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions);
+ assertEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions);
+
+ // Elements should not be visible
+ assertEquals(View.GONE, collapsingToolbarLayout.getVisibility());
+
+ // Clicking barcode again should deactivate fullscreen mode
+ barcodeImage.performClick();
+ uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility();
+ assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions);
+ assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions);
+ assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
+
+ // Another click back to fullscreen
+ barcodeImage.performClick();
+ uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility();
+ assertEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions);
+ assertEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions);
+ assertEquals(View.GONE, collapsingToolbarLayout.getVisibility());
+
+ // In full screen mode, back button should disable fullscreen
+ activity.onBackPressed();
+ uiOptions = activity.getWindow().getDecorView().getSystemUiVisibility();
+ assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY, uiOptions);
+ assertNotEquals(uiOptions | View.SYSTEM_UI_FLAG_FULLSCREEN, uiOptions);
+ assertEquals(View.VISIBLE, collapsingToolbarLayout.getVisibility());
+
+ // Pressing back when not in full screen should finish activity
+ activity.onBackPressed();
+ assertEquals(true, activity.isFinishing());
}
@Test