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;
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();
......
......@@ -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;
......
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 {
@Override
public void onClick(View v) {
MainManager.getInstance().startTimer();
switch (v.getId()) {
case R.id.btnCredit:
MainManager.getInstance().performPayment(false);
......
......@@ -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
......
......@@ -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);
......
......@@ -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();
}
}
......@@ -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) {
......
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;
}
}
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