diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java index df581a86cff6297ce24f37759153ba9b50f1c8b7..83b45a8e73b35df07245c27361ccced5ce7a1d57 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/MainActivity.java @@ -16,16 +16,12 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.widget.TextView; import android.widget.Toast; -import ms.warpzone.warppay.R; import ms.warpzone.warppay.data.models.local.Product; import ms.warpzone.warppay.data.models.local.User; import ms.warpzone.warppay.dialogs.BarcodeLearnDialog; -import ms.warpzone.warppay.dialogs.NewUserDialog; -import ms.warpzone.warppay.dialogs.SettingsDialog; import ms.warpzone.warppay.manager.DataManager; import ms.warpzone.warppay.manager.MainManager; import ms.warpzone.warppay.manager.UiManager; @@ -93,7 +89,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe DataManager.getInstance().setLastCardId(card_id); if(this.manager.getCurrentUser() == null) { User u = User.getByCardId(card_id); - this.manager.setCurrentUser(u); + if(u != null) + MainManager.getInstance().setCurrentUser(u); } } @@ -111,6 +108,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_learn_card_id: + MainManager.getInstance().stopTimer(); if (this.manager.getCurrentUser() != null){ new AlertDialog.Builder(this) .setTitle(this.getResources().getString(R.string.confirm_learn_card)) @@ -127,6 +125,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe } break; case R.id.action_learn_barcode: + MainManager.getInstance().stopTimer(); this.barcodeLearnDialog = new BarcodeLearnDialog(); MainManager.getInstance().setBarcodeLearning(true); this.barcodeLearnDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @@ -158,9 +157,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe if(this.manager.getCurrentUser() != null) { if (event.getAction() == KeyEvent.ACTION_UP) { if (KeyEvent.KEYCODE_ENTER == event.getKeyCode()) { - /*if(this.manager.isBarcodeLearning()) { - this.barcodeLearnDialog.setBarcode(this.barcode.trim().replace("\n", "").toString()); - } else {*/ Product p = Product.getOneByBarcode(this.barcode.trim().replace("\n", "").toString()); if (p != null) { Order order = new Order(p); @@ -170,7 +166,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe } else { Toast.makeText(this, "Barcode not found: " + this.barcode, Toast.LENGTH_LONG).show(); } - //} this.barcode = ""; } else { this.barcode += (char) event.getUnicodeChar(); diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java index a966492d71d7aafcd4aff0edafed48ba3c5a210b..7b3b9a7e02351cec97f2c591c68487692b847563 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ChargeDialog.java @@ -9,6 +9,7 @@ import android.widget.Button; import ms.warpzone.warppay.MainActivity; import ms.warpzone.warppay.R; import ms.warpzone.warppay.manager.MainManager; +import ms.warpzone.warppay.manager.UiManager; public class ChargeDialog extends Dialog implements android.view.View.OnClickListener { @@ -54,7 +55,9 @@ public class ChargeDialog extends Dialog implements amount = 20.0; break; case R.id.btnOther: - new ChargeCustomDialog(this,this.c).show(); + ChargeCustomDialog cd = new ChargeCustomDialog(this,this.c); + UiManager.getInstance().setChargeCustomDialog(cd); + cd.show(); break; default: break; diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NewUserDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NewUserDialog.java deleted file mode 100644 index 8b1a752aa3c174cb5a94044c351863810779fcf4..0000000000000000000000000000000000000000 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NewUserDialog.java +++ /dev/null @@ -1,59 +0,0 @@ -package ms.warpzone.warppay.dialogs; - -import android.app.Dialog; -import android.os.Bundle; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.TextView; - -import ms.warpzone.warppay.MainActivity; -import ms.warpzone.warppay.R; -import ms.warpzone.warppay.manager.MainManager; - -public class NewUserDialog extends Dialog implements - View.OnClickListener { - - public MainActivity c; - public Button btnAddUser; - public TextView txtUsername; - public NewUserDialog() { - super(MainManager.getInstance().getMainActivity()); - this.c = MainManager.getInstance().getMainActivity(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_NO_TITLE); - setContentView(R.layout.new_user_dialog); - this.btnAddUser = (Button) findViewById(R.id.btnAddUser); - this.btnAddUser.setOnClickListener(this); - this.txtUsername = (TextView) findViewById(R.id.txtUsername); - - - } - - @Override - public void onClick(View v) { - /* - switch (v.getId()) { - case R.id.btnAddUser: - String username = this.txtUsername.getText().toString(); - if (!username.equals("")) { - if(!MainManager.getInstance().addUser(username)) { - Toast.makeText(v.getContext(),"Username ist schon vorhanden",Toast.LENGTH_LONG).show(); - } else { - Toast.makeText(v.getContext(),"User angelegt",Toast.LENGTH_LONG).show(); - dismiss(); - } - } else { - Toast.makeText(v.getContext(),"Username darf nicht leer sein",Toast.LENGTH_LONG).show(); - } - break; - default: - break; - } - */ - } -} diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java index bd2c3609fe9b26a7ae67d313320327b861713009..a9cf0e9569d06127b70c87b9a3fa96c695456b7d 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PayChoiceDialog.java @@ -44,6 +44,7 @@ public class PayChoiceDialog extends Dialog implements View.OnClickListener { @Override public void onClick(View v) { + MainManager.getInstance().startTimer(); switch (v.getId()) { case R.id.btnCredit: MainManager.getInstance().performPayment(false); diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java index ea0671c1204d7bad7f60ffe59f7d13a73f3d7038..76e1437c141902ea0bb8af5096ce141978490536 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/PinCodesDialog.java @@ -47,13 +47,17 @@ public class PinCodesDialog extends Dialog implements View.OnClickListener, View } private void checkPin() { - String pin = this.etxtPinCode.getText().toString(); - if(BCrypt.checkpw(pin, this.user.getPinCode())) { - MainManager.getInstance().setCurrentUser(this.user, true); - this.etxtPinCode.setEnabled(false); - dismiss(); - } else { - etxtPinCode.setBackgroundColor(Color.RED); + try { + String pin = this.etxtPinCode.getText().toString(); + if (BCrypt.checkpw(pin, this.user.getPinCode())) { + MainManager.getInstance().setCurrentUser(this.user, true); + this.etxtPinCode.setEnabled(false); + dismiss(); + } else { + etxtPinCode.setBackgroundColor(Color.RED); + } + } catch(Exception e) { + } } @Override diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java index 6f10dce59dbd8ab349520a7cd9c0f4f45437c86a..c36a809b9b12c110785aa2d7f4f11f40506244c4 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/ProductDialog.java @@ -62,6 +62,7 @@ public class ProductDialog extends Dialog implements View.OnClickListener { @Override public void onClick(View view) { + MainManager.getInstance().startTimer(); Button clicked = (Button) view; String product_name = (String) clicked.getText(); Product product = Product.getOneByName(product_name); diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java index 558966f7000d7b0267a5d06a3d1eccfaec1c144f..aaff1babaa4d29b52eecdbda17a468cff11ce122 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/listener/CategoryOnClickListener.java @@ -3,14 +3,19 @@ import android.view.View; import android.widget.Button; import ms.warpzone.warppay.dialogs.ProductDialog; +import ms.warpzone.warppay.manager.MainManager; +import ms.warpzone.warppay.manager.UiManager; public class CategoryOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { + MainManager.getInstance().startTimer(); Button clicked = (Button) view; String category = (String) clicked.getText(); - new ProductDialog(category).show(); + ProductDialog p = new ProductDialog(category); + UiManager.getInstance().setProductDialog(p); + p.show(); } } diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java index 2d374d420438666076cbf9e3d9da5c327291bddc..46476baaf322a7dfcc808ab36d4ec696baac2bc8 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/MainManager.java @@ -3,6 +3,7 @@ package ms.warpzone.warppay.manager; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; +import android.os.Handler; import android.util.Log; import android.widget.Toast; @@ -22,6 +23,8 @@ import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; @@ -52,7 +55,7 @@ public class MainManager { private UiManager uiManager; private DataManager dataManager; private boolean barcodeLearning=false; - + private Timer timer; private static MainManager instance = new MainManager(); public static MainManager getInstance() { @@ -60,8 +63,6 @@ public class MainManager { } private MainManager() { - - } private RestService createRestService() { @@ -81,21 +82,13 @@ public class MainManager { Request newRequest; newRequest = request.newBuilder() - .addHeader("Authorization", "Token ") + .addHeader("Authorization", "Token 7b6ca8ade59a32cef9b516e91f3bc9545b6c75a7") .build(); return chain.proceed(newRequest); } }); - } catch (CertificateException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (KeyStoreException e) { - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (KeyManagementException e) { + } catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | IOException | KeyStoreException e) { e.printStackTrace(); } @@ -107,7 +100,6 @@ public class MainManager { private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException { - // Loading CAs from an InputStream CertificateFactory cf = null; String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw"; KeyStore keyStore = KeyStore.getInstance("BKS"); @@ -189,7 +181,7 @@ public class MainManager { public void setCurrentUser(User user, boolean authorized) { if (user != null) { - if(user.getPinCode() != "" && !authorized) { + if(!user.getPinCode().isEmpty() && !authorized) { PinCodesDialog p = new PinCodesDialog(user); p.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override @@ -203,16 +195,46 @@ public class MainManager { } this.dataManager.setCurrentUser(user); this.uiManager.setCurrentUser(user); + this.startTimer(); } } + public void stopTimer() { + if (this.timer != null) { + this.timer.cancel(); + this.timer.purge(); + } + } + public void startTimer() { + this.stopTimer(); + + this.timer = new Timer(); + + TimerTask t = new TimerTask() { + @Override + public void run() { + Handler mainHandler = new Handler(MainManager.getInstance().getMainActivity().getApplicationContext().getMainLooper()); + Runnable myRunnable = new Runnable() { + @Override + public void run() { + MainManager.getInstance().clearCurrentUser(); + } + }; + mainHandler.post(myRunnable); + } + }; + + this.timer.schedule(t, 30000); + } public User getCurrentUser() { return this.dataManager.getCurrentUser(); } public void clearCurrentUser() { + DataManager.getInstance().setLastCardId(""); this.dataManager.clearCurrentUser(); this.uiManager.clearCurrentUser(); + this.stopTimer(); } public void addOrder(Order order) { diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java index cb9124bacf31c76e2d79f5b13de2d28671e0b1b1..821f39032e5f65548490fb25d8d129a8a10ddd15 100644 --- a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/manager/UiManager.java @@ -1,26 +1,19 @@ package ms.warpzone.warppay.manager; import android.annotation.TargetApi; -import android.content.Context; import android.content.DialogInterface; import android.os.Build; -import android.provider.Contacts; -import android.util.Log; import android.view.KeyEvent; import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; -import android.widget.EditText; import android.widget.GridLayout; import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import java.util.ArrayList; import java.util.List; @@ -30,11 +23,11 @@ import ms.warpzone.warppay.R; import ms.warpzone.warppay.data.models.local.Category; import ms.warpzone.warppay.data.models.local.Product; import ms.warpzone.warppay.data.models.local.User; -import ms.warpzone.warppay.data.models.rest.RestProduct; +import ms.warpzone.warppay.dialogs.ChargeCustomDialog; import ms.warpzone.warppay.dialogs.ChargeDialog; -import ms.warpzone.warppay.dialogs.NewUserDialog; import ms.warpzone.warppay.dialogs.PayChoiceDialog; import ms.warpzone.warppay.dialogs.PinCodesDialog; +import ms.warpzone.warppay.dialogs.ProductDialog; import ms.warpzone.warppay.listener.CategoryOnClickListener; import ms.warpzone.warppay.orderList.ListViewAdapter; import ms.warpzone.warppay.orderList.ListViewAdapterProducts; @@ -56,6 +49,13 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap private ArrayList<Double> order; private List<User> users; + + private PayChoiceDialog payChoiceDialog; + private ProductDialog productDialog; + private ChargeDialog chargeDialog; + private ChargeCustomDialog chargeCustomDialog; + private PinCodesDialog pinCodesDialog; + private static UiManager ourInstance = new UiManager(); public static UiManager getInstance() { @@ -137,6 +137,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap if(this.atxvName.requestFocus()) { this.showSoftKeyboard(this.mainActivity.getCurrentFocus()); } + + if(this.payChoiceDialog != null) + this.payChoiceDialog.dismiss(); + if(this.chargeCustomDialog != null) + this.chargeCustomDialog.dismiss(); + if(this.chargeDialog != null) + this.chargeDialog.dismiss(); + if(this.productDialog != null) + this.productDialog.dismiss(); } private void enableControls(boolean enable) { @@ -178,13 +187,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap @Override public void onClick(View v) { + MainManager.getInstance().startTimer(); switch (v.getId()) { case R.id.btnCharge: - new ChargeDialog().show(); + this.chargeDialog = new ChargeDialog(); + this.chargeDialog.show(); break; case R.id.btnPay: - PayChoiceDialog payChoiceDialog = new PayChoiceDialog(); - payChoiceDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + this.payChoiceDialog = new PayChoiceDialog(); + this.payChoiceDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { if (MainManager.getInstance().getCurrentUser() == null) @@ -192,7 +203,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap } }); - payChoiceDialog.show(); + this.payChoiceDialog.show(); break; case R.id.btnLogout: MainManager.getInstance().clearCurrentUser(); @@ -201,11 +212,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap MainManager.getInstance().refreshData(); break; case R.id.btnGuest: - DataManager.getInstance().setIs_guest(true); - MainManager.getInstance().setCurrentUser(new User("Guest","",0,"")); - this.atxvName.setText("Gast"); - this.atxvName.dismissDropDown(); - + if(MainManager.getInstance().getCurrentUser() == null) { + DataManager.getInstance().setIs_guest(true); + MainManager.getInstance().setCurrentUser(new User("Guest", "", 0, "")); + this.atxvName.setText("Gast"); + this.atxvName.dismissDropDown(); + } } } @@ -263,4 +275,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap public void addOrder(Order order) { this.lstOrderedAdapter.insert(order, this.lstOrderedAdapter.getCount()); } + + public void setProductDialog(ProductDialog productDialog) { + this.productDialog = productDialog; + } + + public void setChargeCustomDialog(ChargeCustomDialog chargeCustomDialog) { + this.chargeCustomDialog = chargeCustomDialog; + } }