Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e66c5e36fb | ||
|
|
fd0ca37a6a | ||
|
|
e926a397a7 | ||
|
|
4f9a6b307f | ||
|
|
df60f6adc2 | ||
|
|
d6287a3cf1 | ||
|
|
7f81d727f0 | ||
|
|
03239f0cab | ||
|
|
4b6497cba2 | ||
|
|
99008291fb | ||
|
|
079049722c | ||
|
|
73200e1ac3 | ||
|
|
39b816ddb1 | ||
|
|
be43c1633d | ||
|
|
f6c9613731 | ||
|
|
99de8cffd8 | ||
|
|
a867265c66 | ||
|
|
f43df37c80 | ||
|
|
cb70b1229f | ||
|
|
b0b54a1065 | ||
|
|
4ccfa7fb84 | ||
|
|
9932b10652 | ||
|
|
60fe6a13ff | ||
|
|
0bf30f08a1 | ||
|
|
112fca041b | ||
|
|
59af5cb07b | ||
|
|
9182837ae8 | ||
|
|
3f3d85c8b6 | ||
|
|
29c068df47 | ||
|
|
03a480f3b9 | ||
|
|
0feb0fcd16 | ||
|
|
7f1a221fec | ||
|
|
7b52338669 | ||
|
|
0a2925eafa | ||
|
|
92f37376a6 | ||
|
|
08fbc30a29 | ||
|
|
91dbcf339f | ||
|
|
24fe6886c9 | ||
|
|
270546d022 | ||
|
|
fe278324f3 | ||
|
|
c7c18a0a14 | ||
|
|
d6fcb71722 | ||
|
|
32ce1e02aa | ||
|
|
8a8faac201 | ||
|
|
2793f38d19 | ||
|
|
654e3f7843 | ||
|
|
2a6fe92b1b | ||
|
|
b3cd102332 | ||
|
|
e12bfa81dc | ||
|
|
e859e7849d |
15
.github/workflows/android.yml
vendored
@@ -10,6 +10,9 @@ on:
|
||||
branches:
|
||||
- main
|
||||
|
||||
env:
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
@@ -20,17 +23,17 @@ jobs:
|
||||
- name: Fail on bad translations
|
||||
run: if grep -ri "<xliff" app/src/main/res/values*/strings.xml; then echo "Invalidly escaped translations found"; exit 1; fi
|
||||
- uses: gradle/wrapper-validation-action@v1
|
||||
- name: set up JDK 17
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
- name: set up OpenJDK 17
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y openjdk-17-jdk-headless
|
||||
sudo update-alternatives --auto java
|
||||
- name: Build
|
||||
run: ./gradlew assembleRelease
|
||||
- name: Check lint
|
||||
run: ./gradlew lintRelease
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testReleaseUnitTest || ./gradlew testReleaseUnitTest
|
||||
run: timeout 5m ./gradlew testReleaseUnitTest || ./gradlew testReleaseUnitTest
|
||||
- name: SpotBugs
|
||||
run: ./gradlew spotbugsRelease
|
||||
- name: Archive test results
|
||||
|
||||
34
CHANGELOG.md
@@ -1,69 +1,73 @@
|
||||
# Changelog
|
||||
|
||||
## v2.23.3 - 123
|
||||
## v2.24.0 - 124 (2023-06-10)
|
||||
|
||||
- Support selecting exactly which details to view in card overview
|
||||
|
||||
## v2.23.3 - 123 (2023-06-03)
|
||||
|
||||
- Minor UI improvements
|
||||
- Fix new design not being usable on devices with square screens
|
||||
|
||||
## v2.23.2 - 122
|
||||
## v2.23.2 - 122 (2023-05-30)
|
||||
|
||||
- Long-press card icon in view activity to change it
|
||||
- Improve button styling in Groups screen
|
||||
- Fix long barcode values causing barcode to scale down to nothing
|
||||
|
||||
## v2.23.1 - 121
|
||||
## v2.23.1 - 121 (2023-05-27)
|
||||
|
||||
- Update used libraries
|
||||
|
||||
## v2.23.0 - 120
|
||||
## v2.23.0 - 120 (2023-05-25)
|
||||
|
||||
- Complete redesign of main and loyalty card view screens
|
||||
- Material You design for the settings screen
|
||||
- Fix crash when using "Take a photo" with disabled camera app
|
||||
|
||||
## v2.22.1 - 119
|
||||
## v2.22.1 - 119 (2023-04-14)
|
||||
|
||||
- Use Material You colours on more devices (Google library update)
|
||||
|
||||
## v2.22.0 - 118
|
||||
## v2.22.0 - 118 (2023-03-18)
|
||||
|
||||
- Support setting start of card validity
|
||||
- Fix Stocard import (Stocard's export format changed)
|
||||
|
||||
## v2.21.2 - 117
|
||||
## v2.21.2 - 117 (2023-01-27)
|
||||
|
||||
- Remove unnecessary permissions
|
||||
- Target Android 13
|
||||
|
||||
## v2.21.1 - 116
|
||||
## v2.21.1 - 116 (2022-12-06)
|
||||
|
||||
- Fix quick spend dialog not allowing , separator
|
||||
- Support loading image from file manager
|
||||
|
||||
## v2.21.0 - 115
|
||||
## v2.21.0 - 115 (2022-11-06)
|
||||
|
||||
- Open image in gallery on long-press
|
||||
- Apply Material style to dialogs
|
||||
- Support creating card by sharing an image to Catima
|
||||
- Add quick spend button to card screen
|
||||
|
||||
## v2.20.0 - 114
|
||||
## v2.20.0 - 114 (2022-09-21)
|
||||
|
||||
- Add Monochrome icon for Android 13
|
||||
- Improve first launch screen
|
||||
- Fidme import fixes
|
||||
|
||||
## v2.19.0 - 113
|
||||
## v2.19.0 - 113 (2022-08-14)
|
||||
|
||||
- Add previous and next buttons to the loyalty card view
|
||||
- Fix foreground colour on edit button
|
||||
- Replace floppy disk save icon with checkmark
|
||||
|
||||
## v2.18.2 - 112
|
||||
## v2.18.2 - 112 (2022-07-29)
|
||||
|
||||
- Make the possibility to set a custom header more visible
|
||||
|
||||
## v2.18.1 - 111
|
||||
## v2.18.1 - 111 (2022-07-24)
|
||||
|
||||
- Arabic language support
|
||||
- Display archived card count in group overview
|
||||
@@ -73,11 +77,11 @@
|
||||
- Fix crash when leaving cardview in RTL layouts for cards with expiry or balance
|
||||
- Fix back arrow in card view pointing the wrong way in RTL layouts
|
||||
|
||||
## v2.17.1 - 109
|
||||
## v2.17.1 - 109 (2022-06-28)
|
||||
|
||||
- Fix incorrect text colour on "No barcode" button
|
||||
|
||||
## v2.17.0 - 108
|
||||
## v2.17.0 - 108 (2022-06-24)
|
||||
|
||||
- Add card duplication feature
|
||||
- Don't allow choosing expiry before 1970 (they never worked anyway)
|
||||
|
||||
@@ -19,8 +19,8 @@ android {
|
||||
applicationId "me.hackerchick.catima"
|
||||
minSdk 21
|
||||
targetSdk 33
|
||||
versionCode 123
|
||||
versionName "2.23.3"
|
||||
versionCode 124
|
||||
versionName "2.24.0"
|
||||
|
||||
vectorDrawables.useSupportLibrary true
|
||||
multiDexEnabled true
|
||||
|
||||
@@ -81,7 +81,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
|
||||
@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);
|
||||
}
|
||||
|
||||
@@ -89,8 +89,8 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
|
||||
public boolean onOptionsItemSelected(MenuItem inputItem) {
|
||||
int id = inputItem.getItemId();
|
||||
|
||||
if (id == R.id.action_unfold) {
|
||||
mAdapter.showDetails(!mAdapter.showingDetails());
|
||||
if (id == R.id.action_shown_details) {
|
||||
mAdapter.showSelectDetailDisplayDialog();
|
||||
invalidateOptionsMenu();
|
||||
|
||||
return true;
|
||||
|
||||
@@ -18,12 +18,14 @@ import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.card.MaterialCardView;
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DateFormat;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.BlendModeColorFilterCompat;
|
||||
@@ -31,7 +33,6 @@ import androidx.core.graphics.BlendModeCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import protect.card_locker.databinding.LoyaltyCardLayoutBinding;
|
||||
import protect.card_locker.preferences.Settings;
|
||||
|
||||
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
|
||||
private int mCurrentSelectedIndex = -1;
|
||||
@@ -41,7 +42,10 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
protected SparseBooleanArray mSelectedItems;
|
||||
protected SparseBooleanArray mAnimationItemsIndex;
|
||||
private boolean mReverseAllAnimations = false;
|
||||
private boolean mShowDetails;
|
||||
private boolean mShowNameBelowThumbnail;
|
||||
private boolean mShowNote;
|
||||
private boolean mShowBalance;
|
||||
private boolean mShowValidity;
|
||||
|
||||
public LoyaltyCardCursorAdapter(Context inputContext, Cursor inputCursor, CardAdapterListener inputListener) {
|
||||
super(inputCursor, DBHelper.LoyaltyCardDbIds.ID);
|
||||
@@ -58,29 +62,100 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
swapCursor(inputCursor);
|
||||
}
|
||||
|
||||
private void saveDetailState(int stateId, boolean value) {
|
||||
SharedPreferences cardDetailsPref = mContext.getSharedPreferences(
|
||||
mContext.getString(R.string.sharedpreference_card_details),
|
||||
Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor cardDetailsPrefEditor = cardDetailsPref.edit();
|
||||
cardDetailsPrefEditor.putBoolean(mContext.getString(stateId), value);
|
||||
cardDetailsPrefEditor.apply();
|
||||
}
|
||||
|
||||
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);
|
||||
mShowNameBelowThumbnail = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_name_below_thumbnail), false);
|
||||
mShowNote = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_note), true);
|
||||
mShowBalance = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_balance), true);
|
||||
mShowValidity = cardDetailsPref.getBoolean(mContext.getString(R.string.sharedpreference_card_details_show_validity), true);
|
||||
}
|
||||
|
||||
public void showDetails(boolean show) {
|
||||
mShowDetails = show;
|
||||
public void showNameBelowThumbnail(boolean show) {
|
||||
mShowNameBelowThumbnail = 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();
|
||||
saveDetailState(R.string.sharedpreference_card_details_show_name_below_thumbnail, show);
|
||||
}
|
||||
|
||||
public boolean showingDetails() {
|
||||
return mShowDetails;
|
||||
public boolean showingNameBelowThumbnail() {
|
||||
return mShowNameBelowThumbnail;
|
||||
}
|
||||
|
||||
public void showNote(boolean show) {
|
||||
mShowNote = show;
|
||||
notifyDataSetChanged();
|
||||
|
||||
saveDetailState(R.string.sharedpreference_card_details_show_note, show);
|
||||
}
|
||||
|
||||
public boolean showingNote() {
|
||||
return mShowNote;
|
||||
}
|
||||
|
||||
public void showBalance(boolean show) {
|
||||
mShowBalance = show;
|
||||
notifyDataSetChanged();
|
||||
|
||||
saveDetailState(R.string.sharedpreference_card_details_show_balance, show);
|
||||
}
|
||||
|
||||
public boolean showingBalance() {
|
||||
return mShowBalance;
|
||||
}
|
||||
|
||||
public void showValidity(boolean show) {
|
||||
mShowValidity = show;
|
||||
notifyDataSetChanged();
|
||||
|
||||
saveDetailState(R.string.sharedpreference_card_details_show_validity, show);
|
||||
}
|
||||
|
||||
public boolean showingValidity() {
|
||||
return mShowValidity;
|
||||
}
|
||||
|
||||
public void showSelectDetailDisplayDialog() {
|
||||
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(mContext);
|
||||
builder.setTitle(R.string.action_show_details);
|
||||
builder.setMultiChoiceItems(
|
||||
new String[]{
|
||||
mContext.getString(R.string.show_name_below_image_thumbnail),
|
||||
mContext.getString(R.string.show_note),
|
||||
mContext.getString(R.string.show_balance),
|
||||
mContext.getString(R.string.show_validity)
|
||||
},
|
||||
new boolean[]{
|
||||
showingNameBelowThumbnail(),
|
||||
showingNote(),
|
||||
showingBalance(),
|
||||
showingValidity()
|
||||
},
|
||||
(dialogInterface, i, b) -> {
|
||||
switch (i) {
|
||||
case 0: showNameBelowThumbnail(b); break;
|
||||
case 1: showNote(b); break;
|
||||
case 2: showBalance(b); break;
|
||||
case 3: showValidity(b); break;
|
||||
default: throw new IndexOutOfBoundsException("No such index exists in LoyaltyCardCursorAdapter show details view");
|
||||
}
|
||||
}
|
||||
);
|
||||
builder.setPositiveButton(R.string.ok, (dialog, i) -> dialog.dismiss());
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -104,33 +179,40 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
inputHolder.mDivider.setVisibility(View.GONE);
|
||||
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(inputCursor);
|
||||
Bitmap icon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
|
||||
|
||||
if (mShowDetails && !loyaltyCard.note.isEmpty()) {
|
||||
if (mShowNameBelowThumbnail && icon != null) {
|
||||
inputHolder.setStoreField(loyaltyCard.store);
|
||||
} else {
|
||||
inputHolder.setStoreField(null);
|
||||
}
|
||||
|
||||
if (mShowNote && !loyaltyCard.note.isEmpty()) {
|
||||
inputHolder.setNoteField(loyaltyCard.note);
|
||||
} else {
|
||||
inputHolder.setNoteField(null);
|
||||
}
|
||||
|
||||
if (mShowDetails && !loyaltyCard.balance.equals(new BigDecimal("0"))) {
|
||||
if (mShowBalance && !loyaltyCard.balance.equals(new BigDecimal("0"))) {
|
||||
inputHolder.setExtraField(inputHolder.mBalanceField, Utils.formatBalance(mContext, loyaltyCard.balance, loyaltyCard.balanceType), null);
|
||||
} else {
|
||||
inputHolder.setExtraField(inputHolder.mBalanceField, null, null);
|
||||
}
|
||||
|
||||
if (mShowDetails && loyaltyCard.validFrom != null) {
|
||||
if (mShowValidity && loyaltyCard.validFrom != null) {
|
||||
inputHolder.setExtraField(inputHolder.mValidFromField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.validFrom), Utils.isNotYetValid(loyaltyCard.validFrom) ? Color.RED : null);
|
||||
} else {
|
||||
inputHolder.setExtraField(inputHolder.mValidFromField, null, null);
|
||||
}
|
||||
|
||||
if (mShowDetails && loyaltyCard.expiry != null) {
|
||||
if (mShowValidity && loyaltyCard.expiry != null) {
|
||||
inputHolder.setExtraField(inputHolder.mExpiryField, DateFormat.getDateInstance(DateFormat.LONG).format(loyaltyCard.expiry), Utils.hasExpired(loyaltyCard.expiry) ? Color.RED : null);
|
||||
} else {
|
||||
inputHolder.setExtraField(inputHolder.mExpiryField, null, null);
|
||||
}
|
||||
|
||||
inputHolder.mCardIcon.setContentDescription(loyaltyCard.store);
|
||||
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, inputHolder.mCardIcon, inputHolder.mCardText);
|
||||
Utils.setIconOrTextWithBackground(mContext, loyaltyCard, icon, inputHolder.mCardIcon, inputHolder.mCardText);
|
||||
inputHolder.setIconBackgroundColor(loyaltyCard.headerColor != null ? loyaltyCard.headerColor : androidx.appcompat.R.attr.colorPrimary);
|
||||
|
||||
inputHolder.toggleCardStateIcon(loyaltyCard.starStatus != 0, loyaltyCard.archiveStatus != 0, itemSelected(inputCursor.getPosition()));
|
||||
@@ -218,7 +300,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
|
||||
public class LoyaltyCardListItemViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
public TextView mCardText, mNoteField, mBalanceField, mValidFromField, mExpiryField;
|
||||
public TextView mCardText, mStoreField, mNoteField, mBalanceField, mValidFromField, mExpiryField;
|
||||
public ImageView mCardIcon, mStarBackground, mStarBorder, mTickIcon, mArchivedBackground;
|
||||
public MaterialCardView mRow;
|
||||
public ConstraintLayout mStar, mArchived;
|
||||
@@ -231,6 +313,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
View inputView = loyaltyCardLayoutBinding.getRoot();
|
||||
mRow = loyaltyCardLayoutBinding.row;
|
||||
mDivider = loyaltyCardLayoutBinding.infoDivider;
|
||||
mStoreField = loyaltyCardLayoutBinding.store;
|
||||
mNoteField = loyaltyCardLayoutBinding.note;
|
||||
mBalanceField = loyaltyCardLayoutBinding.balance;
|
||||
mValidFromField = loyaltyCardLayoutBinding.validFrom;
|
||||
@@ -280,6 +363,16 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
field.requestLayout();
|
||||
}
|
||||
|
||||
public void setStoreField(String text) {
|
||||
if (text == null) {
|
||||
mStoreField.setVisibility(View.GONE);
|
||||
} else {
|
||||
mStoreField.setVisibility(View.VISIBLE);
|
||||
mStoreField.setText(text);
|
||||
}
|
||||
mStoreField.requestLayout();
|
||||
}
|
||||
|
||||
public void setNoteField(String text) {
|
||||
if (text == null) {
|
||||
mNoteField.setVisibility(View.GONE);
|
||||
|
||||
@@ -498,6 +498,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
|
||||
params.leftMargin = contentPadding;
|
||||
params.topMargin = contentPadding / 2;
|
||||
params.rightMargin = contentPadding;
|
||||
|
||||
input.setLayoutParams(params);
|
||||
|
||||
@@ -52,6 +52,7 @@ import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import androidx.core.widget.TextViewCompat;
|
||||
|
||||
import com.google.android.material.color.MaterialColors;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
|
||||
@@ -346,7 +347,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
TextView infoTextview = new TextView(this);
|
||||
infoTextview.setPadding(
|
||||
dialogContentPadding,
|
||||
0,
|
||||
dialogContentPadding / 2,
|
||||
dialogContentPadding,
|
||||
0
|
||||
);
|
||||
@@ -409,6 +410,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
);
|
||||
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
|
||||
params.leftMargin = contentPadding;
|
||||
params.topMargin = contentPadding / 2;
|
||||
params.rightMargin = contentPadding;
|
||||
|
||||
LinearLayout layout = new LinearLayout(this);
|
||||
@@ -601,7 +603,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
cardIdView.setText(loyaltyCard.cardId);
|
||||
cardIdView.setTextIsSelectable(true);
|
||||
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
|
||||
cardIdView.setPadding(contentPadding, 0, contentPadding, 0);
|
||||
cardIdView.setPadding(contentPadding, contentPadding / 2, contentPadding, 0);
|
||||
|
||||
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(LoyaltyCardViewActivity.this);
|
||||
builder.setTitle(R.string.cardId);
|
||||
@@ -630,7 +632,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
editButtonIcon.setTint(Utils.needsDarkForeground(complementaryColor) ? Color.BLACK : Color.WHITE);
|
||||
binding.fabEdit.setImageDrawable(editButtonIcon);
|
||||
|
||||
Utils.setIconOrTextWithBackground(this, loyaltyCard, binding.iconImage, binding.iconText);
|
||||
Bitmap icon = Utils.retrieveCardImage(this, loyaltyCard.id, ImageLocationType.icon);
|
||||
Utils.setIconOrTextWithBackground(this, loyaltyCard, icon, binding.iconImage, binding.iconText);
|
||||
|
||||
// If the background is very bright, we should use dark icons
|
||||
backgroundNeedsDarkIcons = Utils.needsDarkForeground(backgroundHeaderColor);
|
||||
@@ -871,18 +874,17 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
private void drawMainImage(int index, boolean waitForResize, boolean isFullscreen) {
|
||||
if (imageTypes.isEmpty()) {
|
||||
barcodeRenderTarget.setVisibility(View.GONE);
|
||||
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
|
||||
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
|
||||
return;
|
||||
}
|
||||
|
||||
ImageType wantedImageType = imageTypes.get(index);
|
||||
|
||||
if (wantedImageType == ImageType.BARCODE) {
|
||||
// Use border in non-fullscreen mode
|
||||
if (!isFullscreen) {
|
||||
barcodeRenderTarget.setBackground(AppCompatResources.getDrawable(this, R.drawable.round_outline));
|
||||
} else {
|
||||
barcodeRenderTarget.setBackgroundColor(Color.WHITE);
|
||||
}
|
||||
barcodeRenderTarget.setBackgroundColor(Color.WHITE);
|
||||
binding.mainCardView.setCardBackgroundColor(Color.WHITE);
|
||||
binding.cardIdView.setTextColor(getResources().getColor(R.color.md_theme_light_onSurfaceVariant));
|
||||
|
||||
if (waitForResize) {
|
||||
redrawBarcodeAfterResize(!isFullscreen);
|
||||
@@ -894,10 +896,14 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
} else if (wantedImageType == ImageType.IMAGE_FRONT) {
|
||||
barcodeRenderTarget.setImageBitmap(frontImageBitmap);
|
||||
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
|
||||
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
|
||||
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
|
||||
barcodeRenderTarget.setContentDescription(getString(R.string.frontImageDescription));
|
||||
} else if (wantedImageType == ImageType.IMAGE_BACK) {
|
||||
barcodeRenderTarget.setImageBitmap(backImageBitmap);
|
||||
barcodeRenderTarget.setBackgroundColor(Color.TRANSPARENT);
|
||||
binding.mainCardView.setCardBackgroundColor(Color.TRANSPARENT);
|
||||
binding.cardIdView.setTextColor(MaterialColors.getColor(binding.cardIdView, com.google.android.material.R.attr.colorOnSurfaceVariant));
|
||||
barcodeRenderTarget.setContentDescription(getString(R.string.backImageDescription));
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unknown image type: " + wantedImageType);
|
||||
|
||||
@@ -15,18 +15,15 @@ import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.util.TypedValue;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ActionMode;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
@@ -435,7 +432,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
}
|
||||
|
||||
private void displayCardSetupOptions(Menu menu, boolean shouldShow) {
|
||||
for (int id : new int[]{R.id.action_search, R.id.action_unfold, R.id.action_sort}) {
|
||||
for (int id : new int[]{R.id.action_search, R.id.action_shown_details, R.id.action_sort}) {
|
||||
menu.findItem(id).setVisible(shouldShow);
|
||||
}
|
||||
}
|
||||
@@ -600,7 +597,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
getMenuInflater().inflate(R.menu.archive_menu, inputMenu);
|
||||
}
|
||||
|
||||
Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails());
|
||||
displayCardSetupOptions(inputMenu, mLoyaltyCardCount > 0);
|
||||
|
||||
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
|
||||
@@ -653,8 +649,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
onBackPressed();
|
||||
}
|
||||
|
||||
if (id == R.id.action_unfold) {
|
||||
mAdapter.showDetails(!mAdapter.showingDetails());
|
||||
if (id == R.id.action_shown_details) {
|
||||
mAdapter.showSelectDetailDisplayDialog();
|
||||
invalidateOptionsMenu();
|
||||
|
||||
return true;
|
||||
|
||||
@@ -21,7 +21,6 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -160,7 +159,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
|
||||
@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);
|
||||
}
|
||||
|
||||
@@ -168,8 +167,8 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
|
||||
public boolean onOptionsItemSelected(MenuItem inputItem) {
|
||||
int id = inputItem.getItemId();
|
||||
|
||||
if (id == R.id.action_unfold) {
|
||||
mAdapter.showDetails(!mAdapter.showingDetails());
|
||||
if (id == R.id.action_shown_details) {
|
||||
mAdapter.showSelectDetailDisplayDialog();
|
||||
invalidateOptionsMenu();
|
||||
|
||||
return true;
|
||||
|
||||
@@ -152,6 +152,7 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro
|
||||
);
|
||||
int contentPadding = getResources().getDimensionPixelSize(R.dimen.alert_dialog_content_padding);
|
||||
params.leftMargin = contentPadding;
|
||||
params.topMargin = contentPadding / 2;
|
||||
params.rightMargin = contentPadding;
|
||||
input.setLayoutParams(params);
|
||||
container.addView(input);
|
||||
|
||||
@@ -560,16 +560,6 @@ public class Utils {
|
||||
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;
|
||||
@@ -603,8 +593,7 @@ public class Utils {
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, ImageView backgroundOrIcon, TextView textWhenNoImage) {
|
||||
Bitmap icon = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon);
|
||||
public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage) {
|
||||
if (icon != null) {
|
||||
Log.d("onResume", "setting icon image");
|
||||
textWhenNoImage.setVisibility(View.GONE);
|
||||
|
||||
5
app/src/main/res/drawable/baseline_visibility_24.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<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,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
|
||||
</vector>
|
||||
@@ -18,7 +18,7 @@
|
||||
android:outlineProvider="none"
|
||||
app:cardCornerRadius="8dp"
|
||||
app:strokeWidth="0dp"
|
||||
app:layout_constraintBottom_toTopOf="@+id/note"
|
||||
app:layout_constraintBottom_toTopOf="@+id/store"
|
||||
app:layout_constraintDimensionRatio="85.6f:53.98f"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
@@ -129,6 +129,23 @@
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/store"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:textAppearance="?attr/textAppearanceHeadlineSmall"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/icon_layout"
|
||||
app:layout_constraintBottom_toTopOf="@+id/note"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:text="Example store"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/note"
|
||||
android:layout_width="match_parent"
|
||||
@@ -140,7 +157,7 @@
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/icon_layout"
|
||||
app:layout_constraintTop_toBottomOf="@+id/store"
|
||||
app:layout_constraintBottom_toTopOf="@+id/info_divider"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
android:layout_weight="1">
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/main_card_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:cardCornerRadius="8dp"
|
||||
@@ -168,7 +169,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toTopOf="@+id/fullscreen_button_minimize"
|
||||
android:layout_marginBottom="50dp"
|
||||
android:layout_marginBottom="25dp"
|
||||
android:layout_marginStart="15.0dip"
|
||||
android:layout_marginEnd="15.0dip">
|
||||
|
||||
@@ -195,7 +196,7 @@
|
||||
android:src="@drawable/ic_baseline_expand_more_24"
|
||||
android:tooltipText="@string/moveDown"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="50dp"
|
||||
android:layout_marginBottom="25dp"
|
||||
android:background="@android:color/transparent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
@@ -12,10 +12,11 @@
|
||||
android:id="@+id/checkBox_reverse"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:paddingLeft="20dp"
|
||||
android:layout_marginStart="20dp"
|
||||
android:paddingStart="20dp"
|
||||
android:text="@string/reverse"
|
||||
android:textSize="16sp"/>
|
||||
android:textSize="16sp"
|
||||
android:textColor="?attr/colorOnSurfaceVariant"/>
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
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"
|
||||
android:id="@+id/action_shown_details"
|
||||
android:title="@string/action_show_details"
|
||||
android:icon="@drawable/baseline_visibility_24"
|
||||
app:showAsAction="always"
|
||||
android:visible="false"/>
|
||||
<item
|
||||
|
||||
@@ -1,9 +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"
|
||||
android:id="@+id/action_shown_details"
|
||||
android:title="@string/action_show_details"
|
||||
android:icon="@drawable/baseline_visibility_24"
|
||||
app:showAsAction="always"
|
||||
android:visible="true"/>
|
||||
</menu>
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
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"
|
||||
android:id="@+id/action_shown_details"
|
||||
android:title="@string/action_show_details"
|
||||
android:icon="@drawable/baseline_visibility_24"
|
||||
app:showAsAction="always"
|
||||
android:visible="false"/>
|
||||
<item
|
||||
|
||||
@@ -28,16 +28,17 @@ Sergio Paredes
|
||||
Aayush Gupta
|
||||
huuhaa
|
||||
Quentin PAGÈS
|
||||
(Cliff Heraldo)
|
||||
Clxff H3r4ld0
|
||||
Balázs Meskó
|
||||
Alexander Ivanov
|
||||
arshbeerSingh
|
||||
Balázs Meskó
|
||||
Denis Shilin
|
||||
Freddo espresso
|
||||
Giovanni Donisi
|
||||
Projjal Moitra
|
||||
Silvério Santos
|
||||
Miha Frangež
|
||||
Eryk Michalak
|
||||
Arnis Jaundžeikars
|
||||
Kefir2105
|
||||
sr093906
|
||||
@@ -51,7 +52,9 @@ waffshappen
|
||||
Robin
|
||||
Eric
|
||||
ati3
|
||||
enolp
|
||||
Evgeniy Khramov
|
||||
FC Stegerman
|
||||
Jane Kong
|
||||
Jean Mareilles
|
||||
Jiri Grönroos
|
||||
@@ -63,7 +66,6 @@ Still Hsu
|
||||
String E. Fighter
|
||||
Tapu
|
||||
Yurical
|
||||
Eryk Michalak
|
||||
rr-vesp
|
||||
丛林意志
|
||||
alajemba-vik
|
||||
@@ -74,6 +76,7 @@ KovalevArtem
|
||||
Artem M.
|
||||
Astrohops1
|
||||
BMN
|
||||
balaraz
|
||||
BootVirtual
|
||||
Clonewayx
|
||||
D. Domig
|
||||
@@ -123,7 +126,7 @@ Airat
|
||||
Alexander
|
||||
sNiXx
|
||||
Angela Enogieru
|
||||
AnimeshChatterjee1
|
||||
Animesh Chatterjee
|
||||
Artūras Kalenda
|
||||
Ashish Yadav
|
||||
Aya Elsaadany
|
||||
@@ -138,7 +141,6 @@ Mylou53
|
||||
danieluhrinyi
|
||||
Kasina Dheeraj
|
||||
Donno
|
||||
FC Stegerman
|
||||
Flav
|
||||
Franciszek Stefan
|
||||
Gael Caraballo
|
||||
@@ -174,6 +176,7 @@ pbeckmann
|
||||
Peer Beckmann
|
||||
Piotr Strebski
|
||||
Piotr Zet
|
||||
Poorva Patidar
|
||||
Quang Nguyen
|
||||
Ratnesh
|
||||
Reza
|
||||
@@ -181,6 +184,7 @@ Rohan Babbar
|
||||
Ronak Upadhyay
|
||||
Rose Liverman
|
||||
SKULD
|
||||
Sabri Ünal
|
||||
Salem Malus
|
||||
Samarth Asthan
|
||||
Shailendra Maurya
|
||||
@@ -188,6 +192,7 @@ SilverFS
|
||||
Simone Dotto
|
||||
Subhashish Anand
|
||||
Subhradeep Bera
|
||||
Swayam Khare
|
||||
SziaTomi
|
||||
Mehedi Hasan
|
||||
Titas Pažereckas
|
||||
@@ -201,6 +206,7 @@ Yusril A
|
||||
ahmed-awad26
|
||||
Avik Kundu
|
||||
diksha-2911
|
||||
Frablock
|
||||
gbonaspetti
|
||||
gittyboy-cell
|
||||
huang ivan
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
<string name="help_translate_this_app">Помогнете за превода на приложението</string>
|
||||
<string name="exportPasswordHint">Въведете парола</string>
|
||||
<string name="exportPassword">Защитете архива с парола (по желание)</string>
|
||||
<string name="setIcon">Задаване на значка</string>
|
||||
<string name="setIcon">Задаване на миниатюра</string>
|
||||
<string name="editGroup">Променяне на списъка: <xliff:g>%s</xliff:g></string>
|
||||
<string name="group_name_already_in_use">Има списък с това име</string>
|
||||
<string name="group_updated">Промените са запазени</string>
|
||||
@@ -268,5 +268,9 @@
|
||||
<string name="openBackImageInGalleryApp">Отваряне на изображението на задната страна в приложението галерия</string>
|
||||
<string name="setBarcodeHeight">Задаване на височина на щрихкода</string>
|
||||
<string name="donate">Даряване</string>
|
||||
<string name="icon_header_click_text">Задръжте, за да промените значката</string>
|
||||
<string name="icon_header_click_text">Задръжте, за да промените миниатюрата</string>
|
||||
<string name="show_note">Показване на бележката</string>
|
||||
<string name="show_balance">Показване на баланса</string>
|
||||
<string name="show_validity">Показване на валидността</string>
|
||||
<string name="show_name_below_image_thumbnail">Показване на името под миниатюрата</string>
|
||||
</resources>
|
||||
@@ -52,4 +52,7 @@
|
||||
</plurals>
|
||||
<string name="deleteTitle">কার্ড মুছুন</string>
|
||||
<string name="noGiftCards">একটি কার্ড যোগ করতে + প্লাস বোতামে ক্লিক করুন বা ⋮ মেনু থেকে আমদানি করুন।</string>
|
||||
<string name="cardShortcut">কার্ড শর্টকাট</string>
|
||||
<string name="noCardsMessage">প্রথমে একটি কার্ড যোগ করুন</string>
|
||||
<string name="card_ids_copied">আইডি কপি করা হয়েছে</string>
|
||||
</resources>
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
<string name="exportPassword">Nastavení hesla pro ochranu exportu (volitelné)</string>
|
||||
<string name="exportPasswordHint">Zadejte heslo</string>
|
||||
<string name="selectColor">Vybrat barvu</string>
|
||||
<string name="setIcon">Nastavit ikonu</string>
|
||||
<string name="setIcon">Nastavit miniaturu</string>
|
||||
<string name="group_edit">Upravit skupinu</string>
|
||||
<string name="group_name_already_in_use">Název skupiny je již použitý</string>
|
||||
<string name="group_name_is_empty">Název skupiny nemůže být prázdný</string>
|
||||
@@ -275,5 +275,9 @@
|
||||
<string name="openBackImageInGalleryApp">Otevřít zadní obrázek v galerii</string>
|
||||
<string name="setBarcodeHeight">Nastavit výšku čárového kódu</string>
|
||||
<string name="donate">Přispět</string>
|
||||
<string name="icon_header_click_text">Dlouhým stisknutím ikonu upravíte</string>
|
||||
<string name="icon_header_click_text">Dlouhým stisknutím miniaturu upravíte</string>
|
||||
<string name="show_name_below_image_thumbnail">Zobrazit název pod obrázkem miniatury</string>
|
||||
<string name="show_note">Zobrazit poznámku</string>
|
||||
<string name="show_validity">Zobrazit platnost</string>
|
||||
<string name="show_balance">Zobrazit zůstatek</string>
|
||||
</resources>
|
||||
@@ -204,7 +204,7 @@
|
||||
<string name="editGroup">Gruppe wird bearbeitet: <xliff:g>%s</xliff:g></string>
|
||||
<string name="group_edit">Gruppe bearbeiten</string>
|
||||
<string name="noGiftCardsGroup">Erstelle einige Karten und ordne sie dann hier der Gruppe zu.</string>
|
||||
<string name="setIcon">Symbol einstellen</string>
|
||||
<string name="setIcon">Vorschau setzen</string>
|
||||
<string name="selectColor">Farbe auswählen</string>
|
||||
<string name="action_show_details">Details anzeigen</string>
|
||||
<string name="action_hide_details">Details ausblenden</string>
|
||||
@@ -260,4 +260,17 @@
|
||||
<string name="validFromSentence">Gültig ab: <xliff:g>%s</xliff:g></string>
|
||||
<string name="chooseValidFromDate">Gültig-ab-Datum wählen</string>
|
||||
<string name="anyDate">Beliebiges Datum</string>
|
||||
<string name="icon_header_click_text">Langes Drücken zum Bearbeiten der Vorschau</string>
|
||||
<string name="switchToBarcode">Umschalten auf Barcode</string>
|
||||
<string name="openFrontImageInGalleryApp">Vorderes Bild in der Galerie öffnen</string>
|
||||
<string name="openBackImageInGalleryApp">Hinteres Bild in der Galerie öffnen</string>
|
||||
<string name="height">Höhe:</string>
|
||||
<string name="switchToFrontImage">Zum vorderen Bild wechseln</string>
|
||||
<string name="switchToBackImage">Zum hinteren Bild wechseln</string>
|
||||
<string name="setBarcodeHeight">Barcode-Höhe einstellen</string>
|
||||
<string name="donate">Spenden</string>
|
||||
<string name="show_note">Notiz anzeigen</string>
|
||||
<string name="show_balance">Betrag anzeigen</string>
|
||||
<string name="show_validity">Gültigkeitsdauer anziegen</string>
|
||||
<string name="show_name_below_image_thumbnail">Namen unter Bildvorschau anzeigen</string>
|
||||
</resources>
|
||||
@@ -208,7 +208,7 @@
|
||||
<string name="group_name_already_in_use">Nom de groupe déjà utilisé</string>
|
||||
<string name="group_updated">Groupe mis à jour</string>
|
||||
<string name="group_name_is_empty">Le nom du groupe ne peut pas être vide</string>
|
||||
<string name="setIcon">Définir l’icône</string>
|
||||
<string name="setIcon">Définir la vignette</string>
|
||||
<string name="selectColor">Sélectionnez la couleur</string>
|
||||
<string name="action_show_details">Afficher les détails</string>
|
||||
<string name="action_hide_details">Masquer les détails</string>
|
||||
@@ -275,5 +275,9 @@
|
||||
<string name="openBackImageInGalleryApp">Ouvrir l\'image arrière dans l\'application galerie</string>
|
||||
<string name="setBarcodeHeight">Définir la hauteur du code-barres</string>
|
||||
<string name="donate">Faire un don</string>
|
||||
<string name="icon_header_click_text">Pressez longtemps pour éditer l\'icône</string>
|
||||
<string name="icon_header_click_text">Appuyez longuement pour modifier la vignette</string>
|
||||
<string name="show_name_below_image_thumbnail">Afficher le nom sous la vignette de l\'image</string>
|
||||
<string name="show_note">Afficher la note</string>
|
||||
<string name="show_validity">Afficher la validité</string>
|
||||
<string name="show_balance">Afficher le solde</string>
|
||||
</resources>
|
||||
@@ -21,8 +21,8 @@
|
||||
<string name="star">Dodaj u favorite</string>
|
||||
<string name="action_add">Dodaj</string>
|
||||
<string name="storeName">Ime</string>
|
||||
<string name="note">Napomena</string>
|
||||
<string name="noMatchingGiftCards">Nema rezultata. Pokušaj promijeniti pretragu.</string>
|
||||
<string name="note">Bilješka</string>
|
||||
<string name="noMatchingGiftCards">Nema rezultata. Pokušajte promijeniti pretraživanje.</string>
|
||||
<string name="cardId">ID kartice</string>
|
||||
<string name="barcodeType">Vrsta crtičnog koda</string>
|
||||
<string name="barcodeNoBarcode">Ne postoji crtični kod</string>
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
<string name="selectColor">Pilih warna</string>
|
||||
<string name="noGiftCardsGroup">Buat beberapa kartu, kemudian masukkan mereka ke grup di sini.</string>
|
||||
<string name="group_name_already_in_use">Nama grup telah dipakai</string>
|
||||
<string name="setIcon">Atur ikon</string>
|
||||
<string name="setIcon">Atur thumbnail</string>
|
||||
<string name="settings_oled_dark">Latar belakang gelap gulita untuk tema gelap</string>
|
||||
<string name="group_edit">Sunting Grup</string>
|
||||
<string name="group_name_is_empty">Nama grup tidak boleh kosong</string>
|
||||
@@ -250,8 +250,7 @@
|
||||
<string name="cameraPermissionRequired">Berikan izin untuk mengakses kamera anda…</string>
|
||||
<string name="storageReadPermissionRequired">Berikan izin untuk membaca penyimpanan anda…</string>
|
||||
<string name="validFromDate">Valid dari</string>
|
||||
<string name="validFromSentence">Valid dari:
|
||||
\n<xliff:g>%s</xliff:g></string>
|
||||
<string name="validFromSentence">Valid dari: <xliff:g>%s</xliff:g></string>
|
||||
<string name="anyDate">Kapan pun</string>
|
||||
<string name="chooseValidFromDate">Pilih valid dari tanggal</string>
|
||||
<string name="height">Tinggi:</string>
|
||||
@@ -262,4 +261,9 @@
|
||||
<string name="openBackImageInGalleryApp">Buka gambar dibelakang di galeri app</string>
|
||||
<string name="setBarcodeHeight">Atur tinggi kode batang</string>
|
||||
<string name="donate">Donasi</string>
|
||||
<string name="show_validity">Tunjukkan validitas</string>
|
||||
<string name="show_balance">Tunjukkan keseimbangan</string>
|
||||
<string name="icon_header_click_text">Tekan lama untuk mengedit thumbnail</string>
|
||||
<string name="show_name_below_image_thumbnail">Tampilkan nama di bawah thumbnail gambar</string>
|
||||
<string name="show_note">Tampilkan catatan</string>
|
||||
</resources>
|
||||
@@ -275,4 +275,5 @@
|
||||
<string name="donate">Dona</string>
|
||||
<string name="openBackImageInGalleryApp">Apri l\'immagine posteriore nell\'app Galleria</string>
|
||||
<string name="setBarcodeHeight">Imposta l\'altezza del codice a barre</string>
|
||||
<string name="icon_header_click_text">Premi a lungo per modificare l\'icona</string>
|
||||
</resources>
|
||||
@@ -204,7 +204,7 @@
|
||||
<string name="editGroup">Groep bewerken: <xliff:g>%s</xliff:g></string>
|
||||
<string name="noGiftCardsGroup">Voeg kaarten toe om ze hier te kunnen groeperen.</string>
|
||||
<string name="group_edit">Groep bewerken</string>
|
||||
<string name="setIcon">Kies een pictogram</string>
|
||||
<string name="setIcon">Miniatuur instellen</string>
|
||||
<string name="selectColor">Kies een kleur</string>
|
||||
<string name="action_show_details">Details tonen</string>
|
||||
<string name="action_hide_details">Details verbergen</string>
|
||||
@@ -268,5 +268,9 @@
|
||||
<string name="openFrontImageInGalleryApp">Voorzijde openen in galerij-app</string>
|
||||
<string name="openBackImageInGalleryApp">Achterzijde openen in galerij-app</string>
|
||||
<string name="donate">Doneren</string>
|
||||
<string name="icon_header_click_text">Houd lang ingedrukt om pictogram te bewerken</string>
|
||||
<string name="icon_header_click_text">Houd lang ingedrukt om miniatuur te bewerken</string>
|
||||
<string name="show_balance">Saldo tonen</string>
|
||||
<string name="show_name_below_image_thumbnail">Naam onder miniatuur tonen</string>
|
||||
<string name="show_note">Aantekening tonen</string>
|
||||
<string name="show_validity">Geldigheid tonen</string>
|
||||
</resources>
|
||||
@@ -198,7 +198,7 @@
|
||||
<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="setIcon">Ustaw miniaturę</string>
|
||||
<string name="on_github">na GitHub\'ie</string>
|
||||
<string name="selectColor">Wybierz kolor</string>
|
||||
<string name="version_history">Historia wersji</string>
|
||||
@@ -282,5 +282,5 @@
|
||||
<string name="setBarcodeHeight">Ustaw wysokość kodu kreskowego</string>
|
||||
<string name="donate">Darowizna</string>
|
||||
<string name="openBackImageInGalleryApp">Otwórz obraz z powrotem w aplikacji galerii</string>
|
||||
<string name="icon_header_click_text">Przytrzymaj, aby edytować ikonę</string>
|
||||
<string name="icon_header_click_text">Przytrzymaj, aby edytować miniaturę</string>
|
||||
</resources>
|
||||
@@ -93,7 +93,7 @@
|
||||
<string name="moveBarcodeToTopOfScreen">Переместить штрих-код в верхнюю часть экрана</string>
|
||||
<string name="currency">Валюта</string>
|
||||
<string name="chooseExpiryDate">Выбор срока действия</string>
|
||||
<string name="never">Никогда</string>
|
||||
<string name="never">Нет</string>
|
||||
<string name="expiryDate">Срок действия</string>
|
||||
<string name="editBarcode">Изменить штрих-код</string>
|
||||
<string name="card">Карта</string>
|
||||
@@ -212,7 +212,7 @@
|
||||
<string name="group_edit">Изменить группу</string>
|
||||
<string name="group_name_already_in_use">Такое название группы уже существует</string>
|
||||
<string name="noGiftCardsGroup">Создайте несколько карт, а затем распределите их по группам здесь.</string>
|
||||
<string name="setIcon">Выбор значка</string>
|
||||
<string name="setIcon">Выбор миниатюры</string>
|
||||
<string name="selectColor">Выбрать цвет</string>
|
||||
<string name="action_hide_details">Скрыть детали</string>
|
||||
<string name="action_show_details">Показать детали</string>
|
||||
@@ -282,5 +282,9 @@
|
||||
<string name="openFrontImageInGalleryApp">Открыть лицевое изображение в приложении галереи</string>
|
||||
<string name="openBackImageInGalleryApp">Открыть заднее изображение в приложении галереи</string>
|
||||
<string name="donate">Пожертвовать</string>
|
||||
<string name="icon_header_click_text">Долгое нажатие для редактирования значка</string>
|
||||
<string name="icon_header_click_text">Долгое нажатие для редактирования миниатюры</string>
|
||||
<string name="show_note">Показывать примечание</string>
|
||||
<string name="show_validity">Показывать срок действия</string>
|
||||
<string name="show_name_below_image_thumbnail">Показывать название под миниатюрой</string>
|
||||
<string name="show_balance">Показывать баланс</string>
|
||||
</resources>
|
||||
@@ -261,4 +261,5 @@
|
||||
<string name="openBackImageInGalleryApp">使用图库软件打开背面图像</string>
|
||||
<string name="setBarcodeHeight">设置条形码高度</string>
|
||||
<string name="donate">捐赠</string>
|
||||
<string name="icon_header_click_text">长按以编辑图标</string>
|
||||
</resources>
|
||||
@@ -123,7 +123,6 @@
|
||||
<string name="sharedpreference_sort_order" translatable="false">sharedpreference_sort_order</string>
|
||||
<string name="sharedpreference_sort_direction" translatable="false">sharedpreference_sort_direction</string>
|
||||
<string name="sharedpreference_card_details" translatable="false">sharedpreference_card_details</string>
|
||||
<string name="sharedpreference_card_details_show" translatable="false">sharedpreference_card_details_show</string>
|
||||
<string name="intent_import_card_from_url_share_text">I want to share a card with you</string>
|
||||
<string name="intent_import_card_from_url_host_catima_app" translatable="false">catima.app</string>
|
||||
<string name="intent_import_card_from_url_path_prefix_catima_app" translatable="false">/share</string>
|
||||
@@ -224,7 +223,7 @@
|
||||
<string name="settings_key_locale" translatable="false">pref_locale</string>
|
||||
<string name="settings_system_locale">System</string>
|
||||
<string name="selectColor">Select color</string>
|
||||
<string name="setIcon">Set icon</string>
|
||||
<string name="setIcon">Set thumbnail</string>
|
||||
<string name="setting_key_theme_color" translatable="false">pref_theme_color</string>
|
||||
<string name="settings_theme_color">Theme color</string>
|
||||
<string name="settings_catima_theme">Catima</string>
|
||||
@@ -313,5 +312,13 @@
|
||||
<string name="openBackImageInGalleryApp">Open back image in gallery app</string>
|
||||
<string name="setBarcodeHeight">Set barcode height</string>
|
||||
<string name="donate">Donate</string>
|
||||
<string name="icon_header_click_text">Long press to edit icon</string>
|
||||
<string name="icon_header_click_text">Long press to edit thumbnail</string>
|
||||
<string name="show_name_below_image_thumbnail">Show name below image thumbnail</string>
|
||||
<string name="show_note">Show note</string>
|
||||
<string name="show_balance">Show balance</string>
|
||||
<string name="show_validity">Show validity</string>
|
||||
<string name="sharedpreference_card_details_show_note" translatable="false">sharedpreference_card_details_show_note</string>
|
||||
<string name="sharedpreference_card_details_show_balance" translatable="false">sharedpreference_card_details_show_balance</string>
|
||||
<string name="sharedpreference_card_details_show_validity" translatable="false">sharedpreference_card_details_show_validity</string>
|
||||
<string name="sharedpreference_card_details_show_name_below_thumbnail" translatable="false">sharedpreference_card_details_show_name_below_thumbnail</string>
|
||||
</resources>
|
||||
|
||||
@@ -62,7 +62,7 @@ public class MainActivityTest {
|
||||
assertEquals(menu.size(), 8);
|
||||
assertEquals("Search", menu.findItem(R.id.action_search).getTitle().toString());
|
||||
assertEquals("Sort", menu.findItem(R.id.action_sort).getTitle().toString());
|
||||
assertEquals("Hide details", menu.findItem(R.id.action_unfold).getTitle().toString());
|
||||
assertEquals("Show details", menu.findItem(R.id.action_shown_details).getTitle().toString());
|
||||
assertEquals("Groups", menu.findItem(R.id.action_manage_groups).getTitle().toString());
|
||||
assertEquals("Archive", menu.findItem(R.id.action_archived).getTitle().toString());
|
||||
assertEquals("Import/Export", menu.findItem(R.id.action_import_export).getTitle().toString());
|
||||
|
||||
@@ -58,7 +58,7 @@ For FidMe you need to select the barcode type for each entry afterwards.
|
||||
|
||||
# Building
|
||||
|
||||
Building can either be done through Android Studio (not reproducible!) or the build.sh script in this repository (reproducibly with Java 11, same way F-Droid builds it). This script can also sign the build.
|
||||
Building can either be done through Android Studio (not reproducible!) or the build.sh script in this repository (reproducibly with OpenJDK 17, same way F-Droid builds it). This script can also sign the build.
|
||||
|
||||
Build without signing:
|
||||
```
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# When releasing, do the following:
|
||||
1. Press "Commit" and "Push" on Weblate to ensure all translations are up to date
|
||||
2. Merge Weblate pull request
|
||||
3. Update `CHANGELOG.md` with the new version name
|
||||
3. Update `CHANGELOG.md` with the new version name and the release date
|
||||
4. Update `app/build.gradle` with the new `versionCode` and `versionName`
|
||||
5. Build a new .apk: `KEYSTORE=/path/to/keystore KEYSTORE_ALIAS=catima ./build.sh`
|
||||
6. Upload the APK to Google Play Open Testing
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
- Změna ikony karty v pohledu aktivity dlouhým stisknutím ikony
|
||||
- Vylepšení stylu tlačítek na obrazovce Skupiny
|
||||
- Oprava dlouhých hodnot čárového kódu způsobující, že se čárový kód zmenšuje do ztracena
|
||||
|
||||
2
fastlane/metadata/android/cs-CZ/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Drobná vylepšení uživatelského rozhraní
|
||||
- Oprava nového vzhledu, který není použitelný na zařízeních se čtvercovými obrazovkami
|
||||
1
fastlane/metadata/android/cs-CZ/changelogs/124.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Podpora výběru, které podrobnosti mají být zobrazeny v přehledu karty
|
||||
@@ -1 +1,2 @@
|
||||
- Unterstützung bei der Eingabe des Gültigkeitsbeginns der Karte
|
||||
- Fehler beim Importieren von Stocard behoben (Stocard's Export Format hat sich verändert)
|
||||
|
||||
1
fastlane/metadata/android/de-DE/changelogs/119.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Verwendung von Material You-Farben auf mehr Geräten (Update der Google-Bibliothek)
|
||||
3
fastlane/metadata/android/de-DE/changelogs/120.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Komplette Neugestaltung der Haupt- und Treuekartenansicht
|
||||
- Material You Design für den Einstellungsbildschirm
|
||||
- Behebung eines Absturzes beim Foto machen mit deaktivierter Kamera-App
|
||||
1
fastlane/metadata/android/de-DE/changelogs/121.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Verwendete Bibliotheken upgedatet
|
||||
3
fastlane/metadata/android/de-DE/changelogs/122.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Langes Drücken auf das Kartensymbol in der Aktivitätsansicht, um es zu ändern
|
||||
- Verbessertes Styling der Knöpfe im Gruppenbildschirm
|
||||
- Behebung des Problems, dass lange Barcodewerte dazu führen, dass der Barcode winzig skaliert wird
|
||||
2
fastlane/metadata/android/de-DE/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Kleinere UI Verbesserungen
|
||||
- Behebung des Fehlers, dass das neue Design nicht auf eckigen Bildschirmen verwendbar ist
|
||||
1
fastlane/metadata/android/de-DE/changelogs/124.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Unterstützung bei der Auswahl der Details, die in der Kartenübersicht angezeigt werden sollen
|
||||
@@ -1,2 +1,2 @@
|
||||
- Durch langes Klicken auf eine Karte wird die Option zum Kopieren der Karten-ID in die Zwischenablage angezeigt. (pull #49 (https://github.com/brarcher/loyalty-card-locker/issues/49))
|
||||
- Die Zurück-Schaltfläche in der Eingabe-/Exportansicht funktioniert jetzt und bringt den Benutzer zur Hauptansicht
|
||||
- Die Zurück-Schaltfläche in der Import-/Exportansicht funktioniert jetzt und bringt den Benutzer zur Hauptansicht
|
||||
|
||||
1
fastlane/metadata/android/en-US/changelogs/124.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Support selecting exactly which details to view in card overview
|
||||
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 53 KiB |
1
fastlane/metadata/android/fr-FR/changelogs/121.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Mettre à jour les bibliothèques utilisées
|
||||
3
fastlane/metadata/android/fr-FR/changelogs/122.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- Appuyez longuement sur l'icône de la carte dans l'activité de vue pour la modifier
|
||||
- Améliorer le style des boutons dans l'écran Groupes
|
||||
- Correction des valeurs de code-barres longues provoquant une réduction du code-barres à rien
|
||||
2
fastlane/metadata/android/fr-FR/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Amélioration mineures de l'interface
|
||||
- Fix du nouveau design n'étant pas utilisable sur des écrans carrés
|
||||
@@ -1,5 +1,5 @@
|
||||
- Saat mengedit ID kartu, isi ID yang ada terlebih dahulu untuk memulai. (tarik #94 (https://github.com/brarcher/loyalty-card-locker/pull/94))
|
||||
- Batasi lebar barcode yang dihasilkan untuk mengurangi penggunaan memori dan kehabisan memori. (tarik #103 (https://github.com/brarcher/loyalty-card-locker/pull/103))
|
||||
- Saat mengedit kartu, ubah tombol "Masukkan Kartu" menjadi "Edit Kartu" jika ID kartu sudah ada. (tarik #104 (https://github.com/brarcher/loyalty-card-locker/pull/104))
|
||||
- Ubah skema warna menjadi lebih lembut dan kompatibel dengan ikon aplikasi, dan ubah tata letak saat melihat kartu menjadi lebih bersih. (tarik #107 (https://github.com/brarcher/loyalty-card-locker/pull/107))
|
||||
- Tambahkan wizard intro yang diluncurkan pada peluncuran pertama aplikasi. (tarik #108 (https://github.com/brarcher/loyalty-card-locker/pull/108))
|
||||
- Saat mengedit ID kartu, isi dulu ID yang ada untuk memulai. (pull #94 (https://github.com/brarcher/loyalty-card-locker/pull/94))
|
||||
- Batasi lebar kode batang yang dihasilkan untuk mengurangi penggunaan memori dan kesalahan memori. (pull #103 (https://github.com/brarcher/loyalty-card-locker/pull/103))
|
||||
- Saat mengedit kartu, ubah tombol "Masukkan Kartu" menjadi "Edit Kartu" jika ID kartu sudah ada. (pull #104 (https://github.com/brarcher/loyalty-card-locker/pull/104))
|
||||
- Ubah skema warna menjadi lebih lembut dan kompatibel dengan ikon aplikasi, dan ubah tata letak saat melihat kartu menjadi lebih bersih. (pull #107 (https://github.com/brarcher/loyalty-card-locker/pull/107))
|
||||
- Tambahkan wizard intro yang diluncurkan pada peluncuran pertama aplikasi. (pull #108 (https://github.com/brarcher/loyalty-card-locker/pull/108))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- Dukungan bahasa Arab
|
||||
- Menampilkan jumlah kartu yang diarsipkan dalam ikhtisar grup
|
||||
- Memperbaiki bug parsing saldo (membuat kartu tidak dapat disimpan dalam bahasa Arab dan bahasa lain dengan nomor non-Barat)
|
||||
- Memperbaiki tema khusus yang tidak berlaku untuk layar utama dengan benar
|
||||
- Meningkatkan tampilan kartu yang dipilih
|
||||
- Memperbaiki kerusakan saat meninggalkan tampilan kartu di tata letak RTL untuk kartu dengan kedaluwarsa atau saldo
|
||||
- Memperbaiki panah kembali dalam tampilan kartu yang menunjuk ke arah yang salah dalam tata letak RTL
|
||||
- Tampilkan jumlah kartu yang diarsipkan dalam grup
|
||||
- Memperbaiki bug penguraian saldo (membuat kartu tidak disimpan dalam Arab dan bahasa lain dengan nomor non-Barat)
|
||||
- Perbaiki tema khusus tidak bissa diterapkan ke layar utama dengan benar
|
||||
- Tingkatkan tampilan kartu yang dipilih
|
||||
- Perbaiki kerusakan saat keluar tampilan kartu di tata letak RTL untuk kartu dengan kedaluwarsa atau saldo
|
||||
- Perbaiki panah belakang dalam tampilan kartu yang salah mengarah pada tata letak RTL
|
||||
|
||||
2
fastlane/metadata/android/id/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Perbaikan UI kecil
|
||||
- Perbaiki desain baru yang tidak dapat digunakan pada perangkat dengan layar persegi
|
||||
1
fastlane/metadata/android/id/changelogs/124.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Mendukung pemilihan detail mana yang akan dilihat dalam ikhtisar kartu
|
||||
@@ -1,9 +1,5 @@
|
||||
- Tambahkan dukungan untuk menambah pintasan ke layar beranda saat menambahkan atau mengedit kartu. (pull #155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Tambahkan dukungan untuk menambahkan pintasan ke layar beranda saat menambahkan atau mengedit kartu. (pull #155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Hapus widget, karena merupakan pengganti pintasan yang buruk. (pull #155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Perbaiki mengekspor cadangan di Android 7+. (pull #153 (https://github.com/brarcher/loyalty-card-locker/pull/153))
|
||||
- Laporkan jenis pantomim yang lebih akurat saat mengekspor data cadangan. (pull #156 (https://github.com/brarcher/loyalty-card-locker/pull/156))
|
||||
- Memperbaiki bug di mana kartu tidak dapat diedit. (pull #155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Hapus widget, karena merupakan pengganti pintasan yang buruk. (pull #155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
- Perbaiki mengekspor cadangan di Android 7+. (pull #153 (https://github.com/brarcher/loyalty-card-locker/pull/153))
|
||||
- Laporkan jenis yang lebih akurat saat mengekspor data cadangan. (pull #156 (https://github.com/brarcher/loyalty-card-locker/pull/156))
|
||||
- Memperbaiki bug di mana kartu tidak dapat diedit. (pull #155 (https://github.com/brarcher/loyalty-card-locker/pull/155))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- Tambahkan pengaturan untuk mengontrol kecerahan layar saat menampilkan kode batang (pull #259 (https://github.com/brarcher/loyalty-card-locker/pull/259))
|
||||
- Tambahkan terjemahan bahasa Yunani (pull #252 (https://github.com/brarcher/loyalty-card-locker/pull/252))
|
||||
- Tambahkan terjemahan bahasa Slovenia (pull #260 (https://github.com/brarcher/loyalty-card-locker/pull/260))
|
||||
- Perbarui terjemahan (pull #260 (https://github.com/brarcher/loyalty-card-locker/pull/260), tarik #254 (https://github.com/brarcher/loyalty-card-locker/pull /254))
|
||||
- Perbarui terjemahan (pull #260 (https://github.com/brarcher/loyalty-card-locker/pull/260), pull #254 (https://github.com/brarcher/loyalty-card-locker/pull /254))
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
- Tingkatkan visibilitas ikon notifikasi dan aplikasi (#330 (https://github.com/brarcher/loyalty-card-locker/pull/330))
|
||||
- Perbarui SDK target ke Android 10
|
||||
- Tingkatkan terjemahan berikut:
|
||||
- Jerman
|
||||
- Italia
|
||||
- Belanda
|
||||
- Polandia
|
||||
- Rusia
|
||||
- Jerman
|
||||
- Italia
|
||||
- Belanda
|
||||
- Polandia
|
||||
- Rusia
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
- BREAKING CHANGE: Format cadangan berubah, lihat https://github.com/TheLastProject/Catima/wiki/Export-format
|
||||
- BREAKING CHANGE: Format berbagi URL berubah, lihat https://github.com/TheLastProject/Catima/wiki/Card-sharing-URL-format
|
||||
- Memungkinkan untuk mengaktifkan atau menonaktifkan senter saat memindai
|
||||
- Memungkinkan untuk aktifkan atau nonaktifkan senter saat memindai
|
||||
- Tambahkan dukungan UPC-E
|
||||
- Mendukung penambahan foto depan dan belakang ke setiap kartu
|
||||
- Dukungan penambahan foto depan dan belakang ke setiap kartu
|
||||
- Dukungan mengimpor file zip yang dilindungi kata sandi
|
||||
- Dukungan mengimpor dari Stocard (Beta)
|
||||
- Perbaiki spasi kosong yang tidak berguna dalam catatan dari impor Fidme
|
||||
- Mendukung format ekspor Voucher Vault baru
|
||||
- Perbaiki Tombol Tindakan Mengambang yang berada di belakang elemen UI lainnya di Android 4
|
||||
- Perbaiki Tombol Mengambang di belakang elemen UI di Android 4
|
||||
- Perbaiki margin atas appbar penampil kartu loyalitas
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- Kecerahan layar meningkat secara maksimal saat menampilkan kartu, untuk membantu pemindai kode batang berhasil menangkap kode batang. (pull #54 (https://github.com/brarcher/loyalty-card-locker/pull/54))
|
||||
- Tambahkan konfirmasi hapus saat menghapus kartu. (pull #55 (https://github.com/brarcher/loyalty-card-locker/pull/55))
|
||||
- Tambahkan terjemahan untuk bahasa Jerman (pull #57 (https://github.com/brarcher/loyalty-card-locker/pull/57)) dan Ceko (pull #58 (https://github.com/brarcher/loyalty- pengunci kartu/tarik/58)).
|
||||
- Tambahkan terjemahan untuk bahasa Jerman (pull #57 (https://github.com/brarcher/loyalty-card-locker/pull/57)) dan Ceko (pull #58 (https://github.com/brarcher/loyalty-card-locker/pull/58)).
|
||||
- Perubahan klarifikasi untuk terjemahan Italia. (pull #66 (https://github.com/brarcher/loyalty-card-locker/pull/66))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Bagian "Locker" dari nama itu tidak intuitif. Untuk membantu memperbaiki ini, ikon aplikasi baru dibuat oleh betsythefc yang lebih mewakili tujuan aplikasi: untuk menyimpan kartu loyalitas yang menggunakan kode batang. Seiring dengan ikon baru ini, nama aplikasi telah diubah menjadi "Gantungan Kunci Kartu Loyalitas".
|
||||
Bagian "Locker" dari nama itu tidak intuitif. Untuk membantu memperbaiki ini, ikon aplikasi baru dibuat oleh betsythefc yang lebih mewakili tujuan aplikasi: untuk menyimpan kartu loyalitas yang menggunakan kode batang. Seiring dengan ikon baru ini, nama aplikasi telah diubah menjadi "Loyalty Card Keychain".
|
||||
|
||||
Fitur tambahan/peningkatan:
|
||||
|
||||
|
||||
2
fastlane/metadata/android/ru-RU/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Незначительные улучшения пользовательского интерфейса
|
||||
- Исправлена ошибка, из-за которой новый дизайн нельзя было использовать на устройствах с квадратными экранами
|
||||
1
fastlane/metadata/android/ru-RU/changelogs/124.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Поддержка выбора отображаемых данных при просмотре карты
|
||||
1
fastlane/metadata/android/zh-CN/changelogs/121.txt
Normal file
@@ -0,0 +1 @@
|
||||
- 升级使用过的库
|
||||
3
fastlane/metadata/android/zh-CN/changelogs/122.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
- 长按视图活动中的卡片图标以改变
|
||||
- 改善在分组页面的按钮样式
|
||||
- 修复条形码的数值过长导致条形缩小到看不见的问题
|
||||
2
fastlane/metadata/android/zh-CN/changelogs/123.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- 较小的UI优化
|
||||
- 修复新设计在方形设备上不可用的问题
|
||||