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