diff --git a/CHANGELOG.md b/CHANGELOG.md index 32ca44153..8a5b8f8e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Changes: - Improve contrast by always using white text on red buttons +- Draggable bottom sheet in loyalty card view ## v1.4.1 (2020-12-01) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index d17509463..c7e8e922e 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -7,6 +7,7 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.widget.TextViewCompat; @@ -27,6 +28,7 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.zxing.BarcodeFormat; @@ -37,8 +39,8 @@ public class LoyaltyCardViewActivity extends AppCompatActivity private static final String TAG = "Catima"; TextView cardIdFieldView; + TextView bottomSheet; TextView noteView; - View noteViewDivider; TextView storeName; ImageView barcodeImage; View collapsingToolbarLayout; @@ -103,8 +105,8 @@ public class LoyaltyCardViewActivity extends AppCompatActivity importURIHelper = new ImportURIHelper(this); cardIdFieldView = findViewById(R.id.cardIdView); + bottomSheet = findViewById(R.id.bottom_sheet); noteView = findViewById(R.id.noteView); - noteViewDivider = findViewById(R.id.noteViewDivider); storeName = findViewById(R.id.storeName); barcodeImage = findViewById(R.id.barcode); collapsingToolbarLayout = findViewById(R.id.collapsingToolbarLayout); @@ -125,6 +127,35 @@ public class LoyaltyCardViewActivity extends AppCompatActivity } } }); + + final FloatingActionButton editButton = findViewById(R.id.fabEdit); + editButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class); + Bundle bundle = new Bundle(); + bundle.putInt("id", loyaltyCardId); + bundle.putBoolean("update", true); + intent.putExtras(bundle); + startActivity(intent); + finish(); + } + }); + + BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); + behavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + if (newState == BottomSheetBehavior.STATE_COLLAPSED || newState == BottomSheetBehavior.STATE_HIDDEN) { + editButton.show(); + } else { + editButton.hide(); + } + } + + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { } + }); } @Override @@ -183,6 +214,7 @@ public class LoyaltyCardViewActivity extends AppCompatActivity if(loyaltyCard.note.length() > 0) { + bottomSheet.setVisibility(View.VISIBLE); noteView.setText(loyaltyCard.note); TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(noteView, getResources().getInteger(R.integer.settings_card_note_min_font_size_sp)-1, @@ -190,8 +222,7 @@ public class LoyaltyCardViewActivity extends AppCompatActivity } else { - noteView.setVisibility(View.GONE); - noteViewDivider.setVisibility(View.GONE); + bottomSheet.setVisibility(View.GONE); } storeName.setText(loyaltyCard.store); @@ -272,20 +303,6 @@ public class LoyaltyCardViewActivity extends AppCompatActivity { findViewById(R.id.barcode).setVisibility(View.GONE); } - - FloatingActionButton editButton = findViewById(R.id.fabEdit); - editButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class); - Bundle bundle = new Bundle(); - bundle.putInt("id", loyaltyCardId); - bundle.putBoolean("update", true); - intent.putExtras(bundle); - startActivity(intent); - finish(); - } - }); } @Override diff --git a/app/src/main/res/layout/loyalty_card_view_layout.xml b/app/src/main/res/layout/loyalty_card_view_layout.xml index 5d44805f8..15d2d7a2c 100644 --- a/app/src/main/res/layout/loyalty_card_view_layout.xml +++ b/app/src/main/res/layout/loyalty_card_view_layout.xml @@ -59,44 +59,14 @@ android:layout_marginLeft="10.0dip" android:layout_marginRight="10.0dip" app:layout_constraintTop_toBottomOf="@+id/barcode" - app:layout_constraintBottom_toTopOf="@+id/noteViewDivider" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" android:textAlignment="center" app:autoSizeTextType="uniform" app:autoSizeMinTextSize="@dimen/singleCardCardIdTextSizeMin" app:autoSizeMaxTextSize="@dimen/singleCardCardIdTextSizeMax" - android:ellipsize="end" - android:textIsSelectable="true"/> - - - - + android:ellipsize="end"/> @@ -107,6 +77,36 @@ android:layout_gravity="top"/> + + + + + + + Are you sure you want to leave this screen? Changed made will not be saved. Scan the barcode with your camera Manually enter card ID + Pull up for more info