diff --git a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java index 7023046cb4..550f0ffb6c 100644 --- a/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java +++ b/app/src/main/java/protect/card_locker/BarcodeSelectorActivity.java @@ -20,6 +20,9 @@ import protect.card_locker.databinding.BarcodeSelectorActivityBinding; +import android.content.ClipboardManager; +import android.content.ClipData; + /** * This activity is callable and will allow a user to enter * barcode data and generate all barcodes possible for diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index eeb9383ba4..64093afc81 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -19,9 +19,11 @@ import android.text.style.ForegroundColorSpan; import android.text.util.Linkify; import android.util.Log; +import android.view.GestureDetector; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -108,6 +110,9 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements private long initTime = System.currentTimeMillis(); + private GestureDetector gestureDetector; + + @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (settings.useVolumeKeysForNavigation()) { @@ -256,6 +261,15 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = LoyaltyCardViewLayoutBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); + // Initialize GestureDetector + gestureDetector = new GestureDetector(this, new GestureListener()); + + // Set touch listener to detect swipe gestures + binding.getRoot().setOnTouchListener((v, event) -> { + Log.d(TAG, "Touch event detected: " + event.getAction()); // Log every touch action + return gestureDetector.onTouchEvent(event); // Let GestureDetector handle the event + }); + Utils.applyWindowInsets(binding.getRoot()); Toolbar toolbar = binding.toolbar; setSupportActionBar(toolbar); @@ -1250,4 +1264,48 @@ private void setFullscreenModeSdkLessThan30() { ); } } + @Override + public boolean onTouchEvent(MotionEvent event) { + gestureDetector.onTouchEvent(event); + return super.onTouchEvent(event); + } + + private class GestureListener extends GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onDown(MotionEvent e) { + // Log when a touch down event is detected + Log.d(TAG, "onDown: " + e.toString()); + return true; + } + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { + // Log every swipe gesture + Log.d(TAG, "onFling detected: e1=" + e1.toString() + ", e2=" + e2.toString()); + + float diffX = e1.getX() - e2.getX(); + Log.d(TAG, "diffX = " + diffX); // Log the horizontal swipe distance + + if (Math.abs(diffX) > 100) { // Adjust the threshold for a swipe + if (diffX > 0) { + // Left swipe + Log.d(TAG, "Left swipe detected"); + if (initTime < (System.currentTimeMillis() - 1000)) { + prevNextCard(true); // Move to next card + } + } else { + // Right swipe + Log.d(TAG, "Right swipe detected"); + if (initTime < (System.currentTimeMillis() - 1000)) { + prevNextCard(false); // Move to previous card + } + } + return true; // Indicate the gesture was handled + } + return false; // Gesture not recognized + } + } } + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d78a86dc25..5a8f942810 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -361,6 +361,7 @@ Select a Passbook file (.pkpass) This file is not supported Sorry, something went wrong, please try again... + Barcode copied to clipboard Width Set Barcode Width