From 635ec748b3a7dd86b6966cd4ce903c81d4b033ab Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 2 Oct 2022 10:42:57 +0530 Subject: [PATCH] Catima: Migrate to view binding Signed-off-by: Aayush Gupta --- app/build.gradle | 4 ++ .../protect/card_locker/AboutActivity.java | 28 ++++---- .../card_locker/BarcodeSelectorActivity.java | 14 ++-- .../card_locker/BarcodeSelectorAdapter.java | 8 ++- .../card_locker/CardShortcutConfigure.java | 11 ++-- .../card_locker/GroupCursorAdapter.java | 33 ++++++---- .../card_locker/ImportExportActivity.java | 13 ++-- .../card_locker/LoyaltyCardCursorAdapter.java | 47 +++++++------ .../card_locker/LoyaltyCardEditActivity.java | 66 ++++++++++--------- .../card_locker/LoyaltyCardViewActivity.java | 45 +++++++------ .../protect/card_locker/MainActivity.java | 46 ++++++++----- .../card_locker/ManageGroupActivity.java | 16 +++-- .../card_locker/ManageGroupsActivity.java | 14 ++-- .../protect/card_locker/ScanActivity.java | 17 +++-- .../preferences/SettingsActivity.java | 7 +- app/src/main/res/layout/archive_activity.xml | 4 +- app/src/main/res/layout/main_activity.xml | 4 +- .../res/layout/manage_groups_activity.xml | 4 +- 18 files changed, 231 insertions(+), 150 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index abc01d64e..c77b9f489 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,6 +38,10 @@ android { } } + buildFeatures { + viewBinding true + } + bundle { language { enableSplit = false diff --git a/app/src/main/java/protect/card_locker/AboutActivity.java b/app/src/main/java/protect/card_locker/AboutActivity.java index 2900aa2c3..6b12477cf 100644 --- a/app/src/main/java/protect/card_locker/AboutActivity.java +++ b/app/src/main/java/protect/card_locker/AboutActivity.java @@ -26,16 +26,20 @@ import androidx.appcompat.widget.Toolbar; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.text.HtmlCompat; +import protect.card_locker.databinding.AboutActivityBinding; + public class AboutActivity extends CatimaAppCompatActivity implements View.OnClickListener { + private AboutActivityBinding binding; private static final String TAG = "Catima"; ConstraintLayout version_history, translate, license, repo, privacy, error, credits, rate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + binding = AboutActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.about); - setContentView(R.layout.about_activity); - Toolbar toolbar = findViewById(R.id.toolbar); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -94,21 +98,21 @@ public class AboutActivity extends CatimaAppCompatActivity implements View.OnCli Log.w(TAG, "Package name not found", e); } - TextView copyright = findViewById(R.id.credits_sub); + TextView copyright = binding.creditsSub; copyright.setText(String.format(getString(R.string.app_copyright_fmt), year)); - TextView vHistory = findViewById(R.id.version_history_sub); + TextView vHistory = binding.versionHistorySub; vHistory.setText(String.format(getString(R.string.debug_version_fmt), version)); setTitle(String.format(getString(R.string.about_title_fmt), appName)); - version_history = findViewById(R.id.version_history); - translate = findViewById(R.id.translate); - license = findViewById(R.id.license); - repo = findViewById(R.id.repo); - privacy = findViewById(R.id.privacy); - error = findViewById(R.id.report_error); - credits = findViewById(R.id.credits); - rate = findViewById(R.id.rate); + version_history = binding.versionHistory; + translate = binding.translate; + license = binding.license; + repo = binding.repo; + privacy = binding.privacy; + error = binding.reportError; + credits = binding.credits; + rate = binding.rate; version_history.setOnClickListener(this); translate.setOnClickListener(this); diff --git a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java index e33df1614..3397949aa 100644 --- a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java +++ b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java @@ -19,6 +19,8 @@ import java.util.ArrayList; import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.Toolbar; +import protect.card_locker.databinding.BarcodeSelectorActivityBinding; + /** * This activity is callable and will allow a user to enter * barcode data and generate all barcodes possible for @@ -26,6 +28,7 @@ import androidx.appcompat.widget.Toolbar; * data and type will be returned to the caller. */ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements BarcodeSelectorAdapter.BarcodeSelectorListener { + private BarcodeSelectorActivityBinding binding; private static final String TAG = "Catima"; // Result this activity will return @@ -40,17 +43,18 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + binding = BarcodeSelectorActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.selectBarcodeTitle); - setContentView(R.layout.barcode_selector_activity); - Toolbar toolbar = findViewById(R.id.toolbar); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); } - EditText cardId = findViewById(R.id.cardId); - ListView mBarcodeList = findViewById(R.id.barcodes); + EditText cardId = binding.cardId; + ListView mBarcodeList = binding.barcodes; mAdapter = new BarcodeSelectorAdapter(this, new ArrayList<>(), this); mBarcodeList.setAdapter(mAdapter); @@ -66,7 +70,7 @@ public class BarcodeSelectorActivity extends CatimaAppCompatActivity implements runOnUiThread(() -> { generateBarcodes(s.toString()); - View noBarcodeButtonView = findViewById(R.id.noBarcode); + View noBarcodeButtonView = binding.noBarcode; setButtonListener(noBarcodeButtonView, s.toString()); noBarcodeButtonView.setEnabled(s.length() > 0); }); diff --git a/app/src/main/java/protect/card_locker/BarcodeSelectorAdapter.java b/app/src/main/java/protect/card_locker/BarcodeSelectorAdapter.java index def91e389..c12f9f99a 100644 --- a/app/src/main/java/protect/card_locker/BarcodeSelectorAdapter.java +++ b/app/src/main/java/protect/card_locker/BarcodeSelectorAdapter.java @@ -13,6 +13,7 @@ import android.widget.TextView; import java.util.ArrayList; import protect.card_locker.async.TaskHandler; +import protect.card_locker.databinding.BarcodeLayoutBinding; public class BarcodeSelectorAdapter extends ArrayAdapter { private static final String TAG = "Catima"; @@ -51,9 +52,10 @@ public class BarcodeSelectorAdapter extends ArrayAdapter if (convertView == null) { viewHolder = new ViewHolder(); LayoutInflater inflater = LayoutInflater.from(getContext()); - convertView = inflater.inflate(R.layout.barcode_layout, parent, false); - viewHolder.image = convertView.findViewById(R.id.barcodeImage); - viewHolder.text = convertView.findViewById(R.id.barcodeName); + BarcodeLayoutBinding barcodeLayoutBinding = BarcodeLayoutBinding.inflate(inflater, parent, false); + convertView = barcodeLayoutBinding.getRoot(); + viewHolder.image = barcodeLayoutBinding.barcodeImage; + viewHolder.text = barcodeLayoutBinding.barcodeName; convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); diff --git a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java index 9782162fb..a34916a63 100644 --- a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java +++ b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java @@ -14,10 +14,13 @@ import androidx.core.content.pm.ShortcutManagerCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import protect.card_locker.databinding.SimpleToolbarListActivityBinding; + /** * The configuration screen for creating a shortcut. */ public class CardShortcutConfigure extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener { + private SimpleToolbarListActivityBinding binding; static final String TAG = "Catima"; private SQLiteDatabase mDatabase; private LoyaltyCardCursorAdapter mAdapter; @@ -25,15 +28,15 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); - + binding = SimpleToolbarListActivityBinding.inflate(getLayoutInflater()); mDatabase = new DBHelper(this).getReadableDatabase(); // Set the result to CANCELED. This will cause nothing to happen if the // aback button is pressed. setResult(RESULT_CANCELED); - setContentView(R.layout.simple_toolbar_list_activity); - Toolbar toolbar = findViewById(R.id.toolbar); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; toolbar.setTitle(R.string.shortcutSelectCard); setSupportActionBar(toolbar); @@ -50,7 +53,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo finish(); } - final RecyclerView cardList = findViewById(R.id.list); + final RecyclerView cardList = binding.list; GridLayoutManager layoutManager = (GridLayoutManager) cardList.getLayoutManager(); if (layoutManager != null) { layoutManager.setSpanCount(getResources().getInteger(R.integer.main_view_card_columns)); diff --git a/app/src/main/java/protect/card_locker/GroupCursorAdapter.java b/app/src/main/java/protect/card_locker/GroupCursorAdapter.java index 770e6795c..96b350d08 100644 --- a/app/src/main/java/protect/card_locker/GroupCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/GroupCursorAdapter.java @@ -7,11 +7,13 @@ import android.database.sqlite.SQLiteDatabase; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageButton; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.widget.AppCompatImageButton; import androidx.recyclerview.widget.RecyclerView; + +import protect.card_locker.databinding.GroupLayoutBinding; import protect.card_locker.preferences.Settings; public class GroupCursorAdapter extends BaseCursorAdapter { @@ -33,9 +35,14 @@ public class GroupCursorAdapter extends BaseCursorAdapter { AlertDialog.Builder builder = new AlertDialog.Builder(ImportExportActivity.this); builder.setTitle(R.string.exportPassword); @@ -158,11 +161,11 @@ public class ImportExportActivity extends CatimaAppCompatActivity { }); // Check that there is a file manager available - Button importFilesystem = findViewById(R.id.importOptionFilesystemButton); + Button importFilesystem = binding.importOptionFilesystemButton; importFilesystem.setOnClickListener(v -> chooseImportType(false)); // Check that there is an app that data can be imported from - Button importApplication = findViewById(R.id.importOptionApplicationButton); + Button importApplication = binding.importOptionApplicationButton; importApplication.setOnClickListener(v -> chooseImportType(true)); } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index bb8041eba..0dd48a4d1 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -24,10 +24,13 @@ import java.util.ArrayList; import java.util.Currency; import java.util.Date; +import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.graphics.BlendModeColorFilterCompat; 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 { @@ -82,10 +85,15 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter { inputListener.onRowClicked(getAdapterPosition()); inputView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index fcc3d11ae..3530923bb 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -20,6 +20,7 @@ import android.os.LocaleList; import android.text.Editable; import android.text.InputType; import android.util.Log; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -77,8 +78,11 @@ import androidx.core.content.FileProvider; import androidx.exifinterface.media.ExifInterface; import androidx.fragment.app.DialogFragment; import protect.card_locker.async.TaskHandler; +import protect.card_locker.databinding.LayoutChipChoiceBinding; +import protect.card_locker.databinding.LoyaltyCardEditActivityBinding; public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { + private LoyaltyCardEditActivityBinding binding; private static final String TAG = "Catima"; private final String STATE_TAB_INDEX = "savedTab"; @@ -244,7 +248,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { @Override public void onSaveInstanceState(@NonNull Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); - tabs = findViewById(R.id.tabs); + tabs = binding.tabs; savedInstanceState.putInt(STATE_TAB_INDEX, tabs.getSelectedTabPosition()); savedInstanceState.putParcelable(STATE_TEMP_CARD, tempLoyaltyCard); savedInstanceState.putInt(STATE_REQUESTED_IMAGE, mRequestedImage); @@ -281,7 +285,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { tempLoyaltyCard = savedInstanceState.getParcelable(STATE_TEMP_CARD); super.onRestoreInstanceState(savedInstanceState); - tabs = findViewById(R.id.tabs); + tabs = binding.tabs; tabs.selectTab(tabs.getTabAt(savedInstanceState.getInt(STATE_TAB_INDEX))); mRequestedImage = savedInstanceState.getInt(STATE_REQUESTED_IMAGE); mFrontImageUnsaved = savedInstanceState.getInt(STATE_FRONT_IMAGE_UNSAVED) == 1; @@ -297,9 +301,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - setContentView(R.layout.loyalty_card_edit_activity); - toolbar = findViewById(R.id.toolbar); + binding = LoyaltyCardEditActivityBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + toolbar = binding.toolbar; setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -316,28 +320,28 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { currencies.put(currency.getSymbol(), currency); } - tabs = findViewById(R.id.tabs); - thumbnail = findViewById(R.id.thumbnail); - thumbnailEditIcon = findViewById(R.id.thumbnailEditIcon); - storeFieldEdit = findViewById(R.id.storeNameEdit); - noteFieldEdit = findViewById(R.id.noteEdit); - groupsChips = findViewById(R.id.groupChips); - expiryField = findViewById(R.id.expiryField); - balanceField = findViewById(R.id.balanceField); - balanceCurrencyField = findViewById(R.id.balanceCurrencyField); - cardIdFieldView = findViewById(R.id.cardIdView); - barcodeIdField = findViewById(R.id.barcodeIdField); - barcodeTypeField = findViewById(R.id.barcodeTypeField); - barcodeImage = findViewById(R.id.barcode); + tabs = binding.tabs; + thumbnail = binding.thumbnail; + thumbnailEditIcon = binding.thumbnailEditIcon; + storeFieldEdit = binding.storeNameEdit; + noteFieldEdit = binding.noteEdit; + groupsChips = binding.groupChips; + expiryField = binding.expiryField; + balanceField = binding.balanceField; + balanceCurrencyField = binding.balanceCurrencyField; + cardIdFieldView = binding.cardIdView; + barcodeIdField = binding.barcodeIdField; + barcodeTypeField = binding.barcodeTypeField; + barcodeImage = binding.barcode; barcodeImage.setClipToOutline(true); - barcodeImageLayout = findViewById(R.id.barcodeLayout); - barcodeCaptureLayout = findViewById(R.id.barcodeCaptureLayout); - cardImageFrontHolder = findViewById(R.id.frontImageHolder); - cardImageBackHolder = findViewById(R.id.backImageHolder); - cardImageFront = findViewById(R.id.frontImage); - cardImageBack = findViewById(R.id.backImage); + barcodeImageLayout = binding.barcodeLayout; + barcodeCaptureLayout = binding.barcodeCaptureLayout; + cardImageFrontHolder = binding.frontImageHolder; + cardImageBackHolder = binding.backImageHolder; + cardImageFront = binding.frontImage; + cardImageBack = binding.backImage; - enterButton = findViewById(R.id.enterButton); + enterButton = binding.enterButton; barcodeImageGenerationFinishedCallback = () -> { if (!(boolean) barcodeImage.getTag()) { @@ -834,7 +838,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { } for (Group group : DBHelper.getGroups(mDatabase)) { - Chip chip = (Chip) getLayoutInflater().inflate(R.layout.layout_chip_choice, groupsChips, false); + LayoutChipChoiceBinding chipChoiceBinding = LayoutChipChoiceBinding + .inflate(LayoutInflater.from(groupsChips.getContext()), groupsChips, false); + Chip chip = chipChoiceBinding.getRoot(); chip.setText(group._id); chip.setTag(group); @@ -906,7 +912,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { cardImageFrontHolder.setOnClickListener(new ChooseCardImage()); cardImageBackHolder.setOnClickListener(new ChooseCardImage()); - FloatingActionButton saveButton = findViewById(R.id.fabSave); + FloatingActionButton saveButton = binding.fabSave; saveButton.setOnClickListener(v -> doSave()); saveButton.bringToFront(); @@ -1498,9 +1504,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { return; } - View cardPart = findViewById(R.id.cardPart); - View optionsPart = findViewById(R.id.optionsPart); - View picturesPart = findViewById(R.id.picturesPart); + View cardPart = binding.cardPart; + View optionsPart = binding.optionsPart; + View picturesPart = binding.picturesPart; if (getString(R.string.card).equals(part)) { cardPart.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index b301cf5f0..6a9ceff30 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -64,9 +64,11 @@ import java.util.Arrays; import java.util.List; import protect.card_locker.async.TaskHandler; +import protect.card_locker.databinding.LoyaltyCardViewLayoutBinding; import protect.card_locker.preferences.Settings; public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements GestureDetector.OnGestureListener { + private LoyaltyCardViewLayoutBinding binding; private static final String TAG = "Catima"; private GestureDetector mGestureDetector; @@ -311,6 +313,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements } super.onCreate(savedInstanceState); + binding = LoyaltyCardViewLayoutBinding.inflate(getLayoutInflater()); settings = new Settings(this); @@ -332,30 +335,30 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements extractIntentFields(getIntent()); - setContentView(R.layout.loyalty_card_view_layout); + setContentView(binding.getRoot()); database = new DBHelper(this).getWritableDatabase(); importURIHelper = new ImportURIHelper(this); - coordinatorLayout = findViewById(R.id.coordinator_layout); - mainLayout = findViewById(R.id.mainLayout); - cardIdFieldView = findViewById(R.id.cardIdView); - storeName = findViewById(R.id.storeName); - maximizeButton = findViewById(R.id.maximizeButton); - mainImage = findViewById(R.id.mainImage); + coordinatorLayout = binding.coordinatorLayout; + mainLayout = binding.mainLayout; + cardIdFieldView = binding.cardIdView; + storeName = binding.storeName; + maximizeButton = binding.maximizeButton; + mainImage = binding.mainImage; mainImage.setClipToOutline(true); - dotIndicator = findViewById(R.id.dotIndicator); - minimizeButton = findViewById(R.id.minimizeButton); - collapsingToolbarLayout = findViewById(R.id.collapsingToolbarLayout); - appBarLayout = findViewById(R.id.app_bar_layout); - bottomAppBar = findViewById(R.id.bottom_app_bar); - iconImage = findViewById(R.id.icon_image); - portraitToolbar = findViewById(R.id.toolbar); - landscapeToolbar = findViewById(R.id.toolbar_landscape); + dotIndicator = binding.dotIndicator; + minimizeButton = binding.minimizeButton; + collapsingToolbarLayout = binding.collapsingToolbarLayout; + appBarLayout = binding.appBarLayout; + bottomAppBar = binding.bottomAppBar; + iconImage = binding.iconImage; + portraitToolbar = binding.toolbar; + landscapeToolbar = binding.toolbarLandscape; - bottomAppBarInfoButton = findViewById(R.id.button_show_info); - bottomAppBarPreviousButton = findViewById(R.id.button_previous); - bottomAppBarNextButton = findViewById(R.id.button_next); + bottomAppBarInfoButton = binding.buttonShowInfo; + bottomAppBarPreviousButton = binding.buttonPrevious; + bottomAppBarNextButton = binding.buttonNext; barcodeImageGenerationFinishedCallback = () -> { if (!(boolean) mainImage.getTag()) { @@ -370,8 +373,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements } }; - centerGuideline = findViewById(R.id.centerGuideline); - barcodeScaler = findViewById(R.id.barcodeScaler); + centerGuideline = binding.centerGuideline; + barcodeScaler = binding.barcodeScaler; barcodeScaler.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { @@ -409,7 +412,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements maximizeButton.setOnClickListener(v -> setFullscreen(true)); minimizeButton.setOnClickListener(v -> setFullscreen(false)); - editButton = findViewById(R.id.fabEdit); + editButton = binding.fabEdit; editButton.setOnClickListener(v -> { Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class); Bundle bundle = new Bundle(); diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index ec9a101dd..95a796b72 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -12,6 +12,7 @@ import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; @@ -47,9 +48,16 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import protect.card_locker.databinding.ArchiveActivityBinding; +import protect.card_locker.databinding.ContentMainBinding; +import protect.card_locker.databinding.MainActivityBinding; +import protect.card_locker.databinding.SortingOptionBinding; import protect.card_locker.preferences.SettingsActivity; public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener, GestureDetector.OnGestureListener { + private MainActivityBinding binding; + private ArchiveActivityBinding archiveActivityBinding; + private ContentMainBinding contentMainBinding; private static final String TAG = "Catima"; public static final String RESTART_ACTIVITY_INTENT = "restart_activity_intent"; @@ -68,6 +76,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard private View mHelpSection; private View mNoMatchingCardsText; private View mNoGroupCardsText; + private TabLayout groupsTabLayout; private boolean mArchiveMode; public static final String BUNDLE_ARCHIVE_MODE = "archiveMode"; @@ -163,7 +172,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard ShortcutHelper.removeShortcut(MainActivity.this, loyaltyCard.id); } - TabLayout.Tab tab = ((TabLayout) findViewById(R.id.groups)).getTabAt(selectedTab); + TabLayout.Tab tab = groupsTabLayout.getTabAt(selectedTab); mGroup = tab != null ? tab.getTag() : null; updateLoyaltyCardList(true); @@ -231,17 +240,22 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard SplashScreen.installSplashScreen(this); super.onCreate(inputSavedInstanceState); if(!mArchiveMode) { + binding = MainActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.app_name); - setContentView(R.layout.main_activity); + setContentView(binding.getRoot()); + setSupportActionBar(binding.toolbar); + groupsTabLayout = binding.groups; + contentMainBinding = ContentMainBinding.bind(binding.include.getRoot()); } else{ + archiveActivityBinding = ArchiveActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.archiveList); - setContentView(R.layout.archive_activity); + setContentView(archiveActivityBinding.getRoot()); + setSupportActionBar(archiveActivityBinding.toolbar); + groupsTabLayout = archiveActivityBinding.groups; + contentMainBinding = ContentMainBinding.bind(archiveActivityBinding.include.getRoot()); } - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - if(mArchiveMode){ ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -251,7 +265,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mDatabase = new DBHelper(this).getWritableDatabase(); - TabLayout groupsTabLayout = findViewById(R.id.groups); groupsTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { @@ -283,10 +296,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard View.OnTouchListener gestureTouchListener = (v, event) -> mGestureDetector.onTouchEvent(event); - mHelpSection = findViewById(R.id.helpSection); - mNoMatchingCardsText = findViewById(R.id.noMatchingCardsText); - mNoGroupCardsText = findViewById(R.id.noGroupCardsText); - mCardList = findViewById(R.id.list); + mHelpSection = contentMainBinding.helpSection; + mNoMatchingCardsText = contentMainBinding.noMatchingCardsText; + mNoGroupCardsText = contentMainBinding.noGroupCardsText; + mCardList = contentMainBinding.list; mNoMatchingCardsText.setOnTouchListener(gestureTouchListener); mCardList.setOnTouchListener(gestureTouchListener); @@ -374,7 +387,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } // Start of active tab logic - TabLayout groupsTabLayout = findViewById(R.id.groups); updateTabGroups(groupsTabLayout); // Restore settings from Shared Preference @@ -407,7 +419,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard // End of active tab logic if (!mArchiveMode) { - FloatingActionButton addButton = findViewById(R.id.fabAdd); + FloatingActionButton addButton = binding.fabAdd; addButton.setOnClickListener(v -> { Intent intent = new Intent(getApplicationContext(), ScanActivity.class); @@ -562,7 +574,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard public boolean onQueryTextChange(String newText) { mFilter = newText; - TabLayout groupsTabLayout = findViewById(R.id.groups); TabLayout.Tab currentTab = groupsTabLayout.getTabAt(groupsTabLayout.getSelectedTabPosition()); mGroup = currentTab != null ? currentTab.getTag() : null; @@ -612,10 +623,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle(R.string.sort_by); - final View customLayout = getLayoutInflater().inflate(R.layout.sorting_option, null); + SortingOptionBinding sortingOptionBinding = SortingOptionBinding + .inflate(LayoutInflater.from(MainActivity.this), null, false); + final View customLayout = sortingOptionBinding.getRoot(); builder.setView(customLayout); - CheckBox showReversed = (CheckBox) customLayout.findViewById(R.id.checkBox_reverse); + CheckBox showReversed = sortingOptionBinding.checkBoxReverse; showReversed.setChecked(mOrderDirection == DBHelper.LoyaltyCardOrderDirection.Descending); @@ -736,7 +749,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard return false; } - TabLayout groupsTabLayout = findViewById(R.id.groups); if (groupsTabLayout.getTabCount() < 2) { return false; } diff --git a/app/src/main/java/protect/card_locker/ManageGroupActivity.java b/app/src/main/java/protect/card_locker/ManageGroupActivity.java index 4b5174dc4..c07843e49 100644 --- a/app/src/main/java/protect/card_locker/ManageGroupActivity.java +++ b/app/src/main/java/protect/card_locker/ManageGroupActivity.java @@ -25,8 +25,11 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.RecyclerView; +import protect.card_locker.databinding.ActivityManageGroupBinding; + public class ManageGroupActivity extends CatimaAppCompatActivity implements ManageGroupCursorAdapter.CardAdapterListener { + private ActivityManageGroupBinding binding; private SQLiteDatabase mDatabase; private ManageGroupCursorAdapter mAdapter; @@ -43,17 +46,18 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana @Override protected void onCreate(Bundle inputSavedInstanceState) { super.onCreate(inputSavedInstanceState); - setContentView(R.layout.activity_manage_group); - Toolbar toolbar = findViewById(R.id.toolbar); + binding = ActivityManageGroupBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); mDatabase = new DBHelper(this).getWritableDatabase(); - noGroupCardsText = findViewById(R.id.noGroupCardsText); - mCardList = findViewById(R.id.list); - FloatingActionButton saveButton = findViewById(R.id.fabSave); + noGroupCardsText = binding.include.noGroupCardsText; + mCardList = binding.include.list; + FloatingActionButton saveButton = binding.fabSave; - mGroupNameText = findViewById(R.id.editTextGroupName); + mGroupNameText = binding.editTextGroupName; mGroupNameText.addTextChangedListener(new TextWatcher() { @Override diff --git a/app/src/main/java/protect/card_locker/ManageGroupsActivity.java b/app/src/main/java/protect/card_locker/ManageGroupsActivity.java index 07b92bd93..afbb2fd0f 100644 --- a/app/src/main/java/protect/card_locker/ManageGroupsActivity.java +++ b/app/src/main/java/protect/card_locker/ManageGroupsActivity.java @@ -24,7 +24,10 @@ import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import protect.card_locker.databinding.ManageGroupsActivityBinding; + public class ManageGroupsActivity extends CatimaAppCompatActivity implements GroupCursorAdapter.GroupAdapterListener { + private ManageGroupsActivityBinding binding; private static final String TAG = "Catima"; private SQLiteDatabase mDatabase; @@ -35,9 +38,10 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + binding = ManageGroupsActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.groups); - setContentView(R.layout.manage_groups_activity); - Toolbar toolbar = findViewById(R.id.toolbar); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -51,12 +55,12 @@ public class ManageGroupsActivity extends CatimaAppCompatActivity implements Gro protected void onResume() { super.onResume(); - FloatingActionButton addButton = findViewById(R.id.fabAdd); + FloatingActionButton addButton = binding.fabAdd; addButton.setOnClickListener(v -> createGroup()); addButton.bringToFront(); - mGroupList = findViewById(R.id.list); - mHelpText = findViewById(R.id.helpText); + mGroupList = binding.include.list; + mHelpText = binding.include.helpText; // Init group list RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); diff --git a/app/src/main/java/protect/card_locker/ScanActivity.java b/app/src/main/java/protect/card_locker/ScanActivity.java index a5a7df2d9..a3cc90648 100644 --- a/app/src/main/java/protect/card_locker/ScanActivity.java +++ b/app/src/main/java/protect/card_locker/ScanActivity.java @@ -26,6 +26,9 @@ import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.Toolbar; +import protect.card_locker.databinding.CustomBarcodeScannerBinding; +import protect.card_locker.databinding.ScanActivityBinding; + /** * Custom Scannner Activity extending from Activity to display a custom layout form scanner view. *

@@ -33,6 +36,8 @@ import androidx.appcompat.widget.Toolbar; * originally licensed under Apache 2.0 */ public class ScanActivity extends CatimaAppCompatActivity { + private ScanActivityBinding binding; + private CustomBarcodeScannerBinding customBarcodeScannerBinding; private static final String TAG = "Catima"; private CaptureManager capture; @@ -56,9 +61,11 @@ public class ScanActivity extends CatimaAppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + binding = ScanActivityBinding.inflate(getLayoutInflater()); + customBarcodeScannerBinding = CustomBarcodeScannerBinding.bind(binding.zxingBarcodeScanner); setTitle(R.string.scanCardBarcode); - setContentView(R.layout.scan_activity); - Toolbar toolbar = findViewById(R.id.toolbar); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -69,10 +76,10 @@ public class ScanActivity extends CatimaAppCompatActivity { manualAddLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.SELECT_BARCODE_REQUEST, result.getResultCode(), result.getData())); photoPickerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> handleActivityResult(Utils.BARCODE_IMPORT_FROM_IMAGE_FILE, result.getResultCode(), result.getData())); - findViewById(R.id.add_from_image).setOnClickListener(this::addFromImage); - findViewById(R.id.add_manually).setOnClickListener(this::addManually); + customBarcodeScannerBinding.addFromImage.setOnClickListener(this::addFromImage); + customBarcodeScannerBinding.addManually.setOnClickListener(this::addManually); - barcodeScannerView = findViewById(R.id.zxing_barcode_scanner); + barcodeScannerView = binding.zxingBarcodeScanner; // Even though we do the actual decoding with the barcodeScannerView // CaptureManager needs to be running to show the camera and scanning bar diff --git a/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java b/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java index 3d9d09529..4cc47c1a3 100644 --- a/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java +++ b/app/src/main/java/protect/card_locker/preferences/SettingsActivity.java @@ -26,18 +26,21 @@ import protect.card_locker.CatimaAppCompatActivity; import protect.card_locker.MainActivity; import protect.card_locker.R; import protect.card_locker.Utils; +import protect.card_locker.databinding.SettingsActivityBinding; public class SettingsActivity extends CatimaAppCompatActivity { + private SettingsActivityBinding binding; private final static String RELOAD_MAIN_STATE = "mReloadMain"; private SettingsFragment fragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + binding = SettingsActivityBinding.inflate(getLayoutInflater()); setTitle(R.string.settings); - setContentView(R.layout.settings_activity); - Toolbar toolbar = findViewById(R.id.toolbar); + setContentView(binding.getRoot()); + Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { diff --git a/app/src/main/res/layout/archive_activity.xml b/app/src/main/res/layout/archive_activity.xml index bc4e3e86e..03ae97283 100644 --- a/app/src/main/res/layout/archive_activity.xml +++ b/app/src/main/res/layout/archive_activity.xml @@ -27,6 +27,8 @@ - + diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index b9a960aad..86a0cc8ad 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -36,6 +36,8 @@ - + diff --git a/app/src/main/res/layout/manage_groups_activity.xml b/app/src/main/res/layout/manage_groups_activity.xml index 4142e5e8e..df265ba36 100644 --- a/app/src/main/res/layout/manage_groups_activity.xml +++ b/app/src/main/res/layout/manage_groups_activity.xml @@ -29,6 +29,8 @@ - +