diff --git a/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NotificationDialog.java b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NotificationDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..a03bf838cdf9bb828910a0d60eb66a2c2c6564de --- /dev/null +++ b/WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NotificationDialog.java @@ -0,0 +1,82 @@ +package ms.warpzone.warppay.dialogs; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Handler; + +import ms.warpzone.warppay.R; + +public class NotificationDialog { + + AlertDialog.Builder builder; + AlertDialog dialog; + private String message; + + public NotificationDialog(Context context, String title, String message) { + this.builder = new AlertDialog.Builder(context); + this.builder.setTitle(title); + this.builder.setMessage(message); + } + + public NotificationDialog(Context context) { + this.builder = new AlertDialog.Builder(context); + } + + public AlertDialog.Builder getBuilder() { + return this.builder; + } + + public void show() { + this.show(0); + } + + public void setWarning() { + this.builder.setIcon(R.drawable.ic_dialog_alert_holo_light); + this.builder.setCancelable(false); + this.builder.setTitle("WARNING"); + } + public void show(int timeout) { + this.dialog = this.builder.create(); + this.dialog.show(); + if(timeout > 0) { + this.enableAutoDismiss(timeout); + } + } + + public void enableAutoDismiss(int time){ + final Handler handler = new Handler(); + final Runnable runnable = new Runnable() { + @Override + public void run() { + AlertDialog alertDialog = NotificationDialog.this.dialog; + if (alertDialog != null && alertDialog.isShowing()) { + alertDialog.dismiss(); + } + } + }; + + this.dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + handler.removeCallbacks(runnable); + } + }); + + handler.postDelayed(runnable, time); + } + + public void setMessage(String message) { + this.builder.setMessage(message); + } + + public void dismiss() { + if(this.dialog != null) { + this.dialog.dismiss(); + } + } + + public AlertDialog getDialog() { + return dialog; + } +} 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 7e3effe1cc40da46e8343df2f4c2ee4326769a43..59e27013a1161755f1e4ce47db62e81076ce0cac 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 @@ -1,6 +1,7 @@ package ms.warpzone.warppay.manager; import android.app.AlertDialog; +import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Handler; @@ -41,6 +42,7 @@ import ms.warpzone.warppay.data.models.rest.RestCategory; import ms.warpzone.warppay.data.models.rest.RestProduct; import ms.warpzone.warppay.data.models.rest.RestTransaction; import ms.warpzone.warppay.data.models.rest.RestUser; +import ms.warpzone.warppay.dialogs.NotificationDialog; import ms.warpzone.warppay.dialogs.NyanCatDialog; import ms.warpzone.warppay.dialogs.PinCodesDialog; import ms.warpzone.warppay.orderList.Order; @@ -61,6 +63,9 @@ public class MainManager { private Timer timer; private Timer screenSaverTimer; public AlertDialog alertAmount; + private ProgressDialog pdRefresh = null; + private NotificationDialog ndRefreshError = null; + public static MainManager getInstance() { return instance; } @@ -129,6 +134,13 @@ public class MainManager { } public void refreshData() { + if(this.ndRefreshError != null) + this.ndRefreshError.dismiss(); + this.ndRefreshError = null; + + this.pdRefresh = ProgressDialog.show(this.mainActivity, "Refreshing...", "Loading..."); + + this.restService.getAllUser().enqueue(new Callback<List<RestUser>>() { @Override public void onResponse(Response<List<RestUser>> response, Retrofit retrofit) { @@ -142,6 +154,7 @@ public class MainManager { @Override public void onFailure(Throwable t) { Log.d("REST", t.getMessage()); + MainManager.getInstance().showRefreshError(); } }); @@ -152,12 +165,12 @@ public class MainManager { if (categoryList != null) { MainManager.getInstance().uiManager.showCategoryButtons(); } - Toast.makeText(MainManager.getInstance().mainActivity, "Refresh successful", Toast.LENGTH_LONG).show(); } @Override public void onFailure(Throwable t) { Log.d("REST", t.getMessage()); + MainManager.getInstance().showRefreshError(); } }); @@ -168,16 +181,53 @@ public class MainManager { if (productList != null) { MainManager.getInstance().uiManager.refreshProductData(productList); } + MainManager.this.pdRefresh.dismiss(); } @Override public void onFailure(Throwable t) { Log.d("REST", t.getMessage()); + MainManager.getInstance().showRefreshError(); } }); } + private void showRefreshError() { + + if(ndRefreshError == null) { + if(pdRefresh != null) + pdRefresh.dismiss(); + ndRefreshError = new NotificationDialog(this.mainActivity,"WARNING","Refresh failed. Please retry!"); + ndRefreshError.setWarning(); + ndRefreshError.getBuilder().setNeutralButton("Refresh", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + MainManager.getInstance().refreshData(); + + } + }); + ndRefreshError.show(); + + final Handler handler = new Handler(); + final Runnable runnable = new Runnable() { + @Override + public void run() { + MainManager.getInstance().refreshData(); + } + }; + + ndRefreshError.getDialog().setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + handler.removeCallbacks(runnable); + } + }); + + handler.postDelayed(runnable, 10000); + } + + } public void setCurrentUser(User user) { this.setCurrentUser(user,false); } @@ -294,6 +344,10 @@ public class MainManager { @Override public void onFailure(Throwable t) { + NotificationDialog ndTransfer = new NotificationDialog(MainManager.getInstance().getMainActivity()); + ndTransfer.setWarning(); + ndTransfer.setMessage("Error Charging your account"); + ndTransfer.show(4000); Log.d("REST", t.getMessage()); } }); @@ -321,34 +375,18 @@ public class MainManager { if (DataManager.getInstance().getCurrentUser().getCredit()>=totalAmount || cash){ DataManager.getInstance().performPayment(cash); if(!cash) { - AlertDialog.Builder builder = new AlertDialog.Builder(this.mainActivity); - builder.setMessage("Neues Guthaben: " + this.getCurrentUser().getCredit() + " Euro"); - alertAmount = builder.create(); - alertAmount.show(); - final Handler handler = new Handler(); - final Runnable runnable = new Runnable() { - @Override - public void run() { - if (MainManager.getInstance().alertAmount.isShowing()) { - alertAmount.dismiss(); - } - } - }; - - alertAmount.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - handler.removeCallbacks(runnable); - } - }); - - handler.postDelayed(runnable, 2500); + NotificationDialog n = new NotificationDialog(this.mainActivity); + n.setMessage("Neues Guthaben: " + this.getCurrentUser().getCredit() + " Euro"); + n.show(2500); } MainManager.getInstance().clearCurrentUser(); } else { - Toast.makeText(mainActivity, mainActivity.getResources().getString(R.string.please_charge), Toast.LENGTH_LONG).show(); + NotificationDialog ndPlsCharge = new NotificationDialog(MainManager.getInstance().getMainActivity()); + ndPlsCharge.setWarning(); + ndPlsCharge.setMessage(mainActivity.getResources().getString(R.string.please_charge)); + ndPlsCharge.show(2000); } } } @@ -358,14 +396,8 @@ public class MainManager { return mainActivity; } - public void setMainActivity(MainActivity mainActivity) { - this.mainActivity = mainActivity; - - } - public RestService getRestService() { return restService; } - public void saveCardId() { final String card_id = this.dataManager.getLastCardId(); 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 0b16f0321bb965d530901a861d11cf41431470d2..70d9e1437fbf3bb7addc0d51e7e0ee24a2549620 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 @@ -25,6 +25,7 @@ import ms.warpzone.warppay.data.models.local.Product; import ms.warpzone.warppay.data.models.local.User; import ms.warpzone.warppay.dialogs.ChargeCustomDialog; import ms.warpzone.warppay.dialogs.ChargeDialog; +import ms.warpzone.warppay.dialogs.NotificationDialog; import ms.warpzone.warppay.dialogs.PayChoiceDialog; import ms.warpzone.warppay.dialogs.PinCodesDialog; import ms.warpzone.warppay.dialogs.ProductDialog; diff --git a/WarpDrinkApp/app/src/main/res/drawable/ic_dialog_alert_holo_light.png b/WarpDrinkApp/app/src/main/res/drawable/ic_dialog_alert_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..1374a53e5fdf909c47f621e43226c6c12823e6a9 Binary files /dev/null and b/WarpDrinkApp/app/src/main/res/drawable/ic_dialog_alert_holo_light.png differ