mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2025-12-24 15:47:53 -05:00
Compare commits
346 Commits
fix/deprec
...
v2.16.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7f43f8a2b | ||
|
|
3cbd69c6c7 | ||
|
|
1cff0e29e4 | ||
|
|
e718ffb77d | ||
|
|
c2d711650f | ||
|
|
f205045916 | ||
|
|
6ed6e683b5 | ||
|
|
1612bed309 | ||
|
|
ac8a2c445c | ||
|
|
82298d0d50 | ||
|
|
916515f8b2 | ||
|
|
b5e6d40857 | ||
|
|
efef397870 | ||
|
|
377438b6ae | ||
|
|
27443db945 | ||
|
|
420886bc3f | ||
|
|
86a01d36db | ||
|
|
329293fa7c | ||
|
|
26bbea7377 | ||
|
|
50385c6e0e | ||
|
|
43c45c9c0c | ||
|
|
17cdc58b19 | ||
|
|
4960b77ca3 | ||
|
|
a7c6ac695e | ||
|
|
63dfe27b25 | ||
|
|
2ec44046a8 | ||
|
|
0363bc67e4 | ||
|
|
affa434679 | ||
|
|
ded151830e | ||
|
|
e1b604c1d2 | ||
|
|
45d9353b54 | ||
|
|
ceceda560a | ||
|
|
088c25dbad | ||
|
|
54fc1e9106 | ||
|
|
1ce4216584 | ||
|
|
78d0bc7bb7 | ||
|
|
fc4bb134a9 | ||
|
|
cecfcd4714 | ||
|
|
c3364d4592 | ||
|
|
df29abbebd | ||
|
|
d4f30f798b | ||
|
|
61578a6016 | ||
|
|
13695b5c37 | ||
|
|
97d1dcc7eb | ||
|
|
5efea8c1e8 | ||
|
|
c2607cc6a2 | ||
|
|
6c70e77a75 | ||
|
|
d67c896ffe | ||
|
|
c821040c25 | ||
|
|
946a56e921 | ||
|
|
b1ea2c4687 | ||
|
|
745dd109fb | ||
|
|
9f047f3dbd | ||
|
|
68afe746eb | ||
|
|
ebd3b0f7f5 | ||
|
|
163de3653e | ||
|
|
1507694bae | ||
|
|
6d134009be | ||
|
|
c1d2a30931 | ||
|
|
e5cb6fa1a7 | ||
|
|
2188280ada | ||
|
|
fdc8cb0adf | ||
|
|
b79286d1a6 | ||
|
|
d9f0ea8346 | ||
|
|
a262120bc3 | ||
|
|
446131a87d | ||
|
|
3466ba6591 | ||
|
|
5b3c6559b4 | ||
|
|
4680b53f86 | ||
|
|
8423ea9b59 | ||
|
|
1d8b2d82ed | ||
|
|
784bd299e8 | ||
|
|
c8df7a7a2e | ||
|
|
cec2058f49 | ||
|
|
c910a96005 | ||
|
|
f3c7a75963 | ||
|
|
04e0b9ba34 | ||
|
|
1b8e9e4d7c | ||
|
|
7a556e320b | ||
|
|
db706a02d3 | ||
|
|
8e452ed6bd | ||
|
|
a9e574a9b4 | ||
|
|
f24d11403c | ||
|
|
e1c658ac2a | ||
|
|
a5901700b4 | ||
|
|
bf4cd7a961 | ||
|
|
79ca5196d0 | ||
|
|
b24d641aa6 | ||
|
|
84051555b6 | ||
|
|
48ff57d0fc | ||
|
|
3a6828b34b | ||
|
|
efd36d061f | ||
|
|
a5ef8ae914 | ||
|
|
37ce61646b | ||
|
|
5e59315017 | ||
|
|
fbed1348aa | ||
|
|
438e9f09a3 | ||
|
|
aee9176518 | ||
|
|
70f7768cee | ||
|
|
bf7e35c361 | ||
|
|
71a6fb2f56 | ||
|
|
8d799fce26 | ||
|
|
ae6e98b876 | ||
|
|
44d8597fa5 | ||
|
|
de47b7b1d2 | ||
|
|
631d65708e | ||
|
|
62ffcbc948 | ||
|
|
14ef3086a4 | ||
|
|
011b0f7ecc | ||
|
|
89eaac12d5 | ||
|
|
2fbe5a821c | ||
|
|
5516acecce | ||
|
|
6163de3086 | ||
|
|
4658896304 | ||
|
|
e0d9e2b2dd | ||
|
|
7dd2291376 | ||
|
|
bc69b82029 | ||
|
|
1502ac1923 | ||
|
|
0552acae26 | ||
|
|
18e30d2726 | ||
|
|
1646db24df | ||
|
|
6a6a8fff2b | ||
|
|
a0f8f6e6b5 | ||
|
|
3dda3aa1a5 | ||
|
|
ac6bffcc67 | ||
|
|
93fac2e726 | ||
|
|
9b724ebcc7 | ||
|
|
540ef6d345 | ||
|
|
64fa790836 | ||
|
|
2c18b0dd19 | ||
|
|
f570f2746a | ||
|
|
4c9c717792 | ||
|
|
db4408108a | ||
|
|
f75df30493 | ||
|
|
0f914414af | ||
|
|
3468293f5f | ||
|
|
c9b8b2df9e | ||
|
|
3d138c9504 | ||
|
|
72b95988e5 | ||
|
|
188c147173 | ||
|
|
6224a13d17 | ||
|
|
f393b9b618 | ||
|
|
6fa6cdfadf | ||
|
|
bc7f44f60a | ||
|
|
5579784b0a | ||
|
|
a20f8b58f8 | ||
|
|
fc8d0ac1aa | ||
|
|
edf953cdad | ||
|
|
7290c4aa28 | ||
|
|
f28e614c7f | ||
|
|
616b23d3a8 | ||
|
|
5fda774626 | ||
|
|
30941a9e16 | ||
|
|
9289d3cf0b | ||
|
|
0ecc36a83c | ||
|
|
d3b8569ef7 | ||
|
|
19722af65f | ||
|
|
329be8abbb | ||
|
|
9aa6acccda | ||
|
|
ba05c6872b | ||
|
|
ca1fc214ff | ||
|
|
2ebb3e1837 | ||
|
|
019c5e232d | ||
|
|
dda527a72f | ||
|
|
df0bbe773f | ||
|
|
a320e1c776 | ||
|
|
607669a74c | ||
|
|
f50dfeac9e | ||
|
|
ef46f6a00b | ||
|
|
eafedb52ad | ||
|
|
423384fae6 | ||
|
|
09e96eba53 | ||
|
|
4b0a4a7db9 | ||
|
|
2371738a15 | ||
|
|
e22d11f8e9 | ||
|
|
917e60a7f5 | ||
|
|
4d09f66ac6 | ||
|
|
622aa96464 | ||
|
|
9887e19ec9 | ||
|
|
a308634868 | ||
|
|
44c3c8b32f | ||
|
|
69835ff0c9 | ||
|
|
8270bc6c03 | ||
|
|
9e8ea3384e | ||
|
|
c8b258cd62 | ||
|
|
f23c73a67a | ||
|
|
8ba3295ba1 | ||
|
|
6e3d61304f | ||
|
|
9b7b3c4b9f | ||
|
|
b993221af5 | ||
|
|
86c029fe92 | ||
|
|
fbe857a5cf | ||
|
|
1717560c05 | ||
|
|
02f85cd49a | ||
|
|
69a6afe611 | ||
|
|
94fa6d19c4 | ||
|
|
211ee9ce69 | ||
|
|
e818be3d50 | ||
|
|
6620369616 | ||
|
|
9d9ce1d11f | ||
|
|
76ba3c333e | ||
|
|
0429086c57 | ||
|
|
4a4b534813 | ||
|
|
8cfae80ea8 | ||
|
|
517a9cf37a | ||
|
|
242f4b7ad9 | ||
|
|
ce1a210650 | ||
|
|
9d369a8e6f | ||
|
|
240f73f743 | ||
|
|
3cf1579bb0 | ||
|
|
171fb83249 | ||
|
|
603b02911b | ||
|
|
ab5eb62bc1 | ||
|
|
40b2b5c96f | ||
|
|
6efe0f6c54 | ||
|
|
00a78c6030 | ||
|
|
0db46614a8 | ||
|
|
32d139f756 | ||
|
|
c2c8b780c8 | ||
|
|
057a58a3d6 | ||
|
|
551fbed8ad | ||
|
|
468c86b5ea | ||
|
|
50cb3146bf | ||
|
|
0853bd88a4 | ||
|
|
3bbe8e9524 | ||
|
|
ebc2e07fc4 | ||
|
|
ad368e68eb | ||
|
|
a1d4bb746f | ||
|
|
44473ae921 | ||
|
|
2c3d9f714c | ||
|
|
13121e9869 | ||
|
|
14116324fb | ||
|
|
d207197055 | ||
|
|
a36775c6fd | ||
|
|
cae95d2577 | ||
|
|
1c95a767c0 | ||
|
|
26fd3e3a58 | ||
|
|
e79be213fc | ||
|
|
2010b9a25c | ||
|
|
355c2f9ceb | ||
|
|
43daeec5c3 | ||
|
|
5ddf77dd63 | ||
|
|
64fb91d644 | ||
|
|
4921d9f4b0 | ||
|
|
8f9dd584b1 | ||
|
|
04f2cffeb3 | ||
|
|
8ca899b7d1 | ||
|
|
c0f3e814a0 | ||
|
|
1eb8d03b74 | ||
|
|
ec0dc6bd4c | ||
|
|
cd7b3d5970 | ||
|
|
55843899da | ||
|
|
d639013bea | ||
|
|
45785b66e7 | ||
|
|
6a20366cc9 | ||
|
|
4856e9e971 | ||
|
|
4141856287 | ||
|
|
12196fc9b1 | ||
|
|
c73e7924ad | ||
|
|
acf83087f4 | ||
|
|
8ef507c011 | ||
|
|
d36f82df05 | ||
|
|
5f50e86234 | ||
|
|
733c9885e8 | ||
|
|
4b7acefece | ||
|
|
a6b950e2e1 | ||
|
|
c21f8098ef | ||
|
|
3ccce45f17 | ||
|
|
f096f63352 | ||
|
|
babd6ff9bb | ||
|
|
3c5dea6fbf | ||
|
|
3bf7d827a1 | ||
|
|
eea03dd516 | ||
|
|
92ceb7ee50 | ||
|
|
aba5dbfb38 | ||
|
|
1ba4839544 | ||
|
|
cca68cfcc5 | ||
|
|
d2043c331a | ||
|
|
b57bc7d7b6 | ||
|
|
23fb6d9c6a | ||
|
|
2498ee0354 | ||
|
|
eb38d0a8aa | ||
|
|
cb0deaae27 | ||
|
|
8220c8b32e | ||
|
|
8458a2e79a | ||
|
|
d436a20b23 | ||
|
|
c24f3b6ece | ||
|
|
d5cb1a79d2 | ||
|
|
7040dbf997 | ||
|
|
d1685f2557 | ||
|
|
36237d9b3e | ||
|
|
f968aba926 | ||
|
|
2d7960ddc4 | ||
|
|
4cdd168b8c | ||
|
|
9de54872f3 | ||
|
|
f8f0edd8d3 | ||
|
|
3703f3d1ac | ||
|
|
3bbd16e3a9 | ||
|
|
a2947d1f58 | ||
|
|
4b94dd8b48 | ||
|
|
62376769cd | ||
|
|
e057a24526 | ||
|
|
25cc1a1160 | ||
|
|
d7ed4aeff8 | ||
|
|
58ebb7c7bf | ||
|
|
be2c586820 | ||
|
|
8a0b2d9460 | ||
|
|
4b1583ce4c | ||
|
|
83c611f4ae | ||
|
|
0a7082bed5 | ||
|
|
94c84c60f5 | ||
|
|
4ce7f475f4 | ||
|
|
75057d3c41 | ||
|
|
62fce7231d | ||
|
|
d201d2e98f | ||
|
|
36ff4ca9ae | ||
|
|
a7a775bc01 | ||
|
|
d217ac8752 | ||
|
|
d376569ba1 | ||
|
|
1a09b1bd5e | ||
|
|
ec1f4f8fbd | ||
|
|
3883617a34 | ||
|
|
2e7c8f39a7 | ||
|
|
7fc2bdc46e | ||
|
|
c141a8986c | ||
|
|
70ad884aa3 | ||
|
|
2bd8aed853 | ||
|
|
78f5908c33 | ||
|
|
2f43febe95 | ||
|
|
17d23de518 | ||
|
|
af831cfdbd | ||
|
|
4476646317 | ||
|
|
958dc29689 | ||
|
|
21216f3aa6 | ||
|
|
808dd73221 | ||
|
|
e3bd82f4a2 | ||
|
|
2cbb105c21 | ||
|
|
40c364a5e8 | ||
|
|
8c484078b4 | ||
|
|
f93f3b912d | ||
|
|
934ef22a8c | ||
|
|
732679f3f8 | ||
|
|
2e7cbcbac9 | ||
|
|
eb5161a382 | ||
|
|
b765d77145 | ||
|
|
ad344c7d12 |
7
.github/workflows/autoclose-needs-info.yml
vendored
7
.github/workflows/autoclose-needs-info.yml
vendored
@@ -17,7 +17,8 @@ jobs:
|
||||
days-before-close: 90
|
||||
close-issue-message: 'This issue is missing necessary information and cannot be worked on in its current state. It has therefore been closed to keep the issue tracker clean. If you have more information, feel free to reopen it.'
|
||||
close-pr-message: 'This PR is missing necessary information and cannot be merged in its current state. It has therefore been closed to keep the issue tracker clean. If you have more information, feel free to reopen it.'
|
||||
only-labels: 'needs info'
|
||||
stale-issue-label: 'needs info'
|
||||
stale-pr-label: 'needs info'
|
||||
only-labels: 'state: needs info'
|
||||
stale-issue-label: 'state: needs info'
|
||||
stale-pr-label: 'state: needs info'
|
||||
remove-stale-when-updated: false
|
||||
enable-statistics: true
|
||||
|
||||
49
CHANGELOG.md
49
CHANGELOG.md
@@ -1,8 +1,55 @@
|
||||
# Changelog
|
||||
|
||||
## Unreleased - 96
|
||||
## v2.16.1 - 105 (2022-03-25)
|
||||
|
||||
- Fix gray block appearing on invalid value for barcode
|
||||
- Stocard import fixes
|
||||
|
||||
## v2.16.0 - 104 (2022-03-09)
|
||||
|
||||
- Save card detail expansion state
|
||||
- Minor UI fixes
|
||||
|
||||
## v2.15.2 - 103 (2022-02-11)
|
||||
|
||||
- Fix manual language selection not applying everywhere
|
||||
- Fix crash in edit view on regionless locale
|
||||
|
||||
## v2.15.1 - 102 (2022-02-10)
|
||||
|
||||
- Various minor fixes
|
||||
- Fix crash when using Norwegian translation
|
||||
|
||||
## v2.15.0 - 101 (2022-02-06)
|
||||
|
||||
- Fix cropper not using theme colour
|
||||
- Fix minor theming issues
|
||||
- Add pure black dark theme for OLED screens
|
||||
|
||||
## v2.14.1 - 100 (2022-01-15)
|
||||
|
||||
- Hide search, expand and sort icons until there is at least 1 card
|
||||
- Various theming fixes
|
||||
|
||||
## v2.14.0 - 99 (2022-01-14)
|
||||
|
||||
- Material You redesign
|
||||
|
||||
## v2.13.1 - 98 (2022-01-09)
|
||||
|
||||
- Fix various TalkBack-related bugs
|
||||
|
||||
## v2.13.0 - 97 (2022-01-03)
|
||||
|
||||
- Fixed pressing the save button multiple times creating multiple entries
|
||||
- Lower card header size when hiding details to fit even more cards
|
||||
- Restructure edit screen
|
||||
- Improve star icon contrast in main view
|
||||
|
||||
## v2.12.0 - 96 (2021-12-23)
|
||||
|
||||
- Add CODE 93 support
|
||||
- Various minor bugfixes and improvements
|
||||
|
||||
## v2.11.2 - 95 (2021-12-04)
|
||||
|
||||
|
||||
3
FUNDING.yml
Normal file
3
FUNDING.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
github: TheLastProject
|
||||
custom:
|
||||
- "https://paypal.me/sylviavanos"
|
||||
@@ -18,8 +18,8 @@ android {
|
||||
applicationId "me.hackerchick.catima"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 31
|
||||
versionCode 95
|
||||
versionName "2.11.2"
|
||||
versionCode 105
|
||||
versionName "2.16.1"
|
||||
|
||||
vectorDrawables.useSupportLibrary true
|
||||
multiDexEnabled true
|
||||
@@ -80,17 +80,17 @@ android {
|
||||
|
||||
dependencies {
|
||||
// AndroidX
|
||||
implementation 'androidx.appcompat:appcompat:1.4.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
|
||||
implementation 'androidx.appcompat:appcompat:1.4.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
|
||||
implementation 'androidx.exifinterface:exifinterface:1.3.3'
|
||||
implementation 'androidx.palette:palette:1.0.0'
|
||||
implementation 'androidx.preference:preference:1.1.1'
|
||||
implementation 'com.google.android.material:material:1.4.0'
|
||||
implementation 'com.github.yalantis:ucrop:2.2.7'
|
||||
implementation 'androidx.preference:preference:1.2.0'
|
||||
implementation 'com.google.android.material:material:1.5.0'
|
||||
implementation 'com.github.yalantis:ucrop:2.2.8'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
|
||||
// Splash Screen
|
||||
implementation 'androidx.core:core-splashscreen:1.0.0-alpha02'
|
||||
implementation 'androidx.core:core-splashscreen:1.0.0-beta01'
|
||||
|
||||
// Third-party
|
||||
implementation 'com.journeyapps:zxing-android-embedded:4.3.0@aar'
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="com.yalantis.ucrop.UCropActivity"
|
||||
android:name=".UCropWrapper"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
|
||||
<provider
|
||||
@@ -134,7 +134,5 @@
|
||||
<action android:name="android.service.controls.ControlsProviderService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -151,13 +151,13 @@ public class AboutActivity extends CatimaAppCompatActivity implements View.OnCli
|
||||
} else if (id == R.id.translate) {
|
||||
url = "https://hosted.weblate.org/engage/catima/";
|
||||
} else if (id == R.id.license) {
|
||||
url = "https://github.com/TheLastProject/Catima/blob/master/LICENSE";
|
||||
url = "https://github.com/CatimaLoyalty/Android/blob/master/LICENSE";
|
||||
} else if (id == R.id.repo) {
|
||||
url = "https://github.com/TheLastProject/Catima/";
|
||||
url = "https://github.com/CatimaLoyalty/Android/";
|
||||
} else if (id == R.id.privacy) {
|
||||
url = "https://catima.app/privacy-policy/";
|
||||
} else if (id == R.id.report_error) {
|
||||
url = "https://github.com/TheLastProject/Catima/issues";
|
||||
url = "https://github.com/CatimaLoyalty/Android/issues";
|
||||
} else if (id == R.id.rate) {
|
||||
url = "https://play.google.com/store/apps/details?id=me.hackerchick.catima";
|
||||
} else {
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
@@ -46,7 +47,7 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
|
||||
BarcodeImageWriterTask(
|
||||
Context context, ImageView imageView, String cardIdString,
|
||||
CatimaBarcode barcodeFormat, TextView textView,
|
||||
boolean showFallback, Runnable callback
|
||||
boolean showFallback, Runnable callback, boolean roundCornerPadding
|
||||
) {
|
||||
mContext = context;
|
||||
|
||||
@@ -60,18 +61,32 @@ public class BarcodeImageWriterTask implements CompatCallable<Bitmap> {
|
||||
cardId = cardIdString;
|
||||
format = barcodeFormat;
|
||||
|
||||
int padding = 0;
|
||||
// Some barcodes already have internal whitespace and shouldn't get extra padding
|
||||
// TODO: Get rid of this hack by somehow detecting this extra whitespace
|
||||
if (roundCornerPadding && !barcodeFormat.hasInternalPadding()) {
|
||||
padding = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, context.getResources().getDisplayMetrics()));
|
||||
}
|
||||
|
||||
final int MAX_WIDTH = getMaxWidth(format);
|
||||
|
||||
int tempImageHeight;
|
||||
int tempImageWidth;
|
||||
|
||||
if (imageView.getWidth() < MAX_WIDTH) {
|
||||
imageHeight = imageView.getHeight();
|
||||
imageWidth = imageView.getWidth();
|
||||
tempImageHeight = imageView.getHeight();
|
||||
tempImageWidth = imageView.getWidth();
|
||||
} else {
|
||||
// Scale down the image to reduce the memory needed to produce it
|
||||
imageWidth = MAX_WIDTH;
|
||||
tempImageWidth = MAX_WIDTH;
|
||||
double ratio = (double) MAX_WIDTH / (double) imageView.getWidth();
|
||||
imageHeight = (int) (imageView.getHeight() * ratio);
|
||||
tempImageHeight = (int) (imageView.getHeight() * ratio);
|
||||
}
|
||||
|
||||
// Ensure space for padding if wanted
|
||||
imageWidth = tempImageWidth;
|
||||
imageHeight = tempImageHeight - padding;
|
||||
|
||||
this.showFallback = showFallback;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,6 +76,7 @@ public class BarcodeSelectorAdapter extends ArrayAdapter<CatimaBarcodeWithValue>
|
||||
final CatimaBarcode format = CatimaBarcode.fromName(formatType);
|
||||
|
||||
image.setImageBitmap(null);
|
||||
image.setClipToOutline(true);
|
||||
|
||||
if (image.getHeight() == 0) {
|
||||
// The size of the ImageView is not yet available as it has not
|
||||
@@ -89,13 +90,13 @@ public class BarcodeSelectorAdapter extends ArrayAdapter<CatimaBarcodeWithValue>
|
||||
|
||||
Log.d(TAG, "Generating barcode for type " + formatType);
|
||||
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getContext(), image, cardId, format, text, true, null);
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getContext(), image, cardId, format, text, true, null, true);
|
||||
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Log.d(TAG, "Generating barcode for type " + formatType);
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getContext(), image, cardId, format, text, true, null);
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getContext(), image, cardId, format, text, true, null, true);
|
||||
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
@@ -16,9 +18,10 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
/**
|
||||
* The configuration screen for creating a shortcut.
|
||||
*/
|
||||
public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
|
||||
public class CardShortcutConfigure extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener {
|
||||
static final String TAG = "Catima";
|
||||
private SQLiteDatabase mDatabase;
|
||||
private LoyaltyCardCursorAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
@@ -33,6 +36,7 @@ public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyC
|
||||
setContentView(R.layout.simple_toolbar_list_activity);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
toolbar.setTitle(R.string.shortcutSelectCard);
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
// If there are no cards, bail
|
||||
if (DBHelper.getLoyaltyCardCount(mDatabase) == 0) {
|
||||
@@ -47,8 +51,8 @@ public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyC
|
||||
}
|
||||
|
||||
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
final LoyaltyCardCursorAdapter adapter = new LoyaltyCardCursorAdapter(this, cardCursor, this);
|
||||
cardList.setAdapter(adapter);
|
||||
mAdapter = new LoyaltyCardCursorAdapter(this, cardCursor, this);
|
||||
cardList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
private void onClickAction(int position) {
|
||||
@@ -65,6 +69,26 @@ public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyC
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu inputMenu) {
|
||||
getMenuInflater().inflate(R.menu.card_details_menu, inputMenu);
|
||||
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
|
||||
return super.onCreateOptionsMenu(inputMenu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem inputItem) {
|
||||
int id = inputItem.getItemId();
|
||||
|
||||
if (id == R.id.action_unfold) {
|
||||
mAdapter.showDetails(!mAdapter.showingDetails());
|
||||
invalidateOptionsMenu();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(inputItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRowClicked(int inputPosition) {
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.util.TypedValue;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class CatimaAppCompatActivity extends AppCompatActivity {
|
||||
|
||||
SharedPreferences pref;
|
||||
HashMap<String, Integer> supportedThemes;
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context base) {
|
||||
// Apply chosen language
|
||||
@@ -22,32 +17,28 @@ public class CatimaAppCompatActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resources.Theme getTheme() {
|
||||
if (supportedThemes == null) {
|
||||
supportedThemes = new HashMap<>();
|
||||
supportedThemes.put(getString(R.string.settings_key_blue_theme), R.style.AppTheme_blue);
|
||||
supportedThemes.put(getString(R.string.settings_key_brown_theme), R.style.AppTheme_brown);
|
||||
supportedThemes.put(getString(R.string.settings_key_green_theme), R.style.AppTheme_green);
|
||||
supportedThemes.put(getString(R.string.settings_key_grey_theme), R.style.AppTheme_grey);
|
||||
supportedThemes.put(getString(R.string.settings_key_magenta_theme), R.style.AppTheme_magenta);
|
||||
supportedThemes.put(getString(R.string.settings_key_pink_theme), R.style.AppTheme_pink);
|
||||
supportedThemes.put(getString(R.string.settings_key_sky_blue_theme), R.style.AppTheme_sky_blue);
|
||||
supportedThemes.put(getString(R.string.settings_key_violet_theme), R.style.AppTheme_violet);
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
// XXX splash screen activity has to do this after installing splash screen before view inflate
|
||||
if (!this.getClass().getSimpleName().equals(MainActivity.class.getSimpleName())) {
|
||||
Utils.patchColors(this);
|
||||
}
|
||||
|
||||
Resources.Theme theme = super.getTheme();
|
||||
pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
||||
String themeName = pref.getString(getString(R.string.setting_key_theme_color), getString(R.string.settings_key_catima_theme));
|
||||
|
||||
theme.applyStyle(Utils.mapGetOrDefault(supportedThemes, themeName, R.style.AppTheme_NoActionBar), true);
|
||||
|
||||
return theme;
|
||||
}
|
||||
|
||||
public int getThemeColor() {
|
||||
TypedValue typedValue = new TypedValue();
|
||||
Resources.Theme theme = getTheme();
|
||||
theme.resolveAttribute(R.attr.colorPrimary, typedValue, true);
|
||||
return typedValue.data;
|
||||
@Override
|
||||
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
// material 3 designer does not consider status bar colors
|
||||
// XXX changing this in onCreate causes issues with the splash screen activity, so doing this here
|
||||
boolean darkMode = Utils.isDarkModeEnabled(this);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
getWindow().setStatusBarColor(Color.TRANSPARENT);
|
||||
getWindow().getDecorView().setSystemUiVisibility(darkMode ? 0 : View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
} else {
|
||||
// icons are always white back then
|
||||
getWindow().setStatusBarColor(darkMode ? Color.TRANSPARENT : Color.argb(127, 0, 0, 0));
|
||||
}
|
||||
// XXX android 9 and below has a nasty rendering bug if the theme was patched earlier
|
||||
Utils.postPatchColors(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,11 @@ public class CatimaBarcode {
|
||||
|| mBarcodeFormat == BarcodeFormat.QR_CODE;
|
||||
}
|
||||
|
||||
public boolean hasInternalPadding() {
|
||||
return mBarcodeFormat == BarcodeFormat.PDF_417
|
||||
|| mBarcodeFormat == BarcodeFormat.QR_CODE;
|
||||
}
|
||||
|
||||
public BarcodeFormat format() {
|
||||
return mBarcodeFormat;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import protect.card_locker.preferences.Settings;
|
||||
|
||||
public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListItemViewHolder> {
|
||||
Settings mSettings;
|
||||
private final Context mContext;
|
||||
public final Context mContext;
|
||||
private final GroupAdapterListener mListener;
|
||||
SQLiteDatabase mDatabase;
|
||||
|
||||
@@ -23,7 +23,7 @@ public class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.Gro
|
||||
super(inputCursor, DBHelper.LoyaltyCardDbGroups.ORDER);
|
||||
setHasStableIds(true);
|
||||
mSettings = new Settings(inputContext);
|
||||
mContext = inputContext.getApplicationContext();
|
||||
mContext = inputContext;
|
||||
mListener = inputListener;
|
||||
mDatabase = new DBHelper(inputContext).getReadableDatabase();
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ import java.util.List;
|
||||
import protect.card_locker.async.TaskHandler;
|
||||
import protect.card_locker.importexport.DataFormat;
|
||||
import protect.card_locker.importexport.ImportExportResult;
|
||||
import protect.card_locker.importexport.ImportExportResultType;
|
||||
|
||||
public class ImportExportActivity extends CatimaAppCompatActivity {
|
||||
private static final String TAG = "Catima";
|
||||
@@ -97,7 +98,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
|
||||
startExport(writer, uri, exportPassword.toCharArray(), true);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Failed to export file: " + result.toString(), e);
|
||||
onExportComplete(ImportExportResult.GenericFailure, uri);
|
||||
onExportComplete(new ImportExportResult(ImportExportResultType.GenericFailure, result.toString()), uri);
|
||||
}
|
||||
|
||||
});
|
||||
@@ -175,7 +176,7 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
|
||||
startImport(reader, uri, importDataFormat, password, true);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Failed to import file: " + uri.toString(), e);
|
||||
onImportComplete(ImportExportResult.GenericFailure, uri, importDataFormat);
|
||||
onImportComplete(new ImportExportResult(ImportExportResultType.GenericFailure, e.toString()), uri, importDataFormat);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,56 +358,51 @@ public class ImportExportActivity extends CatimaAppCompatActivity {
|
||||
builder.show();
|
||||
}
|
||||
|
||||
private String buildResultDialogMessage(ImportExportResult result, boolean isImport) {
|
||||
int messageId;
|
||||
|
||||
if (result.resultType() == ImportExportResultType.Success) {
|
||||
messageId = isImport ? R.string.importSuccessful : R.string.exportSuccessful;
|
||||
} else {
|
||||
messageId = isImport ? R.string.importFailed : R.string.exportFailed;
|
||||
}
|
||||
|
||||
StringBuilder messageBuilder = new StringBuilder(getResources().getString(messageId));
|
||||
if (result.developerDetails() != null) {
|
||||
messageBuilder.append("\n\n");
|
||||
messageBuilder.append(getResources().getString(R.string.include_if_asking_support));
|
||||
messageBuilder.append("\n\n");
|
||||
messageBuilder.append(result.developerDetails());
|
||||
}
|
||||
|
||||
return messageBuilder.toString();
|
||||
}
|
||||
|
||||
private void onImportComplete(ImportExportResult result, Uri path, DataFormat dataFormat) {
|
||||
if (result == ImportExportResult.BadPassword) {
|
||||
ImportExportResultType resultType = result.resultType();
|
||||
|
||||
if (resultType == ImportExportResultType.BadPassword) {
|
||||
retryWithPassword(dataFormat, path);
|
||||
return;
|
||||
}
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
|
||||
int messageId;
|
||||
|
||||
if (result == ImportExportResult.Success) {
|
||||
builder.setTitle(R.string.importSuccessfulTitle);
|
||||
messageId = R.string.importSuccessful;
|
||||
} else {
|
||||
builder.setTitle(R.string.importFailedTitle);
|
||||
messageId = R.string.importFailed;
|
||||
}
|
||||
|
||||
final String message = getResources().getString(messageId);
|
||||
|
||||
builder.setMessage(message);
|
||||
builder.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
builder.setTitle(resultType == ImportExportResultType.Success ? R.string.importSuccessfulTitle : R.string.importFailedTitle);
|
||||
builder.setMessage(buildResultDialogMessage(result, true));
|
||||
builder.setNeutralButton(R.string.ok, (dialog, which) -> dialog.dismiss());
|
||||
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
private void onExportComplete(ImportExportResult result, final Uri path) {
|
||||
ImportExportResultType resultType = result.resultType();
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
|
||||
int messageId;
|
||||
|
||||
if (result == ImportExportResult.Success) {
|
||||
builder.setTitle(R.string.exportSuccessfulTitle);
|
||||
messageId = R.string.exportSuccessful;
|
||||
} else {
|
||||
builder.setTitle(R.string.exportFailedTitle);
|
||||
messageId = R.string.exportFailed;
|
||||
}
|
||||
|
||||
final String message = getResources().getString(messageId);
|
||||
|
||||
builder.setMessage(message);
|
||||
builder.setTitle(resultType == ImportExportResultType.Success ? R.string.exportSuccessfulTitle : R.string.exportFailedTitle);
|
||||
builder.setMessage(buildResultDialogMessage(result, false));
|
||||
builder.setNeutralButton(R.string.ok, (dialog, which) -> dialog.dismiss());
|
||||
|
||||
if (result == ImportExportResult.Success) {
|
||||
if (resultType == ImportExportResultType.Success) {
|
||||
final CharSequence sendLabel = ImportExportActivity.this.getResources().getText(R.string.sendLabel);
|
||||
|
||||
builder.setPositiveButton(sendLabel, (dialog, which) -> {
|
||||
|
||||
@@ -16,6 +16,7 @@ import java.nio.charset.StandardCharsets;
|
||||
import protect.card_locker.async.CompatCallable;
|
||||
import protect.card_locker.importexport.DataFormat;
|
||||
import protect.card_locker.importexport.ImportExportResult;
|
||||
import protect.card_locker.importexport.ImportExportResultType;
|
||||
import protect.card_locker.importexport.MultiFormatExporter;
|
||||
import protect.card_locker.importexport.MultiFormatImporter;
|
||||
|
||||
@@ -63,19 +64,20 @@ public class ImportExportTask implements CompatCallable<ImportExportResult> {
|
||||
private ImportExportResult performImport(Context context, InputStream stream, SQLiteDatabase database, char[] password) {
|
||||
ImportExportResult importResult = MultiFormatImporter.importData(context, database, stream, format, password);
|
||||
|
||||
Log.i(TAG, "Import result: " + importResult.name());
|
||||
Log.i(TAG, "Import result: " + importResult);
|
||||
|
||||
return importResult;
|
||||
}
|
||||
|
||||
private ImportExportResult performExport(Context context, OutputStream stream, SQLiteDatabase database, char[] password) {
|
||||
ImportExportResult result = ImportExportResult.GenericFailure;
|
||||
ImportExportResult result;
|
||||
|
||||
try {
|
||||
OutputStreamWriter writer = new OutputStreamWriter(stream, StandardCharsets.UTF_8);
|
||||
result = MultiFormatExporter.exportData(context, database, stream, format, password);
|
||||
writer.close();
|
||||
} catch (IOException e) {
|
||||
result = new ImportExportResult(ImportExportResultType.GenericFailure, e.toString());
|
||||
Log.e(TAG, "Unable to export file", e);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,9 @@ import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.TextPaint;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.core.graphics.PaintCompat;
|
||||
|
||||
/**
|
||||
* Original from https://github.com/andOTP/andOTP/blob/master/app/src/main/java/org/shadowice/flocke/andotp/Utilities/LetterBitmap.java
|
||||
@@ -48,7 +51,6 @@ class LetterBitmap {
|
||||
public LetterBitmap(Context context, String displayName, String key, int tileLetterFontSize,
|
||||
int width, int height, Integer backgroundColor, Integer textColor) {
|
||||
TextPaint paint = new TextPaint();
|
||||
paint.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD));
|
||||
|
||||
if (textColor != null) {
|
||||
paint.setColor(textColor);
|
||||
@@ -58,6 +60,8 @@ class LetterBitmap {
|
||||
|
||||
paint.setTextAlign(Paint.Align.CENTER);
|
||||
paint.setAntiAlias(true);
|
||||
paint.setTextSize(tileLetterFontSize);
|
||||
paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
|
||||
|
||||
if (backgroundColor == null) {
|
||||
mColor = getDefaultColor(context, key);
|
||||
@@ -66,22 +70,30 @@ class LetterBitmap {
|
||||
}
|
||||
|
||||
mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
|
||||
String firstChar = displayName.substring(0, 1);
|
||||
String firstChar = displayName.substring(0, 1).toUpperCase();
|
||||
int firstCharEnd = 2;
|
||||
while (firstCharEnd <= displayName.length()) {
|
||||
// test for the longest render-able string
|
||||
String test = displayName.substring(0, firstCharEnd);
|
||||
if (PaintCompat.hasGlyph(paint, test)) {
|
||||
firstChar = test;
|
||||
}
|
||||
firstCharEnd++;
|
||||
}
|
||||
|
||||
Log.d("LetterBitmap", "using sequence " + firstChar + " to render first char which has length " + firstChar.length());
|
||||
|
||||
final Canvas c = new Canvas();
|
||||
c.setBitmap(mBitmap);
|
||||
c.drawColor(mColor);
|
||||
|
||||
char[] firstCharArray = new char[1];
|
||||
firstCharArray[0] = firstChar.toUpperCase().charAt(0);
|
||||
paint.setTextSize(tileLetterFontSize);
|
||||
|
||||
// The bounds that enclose the letter
|
||||
Rect bounds = new Rect();
|
||||
paint.getTextBounds(firstChar, 0, firstChar.length(), bounds);
|
||||
c.drawText(firstChar,
|
||||
0, firstChar.length(),
|
||||
width / 2.0f, (height - (bounds.bottom + bounds.top)) / 2.0f
|
||||
, paint);
|
||||
|
||||
paint.getTextBounds(firstCharArray, 0, 1, bounds);
|
||||
c.drawText(firstCharArray, 0, 1, width / 2.0f, height / 2.0f
|
||||
+ (bounds.bottom - bounds.top) / 2.0f, paint);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -35,30 +36,48 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
private int mCurrentSelectedIndex = -1;
|
||||
Settings mSettings;
|
||||
boolean mDarkModeEnabled;
|
||||
private final Context mContext;
|
||||
public final Context mContext;
|
||||
private final CardAdapterListener mListener;
|
||||
protected SparseBooleanArray mSelectedItems;
|
||||
protected SparseBooleanArray mAnimationItemsIndex;
|
||||
private boolean mReverseAllAnimations = false;
|
||||
private boolean mShowDetails = true;
|
||||
private boolean mShowDetails;
|
||||
|
||||
public LoyaltyCardCursorAdapter(Context inputContext, Cursor inputCursor, CardAdapterListener inputListener) {
|
||||
super(inputCursor, DBHelper.LoyaltyCardDbIds.ID);
|
||||
setHasStableIds(true);
|
||||
mSettings = new Settings(inputContext);
|
||||
mContext = inputContext.getApplicationContext();
|
||||
mContext = inputContext;
|
||||
mListener = inputListener;
|
||||
mSelectedItems = new SparseBooleanArray();
|
||||
mAnimationItemsIndex = new SparseBooleanArray();
|
||||
|
||||
mDarkModeEnabled = Utils.isDarkModeEnabled(inputContext);
|
||||
|
||||
refreshState();
|
||||
|
||||
swapCursor(inputCursor);
|
||||
}
|
||||
|
||||
public void refreshState() {
|
||||
// Retrieve user details preference
|
||||
SharedPreferences cardDetailsPref = mContext.getSharedPreferences(
|
||||
mContext.getString(R.string.sharedpreference_card_details),
|
||||
Context.MODE_PRIVATE);
|
||||
mShowDetails = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show), true);
|
||||
}
|
||||
|
||||
public void showDetails(boolean show) {
|
||||
mShowDetails = show;
|
||||
notifyDataSetChanged();
|
||||
|
||||
// Store in Shared Preference to restore next adapter launch
|
||||
SharedPreferences cardDetailsPref = mContext.getSharedPreferences(
|
||||
mContext.getString(R.string.sharedpreference_card_details),
|
||||
Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor cardDetailsPrefEditor = cardDetailsPref.edit();
|
||||
cardDetailsPrefEditor.putBoolean(mContext.getString(R.string.sharedpreference_card_details_show), show);
|
||||
cardDetailsPrefEditor.apply();
|
||||
}
|
||||
|
||||
public boolean showingDetails() {
|
||||
@@ -101,6 +120,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
inputHolder.setExpiryField(null);
|
||||
}
|
||||
|
||||
setHeaderHeight(inputHolder, mShowDetails);
|
||||
Bitmap cardIcon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
|
||||
if (cardIcon != null) {
|
||||
inputHolder.mCardIcon.setImageBitmap(cardIcon);
|
||||
@@ -109,7 +129,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
inputHolder.mCardIcon.setImageBitmap(Utils.generateIcon(mContext, loyaltyCard.store, loyaltyCard.headerColor).getLetterTile());
|
||||
inputHolder.mCardIcon.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
}
|
||||
inputHolder.setIconBackgroundColor(loyaltyCard.headerColor != null ? loyaltyCard.headerColor : ContextCompat.getColor(mContext, R.color.colorPrimary));
|
||||
inputHolder.setIconBackgroundColor(loyaltyCard.headerColor != null ? loyaltyCard.headerColor : R.attr.colorPrimary);
|
||||
|
||||
inputHolder.toggleStar(loyaltyCard.starStatus != 0, itemSelected(inputCursor.getPosition()));
|
||||
|
||||
@@ -121,6 +141,19 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
inputHolder.mRow.requestLayout();
|
||||
}
|
||||
|
||||
private void setHeaderHeight(LoyaltyCardListItemViewHolder inputHolder, boolean expanded) {
|
||||
int iconHeight;
|
||||
if (expanded) {
|
||||
iconHeight = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
} else {
|
||||
iconHeight = (int) mContext.getResources().getDimension(R.dimen.cardThumbnailSize);
|
||||
}
|
||||
|
||||
inputHolder.mIconLayout.getLayoutParams().height = expanded ? 0 : iconHeight;
|
||||
inputHolder.mCardIcon.getLayoutParams().height = iconHeight;
|
||||
inputHolder.mTickIcon.getLayoutParams().height = iconHeight;
|
||||
}
|
||||
|
||||
private void applyClickEvents(LoyaltyCardListItemViewHolder inputHolder, final int inputPosition) {
|
||||
inputHolder.mRow.setOnClickListener(inputView -> mListener.onRowClicked(inputPosition));
|
||||
|
||||
@@ -200,7 +233,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
|
||||
public TextView mStoreField, mNoteField, mBalanceField, mExpiryField;
|
||||
public ImageView mCardIcon, mStarBackground, mStarBorder, mTickIcon;
|
||||
public MaterialCardView mRow;
|
||||
public MaterialCardView mRow, mIconLayout;
|
||||
public ConstraintLayout mStar;
|
||||
public View mDivider;
|
||||
|
||||
@@ -215,6 +248,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
mBalanceField = inputView.findViewById(R.id.balance);
|
||||
mExpiryField = inputView.findViewById(R.id.expiry);
|
||||
|
||||
mIconLayout = inputView.findViewById(R.id.icon_layout);
|
||||
mCardIcon = inputView.findViewById(R.id.thumbnail);
|
||||
mStar = inputView.findViewById(R.id.star);
|
||||
mStarBackground = inputView.findViewById(R.id.star_background);
|
||||
@@ -302,10 +336,10 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
dark = !mDarkModeEnabled;
|
||||
}
|
||||
if (dark) {
|
||||
mStarBorder.setImageResource(R.drawable.ic_unstarred_black);
|
||||
mStarBorder.setImageResource(R.drawable.ic_unstarred_white);
|
||||
mStarBackground.setImageResource(R.drawable.ic_starred_black);
|
||||
} else {
|
||||
mStarBorder.setImageResource(R.drawable.ic_unstarred_white);
|
||||
mStarBorder.setImageResource(R.drawable.ic_unstarred_black);
|
||||
mStarBackground.setImageResource(R.drawable.ic_starred_white);
|
||||
}
|
||||
if (enable) {
|
||||
|
||||
@@ -36,6 +36,7 @@ import android.widget.Toast;
|
||||
|
||||
import com.google.android.material.chip.Chip;
|
||||
import com.google.android.material.chip.ChipGroup;
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
@@ -68,6 +69,7 @@ import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.content.FileProvider;
|
||||
@@ -134,6 +136,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
|
||||
Button enterButton;
|
||||
|
||||
Toolbar toolbar;
|
||||
|
||||
int loyaltyCardId;
|
||||
boolean updateLoyaltyCard;
|
||||
String cardId;
|
||||
@@ -153,7 +157,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
AlertDialog confirmExitDialog = null;
|
||||
|
||||
boolean validBalance = true;
|
||||
Runnable warnOnInvalidBarcodeType;
|
||||
Runnable barcodeImageGenerationFinishedCallback;
|
||||
|
||||
HashMap<String, Currency> currencies = new HashMap<>();
|
||||
|
||||
@@ -208,6 +212,10 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
private void updateTempState(LoyaltyCardField fieldName, Object value) {
|
||||
tempLoyaltyCard = updateTempState(tempLoyaltyCard, fieldName, value);
|
||||
|
||||
if (initDone && (fieldName == LoyaltyCardField.cardId || fieldName == LoyaltyCardField.barcodeId || fieldName == LoyaltyCardField.barcodeType)) {
|
||||
generateBarcode();
|
||||
}
|
||||
|
||||
hasChanged = true;
|
||||
}
|
||||
|
||||
@@ -223,7 +231,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
|
||||
importLoyaltyCardUri = intent.getData();
|
||||
|
||||
Log.d(TAG, "View activity: id=" + loyaltyCardId
|
||||
Log.d(TAG, "Edit activity: id=" + loyaltyCardId
|
||||
+ ", updateLoyaltyCard=" + updateLoyaltyCard);
|
||||
}
|
||||
|
||||
@@ -286,7 +294,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.loyalty_card_edit_activity);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
@@ -315,6 +323,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
barcodeIdField = findViewById(R.id.barcodeIdField);
|
||||
barcodeTypeField = findViewById(R.id.barcodeTypeField);
|
||||
barcodeImage = findViewById(R.id.barcode);
|
||||
barcodeImage.setClipToOutline(true);
|
||||
barcodeImageLayout = findViewById(R.id.barcodeLayout);
|
||||
barcodeCaptureLayout = findViewById(R.id.barcodeCaptureLayout);
|
||||
cardImageFrontHolder = findViewById(R.id.frontImageHolder);
|
||||
@@ -323,11 +332,10 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
cardImageBack = findViewById(R.id.backImage);
|
||||
|
||||
enterButton = findViewById(R.id.enterButton);
|
||||
cardImageFront.setBackgroundColor(getThemeColor());
|
||||
cardImageBack.setBackgroundColor(getThemeColor());
|
||||
|
||||
warnOnInvalidBarcodeType = () -> {
|
||||
barcodeImageGenerationFinishedCallback = () -> {
|
||||
if (!(boolean) barcodeImage.getTag()) {
|
||||
barcodeImageLayout.setVisibility(View.GONE);
|
||||
Toast.makeText(LoyaltyCardEditActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
};
|
||||
@@ -441,14 +449,10 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
|
||||
for (int i = locales.size() - 1; i >= 0; i--) {
|
||||
Locale locale = locales.get(i);
|
||||
String currencySymbol = Currency.getInstance(locale).getSymbol();
|
||||
currencyList.remove(currencySymbol);
|
||||
currencyList.add(0, currencySymbol);
|
||||
currencyPrioritizeLocaleSymbols(currencyList, locale);
|
||||
}
|
||||
} else {
|
||||
String currencySymbol = Currency.getInstance(mSystemLocale).getSymbol();
|
||||
currencyList.remove(currencySymbol);
|
||||
currencyList.add(0, currencySymbol);
|
||||
currencyPrioritizeLocaleSymbols(currencyList, mSystemLocale);
|
||||
}
|
||||
|
||||
currencyList.add(0, getString(R.string.points));
|
||||
@@ -524,8 +528,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
} else {
|
||||
updateTempState(LoyaltyCardField.barcodeId, s.toString());
|
||||
}
|
||||
|
||||
generateOrHideBarcode();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -556,8 +558,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
} catch (IllegalArgumentException e) {
|
||||
}
|
||||
}
|
||||
|
||||
generateOrHideBarcode();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -669,7 +669,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
});
|
||||
|
||||
mCropperOptions = new UCrop.Options();
|
||||
setCropperTheme();
|
||||
}
|
||||
|
||||
// ucrop 2.2.6 initial aspect ratio is glitched when 0x0 is used as the initial ratio option
|
||||
@@ -689,13 +688,24 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
new AspectRatio(getResources().getString(R.string.ucrop_label_original).toUpperCase(), sourceWidth, sourceHeight),
|
||||
new AspectRatio(getResources().getString(R.string.card).toUpperCase(), 85.6f, 53.98f)
|
||||
);
|
||||
}
|
||||
|
||||
private void setCropperTheme() {
|
||||
mCropperOptions.setToolbarColor(getThemeColor());
|
||||
mCropperOptions.setStatusBarColor(getThemeColor());
|
||||
mCropperOptions.setToolbarWidgetColor(Color.WHITE);
|
||||
mCropperOptions.setActiveControlsWidgetColor(getThemeColor());
|
||||
// Fix theming
|
||||
|
||||
int colorPrimary = MaterialColors.getColor(this, R.attr.colorPrimary, ContextCompat.getColor(this, R.color.md_theme_light_primary));
|
||||
int colorOnPrimary = MaterialColors.getColor(this, R.attr.colorOnPrimary, ContextCompat.getColor(this, R.color.md_theme_light_onPrimary));
|
||||
int colorSurface = MaterialColors.getColor(this, R.attr.colorSurface, ContextCompat.getColor(this, R.color.md_theme_light_surface));
|
||||
int colorOnSurface = MaterialColors.getColor(this, R.attr.colorOnSurface, ContextCompat.getColor(this, R.color.md_theme_light_onSurface));
|
||||
int colorBackground = MaterialColors.getColor(this, android.R.attr.colorBackground, ContextCompat.getColor(this, R.color.md_theme_light_onSurface));
|
||||
mCropperOptions.setToolbarColor(colorSurface);
|
||||
mCropperOptions.setStatusBarColor(colorSurface);
|
||||
mCropperOptions.setToolbarWidgetColor(colorOnSurface);
|
||||
mCropperOptions.setRootViewBackgroundColor(colorBackground);
|
||||
// set tool tip to be the darker of primary color
|
||||
if (Utils.isDarkModeEnabled(this)) {
|
||||
mCropperOptions.setActiveControlsWidgetColor(colorOnPrimary);
|
||||
} else {
|
||||
mCropperOptions.setActiveControlsWidgetColor(colorPrimary);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -845,10 +855,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
// Generate random header color
|
||||
if (tempLoyaltyCard.headerColor == null) {
|
||||
// Select a random color to start out with.
|
||||
TypedArray colors = getResources().obtainTypedArray(R.array.letter_tile_colors);
|
||||
final int color = (int) (Math.random() * colors.length());
|
||||
updateTempState(LoyaltyCardField.headerColor, colors.getColor(color, Color.BLACK));
|
||||
colors.recycle();
|
||||
updateTempState(LoyaltyCardField.headerColor, Utils.getRandomHeaderColor(this));
|
||||
}
|
||||
|
||||
// It can't be null because we set it in updateTempState but SpotBugs insists it can be
|
||||
@@ -889,7 +896,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
hasChanged = hadChanges;
|
||||
}
|
||||
|
||||
generateOrHideBarcode();
|
||||
generateBarcode();
|
||||
|
||||
enterButton.setOnClickListener(new EditCardIdAndBarcode());
|
||||
barcodeImage.setOnClickListener(new EditCardIdAndBarcode());
|
||||
@@ -909,7 +916,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
protected void setColorFromIcon() {
|
||||
Object icon = thumbnail.getTag();
|
||||
if (icon != null && (icon instanceof Bitmap)) {
|
||||
updateTempState(LoyaltyCardField.headerColor, new Palette.Builder((Bitmap) icon).generate().getDominantColor(tempLoyaltyCard.headerColor != null ? tempLoyaltyCard.headerColor : ContextCompat.getColor(this, R.color.colorPrimary)));
|
||||
updateTempState(LoyaltyCardField.headerColor, Utils.getHeaderColorFromImage((Bitmap) icon, tempLoyaltyCard.headerColor != null ? tempLoyaltyCard.headerColor : R.attr.colorPrimary));
|
||||
} else {
|
||||
Log.d("setColorFromIcon", "attempting header color change from icon but icon does not exist");
|
||||
}
|
||||
@@ -1243,6 +1250,11 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
}
|
||||
|
||||
private void doSave() {
|
||||
if (isFinishing()) {
|
||||
// If we are done saving, ignore any queued up save button presses
|
||||
return;
|
||||
}
|
||||
|
||||
if (tempStoredOldBarcodeValue != null) {
|
||||
askBarcodeChange(this::doSave);
|
||||
return;
|
||||
@@ -1389,36 +1401,40 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
}
|
||||
}
|
||||
}
|
||||
mCropperLauncher.launch(
|
||||
UCrop.of(
|
||||
sourceUri,
|
||||
destUri
|
||||
).withOptions(mCropperOptions)
|
||||
.getIntent(this)
|
||||
);
|
||||
Intent ucropIntent = UCrop.of(
|
||||
sourceUri,
|
||||
destUri
|
||||
).withOptions(mCropperOptions)
|
||||
.getIntent(this);
|
||||
ucropIntent.setClass(this, UCropWrapper.class);
|
||||
for (int i = 0; i < toolbar.getChildCount(); i++) {
|
||||
// send toolbar font details to ucrop wrapper
|
||||
View child = toolbar.getChildAt(i);
|
||||
if (child instanceof AppCompatTextView) {
|
||||
AppCompatTextView childTextView = (AppCompatTextView) child;
|
||||
ucropIntent.putExtra(UCropWrapper.UCROP_TOOLBAR_TYPEFACE_STYLE, childTextView.getTypeface().getStyle());
|
||||
break;
|
||||
}
|
||||
}
|
||||
mCropperLauncher.launch(ucropIntent);
|
||||
}
|
||||
|
||||
private void showBarcode() {
|
||||
barcodeImageLayout.setVisibility(View.VISIBLE);
|
||||
}
|
||||
private void generateBarcode() {
|
||||
if (tempLoyaltyCard == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
private void hideBarcode() {
|
||||
barcodeImageLayout.setVisibility(View.GONE);
|
||||
}
|
||||
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
|
||||
|
||||
private void generateOrHideBarcode() {
|
||||
String cardIdString = tempLoyaltyCard.barcodeId != null ? tempLoyaltyCard.barcodeId : tempLoyaltyCard.cardId;
|
||||
CatimaBarcode barcodeFormat = tempLoyaltyCard.barcodeType;
|
||||
|
||||
if (barcodeFormat == null || cardIdString.isEmpty() || !barcodeFormat.isSupported()) {
|
||||
hideBarcode();
|
||||
} else {
|
||||
generateBarcode(cardIdString, barcodeFormat);
|
||||
if (cardIdString == null || barcodeFormat == null) {
|
||||
barcodeImageLayout.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void generateBarcode(String cardIdString, CatimaBarcode barcodeFormat) {
|
||||
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
|
||||
barcodeImageLayout.setVisibility(View.VISIBLE);
|
||||
|
||||
if (barcodeImage.getHeight() == 0) {
|
||||
Log.d(TAG, "ImageView size is not known known at start, waiting for load");
|
||||
@@ -1431,17 +1447,15 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
|
||||
Log.d(TAG, "ImageView size now known");
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, warnOnInvalidBarcodeType);
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, barcodeImageGenerationFinishedCallback, true);
|
||||
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Log.d(TAG, "ImageView size known known, creating barcode");
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, warnOnInvalidBarcodeType);
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, barcodeImageGenerationFinishedCallback, true);
|
||||
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
|
||||
}
|
||||
|
||||
showBarcode();
|
||||
}
|
||||
|
||||
private void generateIcon(String store) {
|
||||
@@ -1471,32 +1485,36 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
|
||||
}
|
||||
|
||||
View cardPart = findViewById(R.id.cardPart);
|
||||
View barcodePart = findViewById(R.id.barcodePart);
|
||||
View optionsPart = findViewById(R.id.optionsPart);
|
||||
View picturesPart = findViewById(R.id.picturesPart);
|
||||
|
||||
if (getString(R.string.card).equals(part)) {
|
||||
cardPart.setVisibility(View.VISIBLE);
|
||||
barcodePart.setVisibility(View.GONE);
|
||||
picturesPart.setVisibility(View.GONE);
|
||||
|
||||
// Explicitly hide barcode (fixes blurriness on redraw)
|
||||
hideBarcode();
|
||||
} else if (getString(R.string.barcode).equals(part)) {
|
||||
cardPart.setVisibility(View.GONE);
|
||||
barcodePart.setVisibility(View.VISIBLE);
|
||||
optionsPart.setVisibility(View.GONE);
|
||||
picturesPart.setVisibility(View.GONE);
|
||||
|
||||
// Redraw barcode due to size change (Visibility.GONE sets it to 0)
|
||||
generateOrHideBarcode();
|
||||
generateBarcode();
|
||||
} else if (getString(R.string.options).equals(part)) {
|
||||
cardPart.setVisibility(View.GONE);
|
||||
optionsPart.setVisibility(View.VISIBLE);
|
||||
picturesPart.setVisibility(View.GONE);
|
||||
} else if (getString(R.string.photos).equals(part)) {
|
||||
cardPart.setVisibility(View.GONE);
|
||||
barcodePart.setVisibility(View.GONE);
|
||||
optionsPart.setVisibility(View.GONE);
|
||||
picturesPart.setVisibility(View.VISIBLE);
|
||||
|
||||
// Explicitly hide barcode (fixes blurriness on redraw)
|
||||
hideBarcode();
|
||||
} else {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
private void currencyPrioritizeLocaleSymbols(ArrayList<String> currencyList, Locale locale) {
|
||||
try {
|
||||
String currencySymbol = Currency.getInstance(locale).getSymbol();
|
||||
currencyList.remove(currencySymbol);
|
||||
currencyList.add(0, currencySymbol);
|
||||
} catch (IllegalArgumentException e) {
|
||||
Log.d(TAG, "Could not get currency data for locale info: " + e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package protect.card_locker;
|
||||
import android.app.Application;
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
|
||||
import com.google.android.material.color.DynamicColors;
|
||||
|
||||
import protect.card_locker.preferences.Settings;
|
||||
|
||||
public class LoyaltyCardLockerApplication extends Application {
|
||||
|
||||
@@ -2,6 +2,7 @@ package protect.card_locker;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -32,6 +33,7 @@ import android.widget.Toast;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
@@ -46,6 +48,7 @@ import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.content.res.AppCompatResources;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.constraintlayout.widget.Guideline;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.core.content.ContextCompat;
|
||||
@@ -63,6 +66,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
private GestureDetector mGestureDetector;
|
||||
|
||||
CoordinatorLayout coordinatorLayout;
|
||||
ConstraintLayout mainLayout;
|
||||
TextView cardIdFieldView;
|
||||
BottomSheetBehavior behavior;
|
||||
LinearLayout bottomSheet;
|
||||
@@ -118,6 +122,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
private final int HEADER_FILTER_ALPHA = 127;
|
||||
|
||||
final private TaskHandler mTasks = new TaskHandler();
|
||||
Runnable barcodeImageGenerationFinishedCallback;
|
||||
|
||||
@Override
|
||||
public boolean onDown(MotionEvent e) {
|
||||
@@ -262,6 +267,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
importURIHelper = new ImportURIHelper(this);
|
||||
|
||||
coordinatorLayout = findViewById(R.id.coordinator_layout);
|
||||
mainLayout = findViewById(R.id.mainLayout);
|
||||
cardIdFieldView = findViewById(R.id.cardIdView);
|
||||
bottomSheet = findViewById(R.id.bottom_sheet);
|
||||
bottomSheetContentWrapper = findViewById(R.id.bottomSheetContentWrapper);
|
||||
@@ -273,6 +279,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
storeName = findViewById(R.id.storeName);
|
||||
maximizeButton = findViewById(R.id.maximizeButton);
|
||||
mainImage = findViewById(R.id.mainImage);
|
||||
mainImage.setClipToOutline(true);
|
||||
dotIndicator = findViewById(R.id.dotIndicator);
|
||||
minimizeButton = findViewById(R.id.minimizeButton);
|
||||
collapsingToolbarLayout = findViewById(R.id.collapsingToolbarLayout);
|
||||
@@ -280,11 +287,21 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
iconImage = findViewById(R.id.icon_image);
|
||||
landscapeToolbar = findViewById(R.id.toolbar_landscape);
|
||||
|
||||
barcodeImageGenerationFinishedCallback = () -> {
|
||||
if (!(boolean) mainImage.getTag()) {
|
||||
mainImage.setVisibility(View.GONE);
|
||||
imageTypes.remove(ImageType.BARCODE);
|
||||
|
||||
// Redraw UI
|
||||
setDotIndicator(Utils.isDarkModeEnabled(LoyaltyCardViewActivity.this));
|
||||
setFullscreen(isFullscreen);
|
||||
|
||||
Toast.makeText(LoyaltyCardViewActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
};
|
||||
|
||||
centerGuideline = findViewById(R.id.centerGuideline);
|
||||
barcodeScaler = findViewById(R.id.barcodeScaler);
|
||||
maximizeButton.setBackgroundColor(getThemeColor());
|
||||
minimizeButton.setBackgroundColor(getThemeColor());
|
||||
bottomSheetButton.setBackgroundColor(getThemeColor());
|
||||
barcodeScaler.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
@@ -302,7 +319,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
setCenterGuideline(loyaltyCard.zoomLevel);
|
||||
|
||||
drawMainImage(mainImageIndex, true);
|
||||
drawMainImage(mainImageIndex, true, isFullscreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -379,9 +396,13 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
editButton.hide();
|
||||
} else if (newState == BottomSheetBehavior.STATE_EXPANDED) {
|
||||
bottomSheetButton.setImageResource(R.drawable.ic_baseline_arrow_drop_down_24);
|
||||
bottomSheetButton.setContentDescription(getString(R.string.hideMoreInfo));
|
||||
mainLayout.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
|
||||
editButton.hide();
|
||||
} else if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
|
||||
bottomSheetButton.setImageResource(R.drawable.ic_baseline_arrow_drop_up_24);
|
||||
bottomSheetButton.setContentDescription(getString(R.string.showMoreInfo));
|
||||
mainLayout.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
|
||||
if (!isFullscreen) {
|
||||
editButton.show();
|
||||
}
|
||||
@@ -394,7 +415,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
private void adjustLayoutHeights() {
|
||||
// use getLayoutParams instead of getHeight when heights are pre-determined in xml! getHeight could return 0 if a View is not inflated
|
||||
if (iconImage.getLayoutParams().height != appBarLayout.getHeight()) {
|
||||
if (appBarLayout.getHeight() != 0 && iconImage.getLayoutParams().height != appBarLayout.getHeight()) {
|
||||
Log.d("adjustLayoutHeights", "setting imageIcon height from: " + iconImage.getLayoutParams().height + " to: " + appBarLayout.getHeight());
|
||||
iconImage.setLayoutParams(new CoordinatorLayout.LayoutParams(
|
||||
CoordinatorLayout.LayoutParams.MATCH_PARENT, appBarLayout.getHeight())
|
||||
@@ -523,7 +544,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
int expiryString = R.string.expiryStateSentence;
|
||||
if (Utils.hasExpired(loyaltyCard.expiry)) {
|
||||
expiryString = R.string.expiryStateSentenceExpired;
|
||||
expiryView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.alert));
|
||||
expiryView.setTextColor(Color.RED);
|
||||
}
|
||||
expiryView.setText(getString(expiryString, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry)));
|
||||
expiryView.setTextSize(settings.getFontSizeMax(settings.getMediumFont()));
|
||||
@@ -561,6 +582,30 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
storeName.setTextColor(textColor);
|
||||
landscapeToolbar.setTitleTextColor(textColor);
|
||||
|
||||
// Also apply colours to UI elements
|
||||
int darkenedColor = ColorUtils.blendARGB(backgroundHeaderColor, Color.BLACK, 0.1f);
|
||||
barcodeScaler.setProgressTintList(ColorStateList.valueOf(darkenedColor));
|
||||
barcodeScaler.setThumbTintList(ColorStateList.valueOf(darkenedColor));
|
||||
maximizeButton.setBackgroundColor(darkenedColor);
|
||||
minimizeButton.setBackgroundColor(darkenedColor);
|
||||
bottomSheetButton.setBackgroundColor(darkenedColor);
|
||||
maximizeButton.setColorFilter(textColor);
|
||||
minimizeButton.setColorFilter(textColor);
|
||||
bottomSheetButton.setColorFilter(textColor);
|
||||
int complementaryColor = Utils.getComplementaryColor(darkenedColor);
|
||||
editButton.setBackgroundTintList(ColorStateList.valueOf(complementaryColor));
|
||||
Drawable editButtonIcon = editButton.getDrawable();
|
||||
editButtonIcon.mutate();
|
||||
int colorPrimary = MaterialColors.getColor(this, R.attr.colorPrimary, ContextCompat.getColor(this, R.color.md_theme_light_primary));
|
||||
int colorOnPrimary = MaterialColors.getColor(this, R.attr.colorOnPrimary, ContextCompat.getColor(this, R.color.md_theme_light_onPrimary));
|
||||
boolean darkMode = Utils.isDarkModeEnabled(this);
|
||||
if (Utils.needsDarkForeground(complementaryColor)) {
|
||||
editButtonIcon.setTint(darkMode ? colorOnPrimary : colorPrimary);
|
||||
} else {
|
||||
editButtonIcon.setTint(darkMode ? colorPrimary : colorOnPrimary);
|
||||
}
|
||||
editButton.setImageDrawable(editButtonIcon);
|
||||
|
||||
Bitmap icon = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon);
|
||||
if (icon != null) {
|
||||
int backgroundAlphaColor = Utils.needsDarkForeground(backgroundHeaderColor) ? Color.WHITE : Color.BLACK;
|
||||
@@ -618,23 +663,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
imageTypes.add(ImageType.IMAGE_BACK);
|
||||
}
|
||||
|
||||
dotIndicator.removeAllViews();
|
||||
if (imageTypes.size() >= 2) {
|
||||
dots = new ImageView[imageTypes.size()];
|
||||
boolean darkMode = Utils.isDarkModeEnabled(getApplicationContext());
|
||||
|
||||
for (int i = 0; i < imageTypes.size(); i++) {
|
||||
dots[i] = new ImageView(this);
|
||||
dots[i].setImageDrawable(getDotIcon(false, darkMode));
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
params.setMargins(8, 0, 8, 0);
|
||||
|
||||
dotIndicator.addView(dots[i], params);
|
||||
}
|
||||
|
||||
dotIndicator.setVisibility(View.VISIBLE);
|
||||
}
|
||||
setDotIndicator(darkMode);
|
||||
|
||||
setFullscreen(isFullscreen);
|
||||
|
||||
@@ -778,7 +807,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
private void drawBarcode() {
|
||||
private void drawBarcode(boolean addPadding) {
|
||||
mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
|
||||
if (format != null) {
|
||||
BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(
|
||||
@@ -788,12 +817,13 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
format,
|
||||
null,
|
||||
false,
|
||||
null);
|
||||
barcodeImageGenerationFinishedCallback,
|
||||
addPadding);
|
||||
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
|
||||
}
|
||||
}
|
||||
|
||||
private void redrawBarcodeAfterResize() {
|
||||
private void redrawBarcodeAfterResize(boolean addPadding) {
|
||||
if (format != null) {
|
||||
mainImage.getViewTreeObserver().addOnGlobalLayoutListener(
|
||||
new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@@ -802,13 +832,13 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
mainImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
|
||||
Log.d(TAG, "ImageView size now known");
|
||||
drawBarcode();
|
||||
drawBarcode(addPadding);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void drawMainImage(int index, boolean waitForResize) {
|
||||
private void drawMainImage(int index, boolean waitForResize, boolean isFullscreen) {
|
||||
if (imageTypes.isEmpty()) {
|
||||
mainImage.setVisibility(View.GONE);
|
||||
return;
|
||||
@@ -824,18 +854,28 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
ImageType wantedImageType = imageTypes.get(index);
|
||||
|
||||
if (wantedImageType == ImageType.BARCODE) {
|
||||
if (waitForResize) {
|
||||
redrawBarcodeAfterResize();
|
||||
// Use border in non-fullscreen mode
|
||||
if (!isFullscreen) {
|
||||
mainImage.setBackground(AppCompatResources.getDrawable(this, R.drawable.round_outline));
|
||||
} else {
|
||||
drawBarcode();
|
||||
mainImage.setBackgroundColor(Color.WHITE);
|
||||
}
|
||||
mainImage.setBackgroundColor(Color.WHITE);
|
||||
|
||||
if (waitForResize) {
|
||||
redrawBarcodeAfterResize(!isFullscreen);
|
||||
} else {
|
||||
drawBarcode(!isFullscreen);
|
||||
}
|
||||
|
||||
mainImage.setContentDescription(getString(R.string.barcodeImageDescriptionWithType, format.prettyName()));
|
||||
} else if (wantedImageType == ImageType.IMAGE_FRONT) {
|
||||
mainImage.setImageBitmap(frontImageBitmap);
|
||||
mainImage.setBackgroundColor(Color.TRANSPARENT);
|
||||
mainImage.setContentDescription(getString(R.string.frontImageDescription));
|
||||
} else if (wantedImageType == ImageType.IMAGE_BACK) {
|
||||
mainImage.setImageBitmap(backImageBitmap);
|
||||
mainImage.setBackgroundColor(Color.TRANSPARENT);
|
||||
mainImage.setContentDescription(getString(R.string.backImageDescription));
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unknown image type: " + wantedImageType);
|
||||
}
|
||||
@@ -856,7 +896,26 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
mainImageIndex = newIndex;
|
||||
|
||||
drawMainImage(newIndex, false);
|
||||
drawMainImage(newIndex, false, isFullscreen);
|
||||
}
|
||||
|
||||
private void setDotIndicator(boolean darkMode) {
|
||||
dotIndicator.removeAllViews();
|
||||
if (imageTypes.size() >= 2) {
|
||||
dots = new ImageView[imageTypes.size()];
|
||||
|
||||
for (int i = 0; i < imageTypes.size(); i++) {
|
||||
dots[i] = new ImageView(this);
|
||||
dots[i].setImageDrawable(getDotIcon(false, darkMode));
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
params.setMargins(8, 0, 8, 0);
|
||||
|
||||
dotIndicator.addView(dots[i], params);
|
||||
}
|
||||
|
||||
dotIndicator.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -872,7 +931,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
if (enabled && !imageTypes.isEmpty()) {
|
||||
Log.d(TAG, "Move into fullscreen");
|
||||
|
||||
drawMainImage(mainImageIndex, true);
|
||||
drawMainImage(mainImageIndex, true, isFullscreen);
|
||||
|
||||
barcodeScaler.setProgress(loyaltyCard.zoomLevel);
|
||||
setCenterGuideline(loyaltyCard.zoomLevel);
|
||||
@@ -893,6 +952,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
// Or the barcode will be centered instead of on top of the screen
|
||||
// Don't ask me why...
|
||||
appBarLayout.setVisibility(View.INVISIBLE);
|
||||
iconImage.setVisibility(View.INVISIBLE);
|
||||
collapsingToolbarLayout.setVisibility(View.GONE);
|
||||
landscapeToolbar.setVisibility(View.GONE);
|
||||
|
||||
@@ -917,7 +977,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
// Reset center guideline
|
||||
setCenterGuideline(100);
|
||||
|
||||
drawMainImage(mainImageIndex, true);
|
||||
drawMainImage(mainImageIndex, true, isFullscreen);
|
||||
|
||||
// Show maximize and hide minimize button and scaler
|
||||
maximizeButton.setVisibility(imageTypes.isEmpty() ? View.GONE : View.VISIBLE);
|
||||
@@ -934,6 +994,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
// And restore 24dp paddingTop for appBarLayout
|
||||
appBarLayout.setVisibility(View.VISIBLE);
|
||||
setupOrientation();
|
||||
iconImage.setVisibility(View.VISIBLE);
|
||||
|
||||
// Show other UI elements
|
||||
cardIdFieldView.setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -47,6 +47,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
private ActionMode mCurrentActionMode;
|
||||
private SearchView mSearchView;
|
||||
private GestureDetector mGestureDetector;
|
||||
private int mLoyaltyCardCount = 0;
|
||||
protected String mFilter = "";
|
||||
protected Object mGroup = null;
|
||||
protected DBHelper.LoyaltyCardOrder mOrder = DBHelper.LoyaltyCardOrder.Alpha;
|
||||
@@ -140,8 +141,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
}
|
||||
|
||||
builder.setPositiveButton(R.string.confirm, (dialog, which) -> {
|
||||
DBHelper db = new DBHelper(MainActivity.this);
|
||||
|
||||
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
|
||||
Log.e(TAG, "Deleting card: " + loyaltyCard.id);
|
||||
|
||||
@@ -153,7 +152,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
TabLayout.Tab tab = ((TabLayout) findViewById(R.id.groups)).getTabAt(selectedTab);
|
||||
mGroup = tab != null ? tab.getTag() : null;
|
||||
|
||||
updateLoyaltyCardList();
|
||||
updateLoyaltyCardList(true);
|
||||
|
||||
dialog.dismiss();
|
||||
});
|
||||
@@ -179,6 +178,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
super.onCreate(inputSavedInstanceState);
|
||||
SplashScreen.installSplashScreen(this);
|
||||
setTitle(R.string.app_name);
|
||||
// XXX color patching has to be done again after setting splash screen
|
||||
Utils.patchColors(this);
|
||||
setContentView(R.layout.main_activity);
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
@@ -192,7 +193,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
selectedTab = tab.getPosition();
|
||||
Log.d("onTabSelected", "Tab Position " + tab.getPosition());
|
||||
mGroup = tab.getTag();
|
||||
updateLoyaltyCardList();
|
||||
updateLoyaltyCardList(false);
|
||||
// Store active tab in Shared Preference to restore next app launch
|
||||
SharedPreferences activeTabPref = getApplicationContext().getSharedPreferences(
|
||||
getString(R.string.sharedpreference_active_tab),
|
||||
@@ -232,7 +233,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
registerForContextMenu(mCardList);
|
||||
|
||||
mGroup = null;
|
||||
updateLoyaltyCardList();
|
||||
updateLoyaltyCardList(true);
|
||||
|
||||
/*
|
||||
* This was added for Huawei, but Huawei is just too much of a fucking pain.
|
||||
@@ -297,6 +298,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
mAdapter.refreshState();
|
||||
|
||||
if (mCurrentActionMode != null) {
|
||||
mAdapter.clearSelections();
|
||||
mCurrentActionMode.finish();
|
||||
@@ -336,7 +339,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
assert tab != null;
|
||||
mGroup = tab.getTag();
|
||||
}
|
||||
updateLoyaltyCardList();
|
||||
updateLoyaltyCardList(true);
|
||||
// End of active tab logic
|
||||
|
||||
FloatingActionButton addButton = findViewById(R.id.fabAdd);
|
||||
@@ -362,7 +365,17 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
super.onBackPressed();
|
||||
}
|
||||
|
||||
private void updateLoyaltyCardList() {
|
||||
private void displayCardSetupOptions(Menu menu, boolean shouldShow) {
|
||||
for (int id : new int[]{R.id.action_search, R.id.action_unfold, R.id.action_sort}) {
|
||||
menu.findItem(id).setVisible(shouldShow);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateLoyaltyCardCount() {
|
||||
mLoyaltyCardCount = DBHelper.getLoyaltyCardCount(mDatabase);
|
||||
}
|
||||
|
||||
private void updateLoyaltyCardList(boolean updateCount) {
|
||||
Group group = null;
|
||||
if (mGroup != null) {
|
||||
group = (Group) mGroup;
|
||||
@@ -370,12 +383,19 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
|
||||
mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection));
|
||||
|
||||
if (DBHelper.getLoyaltyCardCount(mDatabase) > 0) {
|
||||
if (updateCount) {
|
||||
updateLoyaltyCardCount();
|
||||
// Update menu icons if necessary
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
if (mLoyaltyCardCount > 0) {
|
||||
// We want the cardList to be visible regardless of the filtered match count
|
||||
// to ensure that the noMatchingCardsText doesn't end up being shown below
|
||||
// the keyboard
|
||||
mHelpText.setVisibility(View.GONE);
|
||||
mNoGroupCardsText.setVisibility(View.GONE);
|
||||
|
||||
if (mAdapter.getItemCount() > 0) {
|
||||
mCardList.setVisibility(View.VISIBLE);
|
||||
mNoMatchingCardsText.setVisibility(View.GONE);
|
||||
@@ -394,6 +414,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
} else {
|
||||
mCardList.setVisibility(View.GONE);
|
||||
mHelpText.setVisibility(View.VISIBLE);
|
||||
|
||||
mNoMatchingCardsText.setVisibility(View.GONE);
|
||||
mNoGroupCardsText.setVisibility(View.GONE);
|
||||
}
|
||||
@@ -433,6 +454,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
public boolean onCreateOptionsMenu(Menu inputMenu) {
|
||||
getMenuInflater().inflate(R.menu.main_menu, inputMenu);
|
||||
|
||||
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
|
||||
displayCardSetupOptions(inputMenu, mLoyaltyCardCount > 0);
|
||||
|
||||
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
|
||||
if (searchManager != null) {
|
||||
mSearchView = (SearchView) inputMenu.findItem(R.id.action_search).getActionView();
|
||||
@@ -458,7 +482,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
TabLayout.Tab currentTab = groupsTabLayout.getTabAt(groupsTabLayout.getSelectedTabPosition());
|
||||
mGroup = currentTab != null ? currentTab.getTag() : null;
|
||||
|
||||
updateLoyaltyCardList();
|
||||
updateLoyaltyCardList(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -472,23 +496,13 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
int id = inputItem.getItemId();
|
||||
|
||||
if (id == R.id.action_unfold) {
|
||||
boolean shouldShow = !mAdapter.showingDetails();
|
||||
|
||||
if (shouldShow) {
|
||||
inputItem.setIcon(R.drawable.ic_baseline_unfold_less_24);
|
||||
inputItem.setTitle(R.string.action_hide_details);
|
||||
} else {
|
||||
inputItem.setIcon(R.drawable.ic_baseline_unfold_more_24);
|
||||
inputItem.setTitle(R.string.action_show_details);
|
||||
}
|
||||
|
||||
mAdapter.showDetails(shouldShow);
|
||||
mAdapter.showDetails(!mAdapter.showingDetails());
|
||||
invalidateOptionsMenu();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (id == R.id.action_sort) {
|
||||
TabLayout.Tab tab = ((TabLayout) findViewById(R.id.groups)).getTabAt(selectedTab);
|
||||
AtomicInteger currentIndex = new AtomicInteger();
|
||||
List<DBHelper.LoyaltyCardOrder> loyaltyCardOrders = Arrays.asList(DBHelper.LoyaltyCardOrder.values());
|
||||
for (int i = 0; i < loyaltyCardOrders.size(); i++) {
|
||||
@@ -568,7 +582,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
sortPrefEditor.apply();
|
||||
|
||||
// Update card list
|
||||
updateLoyaltyCardList();
|
||||
updateLoyaltyCardList(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package protect.card_locker;
|
||||
|
||||
|
||||
import android.content.Intent;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
@@ -156,6 +157,26 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu inputMenu) {
|
||||
getMenuInflater().inflate(R.menu.card_details_menu, inputMenu);
|
||||
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
|
||||
return super.onCreateOptionsMenu(inputMenu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem inputItem) {
|
||||
int id = inputItem.getItemId();
|
||||
|
||||
if (id == R.id.action_unfold) {
|
||||
mAdapter.showDetails(!mAdapter.showingDetails());
|
||||
invalidateOptionsMenu();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(inputItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
|
||||
@@ -8,6 +8,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
public class ManageGroupCursorAdapter extends LoyaltyCardCursorAdapter {
|
||||
private HashMap<Integer, Integer> mIndexCardMap;
|
||||
private HashMap<Integer, Boolean> mInGroupOverlay;
|
||||
|
||||
@@ -109,7 +109,7 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
|
||||
}
|
||||
|
||||
private void createGroup() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.enter_group_name);
|
||||
final EditText input = new EditText(this);
|
||||
input.setInputType(InputType.TYPE_CLASS_TEXT);
|
||||
|
||||
79
app/src/main/java/protect/card_locker/UCropWrapper.java
Normal file
79
app/src/main/java/protect/card_locker/UCropWrapper.java
Normal file
@@ -0,0 +1,79 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
import com.google.android.material.textview.MaterialTextView;
|
||||
import com.yalantis.ucrop.UCropActivity;
|
||||
|
||||
public class UCropWrapper extends UCropActivity {
|
||||
public static final String UCROP_TOOLBAR_TYPEFACE_STYLE = "ucop_toolbar_typeface_style";
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
boolean darkMode = Utils.isDarkModeEnabled(this);
|
||||
// setup status bar to look like the rest of the app
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
getWindow().getDecorView().setSystemUiVisibility(darkMode ? 0 : View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
||||
} else {
|
||||
// icons are always white back then
|
||||
if (!darkMode) {
|
||||
getWindow().setStatusBarColor(ColorUtils.compositeColors(Color.argb(127, 0, 0, 0), getWindow().getStatusBarColor()));
|
||||
}
|
||||
}
|
||||
|
||||
// find and check views that we wish to color modify
|
||||
// for when we update ucrop or switch to another cropper
|
||||
View check = findViewById(com.yalantis.ucrop.R.id.wrapper_controls);
|
||||
if (check instanceof FrameLayout) {
|
||||
FrameLayout controls = (FrameLayout) check;
|
||||
check = findViewById(com.yalantis.ucrop.R.id.wrapper_states);
|
||||
if (check instanceof LinearLayout) {
|
||||
LinearLayout states = (LinearLayout) check;
|
||||
for (int i = 0; i < controls.getChildCount(); i++) {
|
||||
check = controls.getChildAt(i);
|
||||
if (check instanceof AppCompatImageView) {
|
||||
AppCompatImageView controlsBackgroundImage = (AppCompatImageView) check;
|
||||
// everything gathered and are as expected, now perform color patching
|
||||
Utils.patchColors(this);
|
||||
int colorSurface = MaterialColors.getColor(this, R.attr.colorSurface, ContextCompat.getColor(this, R.color.md_theme_light_surface));
|
||||
int colorOnSurface = MaterialColors.getColor(this, R.attr.colorOnSurface, ContextCompat.getColor(this, R.color.md_theme_light_onSurface));
|
||||
|
||||
Drawable controlsBackgroundImageDrawable = controlsBackgroundImage.getBackground();
|
||||
controlsBackgroundImageDrawable.mutate();
|
||||
controlsBackgroundImageDrawable.setTint(darkMode ? colorOnSurface : colorSurface);
|
||||
controlsBackgroundImage.setBackgroundDrawable(controlsBackgroundImageDrawable);
|
||||
|
||||
states.setBackgroundColor(darkMode ? colorSurface : colorOnSurface);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// change toolbar font
|
||||
check = findViewById(com.yalantis.ucrop.R.id.toolbar_title);
|
||||
if (check instanceof MaterialTextView) {
|
||||
MaterialTextView toolbarTextview = (MaterialTextView) check;
|
||||
Intent intent = getIntent();
|
||||
int style = intent.getIntExtra(UCROP_TOOLBAR_TYPEFACE_STYLE, -1);
|
||||
if (style != -1) {
|
||||
toolbarTextview.setTypeface(Typeface.defaultFromStyle(style));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
@@ -14,8 +15,12 @@ import android.os.Build;
|
||||
import android.os.LocaleList;
|
||||
import android.provider.MediaStore;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.android.material.color.DynamicColors;
|
||||
import com.google.zxing.BinaryBitmap;
|
||||
import com.google.zxing.LuminanceSource;
|
||||
import com.google.zxing.MultiFormatReader;
|
||||
@@ -39,9 +44,12 @@ import java.util.GregorianCalendar;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.exifinterface.media.ExifInterface;
|
||||
|
||||
import androidx.palette.graphics.Palette;
|
||||
import protect.card_locker.preferences.Settings;
|
||||
|
||||
public class Utils {
|
||||
@@ -206,7 +214,7 @@ public class Utils {
|
||||
|
||||
if (currency == null) {
|
||||
numberFormat.setMaximumFractionDigits(0);
|
||||
return context.getString(R.string.balancePoints, numberFormat.format(value));
|
||||
return context.getResources().getQuantityString(R.plurals.balancePoints, value.intValue(), numberFormat.format(value));
|
||||
}
|
||||
|
||||
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
|
||||
@@ -448,4 +456,82 @@ public class Utils {
|
||||
return loadImage(context.getCacheDir() + "/" + name);
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/a/59324801/8378787
|
||||
public static int getComplementaryColor(int color) {
|
||||
int R = color & 255;
|
||||
int G = (color >> 8) & 255;
|
||||
int B = (color >> 16) & 255;
|
||||
int A = (color >> 24) & 255;
|
||||
R = 255 - R;
|
||||
G = 255 - G;
|
||||
B = 255 - B;
|
||||
return R + (G << 8) + (B << 16) + (A << 24);
|
||||
}
|
||||
|
||||
// replace colors in the current theme
|
||||
public static void patchColors(AppCompatActivity activity) {
|
||||
Settings settings = new Settings(activity);
|
||||
String color = settings.getColor();
|
||||
|
||||
Resources.Theme theme = activity.getTheme();
|
||||
Resources resources = activity.getResources();
|
||||
if (color.equals(resources.getString(R.string.settings_key_pink_theme))) {
|
||||
theme.applyStyle(R.style.pink, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_magenta_theme))) {
|
||||
theme.applyStyle(R.style.magenta, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_violet_theme))) {
|
||||
theme.applyStyle(R.style.violet, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_blue_theme))) {
|
||||
theme.applyStyle(R.style.blue, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_sky_blue_theme))) {
|
||||
theme.applyStyle(R.style.skyblue, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_green_theme))) {
|
||||
theme.applyStyle(R.style.green, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_brown_theme))) {
|
||||
theme.applyStyle(R.style.brown, true);
|
||||
} else if (color.equals(resources.getString(R.string.settings_key_catima_theme))) {
|
||||
// catima theme is AppTheme itself, no dynamic colors nor applyStyle
|
||||
} else {
|
||||
// final catch all in case of invalid theme value from older versions
|
||||
// also handles R.string.settings_key_system_theme
|
||||
DynamicColors.applyIfAvailable(activity);
|
||||
}
|
||||
|
||||
if (isDarkModeEnabled(activity) && settings.getOledDark()) {
|
||||
theme.applyStyle(R.style.DarkBackground, true);
|
||||
}
|
||||
}
|
||||
|
||||
// XXX android 9 and below has issues with patched theme where the background becomes a
|
||||
// rendering mess
|
||||
// use after views are inflated
|
||||
public static void postPatchColors(AppCompatActivity activity) {
|
||||
TypedValue typedValue = new TypedValue();
|
||||
activity.getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true);
|
||||
activity.findViewById(android.R.id.content).setBackgroundColor(typedValue.data);
|
||||
}
|
||||
|
||||
public static void updateMenuCardDetailsButtonState(MenuItem item, boolean currentlyExpanded) {
|
||||
if (currentlyExpanded) {
|
||||
item.setIcon(R.drawable.ic_baseline_unfold_less_24);
|
||||
item.setTitle(R.string.action_hide_details);
|
||||
} else {
|
||||
item.setIcon(R.drawable.ic_baseline_unfold_more_24);
|
||||
item.setTitle(R.string.action_show_details);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getHeaderColorFromImage(Bitmap image, int fallback) {
|
||||
if (image == null) {
|
||||
return fallback;
|
||||
}
|
||||
|
||||
return new Palette.Builder(image).generate().getDominantColor(R.attr.colorPrimary);
|
||||
}
|
||||
|
||||
public static int getRandomHeaderColor(Context context) {
|
||||
TypedArray colors = context.getResources().obtainTypedArray(R.array.letter_tile_colors);
|
||||
final int color = (int) (Math.random() * colors.length());
|
||||
return colors.getColor(color, Color.BLACK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@ import android.database.sqlite.SQLiteDatabase;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import protect.card_locker.DBHelper;
|
||||
|
||||
/**
|
||||
* Interface for a class which can export the contents of the database
|
||||
* in a given format.
|
||||
|
||||
@@ -1,7 +1,23 @@
|
||||
package protect.card_locker.importexport;
|
||||
|
||||
public enum ImportExportResult {
|
||||
Success,
|
||||
GenericFailure,
|
||||
BadPassword;
|
||||
public class ImportExportResult {
|
||||
private ImportExportResultType resultType;
|
||||
private String developerDetails;
|
||||
|
||||
public ImportExportResult(ImportExportResultType resultType) {
|
||||
this(resultType, null);
|
||||
}
|
||||
|
||||
public ImportExportResult(ImportExportResultType resultType, String developerDetails) {
|
||||
this.resultType = resultType;
|
||||
this.developerDetails = developerDetails;
|
||||
}
|
||||
|
||||
public ImportExportResultType resultType() {
|
||||
return resultType;
|
||||
}
|
||||
|
||||
public String developerDetails() {
|
||||
return developerDetails;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package protect.card_locker.importexport;
|
||||
|
||||
public enum ImportExportResultType {
|
||||
Success,
|
||||
GenericFailure,
|
||||
BadPassword;
|
||||
}
|
||||
@@ -7,8 +7,6 @@ import android.util.Log;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import protect.card_locker.DBHelper;
|
||||
|
||||
public class MultiFormatExporter {
|
||||
private static final String TAG = "Catima";
|
||||
|
||||
@@ -34,20 +32,20 @@ public class MultiFormatExporter {
|
||||
break;
|
||||
}
|
||||
|
||||
String error;
|
||||
if (exporter != null) {
|
||||
try {
|
||||
exporter.exportData(context, database, output, password);
|
||||
return ImportExportResult.Success;
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "Failed to export data", e);
|
||||
} catch (InterruptedException e) {
|
||||
return new ImportExportResult(ImportExportResultType.Success);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Failed to export data", e);
|
||||
error = e.toString();
|
||||
}
|
||||
|
||||
return ImportExportResult.GenericFailure;
|
||||
} else {
|
||||
Log.e(TAG, "Unsupported data format exported: " + format.name());
|
||||
return ImportExportResult.GenericFailure;
|
||||
error = "Unsupported data format exported: " + format.name();
|
||||
Log.e(TAG, error);
|
||||
}
|
||||
|
||||
return new ImportExportResult(ImportExportResultType.GenericFailure, error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.text.ParseException;
|
||||
|
||||
import protect.card_locker.DBHelper;
|
||||
import protect.card_locker.FormatException;
|
||||
|
||||
public class MultiFormatImporter {
|
||||
@@ -47,23 +46,26 @@ public class MultiFormatImporter {
|
||||
break;
|
||||
}
|
||||
|
||||
String error = null;
|
||||
if (importer != null) {
|
||||
database.beginTransaction();
|
||||
try {
|
||||
importer.importData(context, database, input, password);
|
||||
database.setTransactionSuccessful();
|
||||
return ImportExportResult.Success;
|
||||
return new ImportExportResult(ImportExportResultType.Success);
|
||||
} catch (ZipException e) {
|
||||
return ImportExportResult.BadPassword;
|
||||
return new ImportExportResult(ImportExportResultType.BadPassword);
|
||||
} catch (IOException | FormatException | InterruptedException | JSONException | ParseException | NullPointerException e) {
|
||||
Log.e(TAG, "Failed to import data", e);
|
||||
error = e.toString();
|
||||
} finally {
|
||||
database.endTransaction();
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "Unsupported data format imported: " + format.name());
|
||||
error = "Unsupported data format imported: " + format.name();
|
||||
Log.e(TAG, error);
|
||||
}
|
||||
|
||||
return ImportExportResult.GenericFailure;
|
||||
return new ImportExportResult(ImportExportResultType.GenericFailure, error);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,13 +41,13 @@ import protect.card_locker.ZipUtils;
|
||||
public class StocardImporter implements Importer {
|
||||
public void importData(Context context, SQLiteDatabase database, InputStream input, char[] password) throws IOException, FormatException, JSONException, ParseException {
|
||||
HashMap<String, HashMap<String, Object>> loyaltyCardHashMap = new HashMap<>();
|
||||
HashMap<String, HashMap<String, String>> providers = new HashMap<>();
|
||||
HashMap<String, HashMap<String, Object>> providers = new HashMap<>();
|
||||
|
||||
final CSVParser parser = new CSVParser(new InputStreamReader(context.getResources().openRawResource(R.raw.stocard_stores), StandardCharsets.UTF_8), CSVFormat.RFC4180.builder().setHeader().build());
|
||||
|
||||
try {
|
||||
for (CSVRecord record : parser) {
|
||||
HashMap<String, String> recordData = new HashMap<>();
|
||||
HashMap<String, Object> recordData = new HashMap<>();
|
||||
recordData.put("name", record.get("name"));
|
||||
recordData.put("barcodeFormat", record.get("barcodeFormat"));
|
||||
|
||||
@@ -62,6 +62,8 @@ public class StocardImporter implements Importer {
|
||||
ZipInputStream zipInputStream = new ZipInputStream(input, password);
|
||||
|
||||
String[] providersFileName = null;
|
||||
String[] customProvidersBaseName = null;
|
||||
String customProviderId = "";
|
||||
String[] cardBaseName = null;
|
||||
String cardName = "";
|
||||
LocalFileHeader localFileHeader;
|
||||
@@ -78,6 +80,14 @@ public class StocardImporter implements Importer {
|
||||
nameParts[0],
|
||||
"analytics-properties.json"
|
||||
};
|
||||
customProvidersBaseName = new String[]{
|
||||
nameParts[0],
|
||||
"sync",
|
||||
"data",
|
||||
"users",
|
||||
nameParts[0],
|
||||
"loyalty-card-custom-providers"
|
||||
};
|
||||
cardBaseName = new String[]{
|
||||
nameParts[0],
|
||||
"sync",
|
||||
@@ -88,6 +98,33 @@ public class StocardImporter implements Importer {
|
||||
};
|
||||
}
|
||||
|
||||
if (startsWith(nameParts, customProvidersBaseName, 1)) {
|
||||
// Extract providerId
|
||||
customProviderId = nameParts[customProvidersBaseName.length].split("\\.", 2)[0];
|
||||
|
||||
// Name file
|
||||
if (nameParts.length == customProvidersBaseName.length + 1) {
|
||||
// Ignore the .txt file
|
||||
if (fileName.endsWith(".json")) {
|
||||
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
|
||||
|
||||
providers = appendToHashMap(
|
||||
providers,
|
||||
customProviderId,
|
||||
"name",
|
||||
jsonObject.getString("name")
|
||||
);
|
||||
}
|
||||
} else if (fileName.endsWith("logo.png")) {
|
||||
providers = appendToHashMap(
|
||||
providers,
|
||||
customProviderId,
|
||||
"logo",
|
||||
ZipUtils.readImage(zipInputStream)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (startsWith(nameParts, cardBaseName, 1)) {
|
||||
// Extract cardName
|
||||
cardName = nameParts[cardBaseName.length].split("\\.", 2)[0];
|
||||
@@ -98,24 +135,33 @@ public class StocardImporter implements Importer {
|
||||
if (fileName.endsWith(".json")) {
|
||||
JSONObject jsonObject = ZipUtils.readJSON(zipInputStream);
|
||||
|
||||
loyaltyCardHashMap = appendToLoyaltyCardHashMap(
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"cardId",
|
||||
jsonObject.getString("input_id")
|
||||
);
|
||||
loyaltyCardHashMap = appendToLoyaltyCardHashMap(
|
||||
|
||||
// Provider ID can be either custom or not, extract whatever version is relevant
|
||||
String customProviderPrefix = "/users/" + nameParts[0] + "/loyalty-card-custom-providers/";
|
||||
String providerId = jsonObject
|
||||
.getJSONObject("input_provider_reference")
|
||||
.getString("identifier");
|
||||
if (providerId.startsWith(customProviderPrefix)) {
|
||||
providerId = providerId.substring(customProviderPrefix.length());
|
||||
} else {
|
||||
providerId = providerId.substring("/loyalty-card-providers/".length());
|
||||
}
|
||||
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"_providerId",
|
||||
jsonObject
|
||||
.getJSONObject("input_provider_reference")
|
||||
.getString("identifier")
|
||||
.substring("/loyalty-card-providers/".length())
|
||||
providerId
|
||||
);
|
||||
|
||||
if (jsonObject.has("input_barcode_format")) {
|
||||
loyaltyCardHashMap = appendToLoyaltyCardHashMap(
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"barcodeType",
|
||||
@@ -124,7 +170,7 @@ public class StocardImporter implements Importer {
|
||||
}
|
||||
}
|
||||
} else if (fileName.endsWith("notes/default.json")) {
|
||||
loyaltyCardHashMap = appendToLoyaltyCardHashMap(
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"note",
|
||||
@@ -132,14 +178,14 @@ public class StocardImporter implements Importer {
|
||||
.getString("content")
|
||||
);
|
||||
} else if (fileName.endsWith("/images/front.png")) {
|
||||
loyaltyCardHashMap = appendToLoyaltyCardHashMap(
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"frontImage",
|
||||
ZipUtils.readImage(zipInputStream)
|
||||
);
|
||||
} else if (fileName.endsWith("/images/back.png")) {
|
||||
loyaltyCardHashMap = appendToLoyaltyCardHashMap(
|
||||
loyaltyCardHashMap = appendToHashMap(
|
||||
loyaltyCardHashMap,
|
||||
cardName,
|
||||
"backImage",
|
||||
@@ -155,14 +201,14 @@ public class StocardImporter implements Importer {
|
||||
|
||||
for (HashMap<String, Object> loyaltyCardData : loyaltyCardHashMap.values()) {
|
||||
String providerId = (String) loyaltyCardData.get("_providerId");
|
||||
HashMap<String, String> providerData = providers.get(providerId);
|
||||
HashMap<String, Object> providerData = providers.get(providerId);
|
||||
|
||||
String store = providerData != null ? providerData.get("name") : providerId;
|
||||
String store = providerData != null ? providerData.get("name").toString() : providerId;
|
||||
String note = (String) Utils.mapGetOrDefault(loyaltyCardData, "note", "");
|
||||
String cardId = (String) loyaltyCardData.get("cardId");
|
||||
String barcodeTypeString = (String) Utils.mapGetOrDefault(loyaltyCardData, "barcodeType", providerData != null ? providerData.get("barcodeFormat") : null);
|
||||
CatimaBarcode barcodeType = null;
|
||||
if (barcodeTypeString != null) {
|
||||
if (barcodeTypeString != null && !barcodeTypeString.isEmpty()) {
|
||||
if (barcodeTypeString.equals("RSS_DATABAR_EXPANDED")) {
|
||||
barcodeType = CatimaBarcode.fromBarcode(BarcodeFormat.RSS_EXPANDED);
|
||||
} else {
|
||||
@@ -170,7 +216,18 @@ public class StocardImporter implements Importer {
|
||||
}
|
||||
}
|
||||
|
||||
long loyaltyCardInternalId = DBHelper.insertLoyaltyCard(database, store, note, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, null, 0, null);
|
||||
int headerColor = Utils.getRandomHeaderColor(context);
|
||||
Bitmap cardIcon = null;
|
||||
if (providerData != null && providerData.containsKey("logo")) {
|
||||
cardIcon = (Bitmap) providerData.get("logo");
|
||||
headerColor = Utils.getHeaderColorFromImage(cardIcon, headerColor);
|
||||
}
|
||||
|
||||
long loyaltyCardInternalId = DBHelper.insertLoyaltyCard(database, store, note, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, 0, null);
|
||||
|
||||
if (cardIcon != null) {
|
||||
Utils.saveCardImage(context, cardIcon, (int) loyaltyCardInternalId, ImageLocationType.icon);
|
||||
}
|
||||
|
||||
if (loyaltyCardData.containsKey("frontImage")) {
|
||||
Utils.saveCardImage(context, (Bitmap) loyaltyCardData.get("frontImage"), (int) loyaltyCardInternalId, ImageLocationType.front);
|
||||
@@ -197,7 +254,7 @@ public class StocardImporter implements Importer {
|
||||
return true;
|
||||
}
|
||||
|
||||
private HashMap<String, HashMap<String, Object>> appendToLoyaltyCardHashMap(HashMap<String, HashMap<String, Object>> loyaltyCardHashMap, String cardID, String key, Object value) {
|
||||
private HashMap<String, HashMap<String, Object>> appendToHashMap(HashMap<String, HashMap<String, Object>> loyaltyCardHashMap, String cardID, String key, Object value) {
|
||||
HashMap<String, Object> loyaltyCardData = loyaltyCardHashMap.get(cardID);
|
||||
if (loyaltyCardData == null) {
|
||||
loyaltyCardData = new HashMap<>();
|
||||
|
||||
@@ -9,6 +9,7 @@ import androidx.annotation.IntegerRes;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import protect.card_locker.R;
|
||||
import protect.card_locker.Utils;
|
||||
|
||||
@@ -102,4 +103,12 @@ public class Settings {
|
||||
public boolean getDisableLockscreenWhileViewingCard() {
|
||||
return getBoolean(R.string.settings_key_disable_lockscreen_while_viewing_card, true);
|
||||
}
|
||||
|
||||
public boolean getOledDark() {
|
||||
return getBoolean(R.string.settings_key_oled_dark, false);
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return getString(R.string.setting_key_theme_color, mContext.getResources().getString(R.string.settings_key_system_theme));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,10 @@ import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
@@ -15,9 +19,7 @@ import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import com.google.android.material.color.DynamicColors;
|
||||
|
||||
import nl.invissvenska.numberpickerpreference.NumberDialogPreference;
|
||||
import nl.invissvenska.numberpickerpreference.NumberPickerPreferenceDialogFragment;
|
||||
@@ -129,16 +131,28 @@ public class SettingsActivity extends CatimaAppCompatActivity {
|
||||
return true;
|
||||
});
|
||||
|
||||
Preference colorPreference = findPreference(getResources().getString(R.string.setting_key_theme_color));
|
||||
localePreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
refreshActivity(true);
|
||||
return true;
|
||||
});
|
||||
|
||||
Preference oledDarkPreference = findPreference(getResources().getString(R.string.settings_key_oled_dark));
|
||||
assert oledDarkPreference != null;
|
||||
oledDarkPreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
refreshActivity(true);
|
||||
return true;
|
||||
});
|
||||
|
||||
ListPreference colorPreference = findPreference(getResources().getString(R.string.setting_key_theme_color));
|
||||
assert colorPreference != null;
|
||||
colorPreference.setOnPreferenceChangeListener((preference, o) -> {
|
||||
refreshActivity(true);
|
||||
return true;
|
||||
});
|
||||
localePreference.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
refreshActivity(true);
|
||||
return true;
|
||||
});
|
||||
if (!DynamicColors.isDynamicColorAvailable()) {
|
||||
colorPreference.setEntryValues(R.array.color_values_no_dynamic);
|
||||
colorPreference.setEntries(R.array.color_value_strings_no_dynamic);
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshActivity(boolean reloadMain) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M7,10l5,5 5,-5z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M7,14l5,-5 5,5z"/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:tint="#FFFFFF" android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M3,18h6v-2L3,16v2zM3,6v2h18L21,6L3,6zM3,13h12v-2L3,11v2z"/>
|
||||
</vector>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M7.41,18.59L8.83,20 12,16.83 15.17,20l1.41,-1.41L12,14l-4.59,4.59zM16.59,5.41L15.17,4 12,7.17 8.83,4 7.41,5.41 12,10l4.59,-4.59z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M12,5.83L15.17,9l1.41,-1.41L12,3 7.41,7.59 8.83,9 12,5.83zM12,18.17L8.83,15l-1.41,1.41L12,21l4.59,-4.59L15.17,15 12,18.17z"/>
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="@color/colorPrimary"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:pathData="M18,5l0,-3l-12,0l0,1.17l1.83,1.83z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:pathData="M6,2h12v3h-12z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M9,3L5,6.99h3L8,14h2L10,6.99h3L9,3zM16,17.01L16,10h-2v7.01h-3L15,21l4,-3.99h-3z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M12,17c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6h1.9c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM18,20L6,20L6,10h12v10z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@color/listItemHighlight" android:state_activated="true" />
|
||||
</selector>
|
||||
5
app/src/main/res/drawable/round_outline.xml
Normal file
5
app/src/main/res/drawable/round_outline.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="#FFFFFF" />
|
||||
<corners android:radius="10dp" />
|
||||
</shape>
|
||||
@@ -1,4 +1,4 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
<vector android:height="24dp" android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM12,19c-1.66,0 -3,-1.34 -3,-3s1.34,-3 3,-3 3,1.34 3,3 -1.34,3 -3,3zM15,9L5,9L5,5h10v4z"/>
|
||||
|
||||
@@ -10,15 +10,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"/>
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
@@ -46,7 +44,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/version_history"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -61,12 +58,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/version_history_main" />
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -86,7 +83,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/credits"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -101,12 +97,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/credits_main" />
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -126,7 +122,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/help_translate_this_app"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -143,12 +138,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/translate_main"/>
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -168,7 +163,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/license"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -185,12 +179,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/license_main"/>
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -210,7 +204,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/source_repository"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -226,12 +219,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/repo_main" />
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -251,7 +244,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/privacy_policy"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -267,12 +259,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/privacy_main" />
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -292,7 +284,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/rate_this_app"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -308,12 +299,12 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/rate_main" />
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -333,7 +324,6 @@
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:padding="2dp"
|
||||
android:text="@string/report_error"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="18sp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@@ -349,12 +339,12 @@
|
||||
android:padding="2dp"/>
|
||||
|
||||
<TextView
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:fontFamily="sans-serif-medium"
|
||||
android:text="@string/arrow"
|
||||
android:textColor="@color/colorSecondaryText"
|
||||
android:textSize="20sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@@ -22,15 +22,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/groups"
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<ImageView
|
||||
android:background="@drawable/round_outline"
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/barcode_disp_height"
|
||||
android:layout_gravity="center_horizontal"
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
style="?attr/toolbarStyle" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -62,7 +62,8 @@
|
||||
android:hint="AB1234"
|
||||
android:importantForAutofill="no"
|
||||
android:inputType="text"
|
||||
android:minHeight="48dp" />
|
||||
android:minHeight="48dp"
|
||||
tools:ignore="ContentDescription" />
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/noBarcode"
|
||||
|
||||
@@ -42,8 +42,9 @@
|
||||
app:spanCount="@integer/main_view_card_columns"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="80dp"
|
||||
android:clipToPadding="false"
|
||||
android:scrollbars="vertical"
|
||||
android:background="@color/mainLoyaltyCardBackground"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -43,8 +43,7 @@
|
||||
android:layout_height="@dimen/cardThumbnailSize"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@drawable/ic_baseline_arrow_drop_up_24"
|
||||
android:contentDescription="@string/moveUp"
|
||||
app:tint="@color/iconColor"/>
|
||||
android:contentDescription="@string/moveUp"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/moveDown"
|
||||
@@ -52,8 +51,7 @@
|
||||
android:layout_height="@dimen/cardThumbnailSize"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@drawable/ic_baseline_arrow_drop_down_24"
|
||||
android:contentDescription="@string/moveDown"
|
||||
app:tint="@color/iconColor"/>
|
||||
android:contentDescription="@string/moveDown"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/edit"
|
||||
@@ -61,8 +59,7 @@
|
||||
android:layout_height="@dimen/cardThumbnailSize"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@drawable/ic_mode_edit_white_24dp"
|
||||
android:contentDescription="@string/edit"
|
||||
app:tint="@color/iconColor"/>
|
||||
android:contentDescription="@string/edit"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/delete"
|
||||
@@ -70,8 +67,7 @@
|
||||
android:layout_height="@dimen/cardThumbnailSize"
|
||||
android:layout_weight="1"
|
||||
app:srcCompat="@drawable/ic_delete_white_24dp"
|
||||
android:contentDescription="@string/delete"
|
||||
app:tint="@color/iconColor"/>
|
||||
android:contentDescription="@string/delete"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
android:id="@+id/list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="80dp"
|
||||
android:clipToPadding="false"
|
||||
android:scrollbars="vertical"
|
||||
android:visibility="gone" />
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -7,15 +7,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
style="@style/Widget.MaterialComponents.Chip.Choice"
|
||||
style="@style/Widget.MaterialComponents.Chip.Filter"
|
||||
app:checkedIconVisible="true"
|
||||
android:textAppearance="?android:attr/textAppearance" />
|
||||
android:textAppearance="?android:attr/textAppearance" />
|
||||
|
||||
@@ -18,15 +18,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/tabs"
|
||||
@@ -39,7 +37,7 @@
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/barcode"/>
|
||||
android:text="@string/options"/>
|
||||
<com.google.android.material.tabs.TabItem
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -50,7 +48,6 @@
|
||||
|
||||
<ScrollView android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/inputContrastBackground"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
|
||||
<TableLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -76,8 +73,7 @@
|
||||
app:cardCornerRadius="4dp"
|
||||
android:paddingHorizontal="@dimen/inputPadding"
|
||||
app:cardElevation="0dp"
|
||||
app:cardBackgroundColor="@android:color/transparent"
|
||||
android:outlineProvider="none">
|
||||
app:cardBackgroundColor="@android:color/transparent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/thumbnail"
|
||||
@@ -128,6 +124,95 @@
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Barcode ID -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="@dimen/inputPadding"
|
||||
android:paddingTop="@dimen/inputPadding"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Barcode ID -->
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/barcodeIdView"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:hint="@string/barcodeId"
|
||||
android:labelFor="@+id/barcodeIdView">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/barcodeIdField"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Barcode type -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="@dimen/inputPadding"
|
||||
android:paddingTop="@dimen/inputPadding"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Barcode type -->
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/barcodeTypeView"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:hint="@string/barcodeType"
|
||||
android:labelFor="@+id/barcodeTypeField">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/barcodeTypeField"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Barcode -->
|
||||
<LinearLayout android:orientation="horizontal"
|
||||
android:layout_marginTop="10.0dp"
|
||||
android:layout_marginStart="10.0dp"
|
||||
android:layout_marginEnd="10.0dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/barcodeLayout">
|
||||
<ImageView
|
||||
android:background="@drawable/round_outline"
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/barcode_disp_height"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:id="@+id/barcode"
|
||||
android:layout_weight="1.0"/>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Buttons -->
|
||||
<LinearLayout android:orientation="horizontal"
|
||||
android:padding="10.0dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/barcodeCaptureLayout">
|
||||
<Button android:id="@+id/enterButton"
|
||||
android:layout_margin="@dimen/inputMargin"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/editBarcode"
|
||||
android:layout_weight="1.0"/>
|
||||
</LinearLayout>
|
||||
</TableLayout>
|
||||
<TableLayout
|
||||
android:id="@+id/optionsPart"
|
||||
android:visibility="gone">
|
||||
|
||||
<!-- Note -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -161,6 +246,7 @@
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:contentDescription="@string/groups"
|
||||
android:id="@+id/groupChips"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
@@ -240,99 +326,6 @@
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
</TableLayout>
|
||||
<TableLayout
|
||||
android:id="@+id/barcodePart"
|
||||
android:visibility="gone">
|
||||
|
||||
<!-- Barcode ID -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="@dimen/inputPadding"
|
||||
android:paddingTop="@dimen/inputPadding"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Barcode ID -->
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/barcodeIdView"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:hint="@string/barcodeId"
|
||||
android:labelFor="@+id/barcodeIdView">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/barcodeIdField"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"/>
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Barcode type -->
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="@dimen/inputPadding"
|
||||
android:paddingTop="@dimen/inputPadding"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<!-- Barcode type -->
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/barcodeTypeView"
|
||||
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:hint="@string/barcodeType"
|
||||
android:labelFor="@+id/barcodeTypeField">
|
||||
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/barcodeTypeField"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Barcode -->
|
||||
<View
|
||||
android:layout_height="@dimen/inputBorderThickness"
|
||||
android:layout_width="match_parent" />
|
||||
|
||||
<LinearLayout android:orientation="horizontal"
|
||||
android:padding="10.0dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:id="@+id/barcodeLayout">
|
||||
<ImageView
|
||||
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:layout_weight="1.0"/>
|
||||
</LinearLayout>
|
||||
|
||||
<!-- Buttons -->
|
||||
<LinearLayout android:orientation="horizontal"
|
||||
android:padding="10.0dip"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/barcodeCaptureLayout">
|
||||
<Button android:id="@+id/enterButton"
|
||||
android:layout_margin="@dimen/inputMargin"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/editBarcode"
|
||||
android:textColor="#FFFFFF"
|
||||
android:layout_weight="1.0"/>
|
||||
</LinearLayout>
|
||||
</TableLayout>
|
||||
|
||||
<TableLayout
|
||||
android:id="@+id/picturesPart"
|
||||
@@ -369,7 +362,8 @@
|
||||
android:minHeight="50dp"
|
||||
android:contentDescription="@string/frontImageDescription"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_camera_white" />
|
||||
app:srcCompat="@drawable/ic_camera_white"
|
||||
android:background="?attr/colorPrimary" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
</LinearLayout>
|
||||
@@ -404,7 +398,8 @@
|
||||
android:minHeight="50dp"
|
||||
android:contentDescription="@string/backImageDescription"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_camera_white" />
|
||||
app:srcCompat="@drawable/ic_camera_white"
|
||||
android:background="?attr/colorPrimary" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -18,11 +18,13 @@
|
||||
android:layout_height="0dp"
|
||||
android:outlineProvider="none"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:strokeWidth="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/store"
|
||||
app:layout_constraintDimensionRatio="85.6f:53.98f"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:importantForAccessibility="no"
|
||||
android:id="@+id/thumbnail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@@ -35,6 +37,7 @@
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:importantForAccessibility="no"
|
||||
android:id="@+id/selected_thumbnail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
@@ -58,7 +61,7 @@
|
||||
android:layout_height="@dimen/cardThumbnailSize"
|
||||
android:layout_gravity="end"
|
||||
android:alpha="0.5"
|
||||
android:contentDescription="@string/starImage"
|
||||
android:contentDescription="@string/starred"
|
||||
android:elevation="4dp"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -67,6 +70,7 @@
|
||||
tools:ignore="ImageContrastCheck" />
|
||||
|
||||
<ImageView
|
||||
android:importantForAccessibility="no"
|
||||
android:id="@+id/star_border"
|
||||
android:layout_width="@dimen/cardThumbnailSize"
|
||||
android:layout_height="@dimen/cardThumbnailSize"
|
||||
@@ -77,7 +81,7 @@
|
||||
android:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_unstarred_white"
|
||||
app:srcCompat="@drawable/ic_unstarred_black"
|
||||
tools:ignore="ImageContrastCheck" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/mainLayout"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
@@ -54,11 +55,12 @@
|
||||
android:padding="0dp"
|
||||
app:srcCompat="@drawable/ic_baseline_arrow_drop_up_24"
|
||||
android:contentDescription="@string/moveBarcodeToTopOfScreen"
|
||||
app:tint="#ffffff"
|
||||
app:tint="?attr/colorOnPrimary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/mainImage"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:background="?attr/colorPrimary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mainImage"
|
||||
@@ -85,10 +87,11 @@
|
||||
android:padding="0dp"
|
||||
app:srcCompat="@drawable/ic_baseline_arrow_drop_down_24"
|
||||
android:contentDescription="@string/moveBarcodeToCenterOfScreen"
|
||||
app:tint="#ffffff"
|
||||
app:tint="?attr/colorOnPrimary"
|
||||
app:layout_constraintTop_toBottomOf="@+id/mainImage"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:background="?attr/colorPrimary" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/dotIndicator"
|
||||
@@ -107,6 +110,7 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/minimizeButton"/>
|
||||
|
||||
<SeekBar
|
||||
android:contentDescription="@string/set_scale"
|
||||
android:id="@+id/barcodeScaler"
|
||||
android:visibility="gone"
|
||||
android:max="100"
|
||||
@@ -154,7 +158,7 @@
|
||||
android:id="@+id/bottom_sheet"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/inputBackground"
|
||||
android:background="?android:colorBackground"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="0px"
|
||||
android:visibility="gone"
|
||||
@@ -168,10 +172,11 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="80dp"
|
||||
android:layout_gravity="top|start"
|
||||
android:contentDescription="@string/toggleMoreInfo"
|
||||
android:contentDescription="@string/showMoreInfo"
|
||||
android:scaleType="fitCenter"
|
||||
app:srcCompat="@drawable/ic_baseline_arrow_drop_up_24"
|
||||
app:tint="#ffffff" />
|
||||
app:tint="?attr/colorOnPrimary"
|
||||
android:background="?attr/colorPrimary" />
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/bottomSheetContentWrapper"
|
||||
@@ -247,14 +252,13 @@
|
||||
android:weightSum="1.0"
|
||||
>
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar_landscape"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="?actionBarSize"
|
||||
android:background="@android:color/transparent"
|
||||
android:fitsSystemWindows="false"
|
||||
android:paddingTop="0dp"
|
||||
android:theme="@style/CardView.ActionBarTheme"
|
||||
android:visibility="gone"
|
||||
app:contentInsetStart="72.0dip"
|
||||
app:layout_collapseMode="pin" />
|
||||
@@ -290,7 +294,6 @@
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="?actionBarSize"
|
||||
android:background="@android:color/transparent"
|
||||
android:theme="@style/CardView.ActionBarTheme"
|
||||
app:contentInsetStart="72.0dip"
|
||||
app:layout_collapseMode="pin" />
|
||||
|
||||
|
||||
@@ -19,15 +19,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"/>
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/groups"
|
||||
|
||||
@@ -19,15 +19,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"/>
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
||||
@@ -9,15 +9,13 @@
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay" />
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
@@ -25,6 +23,7 @@
|
||||
android:id="@+id/zxing_barcode_scanner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="?attr/actionBarSize"
|
||||
app:zxing_scanner_layout="@layout/custom_barcode_scanner">
|
||||
</com.journeyapps.barcodescanner.DecoratedBarcodeView>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -1,27 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical">
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context="protect.card_locker.preferences.SettingsActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
style="?attr/toolbarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"/>
|
||||
android:layout_height="?attr/actionBarSize" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/settings_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="?attr/actionBarSize" />
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@@ -3,19 +3,18 @@
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"/>
|
||||
style="?attr/toolbarStyle" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
||||
9
app/src/main/res/menu/card_details_menu.xml
Normal file
9
app/src/main/res/menu/card_details_menu.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/action_unfold"
|
||||
android:title="@string/action_hide_details"
|
||||
android:icon="@drawable/ic_baseline_unfold_less_24"
|
||||
app:showAsAction="always"
|
||||
android:visible="true"/>
|
||||
</menu>
|
||||
@@ -7,22 +7,25 @@
|
||||
android:title="@string/action_search"
|
||||
android:icon="@drawable/ic_search_white"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="always|collapseActionView"/>
|
||||
app:showAsAction="always|collapseActionView"
|
||||
android:visible="false"/>
|
||||
<item
|
||||
android:id="@+id/action_unfold"
|
||||
android:title="@string/action_hide_details"
|
||||
android:icon="@drawable/ic_baseline_unfold_less_24"
|
||||
app:showAsAction="always"/>
|
||||
app:showAsAction="always"
|
||||
android:visible="false"/>
|
||||
<item
|
||||
android:id="@+id/action_sort"
|
||||
android:title="@string/sort"
|
||||
android:icon="@drawable/ic_baseline_sort_24"
|
||||
app:showAsAction="always"/>
|
||||
app:showAsAction="always"
|
||||
android:visible="false"/>
|
||||
<item
|
||||
android:id="@+id/action_manage_groups"
|
||||
android:icon="@drawable/ic_folder_white"
|
||||
android:title="@string/groups"
|
||||
app:showAsAction="ifRoom"/>
|
||||
app:showAsAction="never"/>
|
||||
<item
|
||||
android:id="@+id/action_import_export"
|
||||
android:icon="@drawable/ic_import_export_white_24dp"
|
||||
|
||||
@@ -4,34 +4,41 @@ J. Lavoie
|
||||
Allan Nordhøy
|
||||
Heimen Stoffels
|
||||
solokot
|
||||
mondstern
|
||||
Katharine Chui
|
||||
mondstern
|
||||
Oğuz Ersen
|
||||
IllusiveMan196
|
||||
Altonss
|
||||
Petr Novák
|
||||
StoyanDimitrov
|
||||
Joel A
|
||||
Taco
|
||||
Gediminas Murauskas
|
||||
Joel A
|
||||
StoyanDimitrov
|
||||
Nyatsuki
|
||||
Altonss
|
||||
Michael Moroni
|
||||
Samantaz Fox
|
||||
arno-github
|
||||
Ankit Tiwari
|
||||
Sergio Paredes
|
||||
huuhaa
|
||||
laralem
|
||||
arshbeerSingh
|
||||
huuhaa
|
||||
Miha Frangež
|
||||
Michael Moroni
|
||||
Olivia (Zoe)
|
||||
betsythefc
|
||||
waffshappen
|
||||
sr093906
|
||||
K. Herbert
|
||||
mdvhimself
|
||||
Maciej Błędkowski
|
||||
Olivia (Zoe)
|
||||
Quentin PAGÈS
|
||||
betsythefc
|
||||
Silvério Santos
|
||||
waffshappen
|
||||
ati3
|
||||
Jane Kong
|
||||
K. Herbert
|
||||
Still Hsu
|
||||
String E. Fighter
|
||||
Yurical
|
||||
rr-vesp
|
||||
/usr/local/ΕΨΗΕΛΩΝ
|
||||
Adolfo Jayme-Barrientos
|
||||
Alessandro Mandelli
|
||||
@@ -39,12 +46,11 @@ KovalevArtem
|
||||
Clonewayx
|
||||
D. Domig
|
||||
Diego
|
||||
Jane Kong
|
||||
Lukas Grassauer
|
||||
Marnick L'Eau
|
||||
Michalis
|
||||
Rosdyana Kusuma
|
||||
schirinowski
|
||||
umoenks
|
||||
Thomas Bertels
|
||||
inesre
|
||||
lgasp
|
||||
@@ -55,28 +61,31 @@ Airat
|
||||
Andreas Blaser
|
||||
BMN
|
||||
Biren
|
||||
Mylou53
|
||||
Kasina Dheeraj
|
||||
Eric
|
||||
Flav
|
||||
Franciszek Stefan
|
||||
Giovanni
|
||||
Izzy
|
||||
Karol Kosek
|
||||
bittin
|
||||
Maciej Błędkowski
|
||||
Marco
|
||||
Mattia
|
||||
Michael Gangolf
|
||||
pbeckmann
|
||||
Peer Beckmann
|
||||
Quang Nguyen
|
||||
Ratnesh
|
||||
Reza
|
||||
Rohan Babbar
|
||||
Ronak Upadhyay
|
||||
Rose Liverman
|
||||
Simone Dotto
|
||||
Still Hsu
|
||||
Subhashish Anand
|
||||
Tymofii Lytvynenko
|
||||
Tjipke van der Heide
|
||||
Yevgeny M
|
||||
avikkundu
|
||||
opsik
|
||||
psa-jforestier
|
||||
|
||||
@@ -440,7 +440,7 @@ _id,name,barcodeFormat
|
||||
450,CAD,EAN_13
|
||||
451,Camomilla,EAN_13
|
||||
452,"Carpisa Yamamay",EAN_13
|
||||
453,Carrefour,EAN_13
|
||||
453,Carrefour,CODE_128
|
||||
454,"Cisalfa Sport",EAN_13
|
||||
455,Coin,ITF
|
||||
456,Comet,EAN_13
|
||||
|
||||
|
@@ -11,7 +11,7 @@
|
||||
<string name="unstar">Премахва от любими</string>
|
||||
<string name="star">Добавя към любими</string>
|
||||
<string name="noBarcode">Без щрихкод</string>
|
||||
<string name="barcodeNoBarcode">Картата няма щрихкод</string>
|
||||
<string name="barcodeNoBarcode">Липсва щрихкод</string>
|
||||
<string name="barcodeType">Вид на щрихкод</string>
|
||||
<string name="cardId">Идентификатор на карта</string>
|
||||
<string name="note">Бележка</string>
|
||||
@@ -25,18 +25,18 @@
|
||||
</plurals>
|
||||
<string name="failedOpeningFileManager">Инсталирайте приложение за управление на файлове.</string>
|
||||
<string name="app_license">Свободен софтуер с авторски права, лицензиран под GPLv3+</string>
|
||||
<string name="frontImageDescription">Снимка на предната страна на карта</string>
|
||||
<string name="backImageDescription">Снимка на задната страна на карта</string>
|
||||
<string name="frontImageDescription">Снимка на предната страна</string>
|
||||
<string name="backImageDescription">Снимка на задната страна</string>
|
||||
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> не изглежда истинска наличност.</string>
|
||||
<string name="no">Не</string>
|
||||
<string name="yes">Да</string>
|
||||
<string name="setBackImage">Снимка на задната страна</string>
|
||||
<string name="setFrontImage">Снимка на предната страна</string>
|
||||
<string name="photos">Снимки</string>
|
||||
<string name="importOptionApplicationExplanation">Изберете файл чрез друго приложение.</string>
|
||||
<string name="noExternalStoragePermissionError">Дайте разрешение за достъп до хранилището, за да работи внасянето и изнасянето</string>
|
||||
<string name="importOptionApplicationExplanation">Изберете файл на друго приложение.</string>
|
||||
<string name="noExternalStoragePermissionError">Разрешете достъп до хранилището, за да работи внасянето и изнасянето</string>
|
||||
<string name="noCardExistsError">Картата не е намерена</string>
|
||||
<string name="updateBarcodeQuestionText">Идентификаторът е променен. Желаете ли с неговата стойност да бъде променен и щрихкода\?</string>
|
||||
<string name="updateBarcodeQuestionText">Идентификаторът е променен. Желаете ли с неговата стойност да бъде променен и щрихкодът\?</string>
|
||||
<string name="updateBarcodeQuestionTitle">Обновяване на щрихкода\?</string>
|
||||
<string name="noCardIdError">Не е въведен идентификатор</string>
|
||||
<string name="noCardsMessage">Добавете карта</string>
|
||||
@@ -80,7 +80,6 @@
|
||||
<string name="groupsList">Списъци: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Валидност: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Изтекла: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> точки</string>
|
||||
<string name="balanceSentence">Наличност: <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGroups">Докоснете бутона +, за да добавите списък.</string>
|
||||
<string name="noStoreError">Не е въведено наименование</string>
|
||||
@@ -99,33 +98,33 @@
|
||||
<string name="settings_category_title_ui">Потребителски интерфейс</string>
|
||||
<string name="settings">Настройки</string>
|
||||
<string name="starImage">Звезда за любимо</string>
|
||||
<string name="thumbnailDescription">Миниатюра на картата</string>
|
||||
<string name="copy_to_clipboard_toast">Идентификаторът на картата е копиран в междинната памет</string>
|
||||
<string name="enterBarcodeInstructions">Въведете идентификатор на картата или като изберете вида на щрихкода или докоснете бутона „Картата няма щрихкод“.</string>
|
||||
<string name="thumbnailDescription">Миниатюра</string>
|
||||
<string name="copy_to_clipboard_toast">Идентификаторът е копиран в междинната памет</string>
|
||||
<string name="enterBarcodeInstructions">Въведете идентификатор и или изберете вида на щрихкода, или докоснете бутона „Липсва щрихкод“.</string>
|
||||
<string name="selectBarcodeTitle">Избиране на щрихкод</string>
|
||||
<string name="importOptionApplicationButton">Избиране чрез приложение</string>
|
||||
<string name="importing">Внасяне…</string>
|
||||
<string name="exporting">Изнасяне…</string>
|
||||
<string name="exportFailed">Картите не могат да бъдат изнесени</string>
|
||||
<string name="exportFailed">Данните не могат да бъдат изнесени</string>
|
||||
<string name="exportFailedTitle">Грешка при изнасяне</string>
|
||||
<string name="importFailed">Картите не могат да бъдат внесени</string>
|
||||
<string name="importFailed">Данните не могат да бъдат внесени</string>
|
||||
<string name="importFailedTitle">Грешка при внасяне</string>
|
||||
<string name="exportSuccessfulTitle">Резултат от изнасяне</string>
|
||||
<string name="importSuccessfulTitle">Резултат от внасяне</string>
|
||||
<string name="importExportHelp">Резервните копия на картите ви дават възможност да ги преместите на друго устройство.</string>
|
||||
<string name="importExportHelp">Резервните копия на данните ви дават възможност да ги премествате на друго устройство.</string>
|
||||
<string name="exportName">Изнасяне</string>
|
||||
<string name="importExport">Внасяне/изнасяне</string>
|
||||
<string name="sendLabel">Изпращане…</string>
|
||||
<string name="scanCardBarcode">Снемане на щрихкод от карта</string>
|
||||
<string name="scanCardBarcode">Снемане на щрихкод</string>
|
||||
<string name="editCardTitle">Редактиране на карта</string>
|
||||
<string name="share">Споделя</string>
|
||||
<string name="copy_to_clipboard">Копира идентификатора в междинната памет</string>
|
||||
<string name="ok">Добре</string>
|
||||
<string name="importSuccessful">Картите са внесени успешно</string>
|
||||
<string name="chooseImportType">От къде ще внесете\?</string>
|
||||
<string name="importSuccessful">Данните са внесени</string>
|
||||
<string name="chooseImportType">Внасяне на данни на</string>
|
||||
<string name="importCatimaMessage">Изберете файла <i>catima.zip</i>, предварително изнесен от Catima.
|
||||
\nСъздайте такъв файл от меню Внасяне/изнасяне от друго устройство с Catima като изберете Изнасяне.</string>
|
||||
<string name="importOptionApplicationTitle">От друго приложение</string>
|
||||
<string name="importOptionApplicationTitle">Чрез друго приложение</string>
|
||||
<string name="importOptionFilesystemButton">Избиране от файлова система</string>
|
||||
<string name="importOptionFilesystemExplanation">Изберете определен файл от файловата система.</string>
|
||||
<string name="app_resources">Свободни ресурси: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
@@ -139,12 +138,12 @@
|
||||
<string name="about">Относно</string>
|
||||
<string name="importOptionFilesystemTitle">Внасяне от файловата система</string>
|
||||
<string name="importCatima">Внасяне от Catima</string>
|
||||
<string name="exportSuccessful">Картите са изнесени успешно</string>
|
||||
<string name="exportSuccessful">Данните са изнесени</string>
|
||||
<string name="unlockScreen">Разрешава автоматичното завъртане</string>
|
||||
<string name="lockScreen">Спира автоматичното завъртане</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> избрана карта</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> избрани карти</item>
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> избрана</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> избрани</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmationGroup">Изтриване на група\?</string>
|
||||
<string name="moveDown">Преместване надолу</string>
|
||||
@@ -162,14 +161,13 @@
|
||||
<string name="importLoyaltyCardKeychainMessage">Изберете файла <i>LoyaltyCardKeychain.csv</i>, предварително изнесен от Loyalty Card Keychain.
|
||||
\nСъздайте такъв файл от меню Внасяне/изнасяне от друго устройство с Loyalty Card Keychain като изберете Изнасяне.</string>
|
||||
<string name="failedParsingImportUriError">Препратката не може да бъде анализирана за внасяне</string>
|
||||
<string name="card_ids_copied">[не превеждай този низ, https://github.com/TheLastProject/Catima/issues/278]</string>
|
||||
<string name="failedGeneratingShareURL">Грешка при създаване на адрес за споделяне. Изпратете доклад за дефект.</string>
|
||||
<string name="deleteTitle">Премахване на карта</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one">Изтриване на <xliff:g>%d</xliff:g> карта</item>
|
||||
<item quantity="other">Изтриване на <xliff:g>%d</xliff:g> карти</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmation">Потвърдете премахване на картата.</string>
|
||||
<string name="deleteConfirmation">Потвърждавате ли премахване на картата\?</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Желаете ли <xliff:g>%d</xliff:g> карта да бъде премахната\?</item>
|
||||
<item quantity="other">Желаете ли тези <xliff:g>%d</xliff:g> карти да бъдат премахнати\?</item>
|
||||
@@ -187,12 +185,11 @@
|
||||
<string name="settings_theme_color">Цвят на темата</string>
|
||||
<string name="settings_system_locale">Система</string>
|
||||
<string name="settings_locale">Език</string>
|
||||
<string name="noGroupCards">Групата не съдържа карти</string>
|
||||
<string name="toggleMoreInfo">Превключване на повече информация</string>
|
||||
<string name="barcodeImageDescriptionWithType">Изображение на щрихкод на карта от вида <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGroupCards">Групата е празна</string>
|
||||
<string name="barcodeImageDescriptionWithType">Изображение на щрихкод от вид <xliff:g>%s</xliff:g></string>
|
||||
<string name="swipeToSwitchImages">Плъзване или задържане за смяна на изображения</string>
|
||||
<string name="sort_by">Сортиране по</string>
|
||||
<string name="reverse">Наобратно</string>
|
||||
<string name="reverse">…в обратен ред</string>
|
||||
<string name="sort_by_balance">Наличност</string>
|
||||
<string name="sort_by_expiry">Валидност</string>
|
||||
<string name="sort_by_most_recently_used">Последно използване</string>
|
||||
@@ -219,5 +216,19 @@
|
||||
<string name="group_edit">Редактиране на списък</string>
|
||||
<string name="action_show_details">Повече детайли</string>
|
||||
<string name="action_hide_details">По-малко детайли</string>
|
||||
<string name="noGiftCardsGroup">Няма карти. След като добавите ще можете да ги зачислите към списък от тук.</string>
|
||||
<string name="noGiftCardsGroup">Създайте карти и ги зачислите към списък от тук.</string>
|
||||
<string name="translate_platform">в Weblate</string>
|
||||
<string name="shortcutSelectCard">Избор на карта</string>
|
||||
<string name="starred">Със звезда</string>
|
||||
<string name="set_scale">Мащаб</string>
|
||||
<string name="showMoreInfo">Показване на информация</string>
|
||||
<string name="hideMoreInfo">Скриване на информация</string>
|
||||
<string name="options">Настройки</string>
|
||||
<string name="card_ids_copied">Идентификаторите са копирани</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> точка</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> точки</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Чисто черен фон за тъмната тема</string>
|
||||
<string name="include_if_asking_support">Ако искате да потърсите поддръжка, включете следната информация:</string>
|
||||
</resources>
|
||||
@@ -66,7 +66,6 @@
|
||||
<string name="settings_green_theme">সবুজ থিম</string>
|
||||
<string name="settings_brown_theme">বাদামী থিম</string>
|
||||
<string name="sort">সাজান</string>
|
||||
<string name="toggleMoreInfo">আরও তথ্য টগল করুন</string>
|
||||
<string name="swipeToSwitchImages">ছবি পরিবর্তন করতে সোয়াইপ করুন</string>
|
||||
<string name="sort_by_name">নামের দ্বারা সাজান</string>
|
||||
<string name="sort_by_most_recently_used">সর্বাধিক সম্প্রতি ব্যবহৃত দ্বারা সাজান</string>
|
||||
|
||||
@@ -66,7 +66,6 @@
|
||||
<string name="settings_green_theme">Zeleno</string>
|
||||
<string name="settings_brown_theme">Braun</string>
|
||||
<string name="sort">Poništi sortiranje</string>
|
||||
<string name="toggleMoreInfo">Uključi savjete</string>
|
||||
<string name="swipeToSwitchImages">Swipe ili long press za prebacivanje slika</string>
|
||||
<string name="sort_by_name">Ime</string>
|
||||
<string name="sort_by_most_recently_used">Nedavno Korišten</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="action_add">Přidat</string>
|
||||
<string name="noGiftCards">Klepnutím na tlačítko + plus přidáte kartu nebo ji nejprve importujete z nabídky⋮.</string>
|
||||
<string name="noGiftCards">Klepnutím na tlačítko + plus přidáte kartu nebo ji nejprve importujete z nabídky ⋮.</string>
|
||||
<string name="storeName">Název</string>
|
||||
<string name="note">Poznámka</string>
|
||||
<string name="cardId">ID karty</string>
|
||||
@@ -15,21 +15,21 @@
|
||||
<string name="sendLabel">Odeslat…</string>
|
||||
<string name="editCardTitle">Editovat věrnostní kartu</string>
|
||||
<string name="addCardTitle">Přidat věrnostní kartu</string>
|
||||
<string name="scanCardBarcode">Skenování Čárový Kód Karty</string>
|
||||
<string name="scanCardBarcode">Skenování čárového kódu</string>
|
||||
<string name="noStoreError">Zadáno žádné jméno</string>
|
||||
<string name="noCardIdError">Žádné ID karty zadáno</string>
|
||||
<string name="noCardIdError">ID nezadáno</string>
|
||||
<string name="importExport">Import/Export</string>
|
||||
<string name="exportName">Export</string>
|
||||
<string name="importExportHelp">Zálohování karet vám umožní přesunout je do jiného zařízení.</string>
|
||||
<string name="importExportHelp">Zálohování dat vám umožní přesunout je do jiného zařízení.</string>
|
||||
<string name="importSuccessfulTitle">Importováno</string>
|
||||
<string name="importFailedTitle">Import selhal</string>
|
||||
<string name="importFailed">Nelze importovat karty</string>
|
||||
<string name="exportSuccessfulTitle">Exportovat</string>
|
||||
<string name="importFailed">Nelze provést import</string>
|
||||
<string name="exportSuccessfulTitle">Exportováno</string>
|
||||
<string name="exportFailedTitle">Export selhal</string>
|
||||
<string name="exportFailed">Nelze exportovat karty</string>
|
||||
<string name="exportFailed">Nelze provést export</string>
|
||||
<string name="importing">Importuji…</string>
|
||||
<string name="exporting">Exportuji…</string>
|
||||
<string name="noExternalStoragePermissionError">Udělit povolení externího úložiště pro import nebo export karet jako první</string>
|
||||
<string name="noExternalStoragePermissionError">Udělit oprávnění přístupu k externímu úložišti pro import nebo export dat</string>
|
||||
<string name="importOptionFilesystemTitle">Import ze souborového systému</string>
|
||||
<string name="importOptionFilesystemExplanation">Vyberte konkrétní soubor v uložišti.</string>
|
||||
<string name="importOptionFilesystemButton">Ze souborového systému</string>
|
||||
@@ -42,7 +42,7 @@
|
||||
<string name="debug_version_fmt">Verze: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_revision_fmt">Informace o revizi: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Vyberte čárový kód</string>
|
||||
<string name="copy_to_clipboard_toast">ID karty zkopírované do schránky</string>
|
||||
<string name="copy_to_clipboard_toast">ID zkopírované do schránky</string>
|
||||
<string name="deleteTitle">Smazat kartu</string>
|
||||
<string name="deleteConfirmation">Opravdu chcete smazat tuto věrnostní kartu?</string>
|
||||
<string name="moveBarcodeToCenterOfScreen">Střed čárového kódu na obrazovce</string>
|
||||
@@ -58,7 +58,7 @@
|
||||
\ncopyright © 2016–2020 Branden Archer</string>
|
||||
<string name="exportOptionExplanation">Data budou zapsána na místo podle vašeho výběru.</string>
|
||||
<string name="failedParsingImportUriError">Nelze analyzovat import URI</string>
|
||||
<string name="noCardExistsError">Nelze najít kartu</string>
|
||||
<string name="noCardExistsError">Kartu nelze najít</string>
|
||||
<string name="noCardsMessage">Nejprve přidejte kartu</string>
|
||||
<string name="cardShortcut">Zástupce Karty</string>
|
||||
<string name="share">Podíl</string>
|
||||
@@ -69,10 +69,10 @@
|
||||
<string name="noBarcode">Žádný čárový kód</string>
|
||||
<string name="barcodeNoBarcode">Tato karta nemá čárový kód</string>
|
||||
<string name="barcodeType">Typ čárového kódu</string>
|
||||
<string name="noMatchingGiftCards">Nic jsem nenašel. Zkuste změnit vyhledávání.</string>
|
||||
<string name="noMatchingGiftCards">Nic nenalezeno. Zkuste změnit vyhledávání.</string>
|
||||
<string name="action_search">Vyhledávání</string>
|
||||
<string name="thumbnailDescription">Miniatura karty</string>
|
||||
<string name="card_ids_copied">Zkopírované ID karty(karet)</string>
|
||||
<string name="thumbnailDescription">Miniatura</string>
|
||||
<string name="card_ids_copied">Zkopírované ID</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Opravdu chcete kartu <xliff:g>%d</xliff:g> trvale odstranit\?</item>
|
||||
<item quantity="few">Opravdu chcete karty <xliff:g>%d</xliff:g> trvale odstranit\?</item>
|
||||
@@ -83,7 +83,7 @@
|
||||
<item quantity="few">Odstranit karty <xliff:g>%d</xliff:g></item>
|
||||
<item quantity="other">Odstranit karty <xliff:g>%d</xliff:g></item>
|
||||
</plurals>
|
||||
<string name="importSuccessful">Data karty importována</string>
|
||||
<string name="importSuccessful">Data importována</string>
|
||||
<string name="intent_import_card_from_url_share_text">Chci s Vámi sdílet kartu</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Bránit uzamykání obrazovky</string>
|
||||
<string name="settings_keep_screen_on">Udržovat obrazovku zapnutou</string>
|
||||
@@ -96,13 +96,12 @@
|
||||
<string name="settings_category_title_ui">Uživatelské rozhraní</string>
|
||||
<string name="settings">Nastavení</string>
|
||||
<string name="card">Karta</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> bodů</string>
|
||||
<string name="balanceSentence">Zůstatek: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Platnost vypršela: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Platí do: <xliff:g>%s</xliff:g></string>
|
||||
<string name="moveDown">Přesunout dolů</string>
|
||||
<string name="moveUp">Přesunout nahoru</string>
|
||||
<string name="enterBarcodeInstructions">Zadejte ID karty a níže vyberte typ čárového kódu nebo \"Tato karta nemá čárový kód\".</string>
|
||||
<string name="enterBarcodeInstructions">Zadejte ID a níže vyberte typ čárového kódu nebo \"Tato karta nemá čárový kód\".</string>
|
||||
<string name="settings_brown_theme">Hnědá</string>
|
||||
<string name="settings_grey_theme">Šedá</string>
|
||||
<string name="settings_green_theme">Zelená</string>
|
||||
@@ -121,22 +120,22 @@
|
||||
<string name="passwordRequired">Zadejte prosím heslo</string>
|
||||
<string name="no">Ne</string>
|
||||
<string name="yes">Ano</string>
|
||||
<string name="updateBarcodeQuestionText">Změnili jste ID karty. Chcete také aktualizovat čárový kód, aby používal stejnou hodnotu\?</string>
|
||||
<string name="updateBarcodeQuestionText">Změnili jste ID. Chcete také aktualizovat čárový kód, aby používal stejnou hodnotu\?</string>
|
||||
<string name="updateBarcodeQuestionTitle">Aktualizovat hodnotu čárového kódu\?</string>
|
||||
<string name="takePhoto">Pořídit fotku</string>
|
||||
<string name="removeImage">Odstranit obrázek</string>
|
||||
<string name="setBackImage">Nastavit obrázek zadní strany</string>
|
||||
<string name="setFrontImage">Nastavit obrázek přední strany</string>
|
||||
<string name="photos">Fotky</string>
|
||||
<string name="backImageDescription">Obrázek zadní strany karty</string>
|
||||
<string name="frontImageDescription">Obrázek přední strany karty</string>
|
||||
<string name="backImageDescription">Obrázek zadní strany</string>
|
||||
<string name="frontImageDescription">Obrázek přední strany</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Chci s Vámi sdílet kartu</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">ID karty zkopírováno do schránky</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">ID zkopírováno do schránky</string>
|
||||
<string name="wrongValueForBarcodeType">Hodnota není platná pro vybraný typ čárového kódu</string>
|
||||
<string name="unsupportedBarcodeType">Tento typ čárového kódu zatím nelze zobrazit. Možná bude podporován v pozdější verzi aplikace.</string>
|
||||
<string name="barcodeId">Hodnota čárového kódu</string>
|
||||
<string name="setBarcodeId">Nastavení hodnoty čárového kódu</string>
|
||||
<string name="sameAsCardId">Stejné jako ID karty</string>
|
||||
<string name="sameAsCardId">Stejné jako ID</string>
|
||||
<string name="importVoucherVaultMessage">Vyberte svůj <i>vouchervault.json</i> export z Voucher Vault, který chcete importovat.
|
||||
\nVytvořte jej tak, že nejprve stisknete tlačítko Exportovat v aplikaci Voucher Vault.</string>
|
||||
<string name="importVoucherVault">Import z Voucher Vault</string>
|
||||
@@ -158,7 +157,7 @@
|
||||
\nNejsou shromažďovány žádné údaje, což může potvrdit každý, protože naše aplikace je svobodný software.</string>
|
||||
<string name="privacy_policy">Zásady soukromí</string>
|
||||
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
|
||||
<string name="chooseImportType">Importovat data z\?</string>
|
||||
<string name="chooseImportType">Importovat data z</string>
|
||||
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> se nezdá být platným zůstatkem.</string>
|
||||
<string name="points">Body</string>
|
||||
<string name="currency">Měna</string>
|
||||
@@ -167,7 +166,7 @@
|
||||
<string name="noBarcodeFound">Čarový kód nenalezen</string>
|
||||
<string name="groupsList">Skupiny: <xliff:g>%s</xliff:g></string>
|
||||
<string name="addFromImage">Výběr obrázku z galerie</string>
|
||||
<string name="addManually">Ruční zadání ID karty</string>
|
||||
<string name="addManually">Ruční zadání ID</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Ukončit bez uložení\?</string>
|
||||
<string name="leaveWithoutSaveTitle">Ukončit</string>
|
||||
<string name="failedOpeningFileManager">Nejprve si nainstalujte správce souborů.</string>
|
||||
@@ -178,10 +177,10 @@
|
||||
<item quantity="few"><xliff:g>%d</xliff:g> karty</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> karet</item>
|
||||
</plurals>
|
||||
<string name="noGroups">Kliknutím na tlačítko + plus nejprve přidejte skupiny pro kategorizaci.</string>
|
||||
<string name="noGroups">Kliknutím na tlačítko + plus přidejte skupiny pro kategorizaci.</string>
|
||||
<string name="groups">Skupiny</string>
|
||||
<string name="enter_group_name">Zadejte název skupiny</string>
|
||||
<string name="exportSuccessful">Data karty exportována</string>
|
||||
<string name="exportSuccessful">Data exportována</string>
|
||||
<string name="settings_display_barcode_max_brightness">Rozjasněné zobrazení čárového kódu</string>
|
||||
<string name="starImage">Oblíbená hvězda</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019–<xliff:g>%d</xliff:g> Sylvia van Os</string>
|
||||
@@ -191,17 +190,16 @@
|
||||
<item quantity="other">Vybráno <xliff:g>%d</xliff:g> karet</item>
|
||||
</plurals>
|
||||
<string name="app_contributors">Přispěli: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="noGroupCards">Tato skupina neobsahuje žádné karty</string>
|
||||
<string name="noGroupCards">Tato skupina je prázdná</string>
|
||||
<string name="sort_by">Seřadit podle</string>
|
||||
<string name="reverse">Obrátit</string>
|
||||
<string name="reverse">…v obráceném pořadí</string>
|
||||
<string name="sort_by_balance">Zůstatek</string>
|
||||
<string name="sort_by_expiry">Vypršení</string>
|
||||
<string name="sort_by_most_recently_used">Naposledy použité</string>
|
||||
<string name="sort_by_name">Název</string>
|
||||
<string name="swipeToSwitchImages">Přejetím nebo dlouhým stisknutím přepínáte obrázky</string>
|
||||
<string name="toggleMoreInfo">Přepnout zobrazení dalších informací</string>
|
||||
<string name="sort">Seřadit</string>
|
||||
<string name="barcodeImageDescriptionWithType">Obrázek čárového kódu karty typu <xliff:g>%s</xliff:g></string>
|
||||
<string name="barcodeImageDescriptionWithType">Obrázek čárového kódu <xliff:g>%s</xliff:g></string>
|
||||
<string name="version_history">Historie verzí</string>
|
||||
<string name="rate_this_app">Ohodnoťte tuto aplikaci</string>
|
||||
<string name="and_data_usage">a využití dat</string>
|
||||
@@ -222,4 +220,18 @@
|
||||
<string name="group_updated">Skupina aktualizována</string>
|
||||
<string name="editGroup">Úprava skupiny: <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGiftCardsGroup">Zatím nemáte žádné věrnostní karty. Jakmile nějaké přidáte, můžete je přiřadit do skupiny zde.</string>
|
||||
<string name="shortcutSelectCard">Vybrat kartu</string>
|
||||
<string name="action_show_details">Zobrazit detaily</string>
|
||||
<string name="action_hide_details">Skrýt detaily</string>
|
||||
<string name="translate_platform">na Weblate</string>
|
||||
<string name="showMoreInfo">Zobrazit podrobnosti</string>
|
||||
<string name="hideMoreInfo">Skrýt podrobnosti</string>
|
||||
<string name="starred">S hvězdičkou</string>
|
||||
<string name="set_scale">Nastavení měřítka</string>
|
||||
<string name="options">Volby</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> bod</item>
|
||||
<item quantity="few"><xliff:g>%s</xliff:g> body</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> bodů</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
@@ -92,7 +92,7 @@
|
||||
</plurals>
|
||||
<string name="groupsList">Gruppen: <xliff:g>%s</xliff:g></string>
|
||||
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
|
||||
<string name="chooseImportType">Daten importieren aus?</string>
|
||||
<string name="chooseImportType">Daten importieren aus</string>
|
||||
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> scheint kein gültiges Guthaben zu sein.</string>
|
||||
<string name="points">Punkte</string>
|
||||
<string name="currency">Währung</string>
|
||||
@@ -105,7 +105,6 @@
|
||||
<string name="editBarcode">Barcode ändern</string>
|
||||
<string name="barcode">Strichcode</string>
|
||||
<string name="card">Karte</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> Punkte</string>
|
||||
<string name="balanceSentence">Guthaben: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Abgelaufen: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Läuft ab: <xliff:g>%s</xliff:g></string>
|
||||
@@ -188,7 +187,6 @@
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_theme_color">Designfarbe</string>
|
||||
<string name="app_contributors">Ermöglicht durch: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="toggleMoreInfo">Umschalten, um weitere Informationen anzuzeigen</string>
|
||||
<string name="barcodeImageDescriptionWithType">Bild <xliff:g>%s</xliff:g> Barcode</string>
|
||||
<string name="swipeToSwitchImages">Wischen oder langes Drücken zum Wechseln der Bilder</string>
|
||||
<string name="sort_by">Sortieren nach</string>
|
||||
@@ -222,4 +220,15 @@
|
||||
<string name="action_hide_details">Details ausblenden</string>
|
||||
<string name="translate_platform">auf Weblate</string>
|
||||
<string name="shortcutSelectCard">Wählen Sie eine Karte</string>
|
||||
<string name="options">Optionen</string>
|
||||
<string name="hideMoreInfo">Infos ausblenden</string>
|
||||
<string name="set_scale">Größe festlegen</string>
|
||||
<string name="showMoreInfo">Infos anzeigen</string>
|
||||
<string name="starred">als Favorit</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> Punkt</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> Punkte</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Rein schwarzer Hintergrund für dunkles Thema</string>
|
||||
<string name="include_if_asking_support">Wenn Sie Unterstützung anfordern möchten, geben Sie bitte die folgenden Informationen an:</string>
|
||||
</resources>
|
||||
@@ -64,7 +64,7 @@
|
||||
<string name="share">Compartir</string>
|
||||
<string name="barcodeNoBarcode">Esta tarjeta no tiene código de barras</string>
|
||||
<string name="barcodeType">Tipo de código de barras</string>
|
||||
<string name="noMatchingGiftCards">No se ha encontrado nada. Pruebe a modificar su búsqueda.</string>
|
||||
<string name="noMatchingGiftCards">Sin resultados. Pruebe modificando su búsqueda.</string>
|
||||
<string name="action_search">Buscar</string>
|
||||
<string name="app_revision_fmt">Información de la revisión: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="noGroups">Primero pulse en el botón «+» para añadir grupos de categorización.</string>
|
||||
@@ -99,7 +99,6 @@
|
||||
<string name="editBarcode">Editar el código de barras</string>
|
||||
<string name="barcode">Código de barras</string>
|
||||
<string name="card">Tarjeta</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> puntos</string>
|
||||
<string name="expiryStateSentenceExpired">Expirado: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Expira: <xliff:g>%s</xliff:g></string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Derechos de autor © 2019-<xliff:g>%d</xliff:g> de Sylvia van Os.</string>
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="noExternalStoragePermissionError">Salli käyttöoikeus ulkoisen tallennustilan käyttöön voidaksesi tuoda tai viedä kortteja</string>
|
||||
<string name="noExternalStoragePermissionError">Salli käyttöoikeus ulkoisen tallennustilan käyttöön voidaksesi tuoda tai viedä tietoja</string>
|
||||
<string name="no">Ei</string>
|
||||
<string name="yes">Kyllä</string>
|
||||
<string name="updateBarcodeQuestionText">Vaihdoit kortin ID-tunnuksen. Haluatko päivittää myös viivakoodin käyttämään samaa arvoa\?</string>
|
||||
<string name="updateBarcodeQuestionText">Vaihdoit ID-tunnuksen. Haluatko päivittää myös viivakoodin käyttämään samaa arvoa\?</string>
|
||||
<string name="updateBarcodeQuestionTitle">Päivitä viivakoodin arvo\?</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Haluan jakaa joitain kortteja kanssasi</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Kortin tunnukset kopioidaan leikepöydälle</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">ID-tunnukset kopioitu leikepöydälle</string>
|
||||
<string name="wrongValueForBarcodeType">Arvo ei ole kelvollinen valitulle viivakoodityypille</string>
|
||||
<string name="unsupportedBarcodeType">Tätä viivakoodityyppiä ei voi vielä näyttää. Sitä saatetaan tukea sovelluksen myöhemmässä versiossa.</string>
|
||||
<string name="setBarcodeId">Aseta viivakoodin arvo</string>
|
||||
<string name="sameAsCardId">Sama kuin kortin ID-tunnus</string>
|
||||
<string name="sameAsCardId">Sama kuin ID-tunnus</string>
|
||||
<string name="barcodeId">Viivakoodin arvo</string>
|
||||
<string name="importVoucherVaultMessage">Valitse tuotava <i>vouchervault.json</i>-vienti Voucher Vaultista.
|
||||
\nTai luo se painamalla ensin Vie Voucher Vaultissa.</string>
|
||||
\nLuo se painamalla ensin Vie Voucher Vaultissa.</string>
|
||||
<string name="importVoucherVault">Tuo Voucher Vault varmuuskopiotiedostosta</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Valitse <i>LoyaltyCardKeychain.csv</i>-vientitietosi Loyalty Card Keychainista tuotavaksi.
|
||||
<string name="importLoyaltyCardKeychainMessage">Valitse tuotava <i>LoyaltyCardKeychain.csv</i>-vientitiedostosi Loyalty Card Keychainista.
|
||||
\nTai luo se Loyalty Card Keychainin Import/Export-valikosta painamalla ensin Export (Vie).</string>
|
||||
<string name="importLoyaltyCardKeychain">Tuo Loyalty Card Keychain varmuuskopiotiedostosta</string>
|
||||
<string name="importFidmeMessage">Valitse <i>fidme-export-request-xxxxxxxx.zip</i>-vienti FidMe:stä tuotavaksi ja valitse viivakoodityypit manuaalisesti sen jälkeen.
|
||||
\nTai luo se FidMe-profiilistasi valitsemalla Tietosuoja ja painamalla ensin Extract my data.</string>
|
||||
<string name="importFidmeMessage">Valitse tuotava <i>fidme-export-request-xxxxxxxx.zip</i>-vientitiedostosi FidMe:stä ja valitse viivakoodityypit manuaalisesti sen jälkeen.
|
||||
\nLuo se FidMe-profiilistasi valitsemalla Tietosuoja ja painamalla ensin Extract my data.</string>
|
||||
<string name="importFidme">Tuo FidMe varmuuskopiotiedostosta</string>
|
||||
<string name="importCatimaMessage">Valitse tuotava <i>catima.zip</i>-vienti Catimasta.
|
||||
\nTai luo se jonkin toisen Catima-sovelluksen Tuo/Vie-valikosta painamalla siellä ensin Vie.</string>
|
||||
<string name="importCatimaMessage">Valitse tuotava <i>catima.zip</i>-vientitiedostosi Catimasta.
|
||||
\nLuo se Catima-sovelluksen Tuo/Vie-valikosta painamalla siellä ensin Vie.</string>
|
||||
<string name="importCatima">Tuo Catima varmuuskopiotiedostosta</string>
|
||||
<string name="accept">Hyväksy</string>
|
||||
<string name="privacy_policy_popup_text">Tietosuojaseloste (joidenkin sovelluskauppojen vaatimus):
|
||||
@@ -30,7 +30,7 @@
|
||||
\nMITÄÄN TIETOJA EI KERÄTÄ LAINKAAN, minkä kuka tahansa voi vahvistaa, koska sovelluksemma on vapaa ohjelmisto.</string>
|
||||
<string name="privacy_policy">Tietosuojakäytäntö</string>
|
||||
<string name="app_loyalty_card_keychain">Kanta-asiakaskortin avainnippu</string>
|
||||
<string name="chooseImportType">Tuo tietoja kohteesta\?</string>
|
||||
<string name="chooseImportType">Tuo tietoja kohteesta</string>
|
||||
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> ei vaikuta olevan kelvollinen saldo.</string>
|
||||
<string name="points">Pisteet</string>
|
||||
<string name="currency">Valuutta</string>
|
||||
@@ -45,13 +45,12 @@
|
||||
<string name="editBarcode">Muokkaa viivakoodia</string>
|
||||
<string name="barcode">Viivakoodi</string>
|
||||
<string name="card">Kortti</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> pistettä</string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Vanhentunut: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Vanhenee: <xliff:g>%s</xliff:g></string>
|
||||
<string name="groupsList">Ryhmät: <xliff:g>%s</xliff:g></string>
|
||||
<string name="addFromImage">Valitse kuva galleriasta</string>
|
||||
<string name="addManually">Anna kortin ID-tunnus manuaalisesti</string>
|
||||
<string name="addManually">Anna ID-tunnus manuaalisesti</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Poistu tallentamatta\?</string>
|
||||
<string name="leaveWithoutSaveTitle">Poistu</string>
|
||||
<string name="moveDown">Siirrä alaspäin</string>
|
||||
@@ -63,13 +62,13 @@
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> kortti</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> kortit</item>
|
||||
</plurals>
|
||||
<string name="noGroups">Napsauta + plus-painiketta lisätäksesi ensin ryhmät luokittelua varten.</string>
|
||||
<string name="noGroups">Napsauta + plus-painiketta lisätäksesi ryhmät luokittelua varten.</string>
|
||||
<string name="groups">Ryhmät</string>
|
||||
<string name="enter_group_name">Anna ryhmän nimi</string>
|
||||
<string name="exportSuccessful">Korttitietojen vienti valmis</string>
|
||||
<string name="importSuccessful">Korttitietojen tuonti valmis</string>
|
||||
<string name="exportSuccessful">Tiedot viety</string>
|
||||
<string name="importSuccessful">Tiedot tuotu</string>
|
||||
<string name="intent_import_card_from_url_share_text">Haluan jakaa kortin kanssasi</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Estä lukitusnäyttö</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Estä näytön lukitus</string>
|
||||
<string name="settings_keep_screen_on">Pidä näyttö päällä</string>
|
||||
<string name="settings_lock_barcode_orientation">Lukitse viivakoodin suunta</string>
|
||||
<string name="settings_display_barcode_max_brightness">Kirkasta viivakoodinäkymää</string>
|
||||
@@ -81,19 +80,19 @@
|
||||
<string name="settings_category_title_ui">Käyttöliittymä</string>
|
||||
<string name="settings">Asetukset</string>
|
||||
<string name="starImage">Suosikki tähti</string>
|
||||
<string name="thumbnailDescription">Kortin pikkukuva</string>
|
||||
<string name="copy_to_clipboard_toast">Kortin ID-tunnus kopioitu leikepöydälle</string>
|
||||
<string name="enterBarcodeInstructions">Syötä kortin ID-tunnus ja valitse sen viivakoodityyppi, tai valitse \"Tällä kortilla ei ole viivakoodia\".</string>
|
||||
<string name="thumbnailDescription">Pienoiskuva</string>
|
||||
<string name="copy_to_clipboard_toast">ID-tunnus kopioitu leikepöydälle</string>
|
||||
<string name="enterBarcodeInstructions">Syötä ID-tunnus ja valitse sen viivakoodityyppi, tai valitse \"Ei viivakoodia\".</string>
|
||||
<string name="selectBarcodeTitle">Valitse viivakoodi</string>
|
||||
<string name="app_resources">Vapaat kolmannen osapuolen resurssit: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_libraries">Kolmannen osapuolen Libre-kirjastot: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_revision_fmt">Muutostiedot: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">Versio: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="about_title_fmt">Tietoja <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="app_license">Copyleft (käyttäjänoikeus) - vapaa ohjelmisto, lisenssi GPLv3+.</string>
|
||||
<string name="app_license">Copyleft (käyttäjänoikeus) - vapaa ohjelmisto, lisenssi GPLv3+</string>
|
||||
<string name="app_copyright_old">Perustuu Loyalty Card Keychain sovellukseen
|
||||
\ntekijänoikeus © 2016–2020 Branden Archer.</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Tekijänoikeus © 2019–<xliff:g>%d</xliff:g> Sylvia van Os.</string>
|
||||
\ntekijänoikeus © 2016–2020 Branden Archer</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Tekijänoikeus © 2019–<xliff:g>%d</xliff:g> Sylvia van Os</string>
|
||||
<string name="about">Tietoja</string>
|
||||
<string name="importOptionApplicationButton">Käytä toista sovellusta</string>
|
||||
<string name="importOptionApplicationExplanation">Käytä mitä tahansa sovellusta tai suosikkitiedostonhallintaasi tiedoston avaamiseen.</string>
|
||||
@@ -104,23 +103,23 @@
|
||||
<string name="exportOptionExplanation">Tiedot kirjoitetaan valitsemaasi sijaintiin.</string>
|
||||
<string name="exporting">Viedään…</string>
|
||||
<string name="importing">Tuodaan…</string>
|
||||
<string name="exportFailed">Kortteja ei voitu viedä</string>
|
||||
<string name="exportFailed">Vienti epäonnistui</string>
|
||||
<string name="exportFailedTitle">Vienti epäonnistui</string>
|
||||
<string name="exportSuccessfulTitle">Vienti valmis</string>
|
||||
<string name="importFailed">Kortteja ei voitu tuoda</string>
|
||||
<string name="importFailed">Tuonti epäonnistui</string>
|
||||
<string name="importFailedTitle">Tuonti epäonnistui</string>
|
||||
<string name="importSuccessfulTitle">Tuonti valmis</string>
|
||||
<string name="importExportHelp">Varmuuskopioimalla korttisi, voit siirtää ne toiseen laitteeseen.</string>
|
||||
<string name="importExportHelp">Tietojesi varmuuskopiointi mahdollistaa niiden siirtämisen toiseen laitteeseen.</string>
|
||||
<string name="exportName">Vie</string>
|
||||
<string name="importExport">Tuo/Vie</string>
|
||||
<string name="failedParsingImportUriError">Tuonnin URI: n jäsentäminen epäonnistui</string>
|
||||
<string name="noCardExistsError">Korttia ei löytynyt</string>
|
||||
<string name="noCardIdError">Kortin ID-tunnusta ei annettu</string>
|
||||
<string name="noCardExistsError">Tätä korttia ei löytynyt</string>
|
||||
<string name="noCardIdError">ID-tunnusta ei annettu</string>
|
||||
<string name="noStoreError">Nimeä ei annettu</string>
|
||||
<string name="card_ids_copied">Kopioidut korttitunnukset</string>
|
||||
<string name="card_ids_copied">Kopioidut tunnukset</string>
|
||||
<string name="noCardsMessage">Lisää ensin kortti</string>
|
||||
<string name="cardShortcut">Kortin pikakuvake</string>
|
||||
<string name="scanCardBarcode">Skannaa kortin viivakoodi</string>
|
||||
<string name="scanCardBarcode">Skannaa viivakoodi</string>
|
||||
<string name="addCardTitle">Lisää kortti</string>
|
||||
<string name="editCardTitle">Muokkaa korttia</string>
|
||||
<string name="sendLabel">Lähetä…</string>
|
||||
@@ -137,7 +136,7 @@
|
||||
<string name="unstar">Poista suosikeista</string>
|
||||
<string name="star">Lisää suosikkeihin</string>
|
||||
<string name="noBarcode">Ei viivakoodia</string>
|
||||
<string name="barcodeNoBarcode">Tällä kortilla ei ole viivakoodia</string>
|
||||
<string name="barcodeNoBarcode">Viivakoodia ei ole</string>
|
||||
<string name="barcodeType">Viivakoodin tyyppi</string>
|
||||
<string name="cardId">Kortin ID-tunnus</string>
|
||||
<string name="note">Lisätieto</string>
|
||||
@@ -151,8 +150,8 @@
|
||||
<string name="setBackImage">Aseta takakuva</string>
|
||||
<string name="setFrontImage">Aseta etukuva</string>
|
||||
<string name="photos">Valokuvat</string>
|
||||
<string name="backImageDescription">Kortin takakuva</string>
|
||||
<string name="frontImageDescription">Kortin etukuva</string>
|
||||
<string name="backImageDescription">Takakuva</string>
|
||||
<string name="frontImageDescription">Etukuva</string>
|
||||
<string name="deleteConfirmation">Poista tämä kortti\?</string>
|
||||
<string name="deleteTitle">Poista kortti</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
@@ -169,7 +168,7 @@
|
||||
</plurals>
|
||||
<string name="importStocard">Tuo Stocardista</string>
|
||||
<string name="importStocardMessage">Valitse tuotava <i>***-sync.zip</i>-vienti Stocardista.
|
||||
\nTai hanki se lähettämällä sähköpostia osoitteeseen support@stocardapp.com ja pyytämällä tietojesi vientiä.</string>
|
||||
\nHanki se lähettämällä sähköpostia osoitteeseen support@stocardapp.com ja pyytämällä tietojesi vientiä.</string>
|
||||
<string name="passwordRequired">Ole hyvä ja syötä salasana</string>
|
||||
<string name="failedGeneratingShareURL">Ei pystynyt luomaan jaettavaa URL-osoitetta. Ilmoita tästä.</string>
|
||||
<string name="turn_flashlight_on">Sytytä taskulamppu</string>
|
||||
@@ -187,5 +186,49 @@
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_system_locale">Järjestelmä</string>
|
||||
<string name="settings_locale">Kieli</string>
|
||||
<string name="noGroupCards">Tämä ryhmä ei sisällä kortteja</string>
|
||||
<string name="noGroupCards">Tämä ryhmä on tyhjä</string>
|
||||
<string name="group_edit">Muokkaa ryhmää</string>
|
||||
<string name="group_name_already_in_use">Ryhmän nimi on jo käytössä</string>
|
||||
<string name="group_name_is_empty">Ryhmän nimi ei voi olla tyhjä</string>
|
||||
<string name="group_updated">Ryhmä päivitetty</string>
|
||||
<string name="editGroup">Muokataan ryhmää: <xliff:g>%s</xliff:g></string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> piste</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> pistettä</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Musta tausta tummalle teemalle</string>
|
||||
<string name="setIcon">Aseta kuvake</string>
|
||||
<string name="swipeToSwitchImages">Vaihda kuvia pyyhkäisemällä tai painamalla pitkään</string>
|
||||
<string name="sort_by_name">Nimi</string>
|
||||
<string name="sort_by_most_recently_used">Viimeksi käytetyt</string>
|
||||
<string name="sort_by_expiry">Viimeinen voimassaoloaika</string>
|
||||
<string name="sort_by_balance">Saldo</string>
|
||||
<string name="reverse">...käänteisessä järjestyksessä</string>
|
||||
<string name="sort_by">Lajitteluperuste</string>
|
||||
<string name="credits">Krediitit</string>
|
||||
<string name="help_translate_this_app">Auta kääntämään tämä sovellus</string>
|
||||
<string name="license">Lisenssi</string>
|
||||
<string name="source_repository">Lähdekoodivarasto</string>
|
||||
<string name="on_github">GitHubissa</string>
|
||||
<string name="and_data_usage">ja datan käyttö</string>
|
||||
<string name="on_google_play">Google Playssa</string>
|
||||
<string name="report_error">Ilmoita virheestä</string>
|
||||
<string name="action_show_details">Näytä tiedot</string>
|
||||
<string name="action_hide_details">Piilota tiedot</string>
|
||||
<string name="shortcutSelectCard">Valitse kortti</string>
|
||||
<string name="starred">Tähdellä merkityt</string>
|
||||
<string name="options">Vaihtoehdot</string>
|
||||
<string name="set_scale">Säädä kokoa</string>
|
||||
<string name="include_if_asking_support">Jos haluat pyytää tukea, ilmoita seuraavat tiedot:</string>
|
||||
<string name="hideMoreInfo">Piilota tiedot</string>
|
||||
<string name="exportPassword">Aseta salasana suojataksesi vientitiedostosi (valinnainen)</string>
|
||||
<string name="exportPasswordHint">Syötä salasana</string>
|
||||
<string name="showMoreInfo">Näytä tiedot</string>
|
||||
<string name="version_history">Versiohistoria</string>
|
||||
<string name="sort">Lajittele</string>
|
||||
<string name="translate_platform">Weblatessa</string>
|
||||
<string name="selectColor">Valitse väri</string>
|
||||
<string name="rate_this_app">Arvostele tämä sovellus</string>
|
||||
<string name="noGiftCardsGroup">Lisää kortteja ja lisää ne ryhmään täällä.</string>
|
||||
<string name="barcodeImageDescriptionWithType">Image <xliff:g>%s</xliff:g> viivakoodi</string>
|
||||
</resources>
|
||||
@@ -96,7 +96,7 @@
|
||||
\nAUCUNE DONNÉE N’EST COLLECTÉE, ce que tout le monde peut confirmer puisque notre application est un logiciel libre.</string>
|
||||
<string name="privacy_policy">Politique de confidentialité</string>
|
||||
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
|
||||
<string name="chooseImportType">Importer les données depuis \?</string>
|
||||
<string name="chooseImportType">Importer les données depuis</string>
|
||||
<string name="parsingBalanceFailed"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g> ne semble pas être un solde valide.</string>
|
||||
<string name="points">Points</string>
|
||||
<string name="currency">Monnaie</string>
|
||||
@@ -109,7 +109,6 @@
|
||||
<string name="editBarcode">Modifier le code-barres</string>
|
||||
<string name="barcode">Code-barres</string>
|
||||
<string name="card">Carte</string>
|
||||
<string name="balancePoints"><xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g> points</string>
|
||||
<string name="balanceSentence">Solde : <xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Expiré : <xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Expire : <xliff:g xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">%s</xliff:g></string>
|
||||
@@ -188,7 +187,6 @@
|
||||
<string name="settings_theme_color">Couleur du thème</string>
|
||||
<string name="app_contributors">Rendu possible par : <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="noGroupCards">Ce groupe est vide</string>
|
||||
<string name="toggleMoreInfo">Activer/désactiver l’affichage de plus d’infos</string>
|
||||
<string name="barcodeImageDescriptionWithType">Image <xliff:g>%s</xliff:g> code-barres</string>
|
||||
<string name="swipeToSwitchImages">Balayez ou appuyez longuement pour changer d’image</string>
|
||||
<string name="sort">Trier</string>
|
||||
@@ -222,4 +220,15 @@
|
||||
<string name="action_hide_details">Masquer les détails</string>
|
||||
<string name="translate_platform">sur Weblate</string>
|
||||
<string name="shortcutSelectCard">Sélectionnez une carte</string>
|
||||
<string name="options">Options</string>
|
||||
<string name="starred">En favori</string>
|
||||
<string name="set_scale">Définir une échelle</string>
|
||||
<string name="showMoreInfo">Afficher les infos</string>
|
||||
<string name="hideMoreInfo">Masquer les infos</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> point</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> points</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Fond noir pour le thème sombre</string>
|
||||
<string name="include_if_asking_support">Si vous voulez demander de l\'aide, incluez les informations suivantes :</string>
|
||||
</resources>
|
||||
@@ -1,9 +1,56 @@
|
||||
<resources
|
||||
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="action_add">הוספה</string>
|
||||
|
||||
<string name="cardId">מזהה כרטיס</string>
|
||||
<string name="cancel">ביטול</string>
|
||||
<string name="save">שמור</string>
|
||||
</resources>
|
||||
<string name="ok">אישור</string>
|
||||
<string name="action_search">חיפוש</string>
|
||||
<string name="noGiftCards">לחץ על לחצן ה + להוספת כרטיס, או ייבא מספר כרטיסים באמצעות התפריט ⋮.</string>
|
||||
<string name="lockScreen">סיבוב</string>
|
||||
<string name="share">שיתוף</string>
|
||||
<string name="copy_to_clipboard">העתקת מזהה ללוח</string>
|
||||
<string name="addCardTitle">הוספת כרטיס</string>
|
||||
<string name="noCardIdError">אין מזהה כרטיס</string>
|
||||
<string name="star">הוספה למועדפים</string>
|
||||
<string name="unstar">הסרה ממועדפים</string>
|
||||
<string name="note">הערות</string>
|
||||
<string name="barcodeType">סוג ברקוד</string>
|
||||
<string name="noBarcode">אין ברקוד</string>
|
||||
<string name="edit">עריכה</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one">אחד</item>
|
||||
<item quantity="two">שניים</item>
|
||||
<item quantity="many">מעט</item>
|
||||
<item quantity="other">אחר</item>
|
||||
</plurals>
|
||||
<string name="exportFailed">לא ניתן לייצא</string>
|
||||
<string name="noGiftCardsGroup">צור מספר כרטיסים, ואז שייך אותם לקבוצה פה.</string>
|
||||
<string name="failedParsingImportUriError">נתיב לא נמצא</string>
|
||||
<string name="noMatchingGiftCards">אין תוצאות. נסה חיפוש אחר.</string>
|
||||
<string name="storeName">שם חנות</string>
|
||||
<string name="barcodeNoBarcode">אין ברקוד</string>
|
||||
<string name="delete">מחיקה</string>
|
||||
<string name="confirm">אישור</string>
|
||||
<string name="deleteTitle">מחק כרטיס</string>
|
||||
<string name="deleteConfirmation">האם למחוק כרטיס זה\?</string>
|
||||
<string name="sendLabel">שליחה…</string>
|
||||
<string name="editCardTitle">עריכת כרטיס</string>
|
||||
<string name="scanCardBarcode">סריקת ברקוד</string>
|
||||
<string name="cardShortcut">קיצור דרך</string>
|
||||
<string name="noCardsMessage">תחילה הוסף כרטיס</string>
|
||||
<string name="card_ids_copied">מזהי כרטיס הועתקו</string>
|
||||
<string name="barcodeImageDescriptionWithType"></string>
|
||||
<string name="noStoreError">לא הוכנס שם חנות</string>
|
||||
<string name="noCardExistsError">כרטיס לא נמצא</string>
|
||||
<string name="importExport">ייבוא/ייצוא</string>
|
||||
<string name="exportName">ייצוא</string>
|
||||
<string name="importExportHelp">גיבוי המידע שלך מאפשר העברתו למכשיר אחר.</string>
|
||||
<string name="importSuccessfulTitle">הייבוא הצליח</string>
|
||||
<string name="importFailedTitle">הייבוא נכשל</string>
|
||||
<string name="importFailed">לא ניתן לייבא</string>
|
||||
<string name="exportSuccessfulTitle">הייצוא הצליח</string>
|
||||
<string name="exportFailedTitle">הייצוא נכשל</string>
|
||||
<string name="importing">מייבא…</string>
|
||||
<string name="exporting">ייצוא…</string>
|
||||
</resources>
|
||||
232
app/src/main/res/values-hu/strings.xml
Normal file
232
app/src/main/res/values-hu/strings.xml
Normal file
@@ -0,0 +1,232 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="noGiftCards">Nyomja meg a + jelet a kártya hozzáadásához, vagy importáljon a ⋮ menüvel.</string>
|
||||
<string name="action_add">Hozzáadás</string>
|
||||
<string name="action_search">Keresés</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> kiválasztva</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> kiválasztva</item>
|
||||
</plurals>
|
||||
<string name="noCardsMessage">Először adjon hozzá egy kártyát</string>
|
||||
<string name="noGiftCardsGroup">Hozzon létre kártyákat, és rendelje hozzá a megfelelő csoporthoz.</string>
|
||||
<string name="noMatchingGiftCards">Nincs eredmény. Próbálja módosítani a keresést.</string>
|
||||
<string name="storeName">Név</string>
|
||||
<string name="note">Feljegyzés</string>
|
||||
<string name="cardId">Kártya azonosító</string>
|
||||
<string name="barcodeType">Vonalkód típus</string>
|
||||
<string name="barcodeNoBarcode">Nincs vonalkód</string>
|
||||
<string name="noBarcode">Nincs vonalkód</string>
|
||||
<string name="star">Kedvencekhez adás</string>
|
||||
<string name="unstar">Kivétel a kedvencek közül</string>
|
||||
<string name="cancel">Mégse</string>
|
||||
<string name="save">Mentés</string>
|
||||
<string name="edit">Szerkesztés</string>
|
||||
<string name="delete">Törlés</string>
|
||||
<string name="confirm">Alkalmaz</string>
|
||||
<string name="lockScreen">Forgatás blokkolása</string>
|
||||
<string name="unlockScreen">Blokkolás engedélyezése</string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> törlése</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> törlése</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmation">Véglegesen törli a kártyát\?</string>
|
||||
<string name="ok">Rendben</string>
|
||||
<string name="copy_to_clipboard">Azonosító másolása a vágólapra</string>
|
||||
<string name="share">Megosztás</string>
|
||||
<string name="sendLabel">Küldés…</string>
|
||||
<string name="editCardTitle">Kártya szerkesztése</string>
|
||||
<string name="addCardTitle">Kártya hozzáadása</string>
|
||||
<string name="scanCardBarcode">Vonalkód szkennelése</string>
|
||||
<string name="cardShortcut">Kártya parancsikon</string>
|
||||
<string name="noStoreError">Nincs név megadva</string>
|
||||
<string name="failedParsingImportUriError">Nem elemezhető az importált URI</string>
|
||||
<string name="importExport">Import/Export</string>
|
||||
<string name="exportName">Export</string>
|
||||
<string name="importExportHelp">Az adataid mentése lehetővé teszi, hogy egy másik eszközre feltöltsd.</string>
|
||||
<string name="importSuccessfulTitle">Importálva</string>
|
||||
<string name="importFailedTitle">Importálás meghiúsult</string>
|
||||
<string name="importFailed">Importálás nem hajtható végre</string>
|
||||
<string name="exportSuccessfulTitle">Exportálva</string>
|
||||
<string name="exportFailedTitle">Exportálás meghiúsult</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Véglegesen törli a <xliff:g>%d</xliff:g> kártyát\?</item>
|
||||
<item quantity="other">Véglegesen törli a <xliff:g>%d</xliff:g> kártyákat\?</item>
|
||||
</plurals>
|
||||
<string name="deleteTitle">Kártya törlése</string>
|
||||
<string name="card_ids_copied">Azonosító(k) másolása</string>
|
||||
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> vonalkód képe</string>
|
||||
<string name="noCardIdError">Nincs azonosító megadva</string>
|
||||
<string name="noCardExistsError">Kártya nem található</string>
|
||||
<string name="importStocardMessage">Válassza ki a <i>***-sync.zip</i> Stocard exportot.
|
||||
\nAdatinak exportját kérheti e-mailben a support@stocardapp.com címre írva.</string>
|
||||
<string name="importVoucherVault">Importálás Voucher Vault-ból</string>
|
||||
<string name="wrongValueForBarcodeType">Ez az érték meg megfelelő a vonalkód típushoz</string>
|
||||
<string name="settings_green_theme">Zöld</string>
|
||||
<string name="setBackImage">Hátlapi kép beállítása</string>
|
||||
<string name="no">Nem</string>
|
||||
<string name="passwordRequired">Kérem írja be a kódot</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="exportPasswordHint">Kód beírása</string>
|
||||
<string name="failedGeneratingShareURL">Nem lehetett megosztható címet generálni. Kérem jelentse ezt.</string>
|
||||
<string name="settings_theme_color">Téma színe</string>
|
||||
<string name="settings_grey_theme">Szürke</string>
|
||||
<string name="sort">Rendez</string>
|
||||
<string name="on_google_play">Google Play-en</string>
|
||||
<string name="action_show_details">Részletek mutatása</string>
|
||||
<string name="action_hide_details">Részletek elrejtése</string>
|
||||
<string name="and_data_usage">és adat használat</string>
|
||||
<string name="translate_platform">Weblate-en</string>
|
||||
<string name="sort_by_name">Név</string>
|
||||
<string name="sort_by_most_recently_used">Legutóbb használt</string>
|
||||
<string name="sort_by_expiry">Lejárat</string>
|
||||
<string name="rate_this_app">Értékelje az appot</string>
|
||||
<string name="exportFailed">Exportálás sikertelen</string>
|
||||
<string name="importing">Importálás…</string>
|
||||
<string name="exporting">Exportálás…</string>
|
||||
<string name="noExternalStoragePermissionError">Külső háttértárhoz való hozzáférés engedélyezése adat import vagy export miatt</string>
|
||||
<string name="exportOptionExplanation">Az adatokat a kiválasztott helyre fogjuk menteni.</string>
|
||||
<string name="importOptionFilesystemTitle">Importálás fájlrendszerből</string>
|
||||
<string name="importOptionFilesystemButton">A fájlrendszerből</string>
|
||||
<string name="importOptionApplicationTitle">Másik app használata</string>
|
||||
<string name="importOptionApplicationExplanation">Használjon egy tetszőleges appot, vagy kedvenc fájl menedzserét a fájl megnyitásához.</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Szerzői Jog © 2019–<xliff:g>%d</xliff:g> Sylvia van Os</string>
|
||||
<string name="app_license">Copyleft-elt gáttalan szoftver, GPLv3+ licenszelve</string>
|
||||
<string name="about_title_fmt"><xliff:g id="app_name">%s</xliff:g> névjegye</string>
|
||||
<string name="debug_version_fmt">Verzió: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_revision_fmt">Revíziós információ: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="app_resources">Gáttalan külsős források: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Vonalkód kiválasztása</string>
|
||||
<string name="enterBarcodeInstructions">Írja be az azonosítót, majd válasszon egy vonalkódot, vagy a \"Nincs vonalkód\" opciót.</string>
|
||||
<string name="copy_to_clipboard_toast">Azonosító vágólapra másolva</string>
|
||||
<string name="starImage">Kedvencek csillag</string>
|
||||
<string name="settings">Beállítások</string>
|
||||
<string name="settings_category_title_ui">Felhasználói felület</string>
|
||||
<string name="settings_theme">Téma</string>
|
||||
<string name="settings_system_theme">Rendszer</string>
|
||||
<string name="settings_light_theme">Világos</string>
|
||||
<string name="settings_max_font_size_scale">Max. betű méret</string>
|
||||
<string name="settings_display_barcode_max_brightness">Fényes vonalkód nézet</string>
|
||||
<string name="settings_lock_barcode_orientation">Vonalkód tájolás zárolása</string>
|
||||
<string name="settings_keep_screen_on">Képernyő bekapcsolva marad</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Képernyő zárólás megakadályozása</string>
|
||||
<string name="intent_import_card_from_url_share_text">Meg akarok veled osztani egy kártyát</string>
|
||||
<string name="importSuccessful">Adat importálva</string>
|
||||
<string name="exportSuccessful">Adat exportálva</string>
|
||||
<string name="enter_group_name">Adja meg a csoport nevét</string>
|
||||
<string name="groups">Csoportok</string>
|
||||
<string name="group_edit">Csoport szerkesztése</string>
|
||||
<string name="group_name_is_empty">Csoport név nem lehet üres</string>
|
||||
<string name="failedOpeningFileManager">Telepítsen egy fájl menedzsert.</string>
|
||||
<string name="moveUp">Felfelé mozgatás</string>
|
||||
<string name="moveDown">Lefelé mozgatás</string>
|
||||
<string name="leaveWithoutSaveTitle">Kilépés</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Kilépés mentés nélkül\?</string>
|
||||
<string name="addManually">Azonosító manuális beírása</string>
|
||||
<string name="addFromImage">Kép kiválasztása a galériából</string>
|
||||
<string name="editGroup">Csoportok szerkesztése: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Érvényes: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">Egyenleg: <xliff:g>%s</xliff:g></string>
|
||||
<string name="card">Kártya</string>
|
||||
<string name="barcode">Vonalkód</string>
|
||||
<string name="editBarcode">Vonalkód szerkesztése</string>
|
||||
<string name="expiryDate">Lejárati dátum</string>
|
||||
<string name="never">Soha</string>
|
||||
<string name="chooseExpiryDate">Lejárati dátum kiválasztása</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Vonalkód feltolása a képernyő tetejére</string>
|
||||
<string name="moveBarcodeToCenterOfScreen">Vonalkód középre igazítása</string>
|
||||
<string name="noBarcodeFound">Nem található vonalkód</string>
|
||||
<string name="errorReadingImage">Nem lehet olvasni a képet</string>
|
||||
<string name="balance">Egyenleg</string>
|
||||
<string name="currency">Valuta</string>
|
||||
<string name="points">Pontok</string>
|
||||
<string name="parsingBalanceFailed">A <xliff:g>%s</xliff:g> nem tűnik valós egyenlegnek.</string>
|
||||
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
|
||||
<string name="privacy_policy">Adatvédelmi Szabályzat</string>
|
||||
<string name="accept">Elfogad</string>
|
||||
<string name="importCatima">Importálás Catimából</string>
|
||||
<string name="importFidme">Importálás FidMe-ből</string>
|
||||
<string name="importLoyaltyCardKeychain">Importálás a Loyalty Card Keychain-ből</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Válassza ki a Loyalty Card Keychain-ból importálni kívánt <i>LoyaltyCardKeychain.csv</i> export fájlt.
|
||||
\nLétrehozhatja az Import/Export menüből ha a Loyalty Card Keychain-ben rányom az Exportra.</string>
|
||||
<string name="importStocard">Importálás Stocard-ból</string>
|
||||
<string name="importVoucherVaultMessage">Válassza ki a <i>vouchervault.json</i> Voucher Vault exportját.
|
||||
\nLétrehozhatja az Export-ra nyomva a Voucher Vault-ban.</string>
|
||||
<string name="barcodeId">Vonalkód érték</string>
|
||||
<string name="sameAsCardId">Ugyanaz, mint az azonosító</string>
|
||||
<string name="setBarcodeId">Vonalkód érték beállítása</string>
|
||||
<string name="unsupportedBarcodeType">Ez a vonalkód típus még nem megjeleníthető. Feltehetően támogatva lesz egy későbbi verzióban.</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Azonosítók a vágólapra másolva</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Meg akarok veled osztani pár kártyát</string>
|
||||
<string name="frontImageDescription">Előlapi kép</string>
|
||||
<string name="backImageDescription">Hátlapi kép</string>
|
||||
<string name="photos">Fotók</string>
|
||||
<string name="setFrontImage">Előlapi kép beállítása</string>
|
||||
<string name="removeImage">Kép eltávolítása</string>
|
||||
<string name="takePhoto">Fénykép készítése</string>
|
||||
<string name="updateBarcodeQuestionTitle">Vonalkód érték frissítése\?</string>
|
||||
<string name="updateBarcodeQuestionText">Megváltoztatta az azonosító. Meg akarja ennek megfelelően változtatni a vonalkód értéket is\?</string>
|
||||
<string name="yes">Igen</string>
|
||||
<string name="exportPassword">Írjon be egy jelszót az export védelme érdekében (opcionális)</string>
|
||||
<string name="turn_flashlight_on">Zseblámpa bekapcsolása</string>
|
||||
<string name="turn_flashlight_off">Zseblámpa kikapcsolása</string>
|
||||
<string name="settings_locale">Nyelv</string>
|
||||
<string name="settings_system_locale">Rendszer</string>
|
||||
<string name="selectColor">Szín kiválasztása</string>
|
||||
<string name="setIcon">Ikon beállítása</string>
|
||||
<string name="settings_pink_theme">Rózsaszín</string>
|
||||
<string name="settings_magenta_theme">Magenta</string>
|
||||
<string name="settings_violet_theme">Ibolyaszínű</string>
|
||||
<string name="settings_blue_theme">Kék</string>
|
||||
<string name="settings_sky_blue_theme">Égszínkék</string>
|
||||
<string name="settings_brown_theme">Barna</string>
|
||||
<string name="app_contributors">Lehetővé tette: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="showMoreInfo">Infó mutatása</string>
|
||||
<string name="hideMoreInfo">Infó elrejtése</string>
|
||||
<string name="swipeToSwitchImages">Húzza oldalra vagy tartsa nyomva a kép megváltoztatásáért</string>
|
||||
<string name="sort_by_balance">Egyenleg</string>
|
||||
<string name="reverse">...fordított sorrendben</string>
|
||||
<string name="sort_by">Rendezés mint</string>
|
||||
<string name="version_history">Verzió történet</string>
|
||||
<string name="credits">Köszönet</string>
|
||||
<string name="help_translate_this_app">Segítsen lefordítani az appot</string>
|
||||
<string name="license">Licensz</string>
|
||||
<string name="source_repository">Forrás repó</string>
|
||||
<string name="on_github">GitBub-on</string>
|
||||
<string name="report_error">Hiba Jelentése</string>
|
||||
<string name="shortcutSelectCard">Válasszon egy kártyát</string>
|
||||
<string name="options">Beállítások</string>
|
||||
<string name="starred">Csillagozva</string>
|
||||
<string name="set_scale">Méret választása</string>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> kártya</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> kártyák</item>
|
||||
</plurals>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> pont</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> pont</item>
|
||||
</plurals>
|
||||
<string name="chooseImportType">Adat importálása innen</string>
|
||||
<string name="thumbnailDescription">Előkép</string>
|
||||
<string name="importOptionFilesystemExplanation">Válassza ki a kívánt fájlt a fájlrendszerből.</string>
|
||||
<string name="importOptionApplicationButton">Másik app használata</string>
|
||||
<string name="about">Névjegy</string>
|
||||
<string name="app_copyright_old">Készült a Loyalty Card Keychain alapján
|
||||
\nszerzői jog © 2016–2020 Branden Archer</string>
|
||||
<string name="app_libraries">Gáttalan külsős mappák: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="settings_dark_theme">Sötét</string>
|
||||
<string name="deleteConfirmationGroup">Csoport törlése\?</string>
|
||||
<string name="noGroups">Nyomja meg a + gombot a csoportok kategorizálásához.</string>
|
||||
<string name="group_name_already_in_use">Csoport név már létezik</string>
|
||||
<string name="all">Mind</string>
|
||||
<string name="noGroupCards">Ez a csoport üres</string>
|
||||
<string name="group_updated">Csoport frissítve</string>
|
||||
<string name="expiryStateSentenceExpired">Lejárt: <xliff:g>%s</xliff:g></string>
|
||||
<string name="groupsList">Csoportok: <xliff:g>%s</xliff:g></string>
|
||||
<string name="importCatimaMessage">Válassza ki a <i>catima.zip</i>-jét az importáláshoz.
|
||||
\nLétrehozhatja az Import/Export menüből az Exportálást megnyomva egy másik Catima appban.</string>
|
||||
<string name="privacy_policy_popup_text">Adatvédelmi szabály értesítő (némely app bolt kéri):
|
||||
\n
|
||||
\nSEMMILYEN ADATGYŰJTÉS NINCS, amit bárki ellenőrizhet, lévén hogy az app gáttalan szoftver.</string>
|
||||
<string name="importFidmeMessage">Válassza ki a <i>fidme-export-request-xxxxxx.zip</i> nevű FidMe exportot, majd importálja be és válassza a manuális vonalkód opciót utána.
|
||||
\nEzt a FidMe-ben megtalálja a profiljában az Adat Védelem résznél ha rányom az Adataim Kivonata linkre.</string>
|
||||
</resources>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="app_revision_url">https://github.com/TheLastProject/Catima/releases</string>
|
||||
<string name="app_revision_url">https://github.com/CatimaLoyalty/Android/releases</string>
|
||||
<string name="storeName">Nama</string>
|
||||
<string name="note">Keterangan</string>
|
||||
<string name="delete">Hapus</string>
|
||||
@@ -143,7 +143,6 @@
|
||||
<string name="expiryStateSentence">Masa ber: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Kadaluwarsa: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> poin</string>
|
||||
<string name="editBarcode">Ubah barcode</string>
|
||||
<string name="expiryDate">Tanggal masa berlaku</string>
|
||||
<string name="never">Tidak pernah</string>
|
||||
@@ -180,7 +179,6 @@
|
||||
<string name="exportPassword">Tetapkan kata sandi untuk melindungi ekspor anda (opsional)</string>
|
||||
<string name="failedGeneratingShareURL">Tidak dapat membuat alamat berbagi. Mohon laporkan ini.</string>
|
||||
<string name="app_contributors">Pengembangan dibantu oleh: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="toggleMoreInfo">Tampilkan info selengkapnya</string>
|
||||
<string name="swipeToSwitchImages">Geser atau tekan yang lama untuk mengganti gambar</string>
|
||||
<string name="reverse">Ubah urutan</string>
|
||||
<string name="version_history">Riwayat Versi</string>
|
||||
|
||||
@@ -102,12 +102,11 @@
|
||||
<string name="editBarcode">Modifica il codice a barre</string>
|
||||
<string name="barcode">Codice a barre</string>
|
||||
<string name="card">Carta</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> punti</string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Scaduta: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Scadenza: <xliff:g>%s</xliff:g></string>
|
||||
<string name="settings_keep_screen_on">Mantieni lo schermo attivo</string>
|
||||
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
|
||||
<string name="app_loyalty_card_keychain">Carte fedeltà</string>
|
||||
<string name="chooseImportType">Importa i dati da</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Impedisci il blocco dello schermo</string>
|
||||
<string name="accept">Accetta</string>
|
||||
@@ -188,7 +187,6 @@
|
||||
<string name="settings_theme_color">Colore del tema</string>
|
||||
<string name="app_contributors">Reso possibile da: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="noGroupCards">Questo gruppo è vuoto</string>
|
||||
<string name="toggleMoreInfo">Attiva/disattiva la visualizzazione di altre informazioni</string>
|
||||
<string name="barcodeImageDescriptionWithType">Immagine del codice a barre in formato <xliff:g>%s</xliff:g></string>
|
||||
<string name="swipeToSwitchImages">Scorri o premi a lungo per cambiare immagine</string>
|
||||
<string name="sort_by">Ordina per</string>
|
||||
@@ -221,4 +219,16 @@
|
||||
<string name="action_show_details">Mostra i dettagli</string>
|
||||
<string name="action_hide_details">Nascondi i dettagli</string>
|
||||
<string name="translate_platform">su Weblate</string>
|
||||
<string name="shortcutSelectCard">Seleziona una tessera</string>
|
||||
<string name="options">Opzioni</string>
|
||||
<string name="starred">Nei preferiti</string>
|
||||
<string name="set_scale">Imposta la scala</string>
|
||||
<string name="showMoreInfo">Mostra info</string>
|
||||
<string name="hideMoreInfo">Nascondi info</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> punto</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> punti</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Sfondo nero puro per il tema scuro</string>
|
||||
<string name="include_if_asking_support">Se vuoi richiedere supporto, includi le seguenti informazioni:</string>
|
||||
</resources>
|
||||
@@ -33,7 +33,6 @@
|
||||
<string name="editBarcode">バーコードの編集</string>
|
||||
<string name="barcode">バーコード</string>
|
||||
<string name="card">カード</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> ポイント</string>
|
||||
<string name="balanceSentence">残高: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">期限切れ: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">期限: <xliff:g>%s</xliff:g></string>
|
||||
@@ -171,7 +170,6 @@
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> 枚のカードの削除</item>
|
||||
</plurals>
|
||||
<string name="barcodeImageDescriptionWithType">バーコード形式の画像 <xliff:g>%s</xliff:g></string>
|
||||
<string name="toggleMoreInfo">詳細を表示する</string>
|
||||
<string name="app_contributors">Made possible by: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="settings_brown_theme">Brown</string>
|
||||
<string name="settings_grey_theme">Gray</string>
|
||||
|
||||
@@ -104,7 +104,6 @@
|
||||
<string name="editBarcode">Redaguoti brūkšninį kodą</string>
|
||||
<string name="barcode">Brūkšninis kodas</string>
|
||||
<string name="card">Kortelė</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> taškai</string>
|
||||
<string name="balanceSentence">Balansas: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Galiojimas baigėsi: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Nustoja galioti: <xliff:g>%s</xliff:g></string>
|
||||
@@ -192,7 +191,6 @@
|
||||
<string name="settings_theme_color">Temos spalva</string>
|
||||
<string name="app_contributors">Tapo įmanoma su pagalba: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="noGroupCards">Šioje grupėje nėra jokių kortelių</string>
|
||||
<string name="toggleMoreInfo">Perjungti išsamios informacijos rodymą</string>
|
||||
<string name="barcodeImageDescriptionWithType"><xliff:g>%s</xliff:g> tipo kortelės brūkšninio kodo vaizdas</string>
|
||||
<string name="swipeToSwitchImages">Perbraukite arba ilgai palaikykite paspaudę, kad perjungtumėte vaizdus</string>
|
||||
<string name="sort_by">Rikiuoti pagal</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="action_add">Legg til</string>
|
||||
<string name="noGiftCards">Klikk på «+» (pluss)-knappen for å legge til eller importer kort fra «⋮»-menyen først.</string>
|
||||
<string name="noGiftCards">Klikk på «+» (pluss)-knappen for å legge til eller importer kort fra «⋮»-menyen</string>
|
||||
<string name="storeName">Navn</string>
|
||||
<string name="note">Merknad</string>
|
||||
<string name="cardId">Kort-ID</string>
|
||||
@@ -18,24 +18,24 @@
|
||||
<string name="sendLabel">Send…</string>
|
||||
<string name="editCardTitle">Rediger kundekort</string>
|
||||
<string name="addCardTitle">Legg til kundekort</string>
|
||||
<string name="scanCardBarcode">Skann kortets strekkode</string>
|
||||
<string name="scanCardBarcode">Skann strekkoden</string>
|
||||
<string name="cardShortcut">Kort-snarvei</string>
|
||||
<string name="noCardsMessage">Legg til et kort først</string>
|
||||
<string name="noStoreError">Navn ikke angitt</string>
|
||||
<string name="noCardIdError">Ingen kort-ID innskrevet</string>
|
||||
<string name="noCardExistsError">Kunne ikke finne kort</string>
|
||||
<string name="noCardIdError">Ingen ID innskrevet</string>
|
||||
<string name="noCardExistsError">Fant ikke det kortet</string>
|
||||
<string name="importExport">Importer/eksporter</string>
|
||||
<string name="exportName">Eksporter</string>
|
||||
<string name="importExportHelp">Sikkerhetskopiering av kort lar deg flytte dem til en annen enhet.</string>
|
||||
<string name="importExportHelp">Sikkerhetskopiering av data lar deg flytte dem til en annen enhet.</string>
|
||||
<string name="importSuccessfulTitle">Importert</string>
|
||||
<string name="importFailedTitle">Kunne ikke importere</string>
|
||||
<string name="importFailed">Klarte ikke å importere kort</string>
|
||||
<string name="importFailed">Kunne ikke utføre import</string>
|
||||
<string name="exportSuccessfulTitle">Eksportert</string>
|
||||
<string name="exportFailedTitle">Kunne ikke eksportere</string>
|
||||
<string name="exportFailed">Kunne ikke eksportere kort</string>
|
||||
<string name="exportFailed">Kunne ikke utføre eksport</string>
|
||||
<string name="importing">Importerer…</string>
|
||||
<string name="exporting">Exporterer…</string>
|
||||
<string name="noExternalStoragePermissionError">Innvilg lagringstilgang til eksternlager for å importere eller eksportere kort først</string>
|
||||
<string name="noExternalStoragePermissionError">Innvilg lagringstilgang til eksternlager for å importere eller eksportere data</string>
|
||||
<string name="exportOptionExplanation">Data skrives dit du ønsker det.</string>
|
||||
<string name="importOptionFilesystemTitle">Importer fra filsystem</string>
|
||||
<string name="importOptionFilesystemExplanation">Velg spesifikk fil fra filsystemet.</string>
|
||||
@@ -49,15 +49,15 @@
|
||||
<string name="debug_version_fmt">Versjon: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_revision_fmt">Utgivelsesinfo: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Velg strekkode</string>
|
||||
<string name="enterBarcodeInstructions">Skriv inn kortets ID, og enten velg dens strekkode nedenfor, eller «Dette kortet har ingen strekkode».</string>
|
||||
<string name="copy_to_clipboard_toast">Kort-ID kopiert til utklippstavle</string>
|
||||
<string name="thumbnailDescription">Miniatyrbilde for kort</string>
|
||||
<string name="enterBarcodeInstructions">Skriv inn kortets ID, og enten velg strekkodetypen nedenfor, eller «Det er ingen strekkode».</string>
|
||||
<string name="copy_to_clipboard_toast">ID kopiert til utklippstavle</string>
|
||||
<string name="thumbnailDescription">Miniatyrbilde</string>
|
||||
<string name="settings">Innstillinger</string>
|
||||
<string name="settings_category_title_ui">Brukergrensesnitt</string>
|
||||
<string name="settings_display_barcode_max_brightness">Lysere strekkodevisning</string>
|
||||
<string name="settings_lock_barcode_orientation">Lås strekkodesideretning</string>
|
||||
<string name="exportSuccessful">Kortdata eksportert</string>
|
||||
<string name="importSuccessful">Kortdata importert</string>
|
||||
<string name="exportSuccessful">Data eksportert</string>
|
||||
<string name="importSuccessful">Data importert</string>
|
||||
<string name="intent_import_card_from_url_share_text">Jeg ønsker å dele et kort med deg</string>
|
||||
<string name="settings_dark_theme">Mørk</string>
|
||||
<string name="settings_light_theme">Lys</string>
|
||||
@@ -67,13 +67,13 @@
|
||||
\nopphavsrett 2016–2020 Branden Archer</string>
|
||||
<string name="failedParsingImportUriError">Kunne ikke tolke importerings-URI</string>
|
||||
<string name="share">Del</string>
|
||||
<string name="barcodeNoBarcode">Dette kortet har ingen strekkode</string>
|
||||
<string name="noMatchingGiftCards">Fant ikke noe. Prøv å endre søket.</string>
|
||||
<string name="barcodeNoBarcode">Det er ingen strekkode</string>
|
||||
<string name="noMatchingGiftCards">Resultatløst. Prøv å endre søket.</string>
|
||||
<string name="action_search">Søk</string>
|
||||
<string name="starImage">Favorittstjerne</string>
|
||||
<string name="unstar">Fjern fra favoritter</string>
|
||||
<string name="star">Legg til i favoritter</string>
|
||||
<string name="noGroups">Klikk på «+»- (pluss)-tegnet for å legge til grupper for kategorisering først.</string>
|
||||
<string name="noGroups">Klikk på «+»- (pluss)-tegnet for å legge til grupper for kategorisering.</string>
|
||||
<string name="deleteConfirmationGroup">Slett gruppe?</string>
|
||||
<string name="all">Alle</string>
|
||||
<string name="groups">Grupper</string>
|
||||
@@ -82,7 +82,7 @@
|
||||
<string name="failedOpeningFileManager">Installer en filbehandler først.</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Forlat uten å lagre?</string>
|
||||
<string name="leaveWithoutSaveTitle">Avslutt</string>
|
||||
<string name="addManually">Skriv inn kort-ID manuelt</string>
|
||||
<string name="addManually">Skriv inn ID manuelt</string>
|
||||
<string name="moveDown">Flytt nedover</string>
|
||||
<string name="moveUp">Flytt oppover</string>
|
||||
<plurals name="groupCardCount">
|
||||
@@ -104,9 +104,8 @@
|
||||
<string name="points">Poeng</string>
|
||||
<string name="currency">Valuta</string>
|
||||
<string name="balance">Saldo</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> poeng</string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="chooseImportType">Importer data fra?</string>
|
||||
<string name="chooseImportType">Importer data fra</string>
|
||||
<string name="app_loyalty_card_keychain">Kundekortknippe</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Forhindre skjermlås</string>
|
||||
<string name="settings_keep_screen_on">Behold skjerm påslått</string>
|
||||
@@ -122,7 +121,7 @@
|
||||
<string name="addFromImage">Velg bilde fra galleri</string>
|
||||
<string name="unsupportedBarcodeType">Denne strekkodetypen kan ikke vises for øyeblikket. Støtte kan bli lagt til i en senere versjon av programmet.</string>
|
||||
<string name="setBarcodeId">Sett strekkodeverdi</string>
|
||||
<string name="sameAsCardId">Samme som kort-ID</string>
|
||||
<string name="sameAsCardId">Samme som ID</string>
|
||||
<string name="barcodeId">Strekkodeverdi</string>
|
||||
<string name="importVoucherVaultMessage">Velg din <i>vouchervault.json</i>-eksport fra Voucher Vault å importere.
|
||||
\nOpprett den ved å trykke «Eksport» i Voucher Vault først.</string>
|
||||
@@ -135,12 +134,12 @@
|
||||
<string name="settings_max_font_size_scale">Maks. skriftstørrelse</string>
|
||||
<string name="wrongValueForBarcodeType">Verdien er ikke gyldig for valgt strekkodetype</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Jeg vil dele noen kort med deg</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Kort-ID-er kopiert til utklippstavle</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">ID-er ble kopiert til utklippstavle</string>
|
||||
<string name="app_resources">Frie tredjepartsressurser: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_libraries">Frie tredjepartsbibliotek: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="card_ids_copied">Kopierte kort-ID(er)</string>
|
||||
<string name="card_ids_copied">Kopierte ID(er)</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Opphavsrett © 2019–<xliff:g>%d</xliff:g> Sylvia van Os</string>
|
||||
<string name="updateBarcodeQuestionText">Du har endret kortets ID. Ønsker du å også oppdatere strekkoden til samme verdi?</string>
|
||||
<string name="updateBarcodeQuestionText">Du har endret ID-en. Ønsker du å også oppdatere strekkoden til samme verdi\?</string>
|
||||
<string name="no">Nei</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="updateBarcodeQuestionTitle">Oppdater strekkodeverdi?</string>
|
||||
@@ -149,16 +148,16 @@
|
||||
<string name="setBackImage">Sett bakside</string>
|
||||
<string name="setFrontImage">Sett forside</string>
|
||||
<string name="photos">Bilder</string>
|
||||
<string name="backImageDescription">Kortets bakside</string>
|
||||
<string name="frontImageDescription">Kortets forside</string>
|
||||
<string name="backImageDescription">Baksidebilde</string>
|
||||
<string name="frontImageDescription">Forsidebilde</string>
|
||||
<string name="importStocardMessage">Velg din <i>***-sync.zip</i>-eksport fra Stocard å importere.
|
||||
\nSkaff den ved å sende e-post til support@stocardapp.com der du etterspør eksport av dataen din.</string>
|
||||
<string name="passwordRequired">Skriv inn passordet</string>
|
||||
<string name="importStocard">Importer fra Stocard</string>
|
||||
<string name="failedGeneratingShareURL">Klarte ikke å lage delbar nettadresse. Rapporter denne feilen.</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> kort valgt</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> kort valgt</item>
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> valgt</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> valgt</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmation">Slett dette kortet for godt?</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
@@ -185,12 +184,11 @@
|
||||
<string name="settings_pink_theme">Rosa</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_theme_color">Draktfarge</string>
|
||||
<string name="noGroupCards">Denne gruppen inneholder ikke noen kort</string>
|
||||
<string name="toggleMoreInfo">Veksle visning av mer info</string>
|
||||
<string name="barcodeImageDescriptionWithType">Bilde av kortstrekkode av typen <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGroupCards">Denne gruppen er tom</string>
|
||||
<string name="barcodeImageDescriptionWithType">Bilde av <xliff:g>%s</xliff:g>-strekkode</string>
|
||||
<string name="swipeToSwitchImages">Dra eller hold lenge for å bygge bilder</string>
|
||||
<string name="sort_by">Sorter etter</string>
|
||||
<string name="reverse">Vend</string>
|
||||
<string name="sort_by">Sortering</string>
|
||||
<string name="reverse">…i omvendt rekkefølge</string>
|
||||
<string name="sort_by_balance">Saldo</string>
|
||||
<string name="sort_by_expiry">Utløp</string>
|
||||
<string name="sort_by_most_recently_used">Nyligst brukt</string>
|
||||
@@ -215,9 +213,22 @@
|
||||
<string name="group_updated">Gruppe oppdatert</string>
|
||||
<string name="group_name_is_empty">Gruppenavn kan ikke være tomt</string>
|
||||
<string name="editGroup">Redigerer gruppe: <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGiftCardsGroup">Du har ingen lojalitetskort enda. Når du først har det kan du legge dem til i en gruppe her.</string>
|
||||
<string name="noGiftCardsGroup">Lag noen kort, og legg dem til i en gruppe her.</string>
|
||||
<string name="action_show_details">Vis detaljer</string>
|
||||
<string name="action_hide_details">Skjul detaljer</string>
|
||||
<string name="selectColor">Velg farge</string>
|
||||
<string name="setIcon">Sett ikon</string>
|
||||
<string name="shortcutSelectCard">velg et kort</string>
|
||||
<string name="translate_platform">på Weblate</string>
|
||||
<string name="options">Alternativer</string>
|
||||
<string name="starred">Stjernemerket</string>
|
||||
<string name="set_scale">Sett skalering</string>
|
||||
<string name="showMoreInfo">Vis info</string>
|
||||
<string name="hideMoreInfo">Skjul info</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> poeng</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> poeng</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Svart bakgrunn for mørk drakt</string>
|
||||
<string name="include_if_asking_support">Inkluder følgende info hvis du vil ha hjelp:</string>
|
||||
</resources>
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Palette generated by Material IO https://material.io/color/#!/?view.left=0&view.right=0&primary.color=3F51B5&secondary.color=FFC107 -->
|
||||
<!-- Colors manually flipped to dark variants -->
|
||||
<resources>
|
||||
<color name="colorPrimary">#B53F3F</color>
|
||||
<color name="colorPrimaryLight">#E87575</color>
|
||||
<color name="colorPrimaryDark">#840000</color>
|
||||
<color name="colorSecondary">#ffc107</color>
|
||||
<color name="colorSecondaryLight">#fff350</color>
|
||||
<color name="colorSecondaryDark">#c79100</color>
|
||||
<color name="colorPrimaryText">#000000</color>
|
||||
<color name="colorSecondaryText">#ffffff</color>
|
||||
|
||||
<color name="listItemHighlight">#88000000</color>
|
||||
|
||||
<color name="inputContrastBackground">#070707</color>
|
||||
<color name="inputBackground">#000000</color>
|
||||
<color name="inputBorder">#222222</color>
|
||||
<color name="inputDividerBorder">#666666</color>
|
||||
|
||||
<color name="iconColor">#ffffff</color>
|
||||
|
||||
<color name="mainLoyaltyCardBackground">#000000</color>
|
||||
</resources>
|
||||
245
app/src/main/res/values-night/themes.xml
Normal file
245
app/src/main/res/values-night/themes.xml
Normal file
@@ -0,0 +1,245 @@
|
||||
<resources>
|
||||
|
||||
<style name="AppTheme" parent="Theme.Material3.Dark.NoActionBar">
|
||||
<item name="colorPrimary">@color/md_theme_dark_primary</item>
|
||||
<item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
|
||||
<item name="colorPrimaryContainer">@color/md_theme_dark_primaryContainer</item>
|
||||
<item name="colorOnPrimaryContainer">@color/md_theme_dark_onPrimaryContainer</item>
|
||||
<item name="colorSecondary">@color/md_theme_dark_secondary</item>
|
||||
<item name="colorOnSecondary">@color/md_theme_dark_onSecondary</item>
|
||||
<item name="colorSecondaryContainer">@color/md_theme_dark_secondaryContainer</item>
|
||||
<item name="colorOnSecondaryContainer">@color/md_theme_dark_onSecondaryContainer</item>
|
||||
<item name="colorTertiary">@color/md_theme_dark_tertiary</item>
|
||||
<item name="colorOnTertiary">@color/md_theme_dark_onTertiary</item>
|
||||
<item name="colorTertiaryContainer">@color/md_theme_dark_tertiaryContainer</item>
|
||||
<item name="colorOnTertiaryContainer">@color/md_theme_dark_onTertiaryContainer</item>
|
||||
<item name="colorError">@color/md_theme_dark_error</item>
|
||||
<item name="colorErrorContainer">@color/md_theme_dark_errorContainer</item>
|
||||
<item name="colorOnError">@color/md_theme_dark_onError</item>
|
||||
<item name="colorOnErrorContainer">@color/md_theme_dark_onErrorContainer</item>
|
||||
<item name="android:colorBackground">@color/md_theme_dark_background</item>
|
||||
<item name="colorOnBackground">@color/md_theme_dark_onBackground</item>
|
||||
<item name="colorSurface">@color/md_theme_dark_surface</item>
|
||||
<item name="colorOnSurface">@color/md_theme_dark_onSurface</item>
|
||||
<item name="colorSurfaceVariant">@color/md_theme_dark_surfaceVariant</item>
|
||||
<item name="colorOnSurfaceVariant">@color/md_theme_dark_onSurfaceVariant</item>
|
||||
<item name="colorOutline">@color/md_theme_dark_outline</item>
|
||||
<item name="colorOnSurfaceInverse">@color/md_theme_dark_inverseOnSurface</item>
|
||||
<item name="colorSurfaceInverse">@color/md_theme_dark_inverseSurface</item>
|
||||
<item name="colorPrimaryInverse">@color/md_theme_dark_primaryInverse</item>
|
||||
|
||||
<item name="windowActionModeOverlay">true</item>
|
||||
</style>
|
||||
|
||||
<!-- note that this is not used directly, these are used to patch the active theme runtime with
|
||||
theme.applyStyle
|
||||
-->
|
||||
<style name="DarkBackground">
|
||||
<item name="android:colorBackground">#000000</item>
|
||||
<item name="colorSurface">#000000</item>
|
||||
</style>
|
||||
|
||||
<!-- color themes -->
|
||||
<style name="pink">
|
||||
<item name="colorPrimary">#FFB2C0</item>
|
||||
<item name="colorOnPrimary">#670024</item>
|
||||
<item name="colorPrimaryContainer">#900036</item>
|
||||
<item name="colorOnPrimaryContainer">#FFD9DF</item>
|
||||
<item name="colorSecondary">#E5BDC2</item>
|
||||
<item name="colorOnSecondary">#43292D</item>
|
||||
<item name="colorSecondaryContainer">#5C3F43</item>
|
||||
<item name="colorOnSecondaryContainer">#FFD9DE</item>
|
||||
<item name="colorTertiary">#EBBF90</item>
|
||||
<item name="colorOnTertiary">#452B08</item>
|
||||
<item name="colorTertiaryContainer">#5F411C</item>
|
||||
<item name="colorOnTertiaryContainer">#FFDDB8</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#201A1B</item>
|
||||
<item name="colorOnBackground">#ECE0E0</item>
|
||||
<item name="colorSurface">#201A1B</item>
|
||||
<item name="colorOnSurface">#ECE0E0</item>
|
||||
<item name="colorSurfaceVariant">#524345</item>
|
||||
<item name="colorOnSurfaceVariant">#D6C1C3</item>
|
||||
<item name="colorOutline">#9F8C8E</item>
|
||||
<item name="colorOnSurfaceInverse">#201A1B</item>
|
||||
<item name="colorSurfaceInverse">#ECE0E0</item>
|
||||
<item name="colorPrimaryInverse">#BC0049</item>
|
||||
</style>
|
||||
|
||||
<style name="magenta">
|
||||
<item name="colorPrimary">#FBAAFF</item>
|
||||
<item name="colorOnPrimary">#570068</item>
|
||||
<item name="colorPrimaryContainer">#7B0091</item>
|
||||
<item name="colorOnPrimaryContainer">#FFD5FF</item>
|
||||
<item name="colorSecondary">#D7BFD5</item>
|
||||
<item name="colorOnSecondary">#3B2B3B</item>
|
||||
<item name="colorSecondaryContainer">#534153</item>
|
||||
<item name="colorOnSecondaryContainer">#F5DBF2</item>
|
||||
<item name="colorTertiary">#F6B8AE</item>
|
||||
<item name="colorOnTertiary">#4C251F</item>
|
||||
<item name="colorTertiaryContainer">#663B34</item>
|
||||
<item name="colorOnTertiaryContainer">#FFDAD2</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#1E1A1D</item>
|
||||
<item name="colorOnBackground">#E9E0E5</item>
|
||||
<item name="colorSurface">#1E1A1D</item>
|
||||
<item name="colorOnSurface">#E9E0E5</item>
|
||||
<item name="colorSurfaceVariant">#4D444C</item>
|
||||
<item name="colorOnSurfaceVariant">#D0C3CC</item>
|
||||
<item name="colorOutline">#998E96</item>
|
||||
<item name="colorOnSurfaceInverse">#1E1A1D</item>
|
||||
<item name="colorSurfaceInverse">#E9E0E5</item>
|
||||
<item name="colorPrimaryInverse">#9A25AE</item>
|
||||
</style>
|
||||
|
||||
<style name="violet">
|
||||
<item name="colorPrimary">#D4BAFF</item>
|
||||
<item name="colorOnPrimary">#3E008E</item>
|
||||
<item name="colorPrimaryContainer">#5727A7</item>
|
||||
<item name="colorOnPrimaryContainer">#ECDCFF</item>
|
||||
<item name="colorSecondary">#CDC2DB</item>
|
||||
<item name="colorOnSecondary">#342D41</item>
|
||||
<item name="colorSecondaryContainer">#4B4358</item>
|
||||
<item name="colorOnSecondaryContainer">#E9DEF7</item>
|
||||
<item name="colorTertiary">#F0B8C5</item>
|
||||
<item name="colorOnTertiary">#4A2530</item>
|
||||
<item name="colorTertiaryContainer">#643A46</item>
|
||||
<item name="colorOnTertiaryContainer">#FFD9E2</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#1D1B1F</item>
|
||||
<item name="colorOnBackground">#E6E1E5</item>
|
||||
<item name="colorSurface">#1D1B1F</item>
|
||||
<item name="colorOnSurface">#E6E1E5</item>
|
||||
<item name="colorSurfaceVariant">#49454E</item>
|
||||
<item name="colorOnSurfaceVariant">#CBC4CF</item>
|
||||
<item name="colorOutline">#948E99</item>
|
||||
<item name="colorOnSurfaceInverse">#1D1B1F</item>
|
||||
<item name="colorSurfaceInverse">#E6E1E5</item>
|
||||
<item name="colorPrimaryInverse">#6F43BF</item>
|
||||
</style>
|
||||
|
||||
<style name="blue">
|
||||
<item name="colorPrimary">#B9C3FF</item>
|
||||
<item name="colorOnPrimary">#08218A</item>
|
||||
<item name="colorPrimaryContainer">#293CA0</item>
|
||||
<item name="colorOnPrimaryContainer">#DDE0FF</item>
|
||||
<item name="colorSecondary">#C4C5DD</item>
|
||||
<item name="colorOnSecondary">#2D2F42</item>
|
||||
<item name="colorSecondaryContainer">#43465A</item>
|
||||
<item name="colorOnSecondaryContainer">#E0E1FA</item>
|
||||
<item name="colorTertiary">#E5BAD7</item>
|
||||
<item name="colorOnTertiary">#45263E</item>
|
||||
<item name="colorTertiaryContainer">#5D3C55</item>
|
||||
<item name="colorOnTertiaryContainer">#FFD7F3</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#1B1B1F</item>
|
||||
<item name="colorOnBackground">#E4E1E6</item>
|
||||
<item name="colorSurface">#1B1B1F</item>
|
||||
<item name="colorOnSurface">#E4E1E6</item>
|
||||
<item name="colorSurfaceVariant">#46464F</item>
|
||||
<item name="colorOnSurfaceVariant">#C6C5D0</item>
|
||||
<item name="colorOutline">#90909A</item>
|
||||
<item name="colorOnSurfaceInverse">#1B1B1F</item>
|
||||
<item name="colorSurfaceInverse">#E4E1E6</item>
|
||||
<item name="colorPrimaryInverse">#4355B9</item>
|
||||
</style>
|
||||
|
||||
<style name="skyblue">
|
||||
<item name="colorPrimary">#8BCEFF</item>
|
||||
<item name="colorOnPrimary">#003450</item>
|
||||
<item name="colorPrimaryContainer">#004B71</item>
|
||||
<item name="colorOnPrimaryContainer">#C8E6FF</item>
|
||||
<item name="colorSecondary">#B7C8D8</item>
|
||||
<item name="colorOnSecondary">#22323F</item>
|
||||
<item name="colorSecondaryContainer">#384956</item>
|
||||
<item name="colorOnSecondaryContainer">#D3E4F5</item>
|
||||
<item name="colorTertiary">#CFBFE8</item>
|
||||
<item name="colorOnTertiary">#362B4B</item>
|
||||
<item name="colorTertiaryContainer">#4D4162</item>
|
||||
<item name="colorOnTertiaryContainer">#ECDCFF</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#1A1C1E</item>
|
||||
<item name="colorOnBackground">#E2E2E5</item>
|
||||
<item name="colorSurface">#1A1C1E</item>
|
||||
<item name="colorOnSurface">#E2E2E5</item>
|
||||
<item name="colorSurfaceVariant">#41474D</item>
|
||||
<item name="colorOnSurfaceVariant">#C1C7CE</item>
|
||||
<item name="colorOutline">#8B9198</item>
|
||||
<item name="colorOnSurfaceInverse">#1A1C1E</item>
|
||||
<item name="colorSurfaceInverse">#E2E2E5</item>
|
||||
<item name="colorPrimaryInverse">#006494</item>
|
||||
</style>
|
||||
|
||||
<style name="green">
|
||||
<item name="colorPrimary">#78DC77</item>
|
||||
<item name="colorOnPrimary">#003907</item>
|
||||
<item name="colorPrimaryContainer">#00530F</item>
|
||||
<item name="colorOnPrimaryContainer">#93F990</item>
|
||||
<item name="colorSecondary">#B9CCB3</item>
|
||||
<item name="colorOnSecondary">#253423</item>
|
||||
<item name="colorSecondaryContainer">#3B4B38</item>
|
||||
<item name="colorOnSecondaryContainer">#D5E8CE</item>
|
||||
<item name="colorTertiary">#A1CFD5</item>
|
||||
<item name="colorOnTertiary">#00363B</item>
|
||||
<item name="colorTertiaryContainer">#1E4D52</item>
|
||||
<item name="colorOnTertiaryContainer">#BCEBF0</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#1A1C19</item>
|
||||
<item name="colorOnBackground">#E2E3DD</item>
|
||||
<item name="colorSurface">#1A1C19</item>
|
||||
<item name="colorOnSurface">#E2E3DD</item>
|
||||
<item name="colorSurfaceVariant">#424840</item>
|
||||
<item name="colorOnSurfaceVariant">#C2C8BD</item>
|
||||
<item name="colorOutline">#8C9288</item>
|
||||
<item name="colorOnSurfaceInverse">#1A1C19</item>
|
||||
<item name="colorSurfaceInverse">#E2E3DD</item>
|
||||
<item name="colorPrimaryInverse">#006E17</item>
|
||||
</style>
|
||||
|
||||
<style name="brown">
|
||||
<item name="colorPrimary">#FFB598</item>
|
||||
<item name="colorOnPrimary">#5C1A00</item>
|
||||
<item name="colorPrimaryContainer">#7B2E0D</item>
|
||||
<item name="colorOnPrimaryContainer">#FFDBCD</item>
|
||||
<item name="colorSecondary">#E7BEB0</item>
|
||||
<item name="colorOnSecondary">#442A20</item>
|
||||
<item name="colorSecondaryContainer">#5D4035</item>
|
||||
<item name="colorOnSecondaryContainer">#FFDBCD</item>
|
||||
<item name="colorTertiary">#D5C78E</item>
|
||||
<item name="colorOnTertiary">#383005</item>
|
||||
<item name="colorTertiaryContainer">#50461A</item>
|
||||
<item name="colorOnTertiaryContainer">#F1E2A7</item>
|
||||
<item name="colorError">#FFB4A9</item>
|
||||
<item name="colorErrorContainer">#930006</item>
|
||||
<item name="colorOnError">#680003</item>
|
||||
<item name="colorOnErrorContainer">#FFDAD4</item>
|
||||
<item name="android:colorBackground">#201A18</item>
|
||||
<item name="colorOnBackground">#EDE0DC</item>
|
||||
<item name="colorSurface">#201A18</item>
|
||||
<item name="colorOnSurface">#EDE0DC</item>
|
||||
<item name="colorSurfaceVariant">#52433E</item>
|
||||
<item name="colorOnSurfaceVariant">#D8C2BB</item>
|
||||
<item name="colorOutline">#A08C86</item>
|
||||
<item name="colorOnSurfaceInverse">#201A18</item>
|
||||
<item name="colorSurfaceInverse">#EDE0DC</item>
|
||||
<item name="colorPrimaryInverse">#9A4523</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -104,9 +104,8 @@
|
||||
<string name="points">Aantal punten</string>
|
||||
<string name="currency">Valuta</string>
|
||||
<string name="balance">Saldo</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> punten</string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="chooseImportType">Gegevens importeren uit…\?</string>
|
||||
<string name="chooseImportType">Gegevens importeren uit</string>
|
||||
<string name="app_loyalty_card_keychain">Klantenkaartkluis</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Schermvergrendeling uitschakelen</string>
|
||||
<string name="settings_keep_screen_on">Scherm niet uitschakelen</string>
|
||||
@@ -188,7 +187,6 @@
|
||||
<string name="settings_theme_color">Themakleur</string>
|
||||
<string name="app_contributors">Mede mogelijk gemaakt door: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="noGroupCards">Deze groep bevat geen kaarten</string>
|
||||
<string name="toggleMoreInfo">Meer informatie tonen/verbergen</string>
|
||||
<string name="barcodeImageDescriptionWithType">Afbeelding van barcode <xliff:g>%s</xliff:g></string>
|
||||
<string name="swipeToSwitchImages">Veeg of houd lang ingedrukt om te bladeren</string>
|
||||
<string name="sort_by">Sorteren op</string>
|
||||
@@ -222,4 +220,15 @@
|
||||
<string name="action_hide_details">Details verbergen</string>
|
||||
<string name="translate_platform">op Weblate</string>
|
||||
<string name="shortcutSelectCard">Kies een kaart</string>
|
||||
<string name="options">Opties</string>
|
||||
<string name="showMoreInfo">Informatie tonen</string>
|
||||
<string name="starred">Favoriet</string>
|
||||
<string name="hideMoreInfo">Informatie verbergen</string>
|
||||
<string name="set_scale">Schaal instellen</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> punt</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> punten</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Zwarte achtergrond gebruiken bij donker thema</string>
|
||||
<string name="include_if_asking_support">Als je ondersteuning wilt, voorzie je verzoek dan van de volgende informatie:</string>
|
||||
</resources>
|
||||
@@ -4,17 +4,17 @@
|
||||
<string name="importing">Importacion…</string>
|
||||
<string name="exportFailed">Exportacion pas possibla</string>
|
||||
<string name="exportSuccessfulTitle">Exportat</string>
|
||||
<string name="importFailed">Importacion de vòstras cartas impossibla</string>
|
||||
<string name="importFailed">Importacion impossibla</string>
|
||||
<string name="importFailedTitle">Fracàs de l’importacion</string>
|
||||
<string name="importSuccessfulTitle">Importat</string>
|
||||
<string name="importExportHelp">Exportar vòstras cartas vos permet de las recuperar sus un autre aparelh.</string>
|
||||
<string name="importExportHelp">La salvagarda de vòstras cartas vos permet de las recuperar sus un autre aparelh.</string>
|
||||
<string name="exportName">Exportar</string>
|
||||
<string name="importExport">Importar/Exportar</string>
|
||||
<string name="failedParsingImportUriError">Analisi impossibla l’URI d’importacion</string>
|
||||
<string name="noCardExistsError">Cap de carta pas trobada</string>
|
||||
<string name="noCardIdError">Cap de numèro de carta pas picat</string>
|
||||
<string name="noCardExistsError">Impossible de trobar aquesta carta</string>
|
||||
<string name="noCardIdError">Cap d’identificant pas picat</string>
|
||||
<string name="noStoreError">Cap de nom pas picat</string>
|
||||
<string name="card_ids_copied">Num. de la carta copiada</string>
|
||||
<string name="card_ids_copied">ID copiat(s)</string>
|
||||
<string name="noCardsMessage">Apondètz d’en primièr una carta</string>
|
||||
<string name="cardShortcut">Acorchi de carta</string>
|
||||
<string name="scanCardBarcode">Numerizar lo còdi de barras</string>
|
||||
@@ -45,9 +45,25 @@
|
||||
</plurals>
|
||||
<string name="deleteTitle">Suprimir la carta</string>
|
||||
<string name="noBarcode">Cap de còdi de barras</string>
|
||||
<string name="barcodeNoBarcode">Aquesta carta a pas cap de còdi de barras</string>
|
||||
<string name="barcodeNoBarcode">Cap de còdi de barras</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> carta seleccionada</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> cartas seleccionadas</item>
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> seleccionada</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> seleccionadas</item>
|
||||
</plurals>
|
||||
<string name="settings">Paramètres</string>
|
||||
<string name="settings_category_title_ui">Interfàcia utilizaire</string>
|
||||
<string name="settings_theme">Tèma</string>
|
||||
<string name="noGiftCards">Clicatz lo boton + per apondre una carta o utilizatz lo menú ⋮ per n’importar una.</string>
|
||||
<string name="noMatchingGiftCards">Cap de resultat. Ensajatz de modificar vòstra recèrca.</string>
|
||||
<string name="settings_light_theme">Clar</string>
|
||||
<string name="settings_dark_theme">Escur</string>
|
||||
<string name="noGroups">Clicatz lo boton + per apondre de grops de categorizar.</string>
|
||||
<string name="addManually">Picar l’ID a la man</string>
|
||||
<string name="settings_system_theme">Sistèma</string>
|
||||
<string name="about">A prepaus</string>
|
||||
<string name="about_title_fmt">A prepaus de <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="addFromImage">Causir a la galariá</string>
|
||||
<string name="groups">Grops</string>
|
||||
<string name="groupsList">Grops : <xliff:g>%s</xliff:g></string>
|
||||
<string name="settings_max_font_size_scale">Talha max. de la poliça</string>
|
||||
</resources>
|
||||
@@ -2,12 +2,12 @@
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="action_search">Szukaj</string>
|
||||
<string name="action_add">Dodaj</string>
|
||||
<string name="noGiftCards">Kliknij przycisk + plus, aby dodać kartę lub zaimportuj jakieś z ⋮ menu w pierwszej kolejności.</string>
|
||||
<string name="noMatchingGiftCards">Nic nie znaleziono. Spróbuj zmienić wyszukiwanie.</string>
|
||||
<string name="noGiftCards">Kliknij przycisk + plus, aby dodać kartę lub zaimportuj z ⋮ menu.</string>
|
||||
<string name="noMatchingGiftCards">Brak wyników. Spróbuj zmienić treść zapytania.</string>
|
||||
<string name="storeName">Nazwa</string>
|
||||
<string name="note">Notatka</string>
|
||||
<string name="cardId">Identyfikator karty</string>
|
||||
<string name="barcodeNoBarcode">Ta karta nie ma kodu kreskowego</string>
|
||||
<string name="barcodeNoBarcode">Bez kodu kreskowego</string>
|
||||
<string name="cancel">Anuluj</string>
|
||||
<string name="save">Zapisz</string>
|
||||
<string name="edit">Edytuj</string>
|
||||
@@ -21,16 +21,16 @@
|
||||
<string name="sendLabel">Wyślij…</string>
|
||||
<string name="editCardTitle">Edytuj kartę lojalnościową</string>
|
||||
<string name="addCardTitle">Dodaj kartę lojalnościową</string>
|
||||
<string name="scanCardBarcode">Zeskanuj kod kreskowy karty lojalnościowej</string>
|
||||
<string name="scanCardBarcode">Zeskanuj kod kreskowy</string>
|
||||
<string name="cardShortcut">Skrót karty</string>
|
||||
<string name="noCardsMessage">Najpierw dodaj kartę</string>
|
||||
<string name="noStoreError">Nie wprowadzono nazwy</string>
|
||||
<string name="noCardIdError">Nie wprowadzono identyfikatora karty</string>
|
||||
<string name="noCardIdError">Nie wprowadzono identyfikatora</string>
|
||||
<string name="noCardExistsError">Nie można wyszukać karty lojalnościowej</string>
|
||||
<string name="failedParsingImportUriError">Nie można przeanalizować identyfikatora importu URI</string>
|
||||
<string name="importExport">Importuj/Eksportuj</string>
|
||||
<string name="exportName">Eksportuj</string>
|
||||
<string name="importExportHelp">Zarchiwizowane dane umożliwiają przeniesienie kart na inne urządzenie.</string>
|
||||
<string name="importExportHelp">Kopie zapasowe umożliwiają przeniesienie kart na inne urządzenie.</string>
|
||||
<string name="importSuccessfulTitle">Zaimportowano</string>
|
||||
<string name="importFailedTitle">Import nie powiódł się</string>
|
||||
<string name="importFailed">Nie udało się zaimportować</string>
|
||||
@@ -39,7 +39,7 @@
|
||||
<string name="exportFailed">Nie udało się wyeksportować</string>
|
||||
<string name="importing">Importowanie…</string>
|
||||
<string name="exporting">Eksportowanie…</string>
|
||||
<string name="noExternalStoragePermissionError">Najpierw przyznaj uprawnienia pamięci zewnętrznej do importowania lub eksportowania kart</string>
|
||||
<string name="noExternalStoragePermissionError">Przyznaj uprawnienia pamięci zewnętrznej, aby importować lub eksportować dane</string>
|
||||
<string name="importOptionFilesystemTitle">Importuj z systemu plików</string>
|
||||
<string name="importOptionFilesystemExplanation">Wybierz określony plik z systemu plików.</string>
|
||||
<string name="importOptionFilesystemButton">Z systemu plików</string>
|
||||
@@ -47,14 +47,14 @@
|
||||
<string name="importOptionApplicationExplanation">Użyj dowolnej aplikacji lub ulubionego menedżera plików, aby otworzyć plik.</string>
|
||||
<string name="importOptionApplicationButton">Użyj innej aplikacji</string>
|
||||
<string name="about">O aplikacji</string>
|
||||
<string name="app_license">Wolne oprogramowanie copylefted, licencjonowane GPLv3 +.</string>
|
||||
<string name="app_license">Wolne oprogramowanie typu copyleft, na licencji GPLv3+</string>
|
||||
<string name="about_title_fmt">O <xliff:g id="app_name">%s</xliff:g></string>
|
||||
<string name="debug_version_fmt">Wersja: <xliff:g id="version">%s</xliff:g></string>
|
||||
<string name="app_revision_fmt">Info o wydaniu: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="selectBarcodeTitle">Wybierz kod kreskowy</string>
|
||||
<string name="enterBarcodeInstructions">Wprowadź ID karty, a następnie wybierz typ kodu kreskowego, którego chcesz użyć lub wybierz „Ta karta nie ma kodu kreskowego”.</string>
|
||||
<string name="copy_to_clipboard_toast">Skopiowano ID karty do schowka</string>
|
||||
<string name="thumbnailDescription">Miniaturka karty</string>
|
||||
<string name="enterBarcodeInstructions">Wprowadź ID, a następnie wybierz typ kodu kreskowego, którego chcesz użyć lub wybierz „Bez kodu kreskowego”.</string>
|
||||
<string name="copy_to_clipboard_toast">Skopiowano ID do schowka</string>
|
||||
<string name="thumbnailDescription">Miniaturka</string>
|
||||
<string name="settings">Ustawienia</string>
|
||||
<string name="settings_category_title_ui">Interfejs użytkownika</string>
|
||||
<string name="settings_theme">Motyw</string>
|
||||
@@ -66,14 +66,14 @@
|
||||
<string name="intent_import_card_from_url_share_text">Chcę udostępnić Ci kartę lojalnościową</string>
|
||||
<string name="deleteConfirmationGroup">Usunąć grupę\?</string>
|
||||
<string name="all">Wszystko</string>
|
||||
<string name="noGroups">Najpierw kliknij przycisk + plus, aby dodać grupy dla kategoryzacji.</string>
|
||||
<string name="noGroups">Kliknij przycisk + plus, aby dodać grupy w celu kategoryzacji.</string>
|
||||
<string name="groups">Grupy</string>
|
||||
<string name="enter_group_name">Wpisz nazwę grupy</string>
|
||||
<string name="exportSuccessful">Dane karty zostały wyeksportowane</string>
|
||||
<string name="importSuccessful">Zaimportowano dane karty</string>
|
||||
<string name="exportSuccessful">Dane zostały wyeksportowane</string>
|
||||
<string name="importSuccessful">Zaimportowano dane</string>
|
||||
<string name="starImage">Ulubiona gwiazda</string>
|
||||
<string name="app_copyright_old">Na podstawie Loyalty Card Keychain
|
||||
\nWszelkie prawa zastrzeżone © 2016–2020 Branden Archer.</string>
|
||||
\nWszelkie prawa zastrzeżone © 2016–2020 Branden Archer</string>
|
||||
<string name="exportOptionExplanation">Dane zostaną zapisane w wybranym przez Ciebie miejscu.</string>
|
||||
<string name="unstar">Usuń z ulubionych</string>
|
||||
<string name="star">Dodaj do ulubionych</string>
|
||||
@@ -91,7 +91,7 @@
|
||||
<string name="settings_magenta_theme">Magenta</string>
|
||||
<string name="settings_pink_theme">Różowy</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_theme_color">Kolor motywu</string>
|
||||
<string name="settings_theme_color">Kolor akcentowy motywu</string>
|
||||
<string name="settings_system_locale">System</string>
|
||||
<string name="settings_locale">Język</string>
|
||||
<string name="turn_flashlight_off">Wyłącz latarkę</string>
|
||||
@@ -100,36 +100,36 @@
|
||||
<string name="passwordRequired">Proszę wpisać hasło</string>
|
||||
<string name="no">Nie</string>
|
||||
<string name="yes">Tak</string>
|
||||
<string name="updateBarcodeQuestionText">Zmieniłeś ID karty. Czy chcesz zaktualizować kod kreskowy, aby używał tej samej wartości\?</string>
|
||||
<string name="updateBarcodeQuestionText">Zmieniłeś ID. Czy chcesz zaktualizować kod kreskowy, aby używał tej samej wartości\?</string>
|
||||
<string name="updateBarcodeQuestionTitle">Zaktualizować wartość kodu kreskowego\?</string>
|
||||
<string name="takePhoto">Zrób zdjęcie</string>
|
||||
<string name="removeImage">Usuń zdjęcie</string>
|
||||
<string name="setBackImage">Ustaw tylne zdjęcie</string>
|
||||
<string name="setFrontImage">Ustaw zdjęcie przednie</string>
|
||||
<string name="photos">Zdjęcia</string>
|
||||
<string name="backImageDescription">Zdjęcie tylne karty</string>
|
||||
<string name="frontImageDescription">Zdjęcie przednie karty</string>
|
||||
<string name="backImageDescription">Zdjęcie tylne</string>
|
||||
<string name="frontImageDescription">Zdjęcie przednie</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Chcę Ci udostępnić karty</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Skopiowano ID karty do schowka</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Skopiowano ID do schowka</string>
|
||||
<string name="wrongValueForBarcodeType">Wartość nie jest prawidłowa dla wybranego typu kodu kreskowego</string>
|
||||
<string name="unsupportedBarcodeType">Nie można jeszcze wyświetlić tego typu kodu kreskowego. Być może będzie on obsługiwany w nowszej wersji aplikacji.</string>
|
||||
<string name="setBarcodeId">Ustaw wartość kodu kreskowego</string>
|
||||
<string name="sameAsCardId">Taki sam jak ID karty</string>
|
||||
<string name="sameAsCardId">Taki sam jak ID</string>
|
||||
<string name="barcodeId">Wartość kodu kreskowego</string>
|
||||
<string name="importVoucherVaultMessage">Wybierz swój <i>vouchervault.json</i> z Voucher Vault, aby zaimportować.
|
||||
\nLub utwórz go wpierw klikając Eksportuj w Voucher Vault.</string>
|
||||
\nUtwórz go wpierw klikając Eksportuj w Voucher Vault.</string>
|
||||
<string name="importVoucherVault">Importuj z Voucher Vault</string>
|
||||
<string name="importStocardMessage">Wybierz swój <i>***-sync.zip</i> z Stocard, aby zaimportować.
|
||||
\nLub uzyskaj go, wysyłając email na adres support@stocardapp.com, z prośbą o eksport Twoich danych.</string>
|
||||
\nUzyskaj go, wysyłając email na adres support@stocardapp.com, z prośbą o eksport Twoich danych.</string>
|
||||
<string name="importStocard">Importuj z Stocard</string>
|
||||
<string name="importLoyaltyCardKeychainMessage">Wybierz swój <i>LoyaltyCardKeychain.csv</i> z Loyalty Card Keychain, aby zaimportować.
|
||||
\nLub utwórz go z menu Importuj/Eksportuj w Loyalty Card Keychain, wpierw klikając tam Eksportuj.</string>
|
||||
\nUtwórz go z menu Importuj/Eksportuj w Loyalty Card Keychain, wpierw klikając tam Eksportuj.</string>
|
||||
<string name="importLoyaltyCardKeychain">Importuj z Loyalty Card Keychain</string>
|
||||
<string name="importFidmeMessage">Wybierz swój <i>fidme-export-request-xxxxxx.zip</i> z FidMe, aby zaimportować, po czym wybierz typy kodów kreskowych.
|
||||
\nLub stwórz go ze swojego profilu FidMe, wybierając wpierw Ochrona Danych, a następnie naciskając Wyodrębnij moje dane.</string>
|
||||
\nStwórz go ze swojego profilu FidMe, wybierając wpierw Ochrona Danych, a następnie naciskając Wyodrębnij moje dane.</string>
|
||||
<string name="importFidme">Importuj z FidMe</string>
|
||||
<string name="importCatimaMessage">Wybierz swój <i>catima.zip</i> z Catima, aby zaimportować.
|
||||
\nLub utwórz go z menu Importuj/Eksportuj innej aplikacji Catima, wpierw klikając tam Eksportuj.</string>
|
||||
\nUtwórz go z menu Importuj/Eksportuj innej aplikacji Catima, wpierw klikając tam Eksportuj.</string>
|
||||
<string name="importCatima">Importuj z Catima</string>
|
||||
<string name="accept">Zaakceptuj</string>
|
||||
<string name="privacy_policy_popup_text">Informacja o polityce prywatności (wymagana przez niektóre sklepy z aplikacjami):
|
||||
@@ -146,19 +146,18 @@
|
||||
<string name="noBarcodeFound">Nie znaleziono kodu kreskowego</string>
|
||||
<string name="moveBarcodeToCenterOfScreen">Wyśrodkuj kod kreskowy na ekranie</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Przenieś kod kreskowy na górę ekranu</string>
|
||||
<string name="chooseExpiryDate">Wybierz datę ważności</string>
|
||||
<string name="chooseExpiryDate">Wybierz datę wygaśnięcia</string>
|
||||
<string name="never">Nigdy</string>
|
||||
<string name="expiryDate">Data wygaśnięcia</string>
|
||||
<string name="editBarcode">Edytuj kod kreskowy</string>
|
||||
<string name="barcode">Kod kreskowy</string>
|
||||
<string name="card">Karta</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> punkty</string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Wygasło: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Wygasa: <xliff:g>%s</xliff:g></string>
|
||||
<string name="groupsList">Grupy: <xliff:g>%s</xliff:g></string>
|
||||
<string name="addFromImage">Wybierz zdjęcie z galerii</string>
|
||||
<string name="addManually">Wpisz ręcznie ID karty</string>
|
||||
<string name="addManually">Wpisz ręcznie ID</string>
|
||||
<string name="leaveWithoutSaveConfirmation">Wyjść bez zapisywania\?</string>
|
||||
<string name="leaveWithoutSaveTitle">Wyjdź</string>
|
||||
<string name="moveDown">Przesuń w dół</string>
|
||||
@@ -170,14 +169,14 @@
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> kart</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> kart</item>
|
||||
</plurals>
|
||||
<string name="noGroupCards">Ta grupa nie zawiera żadnych kart</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Zapobiegaj blokowaniu ekranu</string>
|
||||
<string name="settings_keep_screen_on">Pozostaw ekran włączony</string>
|
||||
<string name="noGroupCards">Ta grupa jest pusta</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Zapobiegaj wyłączeniu ekranu</string>
|
||||
<string name="settings_keep_screen_on">Nie wygaszaj ekranu</string>
|
||||
<string name="settings_max_font_size_scale">Maks. rozmiar czcionki</string>
|
||||
<string name="app_resources">Otwarte zewnętrzne zasoby: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="app_libraries">Otwarte zewnętrzne biblioteki: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Wszelkie prawa zastrzeżone © 2019–<xliff:g>%d</xliff:g> Sylvia van Os.</string>
|
||||
<string name="card_ids_copied">Skopiowano ID karty</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Wszelkie prawa zastrzeżone © 2019–<xliff:g>%d</xliff:g> Sylvia van Os</string>
|
||||
<string name="card_ids_copied">Skopiowano identyfikator(y)</string>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Usunąć tą <xliff:g>%d</xliff:g> kartę permamentnie\?</item>
|
||||
<item quantity="few">Usunąć te <xliff:g>%d</xliff:g> karty permamentnie\?</item>
|
||||
@@ -191,9 +190,43 @@
|
||||
<item quantity="other">Usuń <xliff:g>%d</xliff:g> kart</item>
|
||||
</plurals>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> wybrana karta</item>
|
||||
<item quantity="few"><xliff:g>%d</xliff:g> wybrane karty</item>
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> wybranych kart</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> wybranych kart</item>
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> zaznaczona</item>
|
||||
<item quantity="few"><xliff:g>%d</xliff:g> zaznaczone</item>
|
||||
<item quantity="many"><xliff:g>%d</xliff:g> zaznaczonych</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> zaznaczonych</item>
|
||||
</plurals>
|
||||
<string name="shortcutSelectCard">Wybierz kartę</string>
|
||||
<string name="action_show_details">Pokaż szczegóły</string>
|
||||
<string name="action_hide_details">Ukryj szczegóły</string>
|
||||
<string name="sort_by_name">Nazwa</string>
|
||||
<string name="sort_by_most_recently_used">Ostatnio użyte</string>
|
||||
<string name="sort_by_expiry">Data wygaśnięcia</string>
|
||||
<string name="sort_by_balance">Balans</string>
|
||||
<string name="sort_by">Sortuj według</string>
|
||||
<string name="credits">Podziękowania</string>
|
||||
<string name="help_translate_this_app">Pomóż przetłumaczyć tą aplikację</string>
|
||||
<string name="source_repository">Repozytorium Źródłowe</string>
|
||||
<string name="report_error">Zgłoś Błąd</string>
|
||||
<string name="setIcon">Ustaw ikonę</string>
|
||||
<string name="on_github">na GitHub\'ie</string>
|
||||
<string name="swipeToSwitchImages">Przeciągnij lub przytrzymaj aby zmienić obraz</string>
|
||||
<string name="selectColor">Wybierz kolor</string>
|
||||
<string name="version_history">Historia Wersji</string>
|
||||
<string name="and_data_usage">i wykorzystanie danych</string>
|
||||
<string name="rate_this_app">Oceń tą aplikację</string>
|
||||
<string name="license">Licencja</string>
|
||||
<string name="on_google_play">w Google Play</string>
|
||||
<string name="noGiftCardsGroup">Stwórz karty i przypisz je do grupy w tym miejscu.</string>
|
||||
<string name="reverse">...w odwrotnej kolejności</string>
|
||||
<string name="translate_platform">na Weblate</string>
|
||||
<string name="sort">Sortuj</string>
|
||||
<string name="barcodeImageDescriptionWithType">Obraz kodu kreskowego typu <xliff:g>%s</xliff:g></string>
|
||||
<string name="group_edit">Edytuj Grupę</string>
|
||||
<string name="group_name_already_in_use">Ta nazwa jest już użyta</string>
|
||||
<string name="group_name_is_empty">Nazwa grupy nie może być pusta</string>
|
||||
<string name="group_updated">Zaktualizowano grupę</string>
|
||||
<string name="editGroup">Edytowanie grupy: <xliff:g>%s</xliff:g></string>
|
||||
<string name="exportPassword">Ustaw hasło, aby zabezpieczyć twoje wyeksportowane dane (opcjonalne)</string>
|
||||
<string name="exportPasswordHint">Wpisz hasło</string>
|
||||
<string name="options">Opcje</string>
|
||||
</resources>
|
||||
@@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
@@ -4,11 +4,11 @@
|
||||
<string name="importOptionFilesystemExplanation">Escolha um ficheiro específico a partir do sistema de ficheiros.</string>
|
||||
<string name="action_search">Pesquisa</string>
|
||||
<string name="star">Adicionar aos favoritos</string>
|
||||
<string name="noMatchingGiftCards">Não foi encontrado nada. Tente alterar a sua pesquisa.</string>
|
||||
<string name="noMatchingGiftCards">Sem resultados. Tente alterar a sua pesquisa.</string>
|
||||
<string name="storeName">Nome</string>
|
||||
<string name="note">Nota</string>
|
||||
<string name="barcodeType">Tipo de código de barras</string>
|
||||
<string name="barcodeNoBarcode">Este cartão não tem código de barras</string>
|
||||
<string name="barcodeNoBarcode">Sem código de barras</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="save">Guardar</string>
|
||||
<string name="edit">Editar</string>
|
||||
@@ -29,8 +29,8 @@
|
||||
<string name="copy_to_clipboard">Copiar identificador para a área de transferência</string>
|
||||
<string name="sendLabel">Enviar…</string>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> cartão selecionado</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> cartões selecionados</item>
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> selecionado</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> selecionados</item>
|
||||
</plurals>
|
||||
<string name="deleteConfirmation">Eliminar este cartão permanentemente\?</string>
|
||||
<string name="share">Partilhar</string>
|
||||
@@ -41,13 +41,13 @@
|
||||
<string name="cardShortcut">Atalho do cartão</string>
|
||||
<string name="noCardsMessage">Adicione primeiro um cartão</string>
|
||||
<string name="noStoreError">Nenhum nome inserido</string>
|
||||
<string name="noCardExistsError">Não foi possível encontrar o cartão</string>
|
||||
<string name="noCardExistsError">Não foi possível encontrar esse cartão</string>
|
||||
<string name="failedParsingImportUriError">Não foi possível analisar o URI de importação</string>
|
||||
<string name="importExport">Importar / exportar</string>
|
||||
<string name="exportName">Exportar</string>
|
||||
<string name="importSuccessful">Dados do cartão importados</string>
|
||||
<string name="noGroups">Primeiro clique no botão + para adicionar grupos para categorização.</string>
|
||||
<string name="noGroupCards">Este grupo não contém cartões</string>
|
||||
<string name="importSuccessful">Dados importados</string>
|
||||
<string name="noGroups">Clique no botão + para adicionar grupos para categorização.</string>
|
||||
<string name="noGroupCards">Este grupo está vazio</string>
|
||||
<string name="intent_import_card_from_url_share_text">Quero partilhar um cartão</string>
|
||||
<string name="settings_display_barcode_max_brightness">Iluminar o código de barras</string>
|
||||
<string name="settings_keep_screen_on">Manter ecrã ligado</string>
|
||||
@@ -55,7 +55,7 @@
|
||||
<string name="groups">Grupos</string>
|
||||
<string name="settings_lock_barcode_orientation">Bloquear orientação do código de barras</string>
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Desativar bloqueio do ecrã</string>
|
||||
<string name="exportSuccessful">Dados do cartão exportados</string>
|
||||
<string name="exportSuccessful">Dados exportados</string>
|
||||
<string name="all">Todos</string>
|
||||
<string name="deleteConfirmationGroup">Eliminar o grupo\?</string>
|
||||
<string name="settings">Configurações</string>
|
||||
@@ -66,29 +66,28 @@
|
||||
<string name="settings_dark_theme">Escuro</string>
|
||||
<string name="settings_max_font_size_scale">Tamanho máximo da fonte</string>
|
||||
<string name="selectBarcodeTitle">Selecionar código de barras</string>
|
||||
<string name="enterBarcodeInstructions">Introduza o identificador do cartão e depois escolha o tipo de código de barras abaixo ou \"Este cartão não tem código de barras\".</string>
|
||||
<string name="copy_to_clipboard_toast">Identificador do cartão copiado para a área de transferência</string>
|
||||
<string name="thumbnailDescription">Miniatura do cartão</string>
|
||||
<string name="enterBarcodeInstructions">Introduza o identificador e depois escolha o tipo de código de barras abaixo ou \"Sem código de barras\".</string>
|
||||
<string name="copy_to_clipboard_toast">Identificador copiado para a área de transferência</string>
|
||||
<string name="thumbnailDescription">Miniatura</string>
|
||||
<string name="starImage">Favorito</string>
|
||||
<string name="failedOpeningFileManager">Instalar primeiro um gestor de ficheiros.</string>
|
||||
<string name="moveUp">Subir</string>
|
||||
<string name="moveDown">Descer</string>
|
||||
<string name="leaveWithoutSaveTitle">Sair</string>
|
||||
<string name="noExternalStoragePermissionError">Conceda primeiro a autorização de acesso ao armazenamento externo para importar ou exportar cartões</string>
|
||||
<string name="importExportHelp">A cópia de segurança dos seus cartões permite-lhe movê-los para outro dispositivo.</string>
|
||||
<string name="noExternalStoragePermissionError">Conceda primeiro a autorização de acesso ao armazenamento externo para importar ou exportar dados</string>
|
||||
<string name="importExportHelp">A cópia de segurança dos seus dados permite-lhe movê-los para outro dispositivo.</string>
|
||||
<string name="importSuccessfulTitle">Importado</string>
|
||||
<string name="importFailedTitle">A importação falhou</string>
|
||||
<string name="importFailed">Não foi possível importar os cartões</string>
|
||||
<string name="importFailed">Não foi possível importar</string>
|
||||
<string name="exportSuccessfulTitle">Exportado</string>
|
||||
<string name="exportFailedTitle">A exportação falhou</string>
|
||||
<string name="exportFailed">Não foi possível exportar os cartões</string>
|
||||
<string name="exportFailed">Não foi possível exportar</string>
|
||||
<string name="importing">A importar…</string>
|
||||
<string name="exporting">A exportar…</string>
|
||||
<string name="settings_sky_blue_theme">Azul céu</string>
|
||||
<string name="report_error">Reportar erro</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> pontos</string>
|
||||
<string name="barcode">Código de barras</string>
|
||||
<string name="chooseImportType">De onde importar os dados\?</string>
|
||||
<string name="chooseImportType">Importar dados de</string>
|
||||
<string name="card">Cartão</string>
|
||||
<string name="expiryStateSentence">Expiram: <xliff:g>%s</xliff:g></string>
|
||||
<string name="app_resources">Recursos livres de terceiros: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
@@ -98,7 +97,7 @@
|
||||
<string name="exportPassword">Defina uma palavra-passe para proteger a exportação (opcional)</string>
|
||||
<string name="exportPasswordHint">Digite a palavra-passe</string>
|
||||
<string name="setBarcodeId">Definir o valor do código de barras</string>
|
||||
<string name="sameAsCardId">Igual ao identificador do cartão</string>
|
||||
<string name="sameAsCardId">Igual ao identificador</string>
|
||||
<string name="importFidmeMessage">Selecione a exportação <i>fidme-export-request-xxxxxx.zip</i> do FidMe para importar e depois selecione os tipos de código de barras manualmente.
|
||||
\nPrimeiro crie a exportação no seu perfil do FidMe escolhendo a opção \"Proteção de dados\" e em seguida pressionando \"Extrair os meus dados\".</string>
|
||||
<string name="importStocardMessage">Selecione a exportação <i>***-sync.zip</i> do Stocard para importar.
|
||||
@@ -107,15 +106,15 @@
|
||||
<string name="wrongValueForBarcodeType">O valor não é válido para o tipo de código de barras selecionado</string>
|
||||
<string name="intent_import_card_from_url_share_multiple_text">Quero partilhar alguns cartões</string>
|
||||
<string name="removeImage">Remover imagem</string>
|
||||
<string name="backImageDescription">Imagem de trás do cartão</string>
|
||||
<string name="frontImageDescription">Imagem frontal do cartão</string>
|
||||
<string name="backImageDescription">Imagem de trás</string>
|
||||
<string name="frontImageDescription">Imagem frontal</string>
|
||||
<string name="photos">Fotografias</string>
|
||||
<string name="passwordRequired">Introduza a palavra-passe</string>
|
||||
<string name="settings_green_theme">Verde</string>
|
||||
<string name="settings_grey_theme">Cinza</string>
|
||||
<string name="settings_grey_theme">Cinzento</string>
|
||||
<string name="settings_brown_theme">Castanho</string>
|
||||
<string name="updateBarcodeQuestionTitle">Atualizar o valor do código de barras\?</string>
|
||||
<string name="updateBarcodeQuestionText">Alterou a identificação do cartão. Também quer atualizar o código de barras para usar o mesmo valor\?</string>
|
||||
<string name="updateBarcodeQuestionText">Alterou o identificador. Também quer atualizar o código de barras para usar o mesmo valor\?</string>
|
||||
<string name="no">Não</string>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> cartão</item>
|
||||
@@ -130,7 +129,7 @@
|
||||
<string name="app_revision_fmt">Informação da revisão: <xliff:g id="app_revision_url">%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Expirados: <xliff:g>%s</xliff:g></string>
|
||||
<string name="leaveWithoutSaveConfirmation">Sair sem guardar\?</string>
|
||||
<string name="addManually">Introduzir manualmente o identificador do cartão</string>
|
||||
<string name="addManually">Introduzir manualmente o identificador</string>
|
||||
<string name="addFromImage">Selecionar imagem da galeria</string>
|
||||
<string name="groupsList">Grupos: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">Saldo: <xliff:g>%s</xliff:g></string>
|
||||
@@ -164,7 +163,7 @@
|
||||
<string name="importVoucherVaultMessage">Selecione a exportação <i>vouchervault.json</i> do Voucher Vault para importar.
|
||||
\nCrie-a primeiro pressionando a opção \"Exportar\" no Voucher Vault.</string>
|
||||
<string name="unsupportedBarcodeType">Este tipo de código de barras ainda não pode ser mostrado. Pode vir a ser suportado numa versão posterior da aplicação.</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Identificação do cartão copiado para a área de transferência</string>
|
||||
<string name="copy_to_clipboard_multiple_toast">Identificação copiado para a área de transferência</string>
|
||||
<string name="setFrontImage">Definir imagem frontal</string>
|
||||
<string name="setBackImage">Definir imagem de trás</string>
|
||||
<string name="failedGeneratingShareURL">Não foi possível gerar uma URL partilhável. Por favor reporte isto aos programadores.</string>
|
||||
@@ -180,13 +179,12 @@
|
||||
<string name="settings_blue_theme">Azul</string>
|
||||
<string name="app_contributors">Tornado possível por: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="sort">Ordenar</string>
|
||||
<string name="toggleMoreInfo">Alternar mostrar mais informação</string>
|
||||
<string name="swipeToSwitchImages">Deslize ou pressione prolongadamente para mudar as imagens</string>
|
||||
<string name="sort_by_name">Nome</string>
|
||||
<string name="sort_by_most_recently_used">Mais usados recentemente</string>
|
||||
<string name="sort_by_expiry">Validade</string>
|
||||
<string name="sort_by_balance">Saldo</string>
|
||||
<string name="reverse">Inverter</string>
|
||||
<string name="reverse">…na ordem inversa</string>
|
||||
<string name="sort_by">Ordenar por</string>
|
||||
<string name="version_history">Histórico de versões</string>
|
||||
<string name="credits">Créditos</string>
|
||||
@@ -208,16 +206,29 @@
|
||||
<item quantity="other">Eliminar os cartões <xliff:g>%d</xliff:g> permanentemente\?</item>
|
||||
</plurals>
|
||||
<string name="ok">OK</string>
|
||||
<string name="card_ids_copied">Identificadores dos cartões copiados</string>
|
||||
<string name="barcodeImageDescriptionWithType">Imagem do código de barras do cartão do tipo <xliff:g>%s</xliff:g></string>
|
||||
<string name="card_ids_copied">Identificadores copiados</string>
|
||||
<string name="barcodeImageDescriptionWithType">Imagem do código de barras <xliff:g>%s</xliff:g></string>
|
||||
<string name="group_edit">Editar grupo</string>
|
||||
<string name="group_name_already_in_use">O nome do grupo já está a ser usado</string>
|
||||
<string name="group_name_is_empty">O nome do grupo não pode estar vazio</string>
|
||||
<string name="group_updated">Grupo atualizado</string>
|
||||
<string name="editGroup">A editar grupo: <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGiftCardsGroup">Ainda não tem nenhum cartão de fidelidade. Assim que tenha adicionado alguns, pode atribuí-los ao grupo aqui.</string>
|
||||
<string name="noGiftCardsGroup">Crie alguns cartões e atribua-os depois ao grupo aqui.</string>
|
||||
<string name="selectColor">Selecionar cor</string>
|
||||
<string name="setIcon">Definir ícone</string>
|
||||
<string name="action_show_details">Mostrar detalhes</string>
|
||||
<string name="action_hide_details">Ocultar detalhes</string>
|
||||
<string name="shortcutSelectCard">Selecione um cartão</string>
|
||||
<string name="translate_platform">no Weblate</string>
|
||||
<string name="starred">Estrela</string>
|
||||
<string name="set_scale">Escala de set</string>
|
||||
<string name="showMoreInfo">Mostrar info</string>
|
||||
<string name="hideMoreInfo">Ocultar informação</string>
|
||||
<string name="options">Opções</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> ponto</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> pontos</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Fundo preto puro para tema negro</string>
|
||||
<string name="include_if_asking_support">Se quiser pedir ajuda, inclua as seguintes informações:</string>
|
||||
</resources>
|
||||
@@ -63,8 +63,8 @@
|
||||
<string name="settings_system_theme">Системная</string>
|
||||
<string name="settings_light_theme">Светлая</string>
|
||||
<string name="settings_dark_theme">Тёмная</string>
|
||||
<string name="settings_display_barcode_max_brightness">Максимальная яркость при показе карты</string>
|
||||
<string name="settings_lock_barcode_orientation">Портретная ориентация экрана при показе карты</string>
|
||||
<string name="settings_display_barcode_max_brightness">Максимальная яркость при отображении карты</string>
|
||||
<string name="settings_lock_barcode_orientation">Портретная ориентация экрана при отображении карты</string>
|
||||
<string name="intent_import_card_from_url_share_text">Я хочу поделиться с вами картой</string>
|
||||
<string name="exportSuccessful">Данные успешно экспортированы</string>
|
||||
<string name="all">Все</string>
|
||||
@@ -82,7 +82,6 @@
|
||||
<string name="leaveWithoutSaveConfirmation">Выйти без сохранения\?</string>
|
||||
<string name="leaveWithoutSaveTitle">Выход</string>
|
||||
<string name="failedOpeningFileManager">Требуется файловый менеджер.</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> баллов</string>
|
||||
<string name="balanceSentence">Баланс: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Срок действия истёк: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Срок действия истекает: <xliff:g>%s</xliff:g></string>
|
||||
@@ -94,7 +93,7 @@
|
||||
\nНИКАКИЕ ДАННЫЕ НЕ СОБИРАЮТСЯ ВООБЩЕ, что может подтвердить любой, так как наше приложение является свободным программным обеспечением.</string>
|
||||
<string name="privacy_policy">Политика конфиденциальности</string>
|
||||
<string name="app_loyalty_card_keychain">Loyalty Card Keychain</string>
|
||||
<string name="chooseImportType">Откуда импортировать данные\?</string>
|
||||
<string name="chooseImportType">Откуда импортировать данные</string>
|
||||
<string name="balance">Баланс</string>
|
||||
<string name="moveBarcodeToTopOfScreen">Переместить штрих-код в верхнюю часть экрана</string>
|
||||
<string name="moveBarcodeToCenterOfScreen">Центрировать штрих-код на экране</string>
|
||||
@@ -197,7 +196,6 @@
|
||||
<string name="app_contributors">Создано при поддержке: <xliff:g id="app_contributors">%s</xliff:g></string>
|
||||
<string name="noGroupCards">Группа пуста</string>
|
||||
<string name="barcodeImageDescriptionWithType">Изображение штрих-кода <xliff:g>%s</xliff:g></string>
|
||||
<string name="toggleMoreInfo">Переключение отображения дополнительной информации</string>
|
||||
<string name="swipeToSwitchImages">Смахивание или долгое нажатие для переключения изображений</string>
|
||||
<string name="sort_by_expiry">Срок действия</string>
|
||||
<string name="sort_by">Сортировать по</string>
|
||||
@@ -230,4 +228,17 @@
|
||||
<string name="action_show_details">Показать детали</string>
|
||||
<string name="translate_platform">на Weblate</string>
|
||||
<string name="shortcutSelectCard">Выбор карты</string>
|
||||
<string name="options">Параметры</string>
|
||||
<string name="set_scale">Выбор масштаба</string>
|
||||
<string name="hideMoreInfo">Скрыть данные</string>
|
||||
<string name="showMoreInfo">Показать данные</string>
|
||||
<string name="starred">Избранное</string>
|
||||
<plurals name="balancePoints">
|
||||
<item quantity="one"><xliff:g>%s</xliff:g> балл</item>
|
||||
<item quantity="few"><xliff:g>%s</xliff:g> балла</item>
|
||||
<item quantity="many"><xliff:g>%s</xliff:g> баллов</item>
|
||||
<item quantity="other"><xliff:g>%s</xliff:g> баллов</item>
|
||||
</plurals>
|
||||
<string name="settings_oled_dark">Чёрный фон для тёмной темы</string>
|
||||
<string name="include_if_asking_support">Если вы хотите запросить поддержку, укажите следующую информацию:</string>
|
||||
</resources>
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="action_add">Pridať</string>
|
||||
<string name="noGiftCards">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.</string>
|
||||
<string name="storeName">Obchod</string>
|
||||
<string name="storeName">Názov</string>
|
||||
<string name="note">Poznámka</string>
|
||||
<string name="cardId">ID karty</string>
|
||||
<string name="cancel">Zrušiť</string>
|
||||
@@ -19,17 +19,17 @@
|
||||
<string name="addCardTitle">Pridať kartu</string>
|
||||
<string name="scanCardBarcode">Zosnímajte čiarový kód na karte</string>
|
||||
<string name="cardShortcut">Skratka</string>
|
||||
<string name="noCardsMessage">Nie sú uložené žiadne karty, vložte prvú</string>
|
||||
<string name="noCardsMessage">Najprv pridajte kartu</string>
|
||||
<string name="noStoreError">Nebol zadaný obchod</string>
|
||||
<string name="noCardIdError">Nebolo zadané ID karty</string>
|
||||
<string name="noCardExistsError">Nie je možné vyhľadať vernostnú kartu</string>
|
||||
<string name="noCardIdError">Nebolo zadané ID</string>
|
||||
<string name="noCardExistsError">Nepodarilo sa nájsť túto kartu</string>
|
||||
<string name="importExport">Import/Export</string>
|
||||
<string name="exportName">Export</string>
|
||||
<string name="importExportHelp">Zálohovanie dát Vám umožní presunúť Vaše uložené karty na iné zariadenie.</string>
|
||||
<string name="importSuccessfulTitle">Import bol úspešný</string>
|
||||
<string name="importSuccessfulTitle">Importované</string>
|
||||
<string name="importFailedTitle">Import zlyhal</string>
|
||||
<string name="importFailed">Zlyhal import</string>
|
||||
<string name="exportSuccessfulTitle">Export bol úspešný</string>
|
||||
<string name="exportSuccessfulTitle">Exportované</string>
|
||||
<string name="exportFailedTitle">Export zlyhal</string>
|
||||
<string name="exportFailed">Zlyhal export</string>
|
||||
<string name="importing">Importujem…</string>
|
||||
@@ -90,7 +90,7 @@
|
||||
<string name="settings_disable_lockscreen_while_viewing_card">Zabráňte uzamknutiu obrazovky</string>
|
||||
<string name="settings_keep_screen_on">Nechajte obrazovku zapnutú</string>
|
||||
<string name="settings_max_font_size_scale">Maximálna veľkosť písma</string>
|
||||
<string name="card_ids_copied">Skopírované ID karty</string>
|
||||
<string name="card_ids_copied">Skopírované ID</string>
|
||||
<string name="unstar">Odstrániť z obľúbených</string>
|
||||
<string name="settings_dark_theme">Tmavé</string>
|
||||
<string name="settings_light_theme">Svetlo</string>
|
||||
@@ -101,4 +101,111 @@
|
||||
<string name="exportOptionExplanation">Údaje sa zapíšu na vami zvolené miesto.</string>
|
||||
<string name="failedParsingImportUriError">Nepodarilo sa analyzovať import URI</string>
|
||||
<string name="share">Zdieľať</string>
|
||||
<string name="barcodeImageDescriptionWithType">Obrázok čiarového kódu <xliff:g>%s</xliff:g></string>
|
||||
<string name="groupsList">Skupiny: <xliff:g>%s</xliff:g></string>
|
||||
<plurals name="deleteCardsTitle">
|
||||
<item quantity="one">Odstrániť <xliff:g>%d</xliff:g> kartu</item>
|
||||
<item quantity="few">Odstrániť <xliff:g>%d</xliff:g> karty</item>
|
||||
<item quantity="other">Odstrániť <xliff:g>%d</xliff:g> kariet</item>
|
||||
</plurals>
|
||||
<plurals name="selectedCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> vybraná karta</item>
|
||||
<item quantity="few"><xliff:g>%d</xliff:g> vybrané karty</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> vybraných kariet</item>
|
||||
</plurals>
|
||||
<plurals name="groupCardCount">
|
||||
<item quantity="one"><xliff:g>%d</xliff:g> karta</item>
|
||||
<item quantity="few"><xliff:g>%d</xliff:g> karty</item>
|
||||
<item quantity="other"><xliff:g>%d</xliff:g> kariet</item>
|
||||
</plurals>
|
||||
<plurals name="deleteCardsConfirmation">
|
||||
<item quantity="one">Naozaj chcete natrvalo odstrániť <xliff:g>%d</xliff:g> vybranú kartu\?</item>
|
||||
<item quantity="few">Naozaj chcete natrvalo odstrániť <xliff:g>%d</xliff:g> vybrané karty\?</item>
|
||||
<item quantity="other">Naozaj chcete natrvalo odstrániť <xliff:g>%d</xliff:g> vybraných kariet\?</item>
|
||||
</plurals>
|
||||
<string name="group_edit">Upraviť skupinu</string>
|
||||
<string name="group_name_already_in_use">Tento názov skupiny sa už používa</string>
|
||||
<string name="group_name_is_empty">Názov skupiny nemôže byť prázdny</string>
|
||||
<string name="group_updated">Skupina bola aktualizovaná</string>
|
||||
<string name="editGroup">Úprava skupiny: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentence">Platí do: <xliff:g>%s</xliff:g></string>
|
||||
<string name="expiryStateSentenceExpired">Platnosť vypršala: <xliff:g>%s</xliff:g></string>
|
||||
<string name="balanceSentence">Zostatok: <xliff:g>%s</xliff:g></string>
|
||||
<string name="importCatima">Import z aplikácie Catima</string>
|
||||
<string name="settings_theme_color">Farba témy</string>
|
||||
<string name="app_libraries">Slobodné knižnice tretích strán: <xliff:g id="app_libraries_list">%s</xliff:g></string>
|
||||
<string name="app_resources">Slobodné zdroje tretích strán: <xliff:g id="app_resources_list">%s</xliff:g></string>
|
||||
<string name="action_show_details">Zobraziť detaily</string>
|
||||
<string name="importCatimaMessage">Vyberte svoj <i>catima.zip</i> export z aplikácie Catima, ktorý chcete importovať.
|
||||
\nVytvorte ho z ponuky Import/Export inej aplikácie Catima tak, že stlačíte tlačidlo Exportovať.</string>
|
||||
<string name="accept">Prijať</string>
|
||||
<string name="importLoyaltyCardKeychain">Import z aplikácie Loyalty Card Keychain</string>
|
||||
<string name="importFidme">Import z aplikácie FidMe</string>
|
||||
<string name="turn_flashlight_on">Zapnúť svetlo</string>
|
||||
<string name="sort_by_name">Názov</string>
|
||||
<string name="sort_by_most_recently_used">Naposledy použité</string>
|
||||
<string name="sort_by_balance">Zostatok</string>
|
||||
<string name="reverse">…v obrátenom poradí</string>
|
||||
<string name="on_github">na GitHube</string>
|
||||
<string name="sort_by_expiry">Koniec platnosti</string>
|
||||
<string name="sort_by">Zoradiť podľa</string>
|
||||
<string name="version_history">História verzií</string>
|
||||
<string name="source_repository">Repozitár zdrojového kódu</string>
|
||||
<string name="on_google_play">na Google Play</string>
|
||||
<string name="report_error">Nahlásiť chybu</string>
|
||||
<string name="translate_platform">na Weblate</string>
|
||||
<string name="showMoreInfo">Zobraziť podrobnosti</string>
|
||||
<string name="hideMoreInfo">Skryť podrobnosti</string>
|
||||
<string name="action_hide_details">Skryť detaily</string>
|
||||
<string name="yes">Áno</string>
|
||||
<string name="importStocard">Import z aplikácie Stocard</string>
|
||||
<string name="selectColor">Vybrať farbu</string>
|
||||
<string name="setIcon">Nastaviť ikonu</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
<string name="settings_pink_theme">Ružová</string>
|
||||
<string name="settings_magenta_theme">Purpurová</string>
|
||||
<string name="settings_violet_theme">Fialová</string>
|
||||
<string name="settings_blue_theme">Modrá</string>
|
||||
<string name="settings_sky_blue_theme">Azurová</string>
|
||||
<string name="settings_green_theme">Zelená</string>
|
||||
<string name="settings_grey_theme">Šedá</string>
|
||||
<string name="settings_brown_theme">Hnedá</string>
|
||||
<string name="sort">Zoradiť</string>
|
||||
<string name="help_translate_this_app">Pomôžte preložiť túto aplikáciu</string>
|
||||
<string name="license">Licencia</string>
|
||||
<string name="credits">Poďakovanie</string>
|
||||
<string name="card">Karta</string>
|
||||
<string name="rate_this_app">Ohodnoťte túto aplikáciu</string>
|
||||
<string name="exportPassword">Nastavenie hesla na ochranu exportu (voliteľné)</string>
|
||||
<string name="exportPasswordHint">Zadajte heslo</string>
|
||||
<string name="failedGeneratingShareURL">Nepodarilo sa vygenerovať zdieľateľnú adresu URL. Nahláste to, prosím.</string>
|
||||
<string name="turn_flashlight_off">Vypnúť svetlo</string>
|
||||
<string name="settings_locale">Jazyk</string>
|
||||
<string name="settings_system_locale">Systém</string>
|
||||
<string name="app_copyright_old">Na základe Loyalty Card Keychain
|
||||
\ncopyright © 2016–2020 Branden Archer</string>
|
||||
<string name="app_copyright_fmt" tools:ignore="PluralsCandidate">Copyright © 2019–<xliff:g>%d</xliff:g> Sylvia van Os</string>
|
||||
<string name="expiryDate">Platnosť</string>
|
||||
<string name="barcode">Čiarový kód</string>
|
||||
<string name="editBarcode">Upraviť čiarový kód</string>
|
||||
<string name="privacy_policy">Zásady ochrany osobných údajov</string>
|
||||
<string name="importVoucherVault">Import z Voucher Vault</string>
|
||||
<string name="barcodeId">Hodnota čiarového kódu</string>
|
||||
<string name="sameAsCardId">Rovnaké ako ID</string>
|
||||
<string name="setBarcodeId">Nastavenie hodnoty čiarového kódu</string>
|
||||
<string name="unsupportedBarcodeType">Tento typ čiarového kódu zatiaľ nie je možné zobraziť. Možno bude podporovaný v neskoršej verzii aplikácie.</string>
|
||||
<string name="wrongValueForBarcodeType">Hodnota nie je platná pre vybraný typ čiarového kódu</string>
|
||||
<string name="frontImageDescription">Obrázok prednej strany</string>
|
||||
<string name="backImageDescription">Obrázok zadnej strany</string>
|
||||
<string name="photos">Fotky</string>
|
||||
<string name="setFrontImage">Nastaviť obrázok prednej strany</string>
|
||||
<string name="setBackImage">Nastaviť obrázok zadnej strany</string>
|
||||
<string name="removeImage">Odstrániť obrázok</string>
|
||||
<string name="takePhoto">Urobiť fotku</string>
|
||||
<string name="updateBarcodeQuestionTitle">Aktualizovať hodnotu čiarového kódu\?</string>
|
||||
<string name="updateBarcodeQuestionText">Zmenili ste ID. Chcete aktualizovať aj čiarový kód, aby používal rovnakú hodnotu\?</string>
|
||||
<string name="no">Nie</string>
|
||||
<string name="passwordRequired">Zadajte prosím heslo</string>
|
||||
<string name="parsingBalanceFailed"><xliff:g>%s</xliff:g> sa nezdá byť platným zostatkom.</string>
|
||||
<string name="noGiftCardsGroup">Zatiaľ nemáte žiadne vernostné karty. Keď nejaké pridáte, môžete ich priradiť ku skupine tu.</string>
|
||||
</resources>
|
||||
@@ -129,7 +129,6 @@
|
||||
<string name="balance">Stanje na računu</string>
|
||||
<string name="errorReadingImage">Slike ni bilo mogoče prebrati</string>
|
||||
<string name="noBarcodeFound">Črtna koda ni bila najdena</string>
|
||||
<string name="balancePoints"><xliff:g>%s</xliff:g> točk</string>
|
||||
<string name="balanceSentence">Stanje: <xliff:g>%s</xliff:g></string>
|
||||
<string name="chooseImportType">Uvoz iz?</string>
|
||||
<string name="importCatima">Izvoz iz aplikacije Catima</string>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user