diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index 53757fbbe..5e0c32adb 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -71,13 +71,6 @@ class LoyaltyCardCursorAdapter extends CursorAdapter if (loyaltyCard.starStatus!=0) star.setVisibility(View.VISIBLE); else star.setVisibility(View.GONE); - int tileLetterFontSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterFontSize); - int pixelSize = context.getResources().getDimensionPixelSize(R.dimen.cardThumbnailSize); - - Integer letterBackgroundColor = loyaltyCard.headerColor; - Integer letterTextColor = loyaltyCard.headerTextColor; - LetterBitmap letterBitmap = new LetterBitmap(context, loyaltyCard.store, loyaltyCard.store, - tileLetterFontSize, pixelSize, pixelSize, letterBackgroundColor, letterTextColor); - thumbnail.setImageBitmap(letterBitmap.getLetterTile()); + thumbnail.setImageBitmap(Utils.generateIcon(context, loyaltyCard.store, loyaltyCard.headerColor, loyaltyCard.headerTextColor).getLetterTile()); } } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index 8af102bf8..d43005c9e 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -17,7 +17,11 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; + +import android.text.Editable; +import android.text.TextWatcher; import android.util.Log; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -45,17 +49,13 @@ public class LoyaltyCardEditActivity extends AppCompatActivity protected static final int SELECT_BARCODE_REQUEST = 1; + ImageView thumbnail; EditText storeFieldEdit; EditText noteFieldEdit; ChipGroup groupsChips; - ImageView headingColorSample; - Button headingColorSelectButton; - ImageView headingStoreTextColorSample; - Button headingStoreTextColorSelectButton; + View cardAndBarcodeLayout; TextView cardIdFieldView; - View cardIdDivider; - View cardIdTableRow; - TextView barcodeTypeField; + EditText barcodeTypeField; ImageView barcodeImage; View barcodeImageLayout; View barcodeCaptureLayout; @@ -102,23 +102,32 @@ public class LoyaltyCardEditActivity extends AppCompatActivity db = new DBHelper(this); importUriHelper = new ImportURIHelper(this); + thumbnail = findViewById(R.id.thumbnail); storeFieldEdit = findViewById(R.id.storeNameEdit); noteFieldEdit = findViewById(R.id.noteEdit); groupsChips = findViewById(R.id.groupChips); - headingColorSample = findViewById(R.id.headingColorSample); - headingColorSelectButton = findViewById(R.id.headingColorSelectButton); - headingStoreTextColorSample = findViewById(R.id.headingStoreTextColorSample); - headingStoreTextColorSelectButton = findViewById(R.id.headingStoreTextColorSelectButton); + cardAndBarcodeLayout = findViewById(R.id.cardAndBarcodeLayout); cardIdFieldView = findViewById(R.id.cardIdView); - cardIdDivider = findViewById(R.id.cardIdDivider); - cardIdTableRow = findViewById(R.id.cardIdTableRow); - barcodeTypeField = findViewById(R.id.barcodeTypeView); + barcodeTypeField = findViewById(R.id.barcodeTypeField); barcodeImage = findViewById(R.id.barcode); barcodeImageLayout = findViewById(R.id.barcodeLayout); barcodeCaptureLayout = findViewById(R.id.barcodeCaptureLayout); captureButton = findViewById(R.id.captureButton); enterButton = findViewById(R.id.enterButton); + + storeFieldEdit.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + generateIcon(s.toString()); + } + + @Override + public void afterTextChanged(Editable s) { } + }); } @Override @@ -225,15 +234,10 @@ public class LoyaltyCardEditActivity extends AppCompatActivity List loyaltyCardGroups = db.getLoyaltyCardGroups(loyaltyCardId); - View groupsView = findViewById(R.id.groupsView); - View groupsTableRow = findViewById(R.id.groupsTableRow); - if (existingGroups.isEmpty()) { - groupsView.setVisibility(View.GONE); - groupsTableRow.setVisibility(View.GONE); + groupsChips.setVisibility(View.GONE); } else { - groupsView.setVisibility(View.VISIBLE); - groupsTableRow.setVisibility(View.VISIBLE); + groupsChips.setVisibility(View.VISIBLE); } for (Group group : db.getGroups()) { @@ -266,10 +270,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity headingStoreTextColorValue = Color.WHITE; } - headingColorSample.setBackgroundColor(headingColorValue); - headingStoreTextColorSample.setBackgroundColor(headingStoreTextColorValue); - headingColorSelectButton.setOnClickListener(new ColorSelectListener(headingColorValue, true)); - headingStoreTextColorSelectButton.setOnClickListener(new ColorSelectListener(headingStoreTextColorValue, false)); + thumbnail.setOnClickListener(new ColorSelectListener(headingColorValue, true)); if(cardIdFieldView.getText().length() > 0 && barcodeTypeField.getText().length() > 0) { @@ -356,14 +357,12 @@ public class LoyaltyCardEditActivity extends AppCompatActivity if(cardIdFieldView.getText().length() > 0) { - cardIdDivider.setVisibility(View.VISIBLE); - cardIdTableRow.setVisibility(View.VISIBLE); + cardIdFieldView.setVisibility(View.VISIBLE); enterButton.setText(R.string.editCard); } else { - cardIdDivider.setVisibility(View.GONE); - cardIdTableRow.setVisibility(View.GONE); + cardIdFieldView.setVisibility(View.GONE); enterButton.setText(R.string.enterCard); } @@ -374,6 +373,8 @@ public class LoyaltyCardEditActivity extends AppCompatActivity doSave(); } }); + + generateIcon(storeFieldEdit.getText().toString()); } class ColorSelectListener implements View.OnClickListener @@ -398,14 +399,14 @@ public class LoyaltyCardEditActivity extends AppCompatActivity { if(isBackgroundColor) { - headingColorSample.setBackgroundColor(color); headingColorValue = color; } else { - headingStoreTextColorSample.setBackgroundColor(color); headingStoreTextColorValue = color; } + + generateIcon(storeFieldEdit.getText().toString()); } @Override @@ -570,14 +571,32 @@ public class LoyaltyCardEditActivity extends AppCompatActivity } private void showBarcode() { + cardAndBarcodeLayout.setVisibility(View.VISIBLE); barcodeImageLayout.setVisibility(View.VISIBLE); - findViewById(R.id.barcodeTypeDivider).setVisibility(View.VISIBLE); - findViewById(R.id.barcodeTypeTableRow).setVisibility(View.VISIBLE); + findViewById(R.id.barcodeTypeView).setVisibility(View.VISIBLE); } private void hideBarcode() { barcodeImageLayout.setVisibility(View.GONE); - findViewById(R.id.barcodeTypeDivider).setVisibility(View.GONE); - findViewById(R.id.barcodeTypeTableRow).setVisibility(View.GONE); + cardAndBarcodeLayout.setVisibility(View.GONE); + findViewById(R.id.barcodeTypeView).setVisibility(View.GONE); + } + + private void generateIcon(String store) { + if (headingColorValue == null && headingStoreTextColorValue == null) { + return; + } + + thumbnail.setBackgroundColor(headingColorValue); + + LetterBitmap letterBitmap = Utils.generateIcon(this, store, headingColorValue, headingStoreTextColorValue); + + if (letterBitmap != null) { + thumbnail.setImageBitmap(letterBitmap.getLetterTile()); + } else { + thumbnail.setImageBitmap(null); + } + + thumbnail.setMinimumWidth(thumbnail.getHeight()); } } diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java new file mode 100644 index 000000000..8f4f4017f --- /dev/null +++ b/app/src/main/java/protect/card_locker/Utils.java @@ -0,0 +1,17 @@ +package protect.card_locker; + +import android.content.Context; + +public class Utils { + static public LetterBitmap generateIcon(Context context, String store, Integer backgroundColor, Integer textColor) { + if (store.length() == 0) { + return null; + } + + int tileLetterFontSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterFontSize); + int pixelSize = context.getResources().getDimensionPixelSize(R.dimen.cardThumbnailSize); + + return new LetterBitmap(context, store, store, + tileLetterFontSize, pixelSize, pixelSize, backgroundColor, textColor); + } +} diff --git a/app/src/main/res/layout/loyalty_card_edit_activity.xml b/app/src/main/res/layout/loyalty_card_edit_activity.xml index 7ace87adb..773844b59 100644 --- a/app/src/main/res/layout/loyalty_card_edit_activity.xml +++ b/app/src/main/res/layout/loyalty_card_edit_activity.xml @@ -32,478 +32,193 @@ android:layout_height="wrap_content" android:background="@color/inputContrastBackground" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"> - - - - - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + android:hint="@string/storeName"> - + /> - + + - - + + - - - - - - - - + android:layout_height="wrap_content" + android:hint="@string/note"> - + /> - + + - - - + + -