diff --git a/CHANGELOG.md b/CHANGELOG.md index a4e80b01d..6c60dc21e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Changes: - Make links in notes clickable +- Pre-select group the user is currently in when creating a new card ## v2.1.0 (2021-08-01) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index fd576de2b..484562ca3 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -87,6 +87,13 @@ public class LoyaltyCardEditActivity extends AppCompatActivity private static final int PERMISSION_REQUEST_CAMERA_IMAGE_FRONT = 100; private static final int PERMISSION_REQUEST_CAMERA_IMAGE_BACK = 101; + public static final String BUNDLE_ID = "id"; + public static final String BUNDLE_UPDATE = "update"; + public static final String BUNDLE_CARDID = "cardId"; + public static final String BUNDLE_BARCODEID = "barcodeId"; + public static final String BUNDLE_BARCODETYPE = "barcodeType"; + public static final String BUNDLE_ADDGROUP = "addGroup"; + TabLayout tabs; ImageView thumbnail; @@ -114,9 +121,9 @@ public class LoyaltyCardEditActivity extends AppCompatActivity String cardId; String barcodeId; String barcodeType; + String addGroup; Uri importLoyaltyCardUri = null; - Integer headingColorValue = null; DBHelper db; ImportURIHelper importUriHelper; @@ -161,12 +168,13 @@ public class LoyaltyCardEditActivity extends AppCompatActivity private void extractIntentFields(Intent intent) { final Bundle b = intent.getExtras(); - loyaltyCardId = b != null ? b.getInt("id") : 0; - updateLoyaltyCard = b != null && b.getBoolean("update", false); + loyaltyCardId = b != null ? b.getInt(BUNDLE_ID) : 0; + updateLoyaltyCard = b != null && b.getBoolean(BUNDLE_UPDATE, false); - cardId = b != null ? b.getString("cardId") : null; - barcodeId = b != null ? b.getString("barcodeId") : null; - barcodeType = b != null ? b.getString("barcodeType") : null; + cardId = b != null ? b.getString(BUNDLE_CARDID) : null; + barcodeId = b != null ? b.getString(BUNDLE_BARCODEID) : null; + barcodeType = b != null ? b.getString(BUNDLE_BARCODETYPE) : null; + addGroup = b != null ? b.getString(BUNDLE_ADDGROUP) : null; importLoyaltyCardUri = intent.getData(); @@ -597,13 +605,18 @@ public class LoyaltyCardEditActivity extends AppCompatActivity chip.setText(group._id); chip.setTag(group); - chip.setChecked(false); - for (Group loyaltyCardGroup : loyaltyCardGroups) { - if (loyaltyCardGroup._id.equals(group._id)) { - chip.setChecked(true); - break; + if (group._id.equals(addGroup)) { + chip.setChecked(true); + } else { + chip.setChecked(false); + for (Group loyaltyCardGroup : loyaltyCardGroups) { + if (loyaltyCardGroup._id.equals(group._id)) { + chip.setChecked(true); + break; + } } } + chip.setOnTouchListener((v, event) -> { hasChanged = true; @@ -824,7 +837,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity { Intent i = new Intent(getApplicationContext(), ScanActivity.class); final Bundle b = new Bundle(); - b.putString("cardId", cardIdFieldView.getText().toString()); + b.putString(LoyaltyCardEditActivity.BUNDLE_CARDID, cardIdFieldView.getText().toString()); i.putExtras(b); startActivityForResult(i, Utils.BARCODE_SCAN); } diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 5c5c4f5cc..5f45d0278 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -109,8 +109,8 @@ public class MainActivity extends AppCompatActivity implements LoyaltyCardCursor Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class); Bundle bundle = new Bundle(); - bundle.putInt("id", mAdapter.getSelectedItems().get(0).id); - bundle.putBoolean("update", true); + bundle.putInt(LoyaltyCardEditActivity.BUNDLE_ID, mAdapter.getSelectedItems().get(0).id); + bundle.putBoolean(LoyaltyCardEditActivity.BUNDLE_UPDATE, true); intent.putExtras(bundle); startActivity(intent); inputMode.finish(); @@ -306,8 +306,13 @@ public class MainActivity extends AppCompatActivity implements LoyaltyCardCursor FloatingActionButton addButton = findViewById(R.id.fabAdd); addButton.setOnClickListener(v -> { - Intent i = new Intent(getApplicationContext(), ScanActivity.class); - startActivityForResult(i, Utils.BARCODE_SCAN); + Intent intent = new Intent(getApplicationContext(), ScanActivity.class); + Bundle bundle = new Bundle(); + if (selectedTab != 0) { + bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, groupsTabLayout.getTabAt(selectedTab).getText().toString()); + } + intent.putExtras(bundle); + startActivityForResult(intent, Utils.BARCODE_SCAN); }); addButton.bringToFront(); } @@ -335,8 +340,12 @@ public class MainActivity extends AppCompatActivity implements LoyaltyCardCursor if(!barcodeValues.isEmpty()) { Intent newIntent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class); Bundle newBundle = new Bundle(); - newBundle.putString("barcodeType", barcodeValues.format()); - newBundle.putString("cardId", barcodeValues.content()); + newBundle.putString(LoyaltyCardEditActivity.BUNDLE_BARCODETYPE, barcodeValues.format()); + newBundle.putString(LoyaltyCardEditActivity.BUNDLE_CARDID, barcodeValues.content()); + Bundle inputBundle = intent.getExtras(); + if (inputBundle != null && inputBundle.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) != null) { + newBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, inputBundle.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP)); + } newIntent.putExtras(newBundle); startActivity(newIntent); } diff --git a/app/src/main/java/protect/card_locker/ScanActivity.java b/app/src/main/java/protect/card_locker/ScanActivity.java index 3c326569e..9294cad12 100644 --- a/app/src/main/java/protect/card_locker/ScanActivity.java +++ b/app/src/main/java/protect/card_locker/ScanActivity.java @@ -36,11 +36,13 @@ public class ScanActivity extends AppCompatActivity { private DecoratedBarcodeView barcodeScannerView; private String cardId; + private String addGroup; private boolean torch = false; private void extractIntentFields(Intent intent) { final Bundle b = intent.getExtras(); - cardId = b != null ? b.getString("cardId") : null; + cardId = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_CARDID) : null; + addGroup = b != null ? b.getString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP) : null; Log.d(TAG, "Scan activity: id=" + cardId); } @@ -76,6 +78,9 @@ public class ScanActivity extends AppCompatActivity { Bundle scanResultBundle = new Bundle(); scanResultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, result.getText()); scanResultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, result.getBarcodeFormat().toString()); + if (addGroup != null) { + scanResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup); + } scanResult.putExtras(scanResultBundle); ScanActivity.this.setResult(RESULT_OK, scanResult); finish(); @@ -167,6 +172,9 @@ public class ScanActivity extends AppCompatActivity { Bundle manualResultBundle = new Bundle(); manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_CONTENTS, barcodeValues.content()); manualResultBundle.putString(BarcodeSelectorActivity.BARCODE_FORMAT, barcodeValues.format()); + if (addGroup != null) { + manualResultBundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup); + } manualResult.putExtras(manualResultBundle); ScanActivity.this.setResult(RESULT_OK, manualResult); finish();