From fc07b8ba43deb38e7dc6b716a5b26a3cca563766 Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Fri, 3 Dec 2021 16:44:06 +0100 Subject: [PATCH 01/41] removal of ui-integration module --- README.md | 4 -- docs/docs/android-api.md | 4 -- docs/mkdocs.yml | 1 - java-sample/build.gradle | 2 - .../testapp/AgeVerificationActivity.java | 2 +- .../java/io/snabble/testapp/BaseActivity.java | 5 +- .../testapp/CheckoutCustomerCardActivity.java | 3 +- .../testapp/CheckoutGatekeeperActivity.java | 2 +- .../testapp/CheckoutOfflineActivity.java | 2 +- .../testapp/CheckoutOnlineActivity.java | 2 +- .../snabble/testapp/CheckoutPOSActivity.java | 2 +- .../testapp/CreditCardInputActivity.java | 2 +- .../testapp/PaydirektInputActivity.java | 3 +- .../PaymentCredentialsListActivity.java | 2 +- .../testapp/PaymentOptionsActivity.java | 3 +- .../testapp/PaymentStatusActivity.java | 2 +- .../snabble/testapp/PayoneInputActivity.java | 2 +- .../testapp/ProductSearchActivity.java | 2 +- .../ProjectPaymentOptionsActivity.java | 2 +- .../testapp/SEPACardInputActivity.java | 2 +- .../snabble/testapp/SelfScanningActivity.java | 2 +- .../snabble/testapp/ShoppingCartActivity.java | 2 +- kotlin-sample/build.gradle | 2 - .../io/snabble/sdk/sample/MainActivity.kt | 6 +- .../main/res/navigation/mobile_navigation.xml | 28 ++++---- settings.gradle | 2 +- ui-integration/.gitignore | 1 - ui-integration/build.gradle | 60 ------------------ ui-integration/proguard-rules.pro | 21 ------ .../integration/ExampleInstrumentedTest.java | 27 -------- ui-integration/src/main/AndroidManifest.xml | 2 - .../drawable-hdpi/snabble_ic_camera_large.png | Bin 3052 -> 0 bytes .../drawable-mdpi/snabble_ic_camera_large.png | Bin 1953 -> 0 bytes .../snabble_ic_camera_large.png | Bin 4005 -> 0 bytes .../snabble_ic_camera_large.png | Bin 6204 -> 0 bytes .../snabble_ic_camera_large.png | Bin 8255 -> 0 bytes .../sdk/ui/integration/ExampleUnitTest.java | 17 ----- .../AgeVerificationInputFragment.java | 4 +- .../CheckoutCustomerCardFragment.java | 4 +- .../fragment}/CheckoutGatekeeperFragment.java | 4 +- .../ui/fragment}/CheckoutOfflineFragment.java | 4 +- .../ui/fragment}/CheckoutOnlineFragment.java | 3 +- .../sdk/ui/fragment}/CheckoutPOSFragment.java | 4 +- .../ui/fragment}/CreditCardInputFragment.kt | 3 +- .../ui/fragment}/PaydirektInputFragment.java | 4 +- .../PaymentCredentialsListFragment.kt | 5 +- .../ui/fragment}/PaymentOptionsFragment.java | 4 +- .../ui/fragment}/PaymentStatusFragment.java | 4 +- .../sdk/ui/fragment}/PayoneInputFragment.kt | 3 +- .../ui/fragment}/ProductSearchFragment.java | 4 +- .../ProjectPaymentOptionsFragment.kt | 10 ++- .../ui/fragment}/SEPACardInputFragment.java | 4 +- .../sdk/ui/fragment}/SelfScanningFragment.kt | 3 +- .../ui/fragment}/ShoppingCartFragment.java | 3 +- .../sdk/ui/fragment}/ZebraSupport.java | 2 +- .../snabble_fragment_age_verification.xml | 0 .../snabble_fragment_cardinput_creditcard.xml | 0 .../snabble_fragment_cardinput_payone.xml | 0 .../snabble_fragment_cardinput_sepa.xml | 0 ...snabble_fragment_checkout_customercard.xml | 0 .../snabble_fragment_checkout_gatekeeper.xml | 0 .../snabble_fragment_checkout_offline.xml | 0 .../snabble_fragment_checkout_online.xml | 0 .../layout/snabble_fragment_checkout_pos.xml | 0 .../res/layout/snabble_fragment_paydirekt.xml | 0 ...bble_fragment_payment_credentials_list.xml | 0 .../snabble_fragment_payment_options.xml | 0 .../snabble_fragment_payment_status.xml | 0 .../layout/snabble_fragment_productsearch.xml | 0 ...nabble_fragment_select_payment_project.xml | 0 .../layout/snabble_fragment_selfscanning.xml | 0 .../layout/snabble_fragment_shoppingcart.xml | 0 .../res/menu/snabble_menu_barcode_search.xml | 0 .../main/res/menu/snabble_menu_scanner.xml | 0 .../res/menu/snabble_menu_shopping_cart.xml | 0 .../src/main/res/xml/snabble_searchable.xml | 0 76 files changed, 84 insertions(+), 207 deletions(-) delete mode 100644 ui-integration/.gitignore delete mode 100644 ui-integration/build.gradle delete mode 100644 ui-integration/proguard-rules.pro delete mode 100644 ui-integration/src/androidTest/java/io/snabble/sdk/ui/integration/ExampleInstrumentedTest.java delete mode 100644 ui-integration/src/main/AndroidManifest.xml delete mode 100644 ui-integration/src/main/res/drawable-hdpi/snabble_ic_camera_large.png delete mode 100644 ui-integration/src/main/res/drawable-mdpi/snabble_ic_camera_large.png delete mode 100644 ui-integration/src/main/res/drawable-xhdpi/snabble_ic_camera_large.png delete mode 100644 ui-integration/src/main/res/drawable-xxhdpi/snabble_ic_camera_large.png delete mode 100644 ui-integration/src/main/res/drawable-xxxhdpi/snabble_ic_camera_large.png delete mode 100644 ui-integration/src/test/java/io/snabble/sdk/ui/integration/ExampleUnitTest.java rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/AgeVerificationInputFragment.java (89%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/CheckoutCustomerCardFragment.java (90%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/CheckoutGatekeeperFragment.java (90%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/CheckoutOfflineFragment.java (90%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/CheckoutOnlineFragment.java (91%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/CheckoutPOSFragment.java (89%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/CreditCardInputFragment.kt (94%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/PaydirektInputFragment.java (89%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/PaymentCredentialsListFragment.kt (91%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/PaymentOptionsFragment.java (89%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/PaymentStatusFragment.java (90%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/PayoneInputFragment.kt (95%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/ProductSearchFragment.java (88%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/ProjectPaymentOptionsFragment.kt (83%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/SEPACardInputFragment.java (90%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/SelfScanningFragment.kt (98%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/ShoppingCartFragment.java (97%) rename {ui-integration/src/main/java/io/snabble/sdk/ui/integration => ui/src/main/java/io/snabble/sdk/ui/fragment}/ZebraSupport.java (94%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_age_verification.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_cardinput_creditcard.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_cardinput_payone.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_cardinput_sepa.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_checkout_customercard.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_checkout_gatekeeper.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_checkout_offline.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_checkout_online.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_checkout_pos.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_paydirekt.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_payment_credentials_list.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_payment_options.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_payment_status.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_productsearch.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_select_payment_project.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_selfscanning.xml (100%) rename {ui-integration => ui}/src/main/res/layout/snabble_fragment_shoppingcart.xml (100%) rename {ui-integration => ui}/src/main/res/menu/snabble_menu_barcode_search.xml (100%) rename {ui-integration => ui}/src/main/res/menu/snabble_menu_scanner.xml (100%) rename {ui-integration => ui}/src/main/res/menu/snabble_menu_shopping_cart.xml (100%) rename {ui-integration => ui}/src/main/res/xml/snabble_searchable.xml (100%) diff --git a/README.md b/README.md index 15a41b67e9..7ecead9255 100644 --- a/README.md +++ b/README.md @@ -37,10 +37,6 @@ dependencies { // user interface library implementation 'io.snabble.sdk:ui:{currentVersion}' - - // user interface integration library, entirely optional, - // for more seamless and easier integration in apps - implementation 'io.snabble.sdk:ui-integration:{currentVersion}' } ``` diff --git a/docs/docs/android-api.md b/docs/docs/android-api.md index fd6b37029d..c60b259f94 100644 --- a/docs/docs/android-api.md +++ b/docs/docs/android-api.md @@ -29,10 +29,6 @@ dependencies { // user interface library implementation 'io.snabble.sdk:ui:{{ extra.sdk_version }}' - - // user interface integration library, entirely optional, - // for more seamless and easier integration in apps - implementation 'io.snabble.sdk:ui-integration:{{ extra.sdk_version }}' } ``` diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index a54749db0e..24e5ececb9 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -31,7 +31,6 @@ nav: - Core: api/core/index.md - Firebase Detector: api/firebase-detector/index.md - UI: api/ui/index.md - - UI integration: api/ui-integration/index.md - Utils: api/utils/index.md - News: https://snabble.io/en/latest/ - Stores: https://snabble.io/en/stores/ diff --git a/java-sample/build.gradle b/java-sample/build.gradle index 9a132cc16c..a0aeac80ef 100644 --- a/java-sample/build.gradle +++ b/java-sample/build.gradle @@ -62,12 +62,10 @@ dependencies { // just for simplicity implementation project(':core') implementation project(':ui') - implementation project(':ui-integration') // in your app you need to use those dependencies: //implementation 'io.snabble.sdk:core:0.50.6' //implementation 'io.snabble.sdk:ui:0.50.6' - //implementation 'io.snabble.sdk:ui-integration:0.50.6' implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'commons-io:commons-io:2.5' diff --git a/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java b/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java index 9b9a475d78..fc5c71b208 100644 --- a/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.AgeVerificationInputFragment; +import io.snabble.sdk.ui.fragment.AgeVerificationInputFragment; public class AgeVerificationActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java index d8e492af76..c431fda5f7 100644 --- a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java @@ -12,10 +12,7 @@ import io.snabble.sdk.codes.ScannedCode; import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.checkout.PaymentStatusView; -import io.snabble.sdk.ui.integration.ProjectPaymentOptionsFragment; -import io.snabble.sdk.ui.integration.SelfScanningFragment; -import io.snabble.sdk.ui.integration.ZebraSupport; +import io.snabble.sdk.ui.fragment.ZebraSupport; import io.snabble.sdk.ui.scanner.ProductResolver; public abstract class BaseActivity extends AppCompatActivity implements SnabbleUI.Callback { diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java index f998abc732..1bd56fa55f 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java @@ -2,8 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.CheckoutCustomerCardFragment; -import io.snabble.sdk.ui.integration.CheckoutOfflineFragment; +import io.snabble.sdk.ui.fragment.CheckoutCustomerCardFragment; public class CheckoutCustomerCardActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java index e263644caf..8d47d39a52 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.CheckoutGatekeeperFragment; +import io.snabble.sdk.ui.fragment.CheckoutGatekeeperFragment; public class CheckoutGatekeeperActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java index 470d262315..28d27d7071 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.CheckoutOfflineFragment; +import io.snabble.sdk.ui.fragment.CheckoutOfflineFragment; public class CheckoutOfflineActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java index aa056fb8e0..3c4aedc8ff 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java @@ -4,7 +4,7 @@ import io.snabble.sdk.Checkout; import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.integration.CheckoutOnlineFragment; +import io.snabble.sdk.ui.fragment.CheckoutOnlineFragment; public class CheckoutOnlineActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java index 3681b9691c..85d12961b8 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.CheckoutPOSFragment; +import io.snabble.sdk.ui.fragment.CheckoutPOSFragment; public class CheckoutPOSActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java index b2e7716117..9999017f2f 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.CreditCardInputFragment; +import io.snabble.sdk.ui.fragment.CreditCardInputFragment; public class CreditCardInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java index c0fd868a30..760ed3709e 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java @@ -2,8 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.CreditCardInputFragment; -import io.snabble.sdk.ui.integration.PaydirektInputFragment; +import io.snabble.sdk.ui.fragment.PaydirektInputFragment; public class PaydirektInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java index 9a3e161d4f..ad90f8a851 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.PaymentCredentialsListFragment; +import io.snabble.sdk.ui.fragment.PaymentCredentialsListFragment; public class PaymentCredentialsListActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java index 90786e27c5..7ea5dcbd1c 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java @@ -2,8 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.PaymentCredentialsListFragment; -import io.snabble.sdk.ui.integration.PaymentOptionsFragment; +import io.snabble.sdk.ui.fragment.PaymentOptionsFragment; public class PaymentOptionsActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java index 9f4ac977b0..fbf4deaa99 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.PaymentStatusFragment; +import io.snabble.sdk.ui.fragment.PaymentStatusFragment; public class PaymentStatusActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java index e5370243a7..586637aa52 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.PayoneInputFragment; +import io.snabble.sdk.ui.fragment.PayoneInputFragment; public class PayoneInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java b/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java index 13c69a5c60..6b5d92883d 100644 --- a/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.ProductSearchFragment; +import io.snabble.sdk.ui.fragment.ProductSearchFragment; public class ProductSearchActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java b/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java index bb5d0840e8..299265c3dd 100644 --- a/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java @@ -1,7 +1,7 @@ package io.snabble.testapp; import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.ProjectPaymentOptionsFragment; +import io.snabble.sdk.ui.fragment.ProjectPaymentOptionsFragment; public class ProjectPaymentOptionsActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java index ce3246bb46..64d7e7aa2a 100644 --- a/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.SEPACardInputFragment; +import io.snabble.sdk.ui.fragment.SEPACardInputFragment; public class SEPACardInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java b/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java index 6091940bca..93ec421bd7 100644 --- a/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.SelfScanningFragment; +import io.snabble.sdk.ui.fragment.SelfScanningFragment; public class SelfScanningActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java b/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java index a3d1076480..9616ce48ff 100644 --- a/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.integration.ShoppingCartFragment; +import io.snabble.sdk.ui.fragment.ShoppingCartFragment; public class ShoppingCartActivity extends BaseActivity { @Override diff --git a/kotlin-sample/build.gradle b/kotlin-sample/build.gradle index d43745491c..8c2f68ef07 100644 --- a/kotlin-sample/build.gradle +++ b/kotlin-sample/build.gradle @@ -64,13 +64,11 @@ dependencies { // just for simplicity implementation project(':core') implementation project(':ui') - implementation project(':ui-integration') implementation project(':utils') // in your app you need to use those dependencies: //implementation 'io.snabble.sdk:core:0.50.6' //implementation 'io.snabble.sdk:ui:0.50.6' - //implementation 'io.snabble.sdk:ui-integration:0.50.6' //implementation 'io.snabble.sdk:utils:0.50.6' // TODO verify this one diff --git a/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt b/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt index 0bce0bf014..9ea154f5fa 100644 --- a/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt +++ b/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt @@ -2,7 +2,6 @@ package io.snabble.sdk.sample import android.content.Intent import android.os.Bundle -import android.util.Log import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar @@ -14,10 +13,7 @@ import androidx.navigation.ui.setupWithNavController import com.google.android.material.bottomnavigation.BottomNavigationView import io.snabble.sdk.Snabble import io.snabble.sdk.ui.SnabbleUI -import io.snabble.sdk.ui.integration.SelfScanningFragment -import io.snabble.sdk.ui.scanner.BarcodeDetector -import io.snabble.sdk.ui.scanner.BarcodeDetectorFactory -import io.snabble.sdk.ui.scanner.ZXingBarcodeDetector +import io.snabble.sdk.ui.fragment.SelfScanningFragment class MainActivity : AppCompatActivity() { private lateinit var navView: BottomNavigationView diff --git a/kotlin-sample/src/main/res/navigation/mobile_navigation.xml b/kotlin-sample/src/main/res/navigation/mobile_navigation.xml index a5c0e20afa..6cab085972 100644 --- a/kotlin-sample/src/main/res/navigation/mobile_navigation.xml +++ b/kotlin-sample/src/main/res/navigation/mobile_navigation.xml @@ -12,74 +12,74 @@ Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("io.snabble.sdk.ui.test", appContext.getPackageName()); - } -} diff --git a/ui-integration/src/main/AndroidManifest.xml b/ui-integration/src/main/AndroidManifest.xml deleted file mode 100644 index f68d95e913..0000000000 --- a/ui-integration/src/main/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/ui-integration/src/main/res/drawable-hdpi/snabble_ic_camera_large.png b/ui-integration/src/main/res/drawable-hdpi/snabble_ic_camera_large.png deleted file mode 100644 index 0fb284e46187962fb8dabeb651e6327d7b2e29b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3052 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 LNkvXXu0mjfp54Jq diff --git a/ui-integration/src/main/res/drawable-xxhdpi/snabble_ic_camera_large.png b/ui-integration/src/main/res/drawable-xxhdpi/snabble_ic_camera_large.png deleted file mode 100644 index 0a01b50d91bd1d2d3e4b0de74ea2d3b655bc63dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6204 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 documentation - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/AgeVerificationInputFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/AgeVerificationInputFragment.java similarity index 89% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/AgeVerificationInputFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/AgeVerificationInputFragment.java index fd1a8b32b8..2e813d3571 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/AgeVerificationInputFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/AgeVerificationInputFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class AgeVerificationInputFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutCustomerCardFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutCustomerCardFragment.java similarity index 90% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutCustomerCardFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutCustomerCardFragment.java index fb89bb8323..5e54f11453 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutCustomerCardFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutCustomerCardFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -7,6 +7,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class CheckoutCustomerCardFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutGatekeeperFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutGatekeeperFragment.java similarity index 90% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutGatekeeperFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutGatekeeperFragment.java index 263cc457b7..ead88bf897 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutGatekeeperFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutGatekeeperFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -7,6 +7,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class CheckoutGatekeeperFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutOfflineFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutOfflineFragment.java similarity index 90% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutOfflineFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutOfflineFragment.java index 46c2ecb72a..57631a425d 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutOfflineFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutOfflineFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -7,6 +7,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class CheckoutOfflineFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutOnlineFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutOnlineFragment.java similarity index 91% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutOnlineFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutOnlineFragment.java index d44a9c31ef..8a282d4a26 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutOnlineFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutOnlineFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -7,6 +7,7 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; import io.snabble.sdk.ui.checkout.CheckoutOnlineView; public class CheckoutOnlineFragment extends Fragment { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutPOSFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutPOSFragment.java similarity index 89% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutPOSFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutPOSFragment.java index 933cbaeca1..e083cc1458 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CheckoutPOSFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/CheckoutPOSFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -7,6 +7,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class CheckoutPOSFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CreditCardInputFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/fragment/CreditCardInputFragment.kt similarity index 94% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/CreditCardInputFragment.kt rename to ui/src/main/java/io/snabble/sdk/ui/fragment/CreditCardInputFragment.kt index 86d47f626e..fc568a7215 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/CreditCardInputFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/CreditCardInputFragment.kt @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration +package io.snabble.sdk.ui.fragment import android.os.Bundle import android.view.LayoutInflater @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import io.snabble.sdk.PaymentMethod +import io.snabble.sdk.ui.R import io.snabble.sdk.ui.payment.CreditCardInputView open class CreditCardInputFragment : Fragment() { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaydirektInputFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaydirektInputFragment.java similarity index 89% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaydirektInputFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/PaydirektInputFragment.java index 02a47c00fa..e58e5c6d99 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaydirektInputFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaydirektInputFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class PaydirektInputFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentCredentialsListFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentCredentialsListFragment.kt similarity index 91% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentCredentialsListFragment.kt rename to ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentCredentialsListFragment.kt index 50e90aa01f..f9dbc76c69 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentCredentialsListFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentCredentialsListFragment.kt @@ -1,15 +1,14 @@ -package io.snabble.sdk.ui.integration +package io.snabble.sdk.ui.fragment import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import io.snabble.sdk.PaymentMethod import io.snabble.sdk.Project import io.snabble.sdk.Snabble import io.snabble.sdk.payment.PaymentCredentials -import io.snabble.sdk.ui.payment.CreditCardInputView +import io.snabble.sdk.ui.R import io.snabble.sdk.ui.payment.PaymentCredentialsListView import java.util.ArrayList diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentOptionsFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentOptionsFragment.java similarity index 89% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentOptionsFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentOptionsFragment.java index 22de177a37..a4b7c4a2a8 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentOptionsFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentOptionsFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class PaymentOptionsFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentStatusFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentStatusFragment.java similarity index 90% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentStatusFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentStatusFragment.java index 4f388a5b87..0f654004b2 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PaymentStatusFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/PaymentStatusFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -7,6 +7,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class PaymentStatusFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PayoneInputFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/fragment/PayoneInputFragment.kt similarity index 95% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/PayoneInputFragment.kt rename to ui/src/main/java/io/snabble/sdk/ui/fragment/PayoneInputFragment.kt index 740f85c240..917d3f0f1c 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/PayoneInputFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/PayoneInputFragment.kt @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration +package io.snabble.sdk.ui.fragment import android.os.Bundle import android.view.LayoutInflater @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import io.snabble.sdk.PaymentMethod +import io.snabble.sdk.ui.R import io.snabble.sdk.ui.payment.Payone import io.snabble.sdk.ui.payment.PayoneInputView diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ProductSearchFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/ProductSearchFragment.java similarity index 88% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/ProductSearchFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/ProductSearchFragment.java index d59cb030a7..67a56299ed 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ProductSearchFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/ProductSearchFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -8,6 +8,8 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class ProductSearchFragment extends Fragment { @Override @NonNull diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ProjectPaymentOptionsFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/fragment/ProjectPaymentOptionsFragment.kt similarity index 83% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/ProjectPaymentOptionsFragment.kt rename to ui/src/main/java/io/snabble/sdk/ui/fragment/ProjectPaymentOptionsFragment.kt index 7be4d0d342..3d0ae4fccf 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ProjectPaymentOptionsFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/ProjectPaymentOptionsFragment.kt @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration +package io.snabble.sdk.ui.fragment import android.os.Bundle import android.view.LayoutInflater @@ -7,8 +7,8 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import io.snabble.sdk.Project import io.snabble.sdk.Snabble +import io.snabble.sdk.ui.R import io.snabble.sdk.ui.payment.ProjectPaymentOptionsView -import java.lang.RuntimeException open class ProjectPaymentOptionsFragment : Fragment() { companion object { @@ -26,7 +26,11 @@ open class ProjectPaymentOptionsFragment : Fragment() { } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - val v = inflater.inflate(R.layout.snabble_fragment_select_payment_project, container, false) as ProjectPaymentOptionsView + val v = inflater.inflate( + R.layout.snabble_fragment_select_payment_project, + container, + false + ) as ProjectPaymentOptionsView brand?.let { brand -> val projects = ArrayList() diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/SEPACardInputFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/SEPACardInputFragment.java similarity index 90% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/SEPACardInputFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/SEPACardInputFragment.java index 1e1d1b21c9..74480d9dac 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/SEPACardInputFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/SEPACardInputFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.os.Bundle; @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; + public class SEPACardInputFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/SelfScanningFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/fragment/SelfScanningFragment.kt similarity index 98% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/SelfScanningFragment.kt rename to ui/src/main/java/io/snabble/sdk/ui/fragment/SelfScanningFragment.kt index a61f68470b..2e965c6fff 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/SelfScanningFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/SelfScanningFragment.kt @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration +package io.snabble.sdk.ui.fragment import android.Manifest import android.content.Intent @@ -13,6 +13,7 @@ import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import io.snabble.sdk.codes.ScannedCode +import io.snabble.sdk.ui.R import io.snabble.sdk.ui.SnabbleUI import io.snabble.sdk.ui.scanner.SelfScanningView import io.snabble.sdk.ui.utils.setOneShotClickListener diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ShoppingCartFragment.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/ShoppingCartFragment.java similarity index 97% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/ShoppingCartFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/ShoppingCartFragment.java index 6c0c7e0baa..6a725c0960 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ShoppingCartFragment.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/ShoppingCartFragment.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.content.DialogInterface; import android.content.res.ColorStateList; @@ -14,6 +14,7 @@ import androidx.core.view.MenuItemCompat; import androidx.fragment.app.Fragment; +import io.snabble.sdk.ui.R; import io.snabble.sdk.ui.SnabbleUI; import io.snabble.sdk.ui.cart.ShoppingCartView; import io.snabble.sdk.ui.utils.UIUtils; diff --git a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ZebraSupport.java b/ui/src/main/java/io/snabble/sdk/ui/fragment/ZebraSupport.java similarity index 94% rename from ui-integration/src/main/java/io/snabble/sdk/ui/integration/ZebraSupport.java rename to ui/src/main/java/io/snabble/sdk/ui/fragment/ZebraSupport.java index ca2301aa3c..7e89e3a98c 100644 --- a/ui-integration/src/main/java/io/snabble/sdk/ui/integration/ZebraSupport.java +++ b/ui/src/main/java/io/snabble/sdk/ui/fragment/ZebraSupport.java @@ -1,4 +1,4 @@ -package io.snabble.sdk.ui.integration; +package io.snabble.sdk.ui.fragment; import android.app.Activity; import android.view.KeyEvent; diff --git a/ui-integration/src/main/res/layout/snabble_fragment_age_verification.xml b/ui/src/main/res/layout/snabble_fragment_age_verification.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_age_verification.xml rename to ui/src/main/res/layout/snabble_fragment_age_verification.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_cardinput_creditcard.xml b/ui/src/main/res/layout/snabble_fragment_cardinput_creditcard.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_cardinput_creditcard.xml rename to ui/src/main/res/layout/snabble_fragment_cardinput_creditcard.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_cardinput_payone.xml b/ui/src/main/res/layout/snabble_fragment_cardinput_payone.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_cardinput_payone.xml rename to ui/src/main/res/layout/snabble_fragment_cardinput_payone.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_cardinput_sepa.xml b/ui/src/main/res/layout/snabble_fragment_cardinput_sepa.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_cardinput_sepa.xml rename to ui/src/main/res/layout/snabble_fragment_cardinput_sepa.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_checkout_customercard.xml b/ui/src/main/res/layout/snabble_fragment_checkout_customercard.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_checkout_customercard.xml rename to ui/src/main/res/layout/snabble_fragment_checkout_customercard.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_checkout_gatekeeper.xml b/ui/src/main/res/layout/snabble_fragment_checkout_gatekeeper.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_checkout_gatekeeper.xml rename to ui/src/main/res/layout/snabble_fragment_checkout_gatekeeper.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_checkout_offline.xml b/ui/src/main/res/layout/snabble_fragment_checkout_offline.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_checkout_offline.xml rename to ui/src/main/res/layout/snabble_fragment_checkout_offline.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_checkout_online.xml b/ui/src/main/res/layout/snabble_fragment_checkout_online.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_checkout_online.xml rename to ui/src/main/res/layout/snabble_fragment_checkout_online.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_checkout_pos.xml b/ui/src/main/res/layout/snabble_fragment_checkout_pos.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_checkout_pos.xml rename to ui/src/main/res/layout/snabble_fragment_checkout_pos.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_paydirekt.xml b/ui/src/main/res/layout/snabble_fragment_paydirekt.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_paydirekt.xml rename to ui/src/main/res/layout/snabble_fragment_paydirekt.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_payment_credentials_list.xml b/ui/src/main/res/layout/snabble_fragment_payment_credentials_list.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_payment_credentials_list.xml rename to ui/src/main/res/layout/snabble_fragment_payment_credentials_list.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_payment_options.xml b/ui/src/main/res/layout/snabble_fragment_payment_options.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_payment_options.xml rename to ui/src/main/res/layout/snabble_fragment_payment_options.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_payment_status.xml b/ui/src/main/res/layout/snabble_fragment_payment_status.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_payment_status.xml rename to ui/src/main/res/layout/snabble_fragment_payment_status.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_productsearch.xml b/ui/src/main/res/layout/snabble_fragment_productsearch.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_productsearch.xml rename to ui/src/main/res/layout/snabble_fragment_productsearch.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_select_payment_project.xml b/ui/src/main/res/layout/snabble_fragment_select_payment_project.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_select_payment_project.xml rename to ui/src/main/res/layout/snabble_fragment_select_payment_project.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_selfscanning.xml b/ui/src/main/res/layout/snabble_fragment_selfscanning.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_selfscanning.xml rename to ui/src/main/res/layout/snabble_fragment_selfscanning.xml diff --git a/ui-integration/src/main/res/layout/snabble_fragment_shoppingcart.xml b/ui/src/main/res/layout/snabble_fragment_shoppingcart.xml similarity index 100% rename from ui-integration/src/main/res/layout/snabble_fragment_shoppingcart.xml rename to ui/src/main/res/layout/snabble_fragment_shoppingcart.xml diff --git a/ui-integration/src/main/res/menu/snabble_menu_barcode_search.xml b/ui/src/main/res/menu/snabble_menu_barcode_search.xml similarity index 100% rename from ui-integration/src/main/res/menu/snabble_menu_barcode_search.xml rename to ui/src/main/res/menu/snabble_menu_barcode_search.xml diff --git a/ui-integration/src/main/res/menu/snabble_menu_scanner.xml b/ui/src/main/res/menu/snabble_menu_scanner.xml similarity index 100% rename from ui-integration/src/main/res/menu/snabble_menu_scanner.xml rename to ui/src/main/res/menu/snabble_menu_scanner.xml diff --git a/ui-integration/src/main/res/menu/snabble_menu_shopping_cart.xml b/ui/src/main/res/menu/snabble_menu_shopping_cart.xml similarity index 100% rename from ui-integration/src/main/res/menu/snabble_menu_shopping_cart.xml rename to ui/src/main/res/menu/snabble_menu_shopping_cart.xml diff --git a/ui-integration/src/main/res/xml/snabble_searchable.xml b/ui/src/main/res/xml/snabble_searchable.xml similarity index 100% rename from ui-integration/src/main/res/xml/snabble_searchable.xml rename to ui/src/main/res/xml/snabble_searchable.xml From b2b1259a5c41f2a66ddbddd35269bf4b28857287 Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Wed, 8 Dec 2021 16:34:33 +0100 Subject: [PATCH 02/41] add checkout activity --- ui/build.gradle | 5 + ui/src/main/AndroidManifest.xml | 4 + .../io/snabble/sdk/ui/cart/CheckoutBar.kt | 6 +- .../sdk/ui/checkout/CheckoutActivity.kt | 126 ++++++++++++++++++ .../ui/checkout/CheckoutGatekeeperView.java | 1 + .../sdk/ui/checkout/CheckoutHelper.java | 46 ------- .../sdk/ui/checkout/PaymentStatusView.kt | 3 +- .../drawable-hdpi/snabble_ic_camera_large.png | Bin 0 -> 3052 bytes .../drawable-mdpi/snabble_ic_camera_large.png | Bin 0 -> 1953 bytes .../snabble_ic_camera_large.png | Bin 0 -> 4005 bytes .../snabble_ic_camera_large.png | Bin 0 -> 6204 bytes .../snabble_ic_camera_large.png | Bin 0 -> 8255 bytes .../res/layout/snabble_activity_checkout.xml | 12 ++ .../res/navigation/snabble_nav_checkout.xml | 45 +++++++ 14 files changed, 199 insertions(+), 49 deletions(-) create mode 100644 ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt delete mode 100644 ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.java create mode 100644 ui/src/main/res/drawable-hdpi/snabble_ic_camera_large.png create mode 100644 ui/src/main/res/drawable-mdpi/snabble_ic_camera_large.png create mode 100644 ui/src/main/res/drawable-xhdpi/snabble_ic_camera_large.png create mode 100644 ui/src/main/res/drawable-xxhdpi/snabble_ic_camera_large.png create mode 100644 ui/src/main/res/drawable-xxxhdpi/snabble_ic_camera_large.png create mode 100644 ui/src/main/res/layout/snabble_activity_checkout.xml create mode 100644 ui/src/main/res/navigation/snabble_nav_checkout.xml diff --git a/ui/build.gradle b/ui/build.gradle index a19300df2f..a6dc750581 100644 --- a/ui/build.gradle +++ b/ui/build.gradle @@ -76,6 +76,11 @@ dependencies { implementation "androidx.camera:camera-view:1.0.0-alpha30" implementation "androidx.camera:camera-extensions:1.0.0-alpha30" + def navigation_version = "2.4.0-beta02" + implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version" + implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version" + implementation "androidx.navigation:navigation-ui-ktx:$navigation_version" + //noinspection GradleDependency implementation 'commons-io:commons-io:2.5' //noinspection GradleDependency diff --git a/ui/src/main/AndroidManifest.xml b/ui/src/main/AndroidManifest.xml index cd1892303c..0aead46009 100644 --- a/ui/src/main/AndroidManifest.xml +++ b/ui/src/main/AndroidManifest.xml @@ -10,6 +10,10 @@ android:name=".payment.SEPACardInputActivity" android:exported="false" /> + + { + return R.id.snabble_nav_checkout_online + } + PaymentMethod.GATEKEEPER_TERMINAL -> { + return R.id.snabble_nav_checkout_gatekeeper + } + PaymentMethod.QRCODE_POS -> { + return R.id.snabble_nav_checkout_pos + } + PaymentMethod.CUSTOMERCARD_POS -> { + return R.id.snabble_nav_checkout_customercard + } + PaymentMethod.QRCODE_OFFLINE -> { + return R.id.snabble_nav_checkout_offline + } + } + } + } else { + return R.id.snabble_nav_payment_status + } + + return null + } + + private fun onStateChanged() { + val navigationId = getNavigationId() ?: return + val currentNavigationId = navController.currentDestination?.id + if (currentNavigationId == navigationId) return + + navController.navigate(navigationId, + args = null, + navOptions = NavOptions.Builder().apply { + setPopUpTo(currentNavigationId ?: 0, + inclusive = true, + saveState = false + ) + }.build()) + } +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java index 25974899cb..3280b067db 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java @@ -171,6 +171,7 @@ public void onStateChanged(Checkout.State state) { String id = checkout.getId(); if (id != null) { checkoutIdCode.setText("snabble:checkoutProcess:" + id); + Logger.d("SCO_CODE = snabble:checkoutProcess:" + id); } break; case PAYMENT_PROCESSING: diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.java deleted file mode 100644 index 07ada2819e..0000000000 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.snabble.sdk.ui.checkout; - -import androidx.fragment.app.FragmentActivity; - -import io.snabble.sdk.Checkout; -import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.payment.Datatrans; -import io.snabble.sdk.utils.Logger; - -public class CheckoutHelper { - public static void displayPaymentView(FragmentActivity activity, Checkout checkout) { - SnabbleUI.Callback callback = SnabbleUI.getUiCallback(); - if (callback == null) { - Logger.e("ui action could not be performed: callback is null"); - return; - } - - if (checkout != null && checkout.getSelectedPaymentMethod() != null) { - switch (checkout.getSelectedPaymentMethod()) { - case TEGUT_EMPLOYEE_CARD: - case DE_DIRECT_DEBIT: - case VISA: - case MASTERCARD: - case AMEX: - case PAYDIREKT: - case TWINT: - case POST_FINANCE_CARD: - case GOOGLE_PAY: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_CHECKOUT_ONLINE); - break; - case GATEKEEPER_TERMINAL: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_CHECKOUT_GATEKEEPER); - break; - case QRCODE_POS: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_CHECKOUT_POINT_OF_SALE); - break; - case CUSTOMERCARD_POS: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_CHECKOUT_CUSTOMERCARD); - break; - case QRCODE_OFFLINE: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_CHECKOUT_OFFLINE); - break; - } - } - } -} diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt index aa79c15b73..74d593ed13 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt @@ -28,6 +28,7 @@ import io.snabble.sdk.PaymentOriginCandidateHelper.PaymentOriginCandidate import io.snabble.sdk.PaymentOriginCandidateHelper.PaymentOriginCandidateAvailableListener import io.snabble.sdk.ui.payment.SEPACardInputActivity import io.snabble.sdk.ui.payment.SEPACardInputView +import io.snabble.sdk.ui.utils.requireFragmentActivity @Suppress("LeakingThis") @@ -65,7 +66,7 @@ open class PaymentStatusView @JvmOverloads constructor( binding.back.isEnabled = false binding.back.setOnClickListener { - executeUiAction(SnabbleUI.Action.SHOW_PAYMENT_DONE, null) + requireFragmentActivity().finish() } checkout.checkoutState.observeView(this) { diff --git a/ui/src/main/res/drawable-hdpi/snabble_ic_camera_large.png b/ui/src/main/res/drawable-hdpi/snabble_ic_camera_large.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb284e46187962fb8dabeb651e6327d7b2e29b9 GIT binary patch literal 3052 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 LNkvXXu0mjfp54Jq literal 0 HcmV?d00001 diff --git a/ui/src/main/res/drawable-xxhdpi/snabble_ic_camera_large.png b/ui/src/main/res/drawable-xxhdpi/snabble_ic_camera_large.png new file mode 100644 index 0000000000000000000000000000000000000000..0a01b50d91bd1d2d3e4b0de74ea2d3b655bc63dd GIT binary patch literal 6204 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 + + + \ No newline at end of file diff --git a/ui/src/main/res/navigation/snabble_nav_checkout.xml b/ui/src/main/res/navigation/snabble_nav_checkout.xml new file mode 100644 index 0000000000..570b700011 --- /dev/null +++ b/ui/src/main/res/navigation/snabble_nav_checkout.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 5d5871f1dcf668e60459b74ddc33ea15a91af8bb Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Wed, 8 Dec 2021 16:36:38 +0100 Subject: [PATCH 03/41] move fragments to corresponding packages --- .../testapp/AgeVerificationActivity.java | 2 +- .../java/io/snabble/testapp/BaseActivity.java | 2 +- .../testapp/CheckoutCustomerCardActivity.java | 2 +- .../testapp/CheckoutGatekeeperActivity.java | 2 +- .../testapp/CheckoutOfflineActivity.java | 2 +- .../testapp/CheckoutOnlineActivity.java | 2 +- .../snabble/testapp/CheckoutPOSActivity.java | 2 +- .../testapp/CreditCardInputActivity.java | 2 +- .../testapp/PaydirektInputActivity.java | 2 +- .../PaymentCredentialsListActivity.java | 2 +- .../testapp/PaymentOptionsActivity.java | 2 +- .../testapp/PaymentStatusActivity.java | 2 +- .../snabble/testapp/PayoneInputActivity.java | 2 +- .../testapp/ProductSearchActivity.java | 2 +- .../ProjectPaymentOptionsActivity.java | 2 +- .../testapp/SEPACardInputActivity.java | 2 +- .../snabble/testapp/SelfScanningActivity.java | 2 +- .../snabble/testapp/ShoppingCartActivity.java | 2 +- .../io/snabble/sdk/sample/MainActivity.kt | 2 +- .../main/res/navigation/mobile_navigation.xml | 28 +++++++++---------- .../ShoppingCartFragment.java | 2 +- .../CheckoutCustomerCardFragment.java | 2 +- .../CheckoutGatekeeperFragment.java | 2 +- .../CheckoutOfflineFragment.java | 2 +- .../CheckoutOnlineFragment.java | 2 +- .../CheckoutPOSFragment.java | 2 +- .../AgeVerificationInputFragment.java | 2 +- .../CreditCardInputFragment.kt | 3 +- .../PaydirektInputFragment.java | 2 +- .../PaymentCredentialsListFragment.kt | 3 +- .../PaymentOptionsFragment.java | 2 +- .../PaymentStatusFragment.java | 2 +- .../PayoneInputFragment.kt | 4 +-- .../ProjectPaymentOptionsFragment.kt | 3 +- .../SEPACardInputFragment.java | 2 +- .../SelfScanningFragment.kt | 3 +- .../ProductSearchFragment.java | 2 +- .../ui/{fragment => utils}/ZebraSupport.java | 2 +- .../res/navigation/snabble_nav_checkout.xml | 12 ++++---- 39 files changed, 57 insertions(+), 63 deletions(-) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => cart}/ShoppingCartFragment.java (98%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => checkout}/CheckoutCustomerCardFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => checkout}/CheckoutGatekeeperFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => checkout}/CheckoutOfflineFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => checkout}/CheckoutOnlineFragment.java (95%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => checkout}/CheckoutPOSFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/AgeVerificationInputFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/CreditCardInputFragment.kt (92%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/PaydirektInputFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/PaymentCredentialsListFragment.kt (93%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/PaymentOptionsFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/PaymentStatusFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/PayoneInputFragment.kt (91%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/ProjectPaymentOptionsFragment.kt (93%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => payment}/SEPACardInputFragment.java (94%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => scanner}/SelfScanningFragment.kt (98%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => search}/ProductSearchFragment.java (93%) rename ui/src/main/java/io/snabble/sdk/ui/{fragment => utils}/ZebraSupport.java (95%) diff --git a/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java b/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java index fc5c71b208..9e2f5c14ce 100644 --- a/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/AgeVerificationActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.AgeVerificationInputFragment; +import io.snabble.sdk.ui.payment.AgeVerificationInputFragment; public class AgeVerificationActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java index c431fda5f7..6bc331582a 100644 --- a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java @@ -12,7 +12,7 @@ import io.snabble.sdk.codes.ScannedCode; import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.fragment.ZebraSupport; +import io.snabble.sdk.ui.utils.ZebraSupport; import io.snabble.sdk.ui.scanner.ProductResolver; public abstract class BaseActivity extends AppCompatActivity implements SnabbleUI.Callback { diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java index 1bd56fa55f..ee9bc48af0 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.CheckoutCustomerCardFragment; +import io.snabble.sdk.ui.checkout.CheckoutCustomerCardFragment; public class CheckoutCustomerCardActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java index 8d47d39a52..21927202d1 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.CheckoutGatekeeperFragment; +import io.snabble.sdk.ui.checkout.CheckoutGatekeeperFragment; public class CheckoutGatekeeperActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java index 28d27d7071..34c360b82b 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.CheckoutOfflineFragment; +import io.snabble.sdk.ui.checkout.CheckoutOfflineFragment; public class CheckoutOfflineActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java index 3c4aedc8ff..c7e92dcf8b 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java @@ -4,7 +4,7 @@ import io.snabble.sdk.Checkout; import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.fragment.CheckoutOnlineFragment; +import io.snabble.sdk.ui.checkout.CheckoutOnlineFragment; public class CheckoutOnlineActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java index 85d12961b8..372c954378 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.CheckoutPOSFragment; +import io.snabble.sdk.ui.checkout.CheckoutPOSFragment; public class CheckoutPOSActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java index 9999017f2f..4a7c96f77e 100644 --- a/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/CreditCardInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.CreditCardInputFragment; +import io.snabble.sdk.ui.payment.CreditCardInputFragment; public class CreditCardInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java index 760ed3709e..1ea6947b2b 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaydirektInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.PaydirektInputFragment; +import io.snabble.sdk.ui.payment.PaydirektInputFragment; public class PaydirektInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java index ad90f8a851..f6c6468949 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaymentCredentialsListActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.PaymentCredentialsListFragment; +import io.snabble.sdk.ui.payment.PaymentCredentialsListFragment; public class PaymentCredentialsListActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java index 7ea5dcbd1c..78b83ea49c 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaymentOptionsActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.PaymentOptionsFragment; +import io.snabble.sdk.ui.payment.PaymentOptionsFragment; public class PaymentOptionsActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java index fbf4deaa99..f096479b00 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.PaymentStatusFragment; +import io.snabble.sdk.ui.payment.PaymentStatusFragment; public class PaymentStatusActivity extends BaseActivity{ @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java index 586637aa52..d6bd816adf 100644 --- a/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/PayoneInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.PayoneInputFragment; +import io.snabble.sdk.ui.payment.PayoneInputFragment; public class PayoneInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java b/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java index 6b5d92883d..4f291d8dcc 100644 --- a/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/ProductSearchActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.ProductSearchFragment; +import io.snabble.sdk.ui.search.ProductSearchFragment; public class ProductSearchActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java b/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java index 299265c3dd..ae662bccf9 100644 --- a/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/ProjectPaymentOptionsActivity.java @@ -1,7 +1,7 @@ package io.snabble.testapp; import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.ProjectPaymentOptionsFragment; +import io.snabble.sdk.ui.payment.ProjectPaymentOptionsFragment; public class ProjectPaymentOptionsActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java b/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java index 64d7e7aa2a..94d33e8534 100644 --- a/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/SEPACardInputActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.SEPACardInputFragment; +import io.snabble.sdk.ui.payment.SEPACardInputFragment; public class SEPACardInputActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java b/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java index 93ec421bd7..1f140769a3 100644 --- a/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/SelfScanningActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.SelfScanningFragment; +import io.snabble.sdk.ui.scanner.SelfScanningFragment; public class SelfScanningActivity extends BaseActivity { @Override diff --git a/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java b/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java index 9616ce48ff..5ec385c156 100644 --- a/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/ShoppingCartActivity.java @@ -2,7 +2,7 @@ import androidx.fragment.app.Fragment; -import io.snabble.sdk.ui.fragment.ShoppingCartFragment; +import io.snabble.sdk.ui.cart.ShoppingCartFragment; public class ShoppingCartActivity extends BaseActivity { @Override diff --git a/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt b/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt index 9ea154f5fa..4f8276e10a 100644 --- a/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt +++ b/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt @@ -13,7 +13,7 @@ import androidx.navigation.ui.setupWithNavController import com.google.android.material.bottomnavigation.BottomNavigationView import io.snabble.sdk.Snabble import io.snabble.sdk.ui.SnabbleUI -import io.snabble.sdk.ui.fragment.SelfScanningFragment +import io.snabble.sdk.ui.scanner.SelfScanningFragment class MainActivity : AppCompatActivity() { private lateinit var navView: BottomNavigationView diff --git a/kotlin-sample/src/main/res/navigation/mobile_navigation.xml b/kotlin-sample/src/main/res/navigation/mobile_navigation.xml index 6cab085972..7d25a2d2cd 100644 --- a/kotlin-sample/src/main/res/navigation/mobile_navigation.xml +++ b/kotlin-sample/src/main/res/navigation/mobile_navigation.xml @@ -12,74 +12,74 @@ From f1e58a169ba070591bad8d05f39eceeb83b37f89 Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Wed, 8 Dec 2021 16:46:57 +0100 Subject: [PATCH 04/41] Rename .java to .kt --- .../cart/{ShoppingCartFragment.java => ShoppingCartFragment.kt} | 0 ...tCustomerCardFragment.java => CheckoutCustomerCardFragment.kt} | 0 ...ckoutGatekeeperFragment.java => CheckoutGatekeeperFragment.kt} | 0 .../{CheckoutOfflineFragment.java => CheckoutOfflineFragment.kt} | 0 .../{CheckoutOnlineFragment.java => CheckoutOnlineFragment.kt} | 0 .../checkout/{CheckoutPOSFragment.java => CheckoutPOSFragment.kt} | 0 ...ficationInputFragment.java => AgeVerificationInputFragment.kt} | 0 .../{PaydirektInputFragment.java => PaydirektInputFragment.kt} | 0 .../{PaymentOptionsFragment.java => PaymentOptionsFragment.kt} | 0 .../{PaymentStatusFragment.java => PaymentStatusFragment.kt} | 0 .../{SEPACardInputFragment.java => SEPACardInputFragment.kt} | 0 .../{ProductSearchFragment.java => ProductSearchFragment.kt} | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename ui/src/main/java/io/snabble/sdk/ui/cart/{ShoppingCartFragment.java => ShoppingCartFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/checkout/{CheckoutCustomerCardFragment.java => CheckoutCustomerCardFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/checkout/{CheckoutGatekeeperFragment.java => CheckoutGatekeeperFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/checkout/{CheckoutOfflineFragment.java => CheckoutOfflineFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/checkout/{CheckoutOnlineFragment.java => CheckoutOnlineFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/checkout/{CheckoutPOSFragment.java => CheckoutPOSFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/payment/{AgeVerificationInputFragment.java => AgeVerificationInputFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/payment/{PaydirektInputFragment.java => PaydirektInputFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/payment/{PaymentOptionsFragment.java => PaymentOptionsFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/payment/{PaymentStatusFragment.java => PaymentStatusFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/payment/{SEPACardInputFragment.java => SEPACardInputFragment.kt} (100%) rename ui/src/main/java/io/snabble/sdk/ui/search/{ProductSearchFragment.java => ProductSearchFragment.kt} (100%) diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.java b/ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.java b/ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.java b/ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.java b/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.java b/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.java b/ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.kt diff --git a/ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.java b/ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.kt similarity index 100% rename from ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.java rename to ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.kt From 97c516ac23f471231374b4507eff2207971b5c3d Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Wed, 8 Dec 2021 16:46:58 +0100 Subject: [PATCH 05/41] convert fragments to kotlin --- .../sdk/ui/cart/ShoppingCartFragment.kt | 118 ++++++++---------- .../checkout/CheckoutCustomerCardFragment.kt | 36 +++--- .../ui/checkout/CheckoutGatekeeperFragment.kt | 36 +++--- .../ui/checkout/CheckoutOfflineFragment.kt | 36 +++--- .../sdk/ui/checkout/CheckoutOnlineFragment.kt | 46 +++---- .../sdk/ui/checkout/CheckoutPOSFragment.kt | 36 +++--- .../payment/AgeVerificationInputFragment.kt | 35 +++--- .../sdk/ui/payment/PaydirektInputFragment.kt | 37 +++--- .../sdk/ui/payment/PaymentOptionsFragment.kt | 35 +++--- .../sdk/ui/payment/PaymentStatusFragment.kt | 36 +++--- .../sdk/ui/payment/SEPACardInputFragment.kt | 37 +++--- .../sdk/ui/search/ProductSearchFragment.kt | 31 +++-- 12 files changed, 248 insertions(+), 271 deletions(-) diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.kt index 75937bcf43..df5fce9fc9 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/cart/ShoppingCartFragment.kt @@ -1,79 +1,59 @@ -package io.snabble.sdk.ui.cart; - -import android.content.DialogInterface; -import android.content.res.ColorStateList; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -import androidx.appcompat.app.AlertDialog; -import androidx.core.view.MenuItemCompat; -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; -import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.cart.ShoppingCartView; -import io.snabble.sdk.ui.utils.UIUtils; - -public class ShoppingCartFragment extends Fragment { - private ShoppingCartView shoppingCartView; - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +package io.snabble.sdk.ui.cart + +import android.os.Bundle +import io.snabble.sdk.ui.R +import io.snabble.sdk.ui.utils.UIUtils +import android.content.res.ColorStateList +import android.view.* +import androidx.appcompat.app.AlertDialog +import androidx.core.view.MenuItemCompat +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.SnabbleUI + +open class ShoppingCartFragment : Fragment() { + var shoppingCartView: ShoppingCartView? = null + private set + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.snabble_fragment_shoppingcart, container, false); - - shoppingCartView = v.findViewById(R.id.shopping_cart_view); - - return v; + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val v = inflater.inflate(R.layout.snabble_fragment_shoppingcart, container, false) + shoppingCartView = v.findViewById(R.id.shopping_cart_view) + return v } - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.snabble_menu_shopping_cart, menu); - - for (int i=0; i + SnabbleUI.getProject().shoppingCart.clearBackup() + SnabbleUI.getProject().shoppingCart.clear() + onCartCleared() + } + .setNegativeButton(R.string.Snabble_No, null) + .create() + .show() + return true } - - return false; - } - - public void onCartCleared() { - + return false } - public ShoppingCartView getShoppingCartView() { - return shoppingCartView; - } -} + open fun onCartCleared() {} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.kt index f55c0851cd..451ff8ede1 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardFragment.kt @@ -1,23 +1,23 @@ -package io.snabble.sdk.ui.checkout; +package io.snabble.sdk.ui.checkout -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class CheckoutCustomerCardFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class CheckoutCustomerCardFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_checkout_customercard, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_checkout_customercard, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.kt index af16029daf..520e0826bb 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperFragment.kt @@ -1,23 +1,23 @@ -package io.snabble.sdk.ui.checkout; +package io.snabble.sdk.ui.checkout -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class CheckoutGatekeeperFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class CheckoutGatekeeperFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_checkout_gatekeeper, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_checkout_gatekeeper, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.kt index e647a33d5a..f7b12e9ab8 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineFragment.kt @@ -1,23 +1,23 @@ -package io.snabble.sdk.ui.checkout; +package io.snabble.sdk.ui.checkout -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class CheckoutOfflineFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class CheckoutOfflineFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_checkout_offline, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_checkout_offline, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.kt index 3286b772bd..e2ce555186 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineFragment.kt @@ -1,27 +1,29 @@ -package io.snabble.sdk.ui.checkout; +package io.snabble.sdk.ui.checkout -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; -import io.snabble.sdk.ui.checkout.CheckoutOnlineView; - -public class CheckoutOnlineFragment extends Fragment { - private CheckoutOnlineView view; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class CheckoutOnlineFragment : Fragment() { + private var view: CheckoutOnlineView? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - view = (CheckoutOnlineView) inflater.inflate(R.layout.snabble_fragment_checkout_online, container, false); - return view; + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + view = inflater.inflate( + R.layout.snabble_fragment_checkout_online, + container, + false + ) as CheckoutOnlineView + return view } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.kt index d9fc40640e..dab5bafc5d 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPOSFragment.kt @@ -1,23 +1,23 @@ -package io.snabble.sdk.ui.checkout; +package io.snabble.sdk.ui.checkout -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class CheckoutPOSFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class CheckoutPOSFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_checkout_pos, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_checkout_pos, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.kt index 297c28c2f8..0f7b3fe987 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/payment/AgeVerificationInputFragment.kt @@ -1,23 +1,22 @@ -package io.snabble.sdk.ui.payment; +package io.snabble.sdk.ui.payment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class AgeVerificationInputFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); +open class AgeVerificationInputFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_age_verification, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_age_verification, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.kt index aa0e030db3..49c95a0ec9 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/payment/PaydirektInputFragment.kt @@ -1,24 +1,23 @@ -package io.snabble.sdk.ui.payment; +package io.snabble.sdk.ui.payment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class PaydirektInputFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class PaydirektInputFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_paydirekt, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_paydirekt, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.kt index 29a7c89041..9f87f13926 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentOptionsFragment.kt @@ -1,23 +1,22 @@ -package io.snabble.sdk.ui.payment; +package io.snabble.sdk.ui.payment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class PaymentOptionsFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); +open class PaymentOptionsFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_payment_options, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_payment_options, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.kt index b98ecc8e24..1f9a45950a 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/payment/PaymentStatusFragment.kt @@ -1,23 +1,23 @@ -package io.snabble.sdk.ui.payment; +package io.snabble.sdk.ui.payment -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class PaymentStatusFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class PaymentStatusFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_payment_status, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_payment_status, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.kt index 9b08c7b75a..1a5510b826 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/payment/SEPACardInputFragment.kt @@ -1,24 +1,23 @@ -package io.snabble.sdk.ui.payment; +package io.snabble.sdk.ui.payment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class SEPACardInputFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); +open class SEPACardInputFragment : Fragment() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setHasOptionsMenu(true) } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_cardinput_sepa, container, false); + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.snabble_fragment_cardinput_sepa, container, false) } -} +} \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.kt b/ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.kt index a7b14ca8fd..b80805b90c 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchFragment.kt @@ -1,19 +1,18 @@ -package io.snabble.sdk.ui.search; +package io.snabble.sdk.ui.search -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; +import android.view.LayoutInflater +import android.view.ViewGroup +import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment +import io.snabble.sdk.ui.R -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.R; - -public class ProductSearchFragment extends Fragment { - @Override - @NonNull - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.snabble_fragment_productsearch, container, false); +open class ProductSearchFragment : Fragment() { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + return inflater.inflate(R.layout.snabble_fragment_productsearch, container, false) } -} +} \ No newline at end of file From 4ad2e3e1b03a519e2f03b1963c6fad0af1789e89 Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Thu, 9 Dec 2021 12:40:58 +0100 Subject: [PATCH 06/41] simplify checkout view orchestration --- .../java/io/snabble/testapp/BaseActivity.java | 54 ++------------- .../java/io/snabble/sdk/ui/SnabbleUI.java | 7 +- .../io/snabble/sdk/ui/cart/CheckoutBar.kt | 32 +++------ .../ui/checkout/CheckoutCustomerCardView.java | 60 +--------------- .../ui/checkout/CheckoutGatekeeperView.java | 24 ------- .../sdk/ui/checkout/CheckoutOfflineView.java | 68 +------------------ .../sdk/ui/checkout/CheckoutOnlineView.java | 13 ---- .../ui/checkout/CheckoutPointOfSaleView.java | 30 +------- 8 files changed, 21 insertions(+), 267 deletions(-) diff --git a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java index 6bc331582a..12d9a37c84 100644 --- a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java @@ -12,6 +12,7 @@ import io.snabble.sdk.codes.ScannedCode; import io.snabble.sdk.ui.SnabbleUI; +import io.snabble.sdk.ui.checkout.CheckoutActivity; import io.snabble.sdk.ui.utils.ZebraSupport; import io.snabble.sdk.ui.scanner.ProductResolver; @@ -110,23 +111,8 @@ public void execute(SnabbleUI.Action action, Bundle args) { case SHOW_BARCODE_SEARCH: showBarcodeSearch(); break; - case SHOW_CHECKOUT_GATEKEEPER: - showCheckoutGatekeeper(); - break; - case SHOW_CHECKOUT_ONLINE: - showCheckoutOnline(); - break; - case SHOW_CHECKOUT_OFFLINE: - showCheckoutOffline(); - break; - case SHOW_CHECKOUT_CUSTOMERCARD: - showCheckoutCustomerCard(); - break; - case SHOW_CHECKOUT_POINT_OF_SALE: - showCheckoutQRCodePOS(); - break; - case SHOW_PAYMENT_STATUS: - showPaymentStatus(); + case SHOW_CHECKOUT: + showCheckout(args); break; case SHOW_PAYMENT_DONE: showPaymentDone(); @@ -169,33 +155,10 @@ public void showScanner() { startActivity(intent); } - public void showCheckoutOffline() { - Intent intent = new Intent(this, CheckoutOfflineActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - startActivity(intent); - } - - public void showCheckoutCustomerCard() { - Intent intent = new Intent(this, CheckoutCustomerCardActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - startActivity(intent); - } - - public void showCheckoutGatekeeper() { - Intent intent = new Intent(this, CheckoutGatekeeperActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - startActivity(intent); - } - - public void showCheckoutOnline() { - Intent intent = new Intent(this, CheckoutOnlineActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - startActivity(intent); - } - - public void showCheckoutQRCodePOS() { - Intent intent = new Intent(this, CheckoutPOSActivity.class); + public void showCheckout(Bundle args) { + Intent intent = new Intent(this, CheckoutActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + intent.putExtras(args); startActivity(intent); } @@ -205,11 +168,6 @@ public void showPaymentDone() { startActivity(intent); } - public void showPaymentStatus() { - Intent intent = new Intent(this, PaymentStatusActivity.class); - startActivity(intent); - } - public void showScannerWithCode(Bundle args) { Intent intent = new Intent(this, SelfScanningActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java b/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java index 878f62bdcb..bd7014216b 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java +++ b/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java @@ -16,12 +16,7 @@ public class SnabbleUI { public enum Action { - SHOW_CHECKOUT_ONLINE, - SHOW_CHECKOUT_OFFLINE, - SHOW_CHECKOUT_CUSTOMERCARD, - SHOW_CHECKOUT_POINT_OF_SALE, - SHOW_CHECKOUT_GATEKEEPER, - SHOW_PAYMENT_STATUS, + SHOW_CHECKOUT, SHOW_PAYMENT_DONE, SHOW_SCANNER, SHOW_BARCODE_SEARCH, diff --git a/ui/src/main/java/io/snabble/sdk/ui/cart/CheckoutBar.kt b/ui/src/main/java/io/snabble/sdk/ui/cart/CheckoutBar.kt index ee2bdf2b98..088482cf76 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/cart/CheckoutBar.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/cart/CheckoutBar.kt @@ -308,32 +308,18 @@ open class CheckoutBar @JvmOverloads constructor( } else { project.checkout.abort() } - } else if (state == Checkout.State.WAIT_FOR_APPROVAL) { - context.startActivity(Intent(context, CheckoutActivity::class.java).apply { - putExtra(CheckoutActivity.ARG_PROJECT_ID, project.id) + } else if (state == Checkout.State.WAIT_FOR_APPROVAL + || state == Checkout.State.PAYMENT_PROCESSING + || state == Checkout.State.PAYMENT_APPROVED + || state == Checkout.State.DENIED_BY_PAYMENT_PROVIDER + || state == Checkout.State.DENIED_BY_SUPERVISOR + || state == Checkout.State.PAYMENT_PROCESSING + ) { + executeUiAction(SnabbleUI.Action.SHOW_CHECKOUT, Bundle().apply { + putString(CheckoutActivity.ARG_PROJECT_ID, project.id) }) progressDialog.dismiss() unregisterListeners() - } else if (state == Checkout.State.PAYMENT_PROCESSING) { - Telemetry.event(Telemetry.Event.CheckoutSuccessful) - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS) - progressDialog.dismiss() - unregisterListeners() - } else if (state == Checkout.State.PAYMENT_APPROVED) { - Telemetry.event(Telemetry.Event.CheckoutSuccessful) - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS) - progressDialog.dismiss() - unregisterListeners() - } else if (state == Checkout.State.DENIED_BY_PAYMENT_PROVIDER) { - Telemetry.event(Telemetry.Event.CheckoutDeniedByPaymentProvider) - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS) - progressDialog.dismiss() - unregisterListeners() - } else if (state == Checkout.State.DENIED_BY_SUPERVISOR) { - Telemetry.event(Telemetry.Event.CheckoutDeniedBySupervisor) - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS) - progressDialog.dismiss() - unregisterListeners() } else if (state == Checkout.State.INVALID_PRODUCTS) { val invalidProducts = project.checkout.invalidProducts if (invalidProducts != null && invalidProducts.size > 0) { diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java index 7e420fcec2..a5bf84a952 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java @@ -35,11 +35,9 @@ import io.snabble.sdk.utils.Logger; import me.relex.circleindicator.CircleIndicator3; -public class CheckoutCustomerCardView extends FrameLayout implements Checkout.OnCheckoutStateChangedListener { +public class CheckoutCustomerCardView extends FrameLayout { private Project project; private Button paidButton; - private Checkout checkout; - private Checkout.State currentState; private View helperText; private ImageView helperImage; private View upArrow; @@ -62,7 +60,6 @@ public CheckoutCustomerCardView(Context context, AttributeSet attrs, int defStyl private void init() { project = SnabbleUI.getProject(); - checkout = SnabbleUI.getProject().getCheckout(); inflate(getContext(), R.layout.snabble_view_checkout_customercard, this); @@ -91,7 +88,6 @@ public void click() { } barcodeView.setText(project.getCustomerCardId()); - onStateChanged(checkout.getState()); } @SuppressLint("DrawAllocation") @@ -128,58 +124,4 @@ public void setHelperImage(Bitmap bitmap) { helperText.setVisibility(View.VISIBLE); } } - - @Override - public void onStateChanged(Checkout.State state) { - if (state == currentState) { - return; - } - - switch (state) { - case PAYMENT_APPROVED: - if (currentState == Checkout.State.PAYMENT_APPROVED) { - break; - } - Telemetry.event(Telemetry.Event.CheckoutSuccessful); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_ABORTED: - Telemetry.event(Telemetry.Event.CheckoutAbortByUser); - SnabbleUI.executeAction(SnabbleUI.Action.GO_BACK); - break; - case DENIED_BY_PAYMENT_PROVIDER: - Telemetry.event(Telemetry.Event.CheckoutDeniedByPaymentProvider); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case DENIED_BY_SUPERVISOR: - Telemetry.event(Telemetry.Event.CheckoutDeniedBySupervisor); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_PROCESSING: - case PAYMENT_PROCESSING_ERROR: - case DENIED_TOO_YOUNG: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - } - - currentState = state; - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - - if (checkout != null) { - checkout.addOnCheckoutStateChangedListener(this); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - - if (checkout != null) { - checkout.removeOnCheckoutStateChangedListener(this); - } - } } diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java index 3280b067db..e92d8c2781 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutGatekeeperView.java @@ -171,7 +171,6 @@ public void onStateChanged(Checkout.State state) { String id = checkout.getId(); if (id != null) { checkoutIdCode.setText("snabble:checkoutProcess:" + id); - Logger.d("SCO_CODE = snabble:checkoutProcess:" + id); } break; case PAYMENT_PROCESSING: @@ -196,29 +195,6 @@ public void onStateChanged(Checkout.State state) { .create() .show(); break; - case PAYMENT_APPROVED: - if (currentState == Checkout.State.PAYMENT_APPROVED) { - break; - } - Telemetry.event(Telemetry.Event.CheckoutSuccessful); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_ABORTED: - Telemetry.event(Telemetry.Event.CheckoutAbortByUser); - SnabbleUI.executeAction(SnabbleUI.Action.GO_BACK); - break; - case DENIED_BY_PAYMENT_PROVIDER: - Telemetry.event(Telemetry.Event.CheckoutDeniedByPaymentProvider); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case DENIED_BY_SUPERVISOR: - Telemetry.event(Telemetry.Event.CheckoutDeniedBySupervisor); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_PROCESSING_ERROR: - case DENIED_TOO_YOUNG: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; } currentState = state; diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java index 63fb039245..a5764b1116 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java @@ -34,15 +34,14 @@ import io.snabble.sdk.ui.utils.OneShotClickListener; import io.snabble.sdk.utils.Dispatch; import io.snabble.sdk.utils.Logger; +import io.snabble.sdk.utils.Utils; import me.relex.circleindicator.CircleIndicator3; -public class CheckoutOfflineView extends FrameLayout implements Checkout.OnCheckoutStateChangedListener { +public class CheckoutOfflineView extends FrameLayout { private Project project; private EncodedCodesGenerator encodedCodesGenerator; private int maxSizeMm; private Button paidButton; - private Checkout checkout; - private Checkout.State currentState; private ViewPager2 viewPager; private CircleIndicator3 viewPagerIndicator; private ImageView helperImage; @@ -146,9 +145,6 @@ public void onPageSelected(int position) { } else { checkoutId.setVisibility(View.GONE); } - - checkout = SnabbleUI.getProject().getCheckout(); - onStateChanged(checkout.getState()); } @SuppressLint("DrawAllocation") @@ -188,66 +184,6 @@ public void setHelperImage(Bitmap bitmap) { helperImage.setImageBitmap(bitmap); } - @Override - public void onStateChanged(Checkout.State state) { - if (state == currentState) { - return; - } - - SnabbleUI.Callback callback = SnabbleUI.getUiCallback(); - if (callback == null) { - Logger.e("ui action could not be performed: callback is null"); - return; - } - - switch (state) { - case PAYMENT_APPROVED: - if (currentState == Checkout.State.PAYMENT_APPROVED) { - break; - } - Telemetry.event(Telemetry.Event.CheckoutSuccessful); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_ABORTED: - Telemetry.event(Telemetry.Event.CheckoutAbortByUser); - SnabbleUI.executeAction(SnabbleUI.Action.GO_BACK); - break; - case DENIED_BY_PAYMENT_PROVIDER: - Telemetry.event(Telemetry.Event.CheckoutDeniedByPaymentProvider); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case DENIED_BY_SUPERVISOR: - Telemetry.event(Telemetry.Event.CheckoutDeniedBySupervisor); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_PROCESSING: - case PAYMENT_PROCESSING_ERROR: - case DENIED_TOO_YOUNG: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - } - - currentState = state; - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - - if (checkout != null) { - checkout.addOnCheckoutStateChangedListener(this); - } - } - - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - - if (checkout != null) { - checkout.removeOnCheckoutStateChangedListener(this); - } - } - private class ViewHolder extends RecyclerView.ViewHolder { BarcodeView barcodeView; diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineView.java index 7ab3eb0e00..f213ffdf54 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOnlineView.java @@ -192,15 +192,6 @@ public void onStateChanged(Checkout.State state) { checkoutIdCode.setText(id); } break; - case PAYMENT_PROCESSING: - case PAYMENT_PROCESSING_ERROR: - case PAYMENT_APPROVED: - case DENIED_BY_PAYMENT_PROVIDER: - case DENIED_BY_SUPERVISOR: - case DENIED_TOO_YOUNG: - case REQUEST_PAYMENT_AUTHORIZATION_TOKEN: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; case PAYMENT_ABORT_FAILED: cancelProgress.setVisibility(View.INVISIBLE); cancel.setEnabled(true); @@ -216,10 +207,6 @@ public void onStateChanged(Checkout.State state) { .create() .show(); break; - case PAYMENT_ABORTED: - Telemetry.event(Telemetry.Event.CheckoutAbortByUser); - SnabbleUI.executeAction(SnabbleUI.Action.GO_BACK); - break; } currentState = state; diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPointOfSaleView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPointOfSaleView.java index b5be8fd677..8c464404c7 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPointOfSaleView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutPointOfSaleView.java @@ -126,34 +126,8 @@ public void onStateChanged(Checkout.State state) { return; } - switch (state) { - case WAIT_FOR_APPROVAL: - setQRCodeText(checkout.getQRCodePOSContent()); - break; - case PAYMENT_APPROVED: - if (currentState == Checkout.State.PAYMENT_APPROVED) { - break; - } - Telemetry.event(Telemetry.Event.CheckoutSuccessful); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_ABORTED: - Telemetry.event(Telemetry.Event.CheckoutAbortByUser); - SnabbleUI.executeAction(SnabbleUI.Action.GO_BACK); - break; - case DENIED_BY_PAYMENT_PROVIDER: - Telemetry.event(Telemetry.Event.CheckoutDeniedByPaymentProvider); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case DENIED_BY_SUPERVISOR: - Telemetry.event(Telemetry.Event.CheckoutDeniedBySupervisor); - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; - case PAYMENT_PROCESSING: - case PAYMENT_PROCESSING_ERROR: - case DENIED_TOO_YOUNG: - SnabbleUI.executeAction(SnabbleUI.Action.SHOW_PAYMENT_STATUS); - break; + if (state == Checkout.State.WAIT_FOR_APPROVAL) { + setQRCodeText(checkout.getQRCodePOSContent()); } currentState = state; From 431c5bcd72c10de084aa43cc6a5641d08e473072 Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Thu, 9 Dec 2021 16:54:03 +0100 Subject: [PATCH 07/41] update kotlin sample and introduce helper method --- .../java/io/snabble/testapp/BaseActivity.java | 5 +--- .../io/snabble/sdk/sample/MainActivity.kt | 27 ++++--------------- .../sdk/ui/checkout/CheckoutActivity.kt | 18 +++++++++++++ 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java index 12d9a37c84..90b71292fa 100644 --- a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java @@ -156,10 +156,7 @@ public void showScanner() { } public void showCheckout(Bundle args) { - Intent intent = new Intent(this, CheckoutActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - intent.putExtras(args); - startActivity(intent); + CheckoutActivity.startCheckoutFlow(this, args); } public void showPaymentDone() { diff --git a/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt b/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt index 4f8276e10a..e149bee7a4 100644 --- a/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt +++ b/kotlin-sample/src/main/java/io/snabble/sdk/sample/MainActivity.kt @@ -11,8 +11,10 @@ import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import com.google.android.material.bottomnavigation.BottomNavigationView +import io.snabble.sdk.CheckoutApi import io.snabble.sdk.Snabble import io.snabble.sdk.ui.SnabbleUI +import io.snabble.sdk.ui.checkout.CheckoutActivity import io.snabble.sdk.ui.scanner.SelfScanningFragment class MainActivity : AppCompatActivity() { @@ -80,34 +82,15 @@ class MainActivity : AppCompatActivity() { super.onStart() val navController = findNavController(R.id.nav_host_fragment) with(navController) { - SnabbleUI.registerUiCallbacks { action, data -> + SnabbleUI.registerUiCallbacks { action, args -> when(action) { SnabbleUI.Action.SHOW_BARCODE_SEARCH -> { navigate(R.id.navigation_barcode_search) } - SnabbleUI.Action.SHOW_CHECKOUT_ONLINE -> { - navigate(R.id.navigation_checkout_online) - } - SnabbleUI.Action.SHOW_CHECKOUT_OFFLINE -> { - navigate(R.id.navigation_checkout_offline) - } - SnabbleUI.Action.SHOW_CHECKOUT_CUSTOMERCARD -> { - navigate(R.id.navigation_checkout_customer_card_fragment) - } - SnabbleUI.Action.SHOW_CHECKOUT_POINT_OF_SALE -> { - navigate(R.id.navigation_checkout_pos_fragment) - } - SnabbleUI.Action.SHOW_CHECKOUT_GATEKEEPER -> { - navigate(R.id.navigation_checkout_gatekeeper_fragment) - } - SnabbleUI.Action.SHOW_PAYMENT_STATUS -> { - navigate(R.id.navigation_payment_status) + SnabbleUI.Action.SHOW_CHECKOUT -> { + CheckoutActivity.startCheckoutFlow(this@MainActivity, args) } SnabbleUI.Action.SHOW_SCANNER -> { - val args = Bundle() - if (data != null) { - args.putString(SelfScanningFragment.ARG_SHOW_PRODUCT_CODE, data as String) - } navigate(R.id.navigation_scanner, args) } SnabbleUI.Action.SHOW_SEPA_CARD_INPUT -> { diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt index 9643a42654..4cfcb7e16f 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt @@ -1,5 +1,7 @@ package io.snabble.sdk.ui.checkout +import android.content.Context +import android.content.Intent import android.os.Bundle import androidx.fragment.app.FragmentActivity import androidx.navigation.NavController @@ -16,6 +18,22 @@ import io.snabble.sdk.ui.R class CheckoutActivity : FragmentActivity() { companion object { const val ARG_PROJECT_ID = "projectId" + + @JvmStatic + fun startCheckoutFlow(context: Context, args: Bundle?) { + val intent = Intent(context, CheckoutActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) + args?.let { + intent.putExtras(args) + } + context.startActivity(intent) + } + + fun startCheckoutFlow(context: Context, project: Project) { + startCheckoutFlow(context, Bundle().apply { + putString(ARG_PROJECT_ID, project.id) + }) + } } private lateinit var navGraph: NavGraph From cc021382aeb7cc581ed063c0039b72362f259b0a Mon Sep 17 00:00:00 2001 From: Alexander Junggeburth Date: Mon, 13 Dec 2021 14:45:43 +0100 Subject: [PATCH 08/41] fixes material 3 theme not being applied in activities and cleanup --- java-sample/src/main/AndroidManifest.xml | 6 ---- .../java/io/snabble/testapp/BaseActivity.java | 6 ++-- .../testapp/CheckoutCustomerCardActivity.java | 13 -------- .../testapp/CheckoutGatekeeperActivity.java | 13 -------- .../testapp/CheckoutOfflineActivity.java | 13 -------- .../testapp/CheckoutOnlineActivity.java | 23 -------------- .../snabble/testapp/CheckoutPOSActivity.java | 13 -------- .../testapp/PaymentStatusActivity.java | 13 -------- .../java/io/snabble/sdk/ui/SnabbleUI.java | 2 +- .../sdk/ui/checkout/CheckoutActivity.kt | 17 +++++++---- .../ui/checkout/CheckoutCustomerCardView.java | 6 ++-- .../snabble/sdk/ui/checkout/CheckoutHelper.kt | 30 +++++++++++++++++++ .../sdk/ui/checkout/CheckoutOfflineView.java | 3 +- .../sdk/ui/checkout/PaymentStatusView.kt | 2 +- .../snabble_dialog_product_confirmation.xml | 9 +++--- .../layout/snabble_dialog_sepa_legal_info.xml | 2 +- .../layout/snabble_fragment_selfscanning.xml | 2 +- .../snabble_item_shoppingcart_product.xml | 4 +-- .../layout/snabble_view_age_verification.xml | 2 +- .../layout/snabble_view_cardinput_sepa.xml | 2 +- .../snabble_view_checkout_customercard.xml | 2 +- .../snabble_view_checkout_gatekeeper.xml | 2 +- .../layout/snabble_view_checkout_offline.xml | 2 +- .../layout/snabble_view_checkout_online.xml | 2 +- .../res/layout/snabble_view_checkout_pos.xml | 4 +-- .../layout/snabble_view_search_product.xml | 3 +- .../res/layout/snabble_view_self_scanning.xml | 2 +- .../res/layout/snabble_view_shopping_cart.xml | 6 ++-- 28 files changed, 73 insertions(+), 131 deletions(-) delete mode 100644 java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java delete mode 100644 java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java delete mode 100644 java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java delete mode 100644 java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java delete mode 100644 java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java delete mode 100644 java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java create mode 100644 ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.kt diff --git a/java-sample/src/main/AndroidManifest.xml b/java-sample/src/main/AndroidManifest.xml index 9a2b831a95..8107e793c2 100644 --- a/java-sample/src/main/AndroidManifest.xml +++ b/java-sample/src/main/AndroidManifest.xml @@ -35,13 +35,7 @@ - - - - - - \ No newline at end of file diff --git a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java index 90b71292fa..15029adeec 100644 --- a/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java +++ b/java-sample/src/main/java/io/snabble/testapp/BaseActivity.java @@ -114,8 +114,8 @@ public void execute(SnabbleUI.Action action, Bundle args) { case SHOW_CHECKOUT: showCheckout(args); break; - case SHOW_PAYMENT_DONE: - showPaymentDone(); + case SHOW_CHECKOUT_DONE: + showCheckoutDone(); break; case SHOW_SEPA_CARD_INPUT: showSEPACardInput(); @@ -159,7 +159,7 @@ public void showCheckout(Bundle args) { CheckoutActivity.startCheckoutFlow(this, args); } - public void showPaymentDone() { + public void showCheckoutDone() { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java deleted file mode 100644 index ee9bc48af0..0000000000 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutCustomerCardActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.snabble.testapp; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.checkout.CheckoutCustomerCardFragment; - -public class CheckoutCustomerCardActivity extends BaseActivity { - @Override - public Fragment onCreateFragment() { - return new CheckoutCustomerCardFragment(); - } -} - diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java deleted file mode 100644 index 21927202d1..0000000000 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutGatekeeperActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.snabble.testapp; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.checkout.CheckoutGatekeeperFragment; - -public class CheckoutGatekeeperActivity extends BaseActivity { - @Override - public Fragment onCreateFragment() { - return new CheckoutGatekeeperFragment(); - } -} - diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java deleted file mode 100644 index 34c360b82b..0000000000 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutOfflineActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.snabble.testapp; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.checkout.CheckoutOfflineFragment; - -public class CheckoutOfflineActivity extends BaseActivity { - @Override - public Fragment onCreateFragment() { - return new CheckoutOfflineFragment(); - } -} - diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java deleted file mode 100644 index c7e92dcf8b..0000000000 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutOnlineActivity.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.snabble.testapp; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.Checkout; -import io.snabble.sdk.ui.SnabbleUI; -import io.snabble.sdk.ui.checkout.CheckoutOnlineFragment; - -public class CheckoutOnlineActivity extends BaseActivity{ - @Override - public Fragment onCreateFragment() { - CheckoutOnlineFragment fragment = new CheckoutOnlineFragment(); - return fragment; - } - - @Override - public void onBackPressed() { - if (SnabbleUI.getProject().getCheckout().getState() == Checkout.State.PAYMENT_ABORTED) { - super.onBackPressed(); - } - } -} - diff --git a/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java b/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java deleted file mode 100644 index 372c954378..0000000000 --- a/java-sample/src/main/java/io/snabble/testapp/CheckoutPOSActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.snabble.testapp; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.checkout.CheckoutPOSFragment; - -public class CheckoutPOSActivity extends BaseActivity { - @Override - public Fragment onCreateFragment() { - return new CheckoutPOSFragment(); - } -} - diff --git a/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java b/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java deleted file mode 100644 index f096479b00..0000000000 --- a/java-sample/src/main/java/io/snabble/testapp/PaymentStatusActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.snabble.testapp; - -import androidx.fragment.app.Fragment; - -import io.snabble.sdk.ui.payment.PaymentStatusFragment; - -public class PaymentStatusActivity extends BaseActivity{ - @Override - public Fragment onCreateFragment() { - return new PaymentStatusFragment(); - } -} - diff --git a/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java b/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java index bd7014216b..3929e84888 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java +++ b/ui/src/main/java/io/snabble/sdk/ui/SnabbleUI.java @@ -17,7 +17,7 @@ public class SnabbleUI { public enum Action { SHOW_CHECKOUT, - SHOW_PAYMENT_DONE, + SHOW_CHECKOUT_DONE, SHOW_SCANNER, SHOW_BARCODE_SEARCH, SHOW_SEPA_CARD_INPUT, diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt index 4cfcb7e16f..9b8670ff56 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutActivity.kt @@ -7,13 +7,13 @@ import androidx.fragment.app.FragmentActivity import androidx.navigation.NavController import androidx.navigation.NavGraph import androidx.navigation.NavOptions -import androidx.navigation.NavOptionsBuilder import androidx.navigation.fragment.NavHostFragment import io.snabble.sdk.Checkout import io.snabble.sdk.PaymentMethod import io.snabble.sdk.Project import io.snabble.sdk.Snabble import io.snabble.sdk.ui.R +import io.snabble.sdk.utils.Logger class CheckoutActivity : FragmentActivity() { companion object { @@ -29,6 +29,7 @@ class CheckoutActivity : FragmentActivity() { context.startActivity(intent) } + @JvmStatic fun startCheckoutFlow(context: Context, project: Project) { startCheckoutFlow(context, Bundle().apply { putString(ARG_PROJECT_ID, project.id) @@ -55,20 +56,19 @@ class CheckoutActivity : FragmentActivity() { val projectId = intent.getStringExtra(ARG_PROJECT_ID) if (projectId == null) { - finish() + finishWithError("No project id set") return } val project = Snabble.getInstance().getProjectById(projectId) if (project == null) { - finish() + finishWithError("Project with id " + projectId + " not found") return } val checkout = project.checkout - // TODO handle more entry states? - if (checkout.state == Checkout.State.NONE) { - finish() + if (!checkout.state.isCheckoutState) { + finishWithError("Unexpected checkout state " + checkout.state) return } this.checkout = checkout @@ -88,6 +88,11 @@ class CheckoutActivity : FragmentActivity() { } } + private fun finishWithError(error: String) { + Logger.e(error) + finish() + } + private fun getNavigationId(): Int? { val checkout = checkout ?: return null diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java index a5bf84a952..2ad3df3f4b 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutCustomerCardView.java @@ -37,11 +37,9 @@ public class CheckoutCustomerCardView extends FrameLayout { private Project project; - private Button paidButton; private View helperText; private ImageView helperImage; private View upArrow; - private BarcodeView barcodeView; public CheckoutCustomerCardView(Context context) { super(context); @@ -63,7 +61,7 @@ private void init() { inflate(getContext(), R.layout.snabble_view_checkout_customercard, this); - paidButton = findViewById(R.id.paid); + Button paidButton = findViewById(R.id.paid); paidButton.setOnClickListener(new OneShotClickListener() { @Override public void click() { @@ -77,7 +75,7 @@ public void click() { helperText = findViewById(R.id.helper_text); helperImage = findViewById(R.id.helper_image); upArrow = findViewById(R.id.arrow); - barcodeView = findViewById(R.id.barcode_view); + BarcodeView barcodeView = findViewById(R.id.barcode_view); project.getAssets().get("checkout-offline", this::setHelperImage); diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.kt new file mode 100644 index 0000000000..507aecaa9f --- /dev/null +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutHelper.kt @@ -0,0 +1,30 @@ +package io.snabble.sdk.ui.checkout + +import io.snabble.sdk.Checkout + +val Checkout.State.isCheckoutState: Boolean + get() { + return when(this) { + Checkout.State.NONE, + Checkout.State.HANDSHAKING, + Checkout.State.REQUEST_PAYMENT_METHOD, + Checkout.State.VERIFYING_PAYMENT_METHOD, + Checkout.State.REQUEST_VERIFY_AGE, + Checkout.State.REQUEST_TAXATION, + Checkout.State.CONNECTION_ERROR, + Checkout.State.INVALID_PRODUCTS, + Checkout.State.NO_PAYMENT_METHOD_AVAILABLE, + Checkout.State.NO_SHOP -> false + + Checkout.State.REQUEST_PAYMENT_AUTHORIZATION_TOKEN, + Checkout.State.WAIT_FOR_APPROVAL, + Checkout.State.PAYMENT_PROCESSING, + Checkout.State.PAYMENT_APPROVED, + Checkout.State.DENIED_TOO_YOUNG, + Checkout.State.DENIED_BY_PAYMENT_PROVIDER, + Checkout.State.DENIED_BY_SUPERVISOR, + Checkout.State.PAYMENT_ABORTED, + Checkout.State.PAYMENT_ABORT_FAILED, + Checkout.State.PAYMENT_PROCESSING_ERROR -> true + } + } \ No newline at end of file diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java index a5764b1116..beda1bd23c 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/CheckoutOfflineView.java @@ -43,7 +43,6 @@ public class CheckoutOfflineView extends FrameLayout { private int maxSizeMm; private Button paidButton; private ViewPager2 viewPager; - private CircleIndicator3 viewPagerIndicator; private ImageView helperImage; private View upArrow; private CodeListViewAdapter viewPagerAdapter; @@ -125,7 +124,7 @@ public void onPageSelected(int position) { } }); - viewPagerIndicator = findViewById(R.id.view_pager_indicator); + CircleIndicator3 viewPagerIndicator = findViewById(R.id.view_pager_indicator); viewPagerIndicator.setViewPager(viewPager); if (viewPagerAdapter.getItemCount() == 1) { diff --git a/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt b/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt index 74d593ed13..537330ffcb 100644 --- a/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt +++ b/ui/src/main/java/io/snabble/sdk/ui/checkout/PaymentStatusView.kt @@ -31,7 +31,6 @@ import io.snabble.sdk.ui.payment.SEPACardInputView import io.snabble.sdk.ui.utils.requireFragmentActivity -@Suppress("LeakingThis") open class PaymentStatusView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : ScrollView(context, attrs, defStyleAttr), @@ -67,6 +66,7 @@ open class PaymentStatusView @JvmOverloads constructor( binding.back.isEnabled = false binding.back.setOnClickListener { requireFragmentActivity().finish() + executeUiAction(SnabbleUI.Action.SHOW_CHECKOUT_DONE) } checkout.checkoutState.observeView(this) { diff --git a/ui/src/main/res/layout/snabble_dialog_product_confirmation.xml b/ui/src/main/res/layout/snabble_dialog_product_confirmation.xml index 21c4be8cd9..60f6bdc4d3 100644 --- a/ui/src/main/res/layout/snabble_dialog_product_confirmation.xml +++ b/ui/src/main/res/layout/snabble_dialog_product_confirmation.xml @@ -78,7 +78,7 @@ android:textSize="12sp" tools:text="+ 0,45 € deposit" /> -