Fix most spotBugs issues

This commit is contained in:
Sylvia van Os
2021-11-23 23:23:58 +01:00
parent f4bd6a3f59
commit 49200fff48
12 changed files with 139 additions and 185 deletions

View File

@@ -5,7 +5,7 @@ import android.database.Cursor;
import androidx.recyclerview.widget.RecyclerView;
public abstract class BaseCursorAdapter<V extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<V> {
private Cursor mCursor;
protected Cursor mCursor;
private boolean mDataValid;
private int mRowIDColumn;

View File

@@ -1,24 +1,25 @@
package protect.card_locker;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
public class CatimaCaptureManager extends CaptureManager {
private Activity activity;
private final Context mContext;
public CatimaCaptureManager(Activity activity, DecoratedBarcodeView barcodeView) {
super(activity, barcodeView);
this.activity = activity;
mContext = activity.getApplicationContext();
}
@Override
protected void displayFrameworkBugMessageAndExit(String message) {
// We don't want to exit, as we also have a enter from card image and add manually button here
// So we show a toast instead
Toast.makeText(activity, message, Toast.LENGTH_LONG).show();
Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
}
}

View File

@@ -71,12 +71,8 @@ public class DBHelper extends SQLiteOpenHelper {
Descending
}
private Context mContext;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mContext = context;
}
@Override
@@ -583,7 +579,7 @@ public class DBHelper extends SQLiteOpenHelper {
}
}
public boolean deleteLoyaltyCard(final int id) {
public boolean deleteLoyaltyCard(Context context, final int id) {
SQLiteDatabase db = getWritableDatabase();
// Delete card
int rowsDeleted = db.delete(LoyaltyCardDbIds.TABLE,
@@ -603,7 +599,7 @@ public class DBHelper extends SQLiteOpenHelper {
// Also wipe card images associated with this card
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
try {
Utils.saveCardImage(mContext, null, id, imageLocationType);
Utils.saveCardImage(context, null, id, imageLocationType);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

View File

@@ -14,7 +14,6 @@ import protect.card_locker.preferences.Settings;
class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListItemViewHolder> {
Settings mSettings;
private Cursor mCursor;
private final Context mContext;
private final GroupCursorAdapter.GroupAdapterListener mListener;
DBHelper mDb;
@@ -27,13 +26,7 @@ class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListI
mListener = inputListener;
mDb = new DBHelper(inputContext);
swapCursor(mCursor);
}
@Override
public void swapCursor(Cursor inputCursor) {
super.swapCursor(inputCursor);
mCursor = inputCursor;
swapCursor(inputCursor);
}
@NonNull
@@ -43,10 +36,6 @@ class GroupCursorAdapter extends BaseCursorAdapter<GroupCursorAdapter.GroupListI
return new GroupListItemViewHolder(itemView);
}
public Cursor getCursor() {
return mCursor;
}
public void onBindViewHolder(GroupCursorAdapter.GroupListItemViewHolder inputHolder, Cursor inputCursor) {
Group group = Group.toGroup(inputCursor);

View File

@@ -33,7 +33,7 @@ public class ImportURIHelper {
private final String shareMultipleText;
public ImportURIHelper(Context context) {
this.context = context;
this.context = context.getApplicationContext();
hosts[0] = context.getResources().getString(R.string.intent_import_card_from_url_host_catima_app);
paths[0] = context.getResources().getString(R.string.intent_import_card_from_url_path_prefix_catima_app);
hosts[1] = context.getResources().getString(R.string.intent_import_card_from_url_host_thelastproject);

View File

@@ -30,7 +30,6 @@ import protect.card_locker.preferences.Settings;
public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCursorAdapter.LoyaltyCardListItemViewHolder> {
private int mCurrentSelectedIndex = -1;
private Cursor mCursor;
Settings mSettings;
boolean mDarkModeEnabled;
private final Context mContext;
@@ -44,20 +43,14 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
super(inputCursor);
setHasStableIds(true);
mSettings = new Settings(inputContext);
mContext = inputContext;
mContext = inputContext.getApplicationContext();
mListener = inputListener;
mSelectedItems = new SparseBooleanArray();
mAnimationItemsIndex = new SparseBooleanArray();
mDarkModeEnabled = Utils.isDarkModeEnabled(inputContext);
swapCursor(mCursor);
}
@Override
public void swapCursor(Cursor inputCursor) {
super.swapCursor(inputCursor);
mCursor = inputCursor;
swapCursor(inputCursor);
}
public void showDetails(boolean show) {
@@ -75,8 +68,9 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
return new LoyaltyCardListItemViewHolder(itemView, mListener);
}
public Cursor getCursor() {
return mCursor;
public LoyaltyCard getCard(int position) {
mCursor.moveToPosition(position);
return LoyaltyCard.toLoyaltyCard(mCursor);
}
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {

View File

@@ -1313,7 +1313,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
Log.e(TAG, "Deleting card: " + loyaltyCardId);
DBHelper db = new DBHelper(LoyaltyCardEditActivity.this);
db.deleteLoyaltyCard(loyaltyCardId);
db.deleteLoyaltyCard(LoyaltyCardEditActivity.this, loyaltyCardId);
ShortcutHelper.removeShortcut(LoyaltyCardEditActivity.this, loyaltyCardId);

View File

@@ -43,7 +43,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private final DBHelper mDB = new DBHelper(this);
private LoyaltyCardCursorAdapter mAdapter;
private ActionMode mCurrentActionMode;
private Menu mMenu;
private SearchView mSearchView;
private GestureDetector mGestureDetector;
protected String mFilter = "";
protected Object mGroup = null;
@@ -55,7 +55,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
private View mNoMatchingCardsText;
private View mNoGroupCardsText;
private ActivityResultLauncher<Intent> mMainRequestLauncher;
private ActivityResultLauncher<Intent> mBarcodeScannerLauncher;
private ActionMode.Callback mCurrentActionModeCallback = new ActionMode.Callback() {
@@ -143,7 +142,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) {
Log.e(TAG, "Deleting card: " + loyaltyCard.id);
db.deleteLoyaltyCard(loyaltyCard.id);
db.deleteLoyaltyCard(MainActivity.this, loyaltyCard.id);
ShortcutHelper.removeShortcut(MainActivity.this, loyaltyCard.id);
}
@@ -267,16 +266,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
}
*/
mMainRequestLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
// We're coming back from another view so clear the search
// We only do this now to prevent a flash of all entries right after picking one
mFilter = "";
if (mMenu != null) {
MenuItem searchItem = mMenu.findItem(R.id.action_search);
searchItem.collapseActionView();
}
});
mBarcodeScannerLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Intent intent = result.getData();
BarcodeValues barcodeValues = Utils.parseSetBarcodeActivityResult(Utils.BARCODE_SCAN, result.getResultCode(), intent, this);
@@ -305,12 +294,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
mCurrentActionMode.finish();
}
if (mMenu != null) {
SearchView searchView = (SearchView) mMenu.findItem(R.id.action_search).getActionView();
if (!searchView.isIconified()) {
mFilter = searchView.getQuery().toString();
}
if (mSearchView != null && !mSearchView.isIconified()) {
mFilter = mSearchView.getQuery().toString();
}
// Start of active tab logic
@@ -361,13 +346,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public void onBackPressed() {
if (mMenu != null) {
SearchView searchView = (SearchView) mMenu.findItem(R.id.action_search).getActionView();
if (!searchView.isIconified()) {
searchView.setIconified(true);
return;
}
if (!mSearchView.isIconified()) {
mSearchView.setIconified(true);
return;
}
super.onBackPressed();
@@ -444,22 +425,20 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
@Override
public boolean onCreateOptionsMenu(Menu inputMenu) {
this.mMenu = inputMenu;
getMenuInflater().inflate(R.menu.main_menu, inputMenu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
if (searchManager != null) {
SearchView searchView = (SearchView) inputMenu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(false);
mSearchView = (SearchView) inputMenu.findItem(R.id.action_search).getActionView();
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setSubmitButtonEnabled(false);
searchView.setOnCloseListener(() -> {
mSearchView.setOnCloseListener(() -> {
invalidateOptionsMenu();
return false;
});
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
@@ -543,25 +522,25 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
if (id == R.id.action_manage_groups) {
Intent i = new Intent(getApplicationContext(), ManageGroupsActivity.class);
mMainRequestLauncher.launch(i);
startActivity(i);
return true;
}
if (id == R.id.action_import_export) {
Intent i = new Intent(getApplicationContext(), ImportExportActivity.class);
mMainRequestLauncher.launch(i);
startActivity(i);
return true;
}
if (id == R.id.action_settings) {
Intent i = new Intent(getApplicationContext(), SettingsActivity.class);
mMainRequestLauncher.launch(i);
startActivity(i);
return true;
}
if (id == R.id.action_about) {
Intent i = new Intent(getApplicationContext(), AboutActivity.class);
mMainRequestLauncher.launch(i);
startActivity(i);
return true;
}
@@ -703,8 +682,6 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
if (mAdapter.getSelectedItemCount() > 0) {
enableActionMode(inputPosition);
} else {
Cursor selected = mAdapter.getCursor();
selected.moveToPosition(inputPosition);
// FIXME
//
// There is a really nasty edge case that can happen when someone taps a card but right
@@ -715,7 +692,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
// click is being processed. Sadly, I have not yet found a way to make that possible.
LoyaltyCard loyaltyCard;
try {
loyaltyCard = LoyaltyCard.toLoyaltyCard(selected);
loyaltyCard = mAdapter.getCard(inputPosition);
} catch (CursorIndexOutOfBoundsException e) {
Log.w(TAG, "Prevented crash from tap + swipe on ID " + inputPosition + ": " + e);
return;
@@ -729,7 +706,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
ShortcutHelper.updateShortcuts(MainActivity.this, loyaltyCard);
mMainRequestLauncher.launch(i);
startActivity(i);
}
}
}

View File

@@ -165,7 +165,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana
private void updateLoyaltyCardList() {
mAdapter.swapCursor(mDB.getLoyaltyCardCursor());
if (mAdapter.getCountFromCursor() == 0) {
if (mAdapter.getItemCount() == 0) {
mCardList.setVisibility(View.GONE);
mHelpText.setVisibility(View.VISIBLE);
} else {

View File

@@ -105,8 +105,4 @@ public class ManageGroupCursorAdapter extends LoyaltyCardCursorAdapter {
public HashMap<Integer, Boolean> exportInGroupState() {
return new HashMap<>(mInGroupOverlay);
}
public int getCountFromCursor() {
return super.getCursor().getCount();
}
}

View File

@@ -13,32 +13,32 @@ import protect.card_locker.R;
import protect.card_locker.Utils;
public class Settings {
private Context context;
private SharedPreferences settings;
private final Context mContext;
private SharedPreferences mSettings;
public Settings(Context context) {
this.context = context;
this.settings = PreferenceManager.getDefaultSharedPreferences(context);
mContext = context.getApplicationContext();
mSettings = PreferenceManager.getDefaultSharedPreferences(context);
}
private String getResString(@StringRes int resId) {
return context.getString(resId);
return mContext.getString(resId);
}
private int getResInt(@IntegerRes int resId) {
return context.getResources().getInteger(resId);
return mContext.getResources().getInteger(resId);
}
private String getString(@StringRes int keyId, String defaultValue) {
return settings.getString(getResString(keyId), defaultValue);
return mSettings.getString(getResString(keyId), defaultValue);
}
private int getInt(@StringRes int keyId, @IntegerRes int defaultId) {
return settings.getInt(getResString(keyId), getResInt(defaultId));
return mSettings.getInt(getResString(keyId), getResInt(defaultId));
}
private boolean getBoolean(@StringRes int keyId, boolean defaultValue) {
return settings.getBoolean(getResString(keyId), defaultValue);
return mSettings.getBoolean(getResString(keyId), defaultValue);
}
public Locale getLocale() {