From c602fb53272a6647f2f0581b739d5fdb4c0b9f1e Mon Sep 17 00:00:00 2001 From: Christian Dresen <c.dresen@fh-muenster.de> Date: Wed, 19 Apr 2017 22:37:04 +0200 Subject: [PATCH] Verbesserung der Fehlermeldungen --- .../warppay/dialogs/NotificationDialog.java | 82 ++++++++++++++++ .../warpzone/warppay/manager/MainManager.java | 92 ++++++++++++------ .../warpzone/warppay/manager/UiManager.java | 1 + .../drawable/ic_dialog_alert_holo_light.png | Bin 0 -> 1018 bytes 4 files changed, 145 insertions(+), 30 deletions(-) create mode 100644 WarpDrinkApp/app/src/main/java/ms/warpzone/warppay/dialogs/NotificationDialog.java create mode 100644 WarpDrinkApp/app/src/main/res/drawable/ic_dialog_alert_holo_light.png 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 0000000..a03bf83 --- /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 7e3effe..59e2701 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 0b16f03..70d9e14 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 GIT binary patch literal 1018 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;OpT z1B~5HX4`=T%L*LRfizez!?|}o;S3DSOr9=|ArXh)Uf-WD6Dq*|;rzR~hxvcI7_=&L zEalcwnbq(><%x%h<ANOydd{~*_|CdHC`@}4@LYbOgA$i26HAN2&Ne1a&L<9BQ}`Mm zlub{%{}u@Du1of+58rk9+_|%7%J;oLyZfocaSN?Qd3l~6uR3#?|G&?oSfitDZ@v7* z1O>_JXZH@ID^-3MDLn2}RV045?Dp-Vz2{`J(kJw+w$HsU^{)D&<H1GT?Rh*&F<aA8 zo=jQYo^bD&g65(0wtZr!1yAmI<)>I?-L5zF$qi9&SEZFVwkFtSbqjG-Zl61uHM81i z{cXJ^etnk~1>F<9e|y5zqbW)D6({G%F3HOd>^W_=B&l*o(n{XxyG<+fnuG3@majdv z+@^RUd)&9+-B;e4#%#_~Iplt?<Q{uR&zfHw_Ws++)3j%$Z@kd7=hLDsUUwg8+`RA7 zWW7flIvl%fmn8nO;he|yP~BgAk)b0~ZOjJAY3Y5(4<<icr@r~6)5DoEYK{@}lvkH| zC-*T%1l~>Ao!mO<9jDiC(btzAOiZ3RL5<&TWofvWdDXK(qkk{k=AQbjamDVe!ZE)a zs>K#(&ez^`u-bY`jq}(wkE{o~SXZcWoHj1bv&oeb_AxMBIcXcq$sMb1tb18$nR#)6 z*g~sp>7XOM)4bc3?h)3RKL6sB`m7h1_LPP9r2h3y4{Mn`Z-dOXXxn4Iug$VN!u$Qb zRqW*L8}>g)-(S@_%WUG6&G)jO1+-}{e=b?Bb9Gs|bkW3m-nZxduJ3quV%^f2zq-}g z^L9L(ck{8)q^Mbu5}|BQzu3ILeCnoY?Bi&=gWLM0f2Jly=UrW%9pgE*>dL)4Vo&%E z=s#S?SuMA6^ZU?O=l4EdwB=!aw2H9wk854F=go_HmdyKhAlCNhh4QUpu0`i>lxHp6 zQ?GgKYt72{){p1CNIO|@W`X|Z<kR=39^PBG)bE9~;q}Mz>VF?f|4lSYyRbgwgS4NH zM7`_lX=mJ9?x*{n`uly>^FxgP4NiRh`=WT&YK>Jb{4f4}GwOY&aha!zKlX3SQN{R; zeT6+`f7mTvyq~eQ@_`jFYp9mEMwFx^mZVxG7o`Fz1|tJQLtO(PG7B*@w=yubGPKk+ zu&^>PSh}Jh4Mjt4eoAIqC2kE@zMi-R)F276Aviy+q&%@GmBBG3KPgqgGdD3kH7GSP VrLyp3str&PgQu&X%Q~loCIC_U&dmS- literal 0 HcmV?d00001 -- GitLab