Blame view

PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java 13.6 KB
c8059613   JLo'w   Re-fonte de l'app...
1
2
  package com.example.app_10p5;
  
e9b6c14d   JLo'w   Passage au suppor...
3
  import android.app.Activity;
3c5d3089   JLo'w   Work in progress ...
4
5
  import android.app.FragmentManager;
  import android.app.FragmentTransaction;
2681581a   JLo'w   menu pour changer...
6
  import android.content.Context;
c8059613   JLo'w   Re-fonte de l'app...
7
  import android.content.Intent;
e274d65a   JLo'w   Meilleur vérifica...
8
  import android.content.SharedPreferences;
2681581a   JLo'w   menu pour changer...
9
  import android.graphics.drawable.BitmapDrawable;
0aec73b6   JLo'w   Petit changement ...
10
  import android.graphics.drawable.ColorDrawable;
c8059613   JLo'w   Re-fonte de l'app...
11
  import android.os.Bundle;
e274d65a   JLo'w   Meilleur vérifica...
12
  import android.preference.PreferenceManager;
c8059613   JLo'w   Re-fonte de l'app...
13
  import android.support.v4.view.ViewPager;
e274d65a   JLo'w   Meilleur vérifica...
14
  import android.text.TextUtils;
2681581a   JLo'w   menu pour changer...
15
16
  import android.view.Gravity;
  import android.view.LayoutInflater;
0aec73b6   JLo'w   Petit changement ...
17
18
19
  import android.view.Menu;
  import android.view.MenuInflater;
  import android.view.MenuItem;
c8059613   JLo'w   Re-fonte de l'app...
20
  import android.view.View;
2681581a   JLo'w   menu pour changer...
21
22
  import android.view.ViewGroup;
  import android.widget.Button;
520cecde   JLo'w   Un petit plus, un...
23
  import android.widget.EditText;
2681581a   JLo'w   menu pour changer...
24
25
26
27
  import android.widget.FrameLayout;
  import android.widget.LinearLayout;
  import android.widget.PopupMenu;
  import android.widget.PopupWindow;
93f90e35   JLo'w   NFC et foreground
28
29
  import android.widget.Toast;
  
c1f92981   JLo'w   Implémentation de...
30
31
32
  import org.json.JSONObject;
  
  import java.net.URL;
e274d65a   JLo'w   Meilleur vérifica...
33
  import java.net.URLEncoder;
c1f92981   JLo'w   Implémentation de...
34
35
  import java.util.HashMap;
  
c8059613   JLo'w   Re-fonte de l'app...
36
37
38
39
  
  /**
   * Created by beaus on 24/04/2016.
   */
3c5d3089   JLo'w   Work in progress ...
40
  public class MainActivite extends Activity implements ASyncResponse, main_tab_frag.OnFragmentInteractionListener {
c8059613   JLo'w   Re-fonte de l'app...
41
  
520cecde   JLo'w   Un petit plus, un...
42
43
44
45
46
47
      public static final int STATE_RIEN = 0;
      public static final int STATE_COMMANDE = 3;
      public static final int STATE_VIDANGE = 4;
      public static final int STATE_RECHARGEMENT = 2;
      public static final int STATE_CREATION_COMPTE = 1;
      public static final int STATE_CONNEXION = 5;
e274d65a   JLo'w   Meilleur vérifica...
48
  
520cecde   JLo'w   Un petit plus, un...
49
50
51
52
      public static final long EXPIRATION = 1000*60*10;
  
      private int mState;
      private String mToken;
8cd8911a   JLo'w   Connexion enfin f...
53
      private int mDroit;
520cecde   JLo'w   Un petit plus, un...
54
      private long mTimeToken;
8cd8911a   JLo'w   Connexion enfin f...
55
      private String mUser;
520cecde   JLo'w   Un petit plus, un...
56
  
c8059613   JLo'w   Re-fonte de l'app...
57
58
59
60
      @Override
      protected void onCreate(Bundle savedInstanceState){
          super.onCreate(savedInstanceState);
          setContentView(R.layout.layout_main);
e274d65a   JLo'w   Meilleur vérifica...
61
          PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
520cecde   JLo'w   Un petit plus, un...
62
  
efd095eb   JLo'w   No more joke
63
          setTitle(getResources().getString(R.string.app_name));
fc1fed0d   JLo'w   Restons cohérent
64
  
520cecde   JLo'w   Un petit plus, un...
65
66
          mState = STATE_RIEN;
          mTimeToken = -1;
fc1fed0d   JLo'w   Restons cohérent
67
          mToken = null;
520cecde   JLo'w   Un petit plus, un...
68
  
0aec73b6   JLo'w   Petit changement ...
69
70
          getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.colorPrimary)));
  
2681581a   JLo'w   menu pour changer...
71
72
73
74
75
76
77
78
79
80
81
82
83
84
          if(savedInstanceState == null){
              FragmentManager fragmentManager = getFragmentManager();
              FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
              main_tab_frag fragment = new main_tab_frag();
              fragmentTransaction.add(R.id.fragment_container, fragment);
              fragmentTransaction.commit();
          }
          else{
              mTimeToken = savedInstanceState.getLong("timeToken");
              mToken = savedInstanceState.getString("token");
              mState = savedInstanceState.getInt("state");
              mUser = savedInstanceState.getString("user");
              mDroit = savedInstanceState.getInt("droit");
          }
c8059613   JLo'w   Re-fonte de l'app...
85
86
      }
  
c66109e1   JLo'w   Ajout du code des...
87
      @Override
0aec73b6   JLo'w   Petit changement ...
88
89
90
91
92
93
94
95
96
      public boolean onCreateOptionsMenu(Menu menu) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.menu, menu);
          return true;
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle item selection
e274d65a   JLo'w   Meilleur vérifica...
97
98
         if(item.getItemId() == R.id.action_settings){
             getFragmentManager().beginTransaction().replace(R.id.fragment_container, new SettingsFragment()).addToBackStack("settings").commit();
2681581a   JLo'w   menu pour changer...
99
         }
28dc4009   JLo'w   Déconnexion !!!!!
100
101
102
          else if(item.getItemId() == R.id.action_disconnect){
             disconnect();
         }
2681581a   JLo'w   menu pour changer...
103
104
  
         return super.onOptionsItemSelected(item);
0aec73b6   JLo'w   Petit changement ...
105
106
107
      }
  
      @Override
3c5d3089   JLo'w   Work in progress ...
108
109
110
111
112
      public void onFragmentInteraction(String s){
  
      }
  
      @Override
c66109e1   JLo'w   Ajout du code des...
113
114
115
116
117
118
119
120
121
122
      public void onSaveInstanceState(Bundle savedInstanceState){
          savedInstanceState.putString("token", mToken);
          savedInstanceState.putInt("state", mState);
          savedInstanceState.putString("user", mUser);
          savedInstanceState.putInt("droit", mDroit);
          savedInstanceState.putLong("timeToken", mTimeToken);
  
          super.onSaveInstanceState(savedInstanceState);
      }
  
c66109e1   JLo'w   Ajout du code des...
123
      public void valideCreationCompte(View v){
e274d65a   JLo'w   Meilleur vérifica...
124
          if((TextUtils.getTrimmedLength(mToken) == 30) && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
c66109e1   JLo'w   Ajout du code des...
125
126
127
              EditText champMontant = (EditText) findViewById(R.id.creation_montant);
              float montant = 0.0f;
  
e274d65a   JLo'w   Meilleur vérifica...
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
              if(!TextUtils.isEmpty(champMontant.getText().toString())){
                  try{
                      montant = Float.parseFloat(champMontant.getText().toString());
                  }
                  catch (Throwable t){
                      Toast.makeText(this, "Remplir le champ montant avec un nombre: " + t.toString(), Toast.LENGTH_LONG).show();
                  }
  
                  if(mDroit >= 1){
                      if((montant > 0.0f) && (montant < 200.0f)){
                          mState = STATE_CREATION_COMPTE;
                          champMontant.setText(null);
  
                          Intent intent = new Intent(this, CarteActivite.class);
                          intent.putExtra("token", mToken);
                          intent.putExtra("state", mState);
                          intent.putExtra("montant", montant);
                          startActivityForResult(intent, mState);
                      }
                      else{
                          Toast.makeText(this, "Valeur incorrecte.", Toast.LENGTH_LONG).show();
                      }
                  }
                  else{
                      Toast.makeText(this, "Droit insuffisant.", Toast.LENGTH_LONG).show();
                  }
c66109e1   JLo'w   Ajout du code des...
154
155
              }
              else{
e274d65a   JLo'w   Meilleur vérifica...
156
                  champMontant.setError("Montant requis.");
c66109e1   JLo'w   Ajout du code des...
157
158
159
              }
          }
          else{
28dc4009   JLo'w   Déconnexion !!!!!
160
              disconnect();
c66109e1   JLo'w   Ajout du code des...
161
162
163
          }
      }
  
c8059613   JLo'w   Re-fonte de l'app...
164
165
      public void valideCommande(View v)
      {
e274d65a   JLo'w   Meilleur vérifica...
166
          if((TextUtils.getTrimmedLength(mToken) == 30) && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
520cecde   JLo'w   Un petit plus, un...
167
168
              EditText champMontant = (EditText) findViewById(R.id.commande_prix);
              EditText champQuantite = (EditText) findViewById(R.id.commande_quantite);
c66109e1   JLo'w   Ajout du code des...
169
170
171
              float montant = 0.0f;
              int quantite = 0;
  
e274d65a   JLo'w   Meilleur vérifica...
172
173
              //TODO: gérer le XOR de pute
  
c66109e1   JLo'w   Ajout du code des...
174
175
176
177
178
179
180
181
              try{
                  montant = Float.parseFloat(champMontant.getText().toString());
                  quantite = Integer.parseInt(champQuantite.getText().toString());
              }
              catch (Throwable t)
              {
                  Toast.makeText(this, "Remplir les champs avec des nombres: " + t.toString(), Toast.LENGTH_LONG).show();
              }
520cecde   JLo'w   Un petit plus, un...
182
  
c66109e1   JLo'w   Ajout du code des...
183
              if ((montant > 0.0f) && (montant < 200.0f) && (quantite > 0) && (mDroit >= 1)) {
520cecde   JLo'w   Un petit plus, un...
184
                  mState = STATE_COMMANDE;
e274d65a   JLo'w   Meilleur vérifica...
185
186
                  champMontant.setText(null);
                  champQuantite.setText(null);
814b5a6f   JLo'w   On vide les champ...
187
  
520cecde   JLo'w   Un petit plus, un...
188
189
190
191
192
193
194
                  Intent intent = new Intent(this, CarteActivite.class);
                  intent.putExtra("token", mToken);
                  intent.putExtra("state", mState);
                  intent.putExtra("montant", montant);
                  intent.putExtra("quantite", quantite);
                  startActivityForResult(intent, mState);
              }
c66109e1   JLo'w   Ajout du code des...
195
196
197
              else{
                  Toast.makeText(this, "Valeur incorrecte ou droit insuffisant.", Toast.LENGTH_LONG).show();
              }
520cecde   JLo'w   Un petit plus, un...
198
199
          }
          else{
28dc4009   JLo'w   Déconnexion !!!!!
200
              disconnect();
520cecde   JLo'w   Un petit plus, un...
201
202
203
204
205
          }
      }
  
      public void valideRechargement(View v)
      {
e274d65a   JLo'w   Meilleur vérifica...
206
207
          System.out.println(TextUtils.getTrimmedLength(mToken));
          if((TextUtils.getTrimmedLength(mToken) == 30) && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
c66109e1   JLo'w   Ajout du code des...
208
209
210
              EditText champMontant = (EditText) findViewById(R.id.rechargement_champ_montant);
              float montant = 0.0f;
  
e274d65a   JLo'w   Meilleur vérifica...
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
              if(!TextUtils.isEmpty(champMontant.getText().toString())){
                  try{
                      montant = Float.parseFloat(champMontant.getText().toString());
                  }
                  catch (Throwable t){
                      Toast.makeText(this, "Remplir le champ montant avec un nombre: " + t.toString(), Toast.LENGTH_LONG).show();
                  }
  
                  if(mDroit >= 2){
                      if((montant > 0.0f) && (montant < 200.0f)){
                          mState = STATE_RECHARGEMENT;
                          champMontant.setText(null);
  
                          Intent intent = new Intent(this, CarteActivite.class);
                          intent.putExtra("token", mToken);
                          intent.putExtra("state", mState);
                          intent.putExtra("montant", montant);
                          startActivityForResult(intent, mState);
                      }
                      else{
                          Toast.makeText(this, "Valeur incorrecte.", Toast.LENGTH_LONG).show();
                      }
                  }
                  else{
                      Toast.makeText(this, "Droit insuffisant.", Toast.LENGTH_LONG).show();
                  }
c66109e1   JLo'w   Ajout du code des...
237
238
              }
              else{
e274d65a   JLo'w   Meilleur vérifica...
239
                  champMontant.setError("Montant requis.");
c66109e1   JLo'w   Ajout du code des...
240
              }
520cecde   JLo'w   Un petit plus, un...
241
242
          }
          else{
28dc4009   JLo'w   Déconnexion !!!!!
243
              disconnect();
520cecde   JLo'w   Un petit plus, un...
244
245
246
247
248
249
250
251
          }
      }
  
      public void valideConnection(View v)
      {
          EditText viewUser = (EditText) findViewById(R.id.connection_username);
          EditText viewPsw = (EditText) findViewById(R.id.connection_password);
  
c1f92981   JLo'w   Implémentation de...
252
253
254
          String user = viewUser.getText().toString();
          String password = viewPsw.getText().toString();
  
e274d65a   JLo'w   Meilleur vérifica...
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
          if (!TextUtils.isEmpty(user)) {
              if(!TextUtils.isEmpty(password)){
                  mState = STATE_CONNEXION;
  
                  viewUser.setText(null);
                  viewPsw.setText(null);
  
                  try{
                      SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                      URL url = new URL(settings.getString("server_address", null) + "api/utilisateur/connexion");
                      HashMap<String, String> param = new HashMap<String, String>();
                      param.put("login", URLEncoder.encode(user, "UTF-8"));
                      param.put("mdp", URLEncoder.encode(password, "UTF-8"));
                      NetworkThread nt = new NetworkThread(url, param);
                      nt.delegate = this;
                      nt.execute();
                  }
                  catch (Throwable t) {
                      Toast.makeText(this, "Erreur: " + t.toString(), Toast.LENGTH_LONG).show();
                      System.out.println("Exception: " + t.toString());
                  }
c1f92981   JLo'w   Implémentation de...
276
              }
e274d65a   JLo'w   Meilleur vérifica...
277
278
              else {
                  viewPsw.setError("Mot de passe requis.");
c1f92981   JLo'w   Implémentation de...
279
              }
520cecde   JLo'w   Un petit plus, un...
280
          }
c66109e1   JLo'w   Ajout du code des...
281
          else{
e274d65a   JLo'w   Meilleur vérifica...
282
              viewUser.setError("Utilisateur requis.");
c66109e1   JLo'w   Ajout du code des...
283
          }
520cecde   JLo'w   Un petit plus, un...
284
      }
8d573e63   JLo'w   Mise en place de ...
285
286
  
      public void valideVidange(View v){
e274d65a   JLo'w   Meilleur vérifica...
287
          if((TextUtils.getTrimmedLength(mToken) == 30) && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
8d573e63   JLo'w   Mise en place de ...
288
289
290
291
292
293
294
295
296
297
298
299
300
  
              if((mDroit >= 2)){
                  mState = STATE_VIDANGE;
                  Intent intent = new Intent(this, CarteActivite.class);
                  intent.putExtra("token", mToken);
                  intent.putExtra("state", mState);
                  startActivityForResult(intent, mState);
              }
              else{
                  Toast.makeText(this, "Droit insuffisant.", Toast.LENGTH_LONG).show();
              }
          }
          else{
28dc4009   JLo'w   Déconnexion !!!!!
301
              disconnect();
8d573e63   JLo'w   Mise en place de ...
302
303
          }
      }
520cecde   JLo'w   Un petit plus, un...
304
305
306
307
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data){
          //TODO: faire des choses avec ca
4ef24041   JLo'w   Retour du JSONObj...
308
  
814b5a6f   JLo'w   On vide les champ...
309
310
          mState = STATE_RIEN;
  
4ef24041   JLo'w   Retour du JSONObj...
311
312
313
314
315
316
          try{
              JSONObject json = new JSONObject(data.getStringExtra("json"));
              Toast.makeText(this, "Status: " + json.getString("status"), Toast.LENGTH_SHORT).show();
  
          }
          catch (Throwable t){
2681581a   JLo'w   menu pour changer...
317
              Toast.makeText(this, "Retour", Toast.LENGTH_SHORT).show();
4ef24041   JLo'w   Retour du JSONObj...
318
319
320
          }
  
  
520cecde   JLo'w   Un petit plus, un...
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
          switch (requestCode) {
              case STATE_COMMANDE:
                  break;
              case STATE_CONNEXION:
                  break;
              case STATE_CREATION_COMPTE:
                  break;
              case STATE_RECHARGEMENT:
                  break;
              case STATE_VIDANGE:
                  break;
              case STATE_RIEN:
              default:
                  Toast.makeText(this, "WTF, le cancer est dans l'application!!", Toast.LENGTH_LONG).show();
                  break;
          }
c8059613   JLo'w   Re-fonte de l'app...
337
      }
93f90e35   JLo'w   NFC et foreground
338
  
c1f92981   JLo'w   Implémentation de...
339
340
341
      /* Retour du network thread */
      @Override
      public void processFinish(JSONObject output) {
96cf88d2   JLo'w   Réception de JSON...
342
343
          if(output.length() != 0){
              try{
8cd8911a   JLo'w   Connexion enfin f...
344
345
                  if(output.get("status").toString().equals("ok")){
                      mToken = output.get("jeton").toString();
96cf88d2   JLo'w   Réception de JSON...
346
                      mTimeToken = System.currentTimeMillis();
8cd8911a   JLo'w   Connexion enfin f...
347
348
349
                      mDroit = output.getInt("droit");
                      mUser = output.get("login").toString();
                      Toast.makeText(this, "Bonjour " + mUser + " vous êtes bien connecté pour " + EXPIRATION / (1000 * 60) + " minutes.", Toast.LENGTH_LONG).show();
2681581a   JLo'w   menu pour changer...
350
351
                      final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
                      viewPager.setCurrentItem(1);
96cf88d2   JLo'w   Réception de JSON...
352
353
354
355
356
357
                  }
                  else{
                      Toast.makeText(this, "Erreur dans la requête: " + output.get("status"), Toast.LENGTH_LONG).show();
                  }
              }
              catch(Throwable t){
8cd8911a   JLo'w   Connexion enfin f...
358
                  Toast.makeText(this, "WTF, le cancer est dans l'application!!" + t.toString(), Toast.LENGTH_LONG).show();
96cf88d2   JLo'w   Réception de JSON...
359
360
361
362
363
              }
          }
          else{
              Toast.makeText(this, "Impossible de se connecter au serveur", Toast.LENGTH_LONG).show();
          }
c1f92981   JLo'w   Implémentation de...
364
      }
3c5d3089   JLo'w   Work in progress ...
365
366
367
368
369
370
371
372
  
      public String getToken(){
          return mToken;
      }
  
      public long getTimeToken(){
          return mTimeToken;
      }
28dc4009   JLo'w   Déconnexion !!!!!
373
374
375
376
377
  
      public void disconnect(){
          mToken = null;
          mDroit = 0;
          mUser = null;
fc1fed0d   JLo'w   Restons cohérent
378
          mTimeToken = -1;
28dc4009   JLo'w   Déconnexion !!!!!
379
380
381
382
383
  
          Toast.makeText(this, "Veuillez vous reconnecter.", Toast.LENGTH_SHORT).show();
          final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
          viewPager.setCurrentItem(0);
      }
c8059613   JLo'w   Re-fonte de l'app...
384
  }