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