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