Skip to content
Snippets Groups Projects
Commit 34f2ea8a authored by Christian Dresen's avatar Christian Dresen
Browse files

Added Autologout

parent 6aa32ead
No related branches found
No related tags found
No related merge requests found
Showing
with 102 additions and 110 deletions
...@@ -16,16 +16,12 @@ import android.view.MenuInflater; ...@@ -16,16 +16,12 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import ms.warpzone.warppay.R;
import ms.warpzone.warppay.data.models.local.Product; import ms.warpzone.warppay.data.models.local.Product;
import ms.warpzone.warppay.data.models.local.User; import ms.warpzone.warppay.data.models.local.User;
import ms.warpzone.warppay.dialogs.BarcodeLearnDialog; 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.DataManager;
import ms.warpzone.warppay.manager.MainManager; import ms.warpzone.warppay.manager.MainManager;
import ms.warpzone.warppay.manager.UiManager; import ms.warpzone.warppay.manager.UiManager;
...@@ -93,7 +89,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe ...@@ -93,7 +89,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
DataManager.getInstance().setLastCardId(card_id); DataManager.getInstance().setLastCardId(card_id);
if(this.manager.getCurrentUser() == null) { if(this.manager.getCurrentUser() == null) {
User u = User.getByCardId(card_id); 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 ...@@ -111,6 +108,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.action_learn_card_id: case R.id.action_learn_card_id:
MainManager.getInstance().stopTimer();
if (this.manager.getCurrentUser() != null){ if (this.manager.getCurrentUser() != null){
new AlertDialog.Builder(this) new AlertDialog.Builder(this)
.setTitle(this.getResources().getString(R.string.confirm_learn_card)) .setTitle(this.getResources().getString(R.string.confirm_learn_card))
...@@ -127,6 +125,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe ...@@ -127,6 +125,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
} }
break; break;
case R.id.action_learn_barcode: case R.id.action_learn_barcode:
MainManager.getInstance().stopTimer();
this.barcodeLearnDialog = new BarcodeLearnDialog(); this.barcodeLearnDialog = new BarcodeLearnDialog();
MainManager.getInstance().setBarcodeLearning(true); MainManager.getInstance().setBarcodeLearning(true);
this.barcodeLearnDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { this.barcodeLearnDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
...@@ -158,9 +157,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe ...@@ -158,9 +157,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
if(this.manager.getCurrentUser() != null) { if(this.manager.getCurrentUser() != null) {
if (event.getAction() == KeyEvent.ACTION_UP) { if (event.getAction() == KeyEvent.ACTION_UP) {
if (KeyEvent.KEYCODE_ENTER == event.getKeyCode()) { 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()); Product p = Product.getOneByBarcode(this.barcode.trim().replace("\n", "").toString());
if (p != null) { if (p != null) {
Order order = new Order(p); Order order = new Order(p);
...@@ -170,7 +166,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe ...@@ -170,7 +166,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
} else { } else {
Toast.makeText(this, "Barcode not found: " + this.barcode, Toast.LENGTH_LONG).show(); Toast.makeText(this, "Barcode not found: " + this.barcode, Toast.LENGTH_LONG).show();
} }
//}
this.barcode = ""; this.barcode = "";
} else { } else {
this.barcode += (char) event.getUnicodeChar(); this.barcode += (char) event.getUnicodeChar();
......
...@@ -9,6 +9,7 @@ import android.widget.Button; ...@@ -9,6 +9,7 @@ import android.widget.Button;
import ms.warpzone.warppay.MainActivity; import ms.warpzone.warppay.MainActivity;
import ms.warpzone.warppay.R; import ms.warpzone.warppay.R;
import ms.warpzone.warppay.manager.MainManager; import ms.warpzone.warppay.manager.MainManager;
import ms.warpzone.warppay.manager.UiManager;
public class ChargeDialog extends Dialog implements public class ChargeDialog extends Dialog implements
android.view.View.OnClickListener { android.view.View.OnClickListener {
...@@ -54,7 +55,9 @@ public class ChargeDialog extends Dialog implements ...@@ -54,7 +55,9 @@ public class ChargeDialog extends Dialog implements
amount = 20.0; amount = 20.0;
break; break;
case R.id.btnOther: case R.id.btnOther:
new ChargeCustomDialog(this,this.c).show(); ChargeCustomDialog cd = new ChargeCustomDialog(this,this.c);
UiManager.getInstance().setChargeCustomDialog(cd);
cd.show();
break; break;
default: default:
break; break;
......
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;
}
*/
}
}
...@@ -44,6 +44,7 @@ public class PayChoiceDialog extends Dialog implements View.OnClickListener { ...@@ -44,6 +44,7 @@ public class PayChoiceDialog extends Dialog implements View.OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
MainManager.getInstance().startTimer();
switch (v.getId()) { switch (v.getId()) {
case R.id.btnCredit: case R.id.btnCredit:
MainManager.getInstance().performPayment(false); MainManager.getInstance().performPayment(false);
......
...@@ -47,13 +47,17 @@ public class PinCodesDialog extends Dialog implements View.OnClickListener, View ...@@ -47,13 +47,17 @@ public class PinCodesDialog extends Dialog implements View.OnClickListener, View
} }
private void checkPin() { private void checkPin() {
String pin = this.etxtPinCode.getText().toString(); try {
if(BCrypt.checkpw(pin, this.user.getPinCode())) { String pin = this.etxtPinCode.getText().toString();
MainManager.getInstance().setCurrentUser(this.user, true); if (BCrypt.checkpw(pin, this.user.getPinCode())) {
this.etxtPinCode.setEnabled(false); MainManager.getInstance().setCurrentUser(this.user, true);
dismiss(); this.etxtPinCode.setEnabled(false);
} else { dismiss();
etxtPinCode.setBackgroundColor(Color.RED); } else {
etxtPinCode.setBackgroundColor(Color.RED);
}
} catch(Exception e) {
} }
} }
@Override @Override
......
...@@ -62,6 +62,7 @@ public class ProductDialog extends Dialog implements View.OnClickListener { ...@@ -62,6 +62,7 @@ public class ProductDialog extends Dialog implements View.OnClickListener {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
MainManager.getInstance().startTimer();
Button clicked = (Button) view; Button clicked = (Button) view;
String product_name = (String) clicked.getText(); String product_name = (String) clicked.getText();
Product product = Product.getOneByName(product_name); Product product = Product.getOneByName(product_name);
......
...@@ -3,14 +3,19 @@ import android.view.View; ...@@ -3,14 +3,19 @@ import android.view.View;
import android.widget.Button; import android.widget.Button;
import ms.warpzone.warppay.dialogs.ProductDialog; import ms.warpzone.warppay.dialogs.ProductDialog;
import ms.warpzone.warppay.manager.MainManager;
import ms.warpzone.warppay.manager.UiManager;
public class CategoryOnClickListener implements View.OnClickListener { public class CategoryOnClickListener implements View.OnClickListener {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
MainManager.getInstance().startTimer();
Button clicked = (Button) view; Button clicked = (Button) view;
String category = (String) clicked.getText(); String category = (String) clicked.getText();
new ProductDialog(category).show(); ProductDialog p = new ProductDialog(category);
UiManager.getInstance().setProductDialog(p);
p.show();
} }
} }
...@@ -3,6 +3,7 @@ package ms.warpzone.warppay.manager; ...@@ -3,6 +3,7 @@ package ms.warpzone.warppay.manager;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
...@@ -22,6 +23,8 @@ import java.security.NoSuchAlgorithmException; ...@@ -22,6 +23,8 @@ import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException; import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory; import java.security.cert.CertificateFactory;
import java.util.List; import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.TrustManagerFactory;
...@@ -52,7 +55,7 @@ public class MainManager { ...@@ -52,7 +55,7 @@ public class MainManager {
private UiManager uiManager; private UiManager uiManager;
private DataManager dataManager; private DataManager dataManager;
private boolean barcodeLearning=false; private boolean barcodeLearning=false;
private Timer timer;
private static MainManager instance = new MainManager(); private static MainManager instance = new MainManager();
public static MainManager getInstance() { public static MainManager getInstance() {
...@@ -60,8 +63,6 @@ public class MainManager { ...@@ -60,8 +63,6 @@ public class MainManager {
} }
private MainManager() { private MainManager() {
} }
private RestService createRestService() { private RestService createRestService() {
...@@ -81,21 +82,13 @@ public class MainManager { ...@@ -81,21 +82,13 @@ public class MainManager {
Request newRequest; Request newRequest;
newRequest = request.newBuilder() newRequest = request.newBuilder()
.addHeader("Authorization", "Token ") .addHeader("Authorization", "Token 7b6ca8ade59a32cef9b516e91f3bc9545b6c75a7")
.build(); .build();
return chain.proceed(newRequest); return chain.proceed(newRequest);
} }
}); });
} catch (CertificateException e) { } catch (CertificateException | NoSuchAlgorithmException | KeyManagementException | IOException | KeyStoreException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -107,7 +100,6 @@ public class MainManager { ...@@ -107,7 +100,6 @@ public class MainManager {
private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException, private static SSLContext getSSLConfig(Context context) throws CertificateException, IOException,
KeyStoreException, NoSuchAlgorithmException, KeyManagementException { KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
// Loading CAs from an InputStream
CertificateFactory cf = null; CertificateFactory cf = null;
String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw"; String password = "e44r4dv9z1d0vwr9erotafxe66114v31jwhjlvttc8qkoa3nrskcj4ml0pwrh8aw";
KeyStore keyStore = KeyStore.getInstance("BKS"); KeyStore keyStore = KeyStore.getInstance("BKS");
...@@ -189,7 +181,7 @@ public class MainManager { ...@@ -189,7 +181,7 @@ public class MainManager {
public void setCurrentUser(User user, boolean authorized) { public void setCurrentUser(User user, boolean authorized) {
if (user != null) { if (user != null) {
if(user.getPinCode() != "" && !authorized) { if(!user.getPinCode().isEmpty() && !authorized) {
PinCodesDialog p = new PinCodesDialog(user); PinCodesDialog p = new PinCodesDialog(user);
p.setOnDismissListener(new DialogInterface.OnDismissListener() { p.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override @Override
...@@ -203,16 +195,46 @@ public class MainManager { ...@@ -203,16 +195,46 @@ public class MainManager {
} }
this.dataManager.setCurrentUser(user); this.dataManager.setCurrentUser(user);
this.uiManager.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() { public User getCurrentUser() {
return this.dataManager.getCurrentUser(); return this.dataManager.getCurrentUser();
} }
public void clearCurrentUser() { public void clearCurrentUser() {
DataManager.getInstance().setLastCardId("");
this.dataManager.clearCurrentUser(); this.dataManager.clearCurrentUser();
this.uiManager.clearCurrentUser(); this.uiManager.clearCurrentUser();
this.stopTimer();
} }
public void addOrder(Order order) { public void addOrder(Order order) {
......
package ms.warpzone.warppay.manager; package ms.warpzone.warppay.manager;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Build; import android.os.Build;
import android.provider.Contacts;
import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText;
import android.widget.GridLayout; import android.widget.GridLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -30,11 +23,11 @@ import ms.warpzone.warppay.R; ...@@ -30,11 +23,11 @@ import ms.warpzone.warppay.R;
import ms.warpzone.warppay.data.models.local.Category; import ms.warpzone.warppay.data.models.local.Category;
import ms.warpzone.warppay.data.models.local.Product; import ms.warpzone.warppay.data.models.local.Product;
import ms.warpzone.warppay.data.models.local.User; 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.ChargeDialog;
import ms.warpzone.warppay.dialogs.NewUserDialog;
import ms.warpzone.warppay.dialogs.PayChoiceDialog; import ms.warpzone.warppay.dialogs.PayChoiceDialog;
import ms.warpzone.warppay.dialogs.PinCodesDialog; import ms.warpzone.warppay.dialogs.PinCodesDialog;
import ms.warpzone.warppay.dialogs.ProductDialog;
import ms.warpzone.warppay.listener.CategoryOnClickListener; import ms.warpzone.warppay.listener.CategoryOnClickListener;
import ms.warpzone.warppay.orderList.ListViewAdapter; import ms.warpzone.warppay.orderList.ListViewAdapter;
import ms.warpzone.warppay.orderList.ListViewAdapterProducts; import ms.warpzone.warppay.orderList.ListViewAdapterProducts;
...@@ -56,6 +49,13 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap ...@@ -56,6 +49,13 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
private ArrayList<Double> order; private ArrayList<Double> order;
private List<User> users; 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(); private static UiManager ourInstance = new UiManager();
public static UiManager getInstance() { public static UiManager getInstance() {
...@@ -137,6 +137,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap ...@@ -137,6 +137,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
if(this.atxvName.requestFocus()) { if(this.atxvName.requestFocus()) {
this.showSoftKeyboard(this.mainActivity.getCurrentFocus()); 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) { private void enableControls(boolean enable) {
...@@ -178,13 +187,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap ...@@ -178,13 +187,15 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
@Override @Override
public void onClick(View v) { public void onClick(View v) {
MainManager.getInstance().startTimer();
switch (v.getId()) { switch (v.getId()) {
case R.id.btnCharge: case R.id.btnCharge:
new ChargeDialog().show(); this.chargeDialog = new ChargeDialog();
this.chargeDialog.show();
break; break;
case R.id.btnPay: case R.id.btnPay:
PayChoiceDialog payChoiceDialog = new PayChoiceDialog(); this.payChoiceDialog = new PayChoiceDialog();
payChoiceDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { this.payChoiceDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override @Override
public void onDismiss(DialogInterface dialog) { public void onDismiss(DialogInterface dialog) {
if (MainManager.getInstance().getCurrentUser() == null) if (MainManager.getInstance().getCurrentUser() == null)
...@@ -192,7 +203,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap ...@@ -192,7 +203,7 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
} }
}); });
payChoiceDialog.show(); this.payChoiceDialog.show();
break; break;
case R.id.btnLogout: case R.id.btnLogout:
MainManager.getInstance().clearCurrentUser(); MainManager.getInstance().clearCurrentUser();
...@@ -201,11 +212,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap ...@@ -201,11 +212,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
MainManager.getInstance().refreshData(); MainManager.getInstance().refreshData();
break; break;
case R.id.btnGuest: case R.id.btnGuest:
DataManager.getInstance().setIs_guest(true); if(MainManager.getInstance().getCurrentUser() == null) {
MainManager.getInstance().setCurrentUser(new User("Guest","",0,"")); DataManager.getInstance().setIs_guest(true);
this.atxvName.setText("Gast"); MainManager.getInstance().setCurrentUser(new User("Guest", "", 0, ""));
this.atxvName.dismissDropDown(); this.atxvName.setText("Gast");
this.atxvName.dismissDropDown();
}
} }
} }
...@@ -263,4 +275,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap ...@@ -263,4 +275,12 @@ public class UiManager implements View.OnKeyListener, View.OnClickListener, Adap
public void addOrder(Order order) { public void addOrder(Order order) {
this.lstOrderedAdapter.insert(order, this.lstOrderedAdapter.getCount()); this.lstOrderedAdapter.insert(order, this.lstOrderedAdapter.getCount());
} }
public void setProductDialog(ProductDialog productDialog) {
this.productDialog = productDialog;
}
public void setChargeCustomDialog(ChargeCustomDialog chargeCustomDialog) {
this.chargeCustomDialog = chargeCustomDialog;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment