Commit 1b4becf51ccdac652682098fb3d8d3ef87615c74

Authored by Geoffrey Frogeye
2 parents 676056db bb05919b

Merge pull request #5 from GeoffreyFrogeye/interface

Interface
Showing 98 changed files with 2787 additions and 1 deletions   Show diff stats
1 # Built application files 1 # Built application files
2 -*.apk 2 +# *.apk
3 *.ap_ 3 *.ap_
4 4
5 # Files for the Dalvik VM 5 # Files for the Dalvik VM
App10p5/.gitignore 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +*.iml
  2 +.gradle
  3 +/local.properties
  4 +/.idea/workspace.xml
  5 +/.idea/libraries
  6 +.DS_Store
  7 +/build
  8 +/captures
App10p5/.idea/.name 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +App10p5
0 \ No newline at end of file 2 \ No newline at end of file
App10p5/.idea/compiler.xml 0 → 100644
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="CompilerConfiguration">
  4 + <resourceExtensions />
  5 + <wildcardResourcePatterns>
  6 + <entry name="!?*.java" />
  7 + <entry name="!?*.form" />
  8 + <entry name="!?*.class" />
  9 + <entry name="!?*.groovy" />
  10 + <entry name="!?*.scala" />
  11 + <entry name="!?*.flex" />
  12 + <entry name="!?*.kt" />
  13 + <entry name="!?*.clj" />
  14 + <entry name="!?*.aj" />
  15 + </wildcardResourcePatterns>
  16 + <annotationProcessing>
  17 + <profile default="true" name="Default" enabled="false">
  18 + <processorPath useClasspath="true" />
  19 + </profile>
  20 + </annotationProcessing>
  21 + </component>
  22 +</project>
0 \ No newline at end of file 23 \ No newline at end of file
App10p5/.idea/copyright/profiles_settings.xml 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<component name="CopyrightManager">
  2 + <settings default="" />
  3 +</component>
0 \ No newline at end of file 4 \ No newline at end of file
App10p5/.idea/gradle.xml 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="GradleSettings">
  4 + <option name="linkedExternalProjectsSettings">
  5 + <GradleProjectSettings>
  6 + <option name="distributionType" value="LOCAL" />
  7 + <option name="externalProjectPath" value="$PROJECT_DIR$" />
  8 + <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.8" />
  9 + <option name="gradleJvm" value="1.7" />
  10 + <option name="modules">
  11 + <set>
  12 + <option value="$PROJECT_DIR$" />
  13 + <option value="$PROJECT_DIR$/app" />
  14 + </set>
  15 + </option>
  16 + </GradleProjectSettings>
  17 + </option>
  18 + </component>
  19 +</project>
0 \ No newline at end of file 20 \ No newline at end of file
App10p5/.idea/misc.xml 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="EntryPointsManager">
  4 + <entry_points version="2.0" />
  5 + </component>
  6 + <component name="NullableNotNullManager">
  7 + <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
  8 + <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
  9 + <option name="myNullables">
  10 + <value>
  11 + <list size="4">
  12 + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
  13 + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
  14 + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
  15 + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
  16 + </list>
  17 + </value>
  18 + </option>
  19 + <option name="myNotNulls">
  20 + <value>
  21 + <list size="4">
  22 + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
  23 + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
  24 + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
  25 + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
  26 + </list>
  27 + </value>
  28 + </option>
  29 + </component>
  30 + <component name="ProjectLevelVcsManager" settingsEditedManually="false">
  31 + <OptionsSetting value="true" id="Add" />
  32 + <OptionsSetting value="true" id="Remove" />
  33 + <OptionsSetting value="true" id="Checkout" />
  34 + <OptionsSetting value="true" id="Update" />
  35 + <OptionsSetting value="true" id="Status" />
  36 + <OptionsSetting value="true" id="Edit" />
  37 + <ConfirmationsSetting value="0" id="Add" />
  38 + <ConfirmationsSetting value="0" id="Remove" />
  39 + </component>
  40 + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
  41 + <output url="file://$PROJECT_DIR$/build/classes" />
  42 + </component>
  43 + <component name="ProjectType">
  44 + <option name="id" value="Android" />
  45 + </component>
  46 +</project>
0 \ No newline at end of file 47 \ No newline at end of file
App10p5/.idea/modules.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectModuleManager">
  4 + <modules>
  5 + <module fileurl="file://$PROJECT_DIR$/App10p5.iml" filepath="$PROJECT_DIR$/App10p5.iml" />
  6 + <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
  7 + </modules>
  8 + </component>
  9 +</project>
0 \ No newline at end of file 10 \ No newline at end of file
App10p5/.idea/runConfigurations.xml 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="RunConfigurationProducerService">
  4 + <option name="ignoredProducers">
  5 + <set>
  6 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
  7 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
  8 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
  9 + </set>
  10 + </option>
  11 + </component>
  12 +</project>
0 \ No newline at end of file 13 \ No newline at end of file
App10p5/.idea/vcs.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="VcsDirectoryMappings">
  4 + <mapping directory="" vcs="" />
  5 + </component>
  6 +</project>
0 \ No newline at end of file 7 \ No newline at end of file
App10p5/app/.gitignore 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +/build
App10p5/app/build.gradle 0 → 100644
@@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
  1 +apply plugin: 'com.android.application'
  2 +
  3 +android {
  4 + compileSdkVersion 23
  5 + buildToolsVersion "23.0.3"
  6 +
  7 + defaultConfig {
  8 + applicationId "net.plil.clubinfo.app10p5"
  9 + minSdkVersion 15
  10 + targetSdkVersion 23
  11 + versionCode 1
  12 + versionName "1.0"
  13 + }
  14 + buildTypes {
  15 + release {
  16 + minifyEnabled false
  17 + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  18 + }
  19 + }
  20 +}
  21 +
  22 +dependencies {
  23 + compile fileTree(dir: 'libs', include: ['*.jar'])
  24 + testCompile 'junit:junit:4.12'
  25 + compile 'com.android.support:appcompat-v7:23.2.1'
  26 + compile 'com.android.support:design:23.2.1'
  27 +}
App10p5/app/proguard-rules.pro 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +# Add project specific ProGuard rules here.
  2 +# By default, the flags in this file are appended to flags specified
  3 +# in /home/marianne/Applications/Android/sdk/tools/proguard/proguard-android.txt
  4 +# You can edit the include path and order by changing the proguardFiles
  5 +# directive in build.gradle.
  6 +#
  7 +# For more details, see
  8 +# http://developer.android.com/guide/developing/tools/proguard.html
  9 +
  10 +# Add any project specific keep options here:
  11 +
  12 +# If your project uses WebView with JS, uncomment the following
  13 +# and specify the fully qualified class name to the JavaScript interface
  14 +# class:
  15 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  16 +# public *;
  17 +#}
App10p5/app/src/androidTest/java/net/plil/clubinfo/app10p5/ApplicationTest.java 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +package net.plil.clubinfo.app10p5;
  2 +
  3 +import android.app.Application;
  4 +import android.test.ApplicationTestCase;
  5 +
  6 +/**
  7 + * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
  8 + */
  9 +public class ApplicationTest extends ApplicationTestCase<Application> {
  10 + public ApplicationTest() {
  11 + super(Application.class);
  12 + }
  13 +}
0 \ No newline at end of file 14 \ No newline at end of file
App10p5/app/src/main/AndroidManifest.xml 0 → 100644
@@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3 + package="net.plil.clubinfo.app10p5">
  4 +
  5 + <!-- Nécessaire pour utiliser les cartes NFC -->
  6 + <uses-permission android:name="android.permission.NFC" />
  7 + <uses-sdk android:minSdkVersion="15"/>
  8 + <uses-feature android:name="android.hardware.nfc" android:required="true" />
  9 +
  10 + <application
  11 + android:allowBackup="true"
  12 + android:icon="@mipmap/ic_launcher"
  13 + android:label="@string/app_name"
  14 + android:supportsRtl="true"
  15 + android:theme="@style/AppTheme">
  16 + <activity
  17 + android:name=".MainActivity"
  18 + android:launchMode="singleTask"
  19 + android:label="@string/app_name"
  20 + android:theme="@style/AppTheme.NoActionBar">
  21 + <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
  22 + android:resource="@xml/tech" />
  23 + <intent-filter> <!-- Prioritaire mais je n'ai pas réussi à le faire fonctionner -->
  24 + <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
  25 + <category android:name="android.intent.category.DEFAULT"/>
  26 + <data android:mimeType="text/plain" />
  27 + </intent-filter>
  28 + <intent-filter> <!-- Regardé juste après les NDEF -->
  29 + <action android:name="android.nfc.action.TECH_DISCOVERED"/>
  30 + <category android:name="android.intent.category.DEFAULT"/>
  31 + </intent-filter>
  32 + <intent-filter>
  33 + <action android:name="android.intent.action.MAIN" />
  34 + <category android:name="android.intent.category.LAUNCHER" />
  35 + </intent-filter>
  36 +
  37 + </activity>
  38 + </application>
  39 +
  40 +</manifest>
App10p5/app/src/main/java/net/plil/clubinfo/app10p5/MainActivity.java 0 → 100644
@@ -0,0 +1,201 @@ @@ -0,0 +1,201 @@
  1 +package net.plil.clubinfo.app10p5;
  2 +
  3 +import android.app.PendingIntent;
  4 +import android.content.Intent;
  5 +import android.content.IntentFilter;
  6 +import android.nfc.NfcAdapter;
  7 +import android.nfc.Tag;
  8 +import android.nfc.tech.MifareClassic;
  9 +import android.nfc.tech.NfcA;
  10 +import android.os.Bundle;
  11 +import android.support.design.widget.FloatingActionButton;
  12 +import android.support.design.widget.Snackbar;
  13 +import android.support.v7.app.AppCompatActivity;
  14 +import android.support.v7.widget.Toolbar;
  15 +import android.util.Log;
  16 +import android.view.Menu;
  17 +import android.view.MenuItem;
  18 +import android.view.View;
  19 +import android.widget.Toast;
  20 +
  21 +import java.io.IOException;
  22 +
  23 +public class MainActivity extends AppCompatActivity {
  24 +
  25 + private NfcAdapter mNfcAdapter;
  26 + private PendingIntent mPendingIntent;
  27 + private IntentFilter[] mFilters;
  28 + private String[][] mTechLists;
  29 + private Toast mToast;
  30 +
  31 + public void onResume() {
  32 + super.onResume();
  33 + if(mNfcAdapter != null)
  34 + mNfcAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists);
  35 + }
  36 +
  37 + // Convertit l'array de byte en chaîne hexadécimale (si le byte = 0x63, str = "63").
  38 + private String ByteArrayToHexString(byte [] inarray) {
  39 + int i, j, in;
  40 + String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
  41 + String out= "";
  42 + for(j = 0 ; j < inarray.length ; ++j)
  43 + {
  44 + in = (int) inarray[j] & 0xff;
  45 + i = (in >> 4) & 0x0f;
  46 + out += hex[i];
  47 + i = in & 0x0f;
  48 + out += hex[i];
  49 + }
  50 + return out;
  51 + }
  52 +
  53 + //La fonction se lance une fois au démarrage de l'application.
  54 + @Override
  55 + protected void onCreate(Bundle savedInstanceState) {
  56 + super.onCreate(savedInstanceState);
  57 + setContentView(R.layout.activity_main);
  58 + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  59 + setSupportActionBar(toolbar);
  60 +
  61 + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
  62 + fab.setOnClickListener(new View.OnClickListener() {
  63 + @Override
  64 + public void onClick(View view) {
  65 + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
  66 + .setAction("Action", null).show();
  67 + }
  68 + });
  69 +
  70 + ////Code NFC -- Nécessaire
  71 + mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
  72 +
  73 + mPendingIntent = PendingIntent.getActivity(this, 0,
  74 + new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
  75 +
  76 + IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
  77 +
  78 + try {
  79 + ndef.addDataType("text/plain");
  80 + } catch (IntentFilter.MalformedMimeTypeException e) {
  81 + throw new RuntimeException("fail", e);
  82 + }
  83 + mFilters = new IntentFilter[] {
  84 + ndef,
  85 + };
  86 +
  87 + // Setup a tech list for all NfcF tags
  88 + mTechLists = new String[][]{new String[]{NfcA.class.getName(), MifareClassic.class.getName()}};
  89 + }
  90 +
  91 + @Override
  92 + public void onNewIntent(Intent intent) {
  93 + if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {
  94 + String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID));
  95 + mToast = Toast.makeText(getApplicationContext(), "ID Carte : " + id_carte, Toast.LENGTH_SHORT);
  96 + mToast.show();
  97 + System.out.println("ID Carte : " + id_carte);
  98 +
  99 + //Lecture des données
  100 + Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  101 + MifareClassic mfc = MifareClassic.get(tag);
  102 + byte[] data;
  103 + String prenom = null, nom = null, login = null;
  104 +
  105 + if(mfc != null) {
  106 + try {
  107 + mfc.connect();
  108 + String cardData = null;
  109 +
  110 + //Clé A
  111 + byte[] cleA = new byte[] { (byte)0xa0, (byte)0xa1, (byte)0xa2,
  112 + (byte)0xa3, (byte)0xa4, (byte)0xa5 };
  113 + //On veut juste lire le secteur 12
  114 + boolean estConnecte = mfc.authenticateSectorWithKeyA(12, cleA);
  115 + if (estConnecte) {
  116 + //Il y a 4 blocs dans le secteur 12 -> INE, numéro étudiant, prénom, nom
  117 + //On ne veut que prénom et nom, donc on passe les deux premiers
  118 + for (int i = 2, bIndex = mfc.sectorToBlock(12) + i; i < 4; i++, bIndex++) {
  119 + //sectorToBlock : Renvoie l'indice (global, parmis tous les blocs de
  120 + // tous les secteurs) du premier bloc du secteur 12
  121 + //Lit les données du bloc
  122 + data = mfc.readBlock(bIndex);
  123 +
  124 + //Convertit les bytes en String
  125 + String dataStr = new String(data);
  126 + if (i == 2) //Prénom
  127 + prenom = dataStr;
  128 + else if (i == 3) //Nom
  129 + nom = dataStr;
  130 + mToast = Toast.makeText(getApplicationContext(), "Données lues : " + dataStr, Toast.LENGTH_SHORT);
  131 + mToast.show();
  132 + System.out.println("Données lues : " + dataStr);
  133 + }
  134 + } else {
  135 + mToast = Toast.makeText(getApplicationContext(), "Erreur lors de la connection au secteur 12.", Toast.LENGTH_SHORT);
  136 + mToast.show();
  137 + System.out.println("Erreur lors de la connection au secteur 12.");
  138 + }
  139 + mfc.close();
  140 + } catch (IOException e) {
  141 + System.out.println(e.getLocalizedMessage());
  142 + }
  143 +
  144 + //Concaténation des données récupérées en login
  145 + login = prenom;
  146 + login.concat(".");
  147 + login.concat(nom);
  148 + System.out.println("Prenom : " + prenom);
  149 + System.out.println("Nom : " + nom);
  150 + }
  151 + else
  152 + {
  153 + System.out.println("Pas de connection possible à la technologie Mifare Classic.");
  154 + mToast = Toast.makeText(getApplicationContext(), "Pas de connection possible à la technologie Mifare Classic.", Toast.LENGTH_SHORT);
  155 + mToast.show();
  156 + }
  157 +
  158 + mToast = Toast.makeText(getApplicationContext(), "Login Lille 1 : " + login, Toast.LENGTH_SHORT);
  159 + mToast.show();
  160 + System.out.println("Login Lille 1 : " + login);
  161 +
  162 +
  163 + //Éxécution de la fonction
  164 + taFonction(id_carte, login);
  165 + }
  166 + }
  167 +
  168 + public void taFonction(String id_carte, String login)
  169 + {
  170 + //code fonction
  171 + }
  172 +
  173 + @Override
  174 + public void onPause() {
  175 + super.onPause();
  176 + if(mNfcAdapter != null)
  177 + mNfcAdapter.disableForegroundDispatch(this);
  178 + }
  179 +
  180 + @Override
  181 + public boolean onCreateOptionsMenu(Menu menu) {
  182 + // Inflate the menu; this adds items to the action bar if it is present.
  183 + getMenuInflater().inflate(R.menu.menu_main, menu);
  184 + return true;
  185 + }
  186 +
  187 + @Override
  188 + public boolean onOptionsItemSelected(MenuItem item) {
  189 + // Handle action bar item clicks here. The action bar will
  190 + // automatically handle clicks on the Home/Up button, so long
  191 + // as you specify a parent activity in AndroidManifest.xml.
  192 + int id = item.getItemId();
  193 +
  194 + //noinspection SimplifiableIfStatement
  195 + if (id == R.id.action_settings) {
  196 + return true;
  197 + }
  198 +
  199 + return super.onOptionsItemSelected(item);
  200 + }
  201 +}
App10p5/app/src/main/res/layout/activity_main.xml 0 → 100644
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + android:fitsSystemWindows="true"
  8 + tools:context="net.plil.clubinfo.app10p5.MainActivity">
  9 +
  10 + <android.support.design.widget.AppBarLayout
  11 + android:layout_width="match_parent"
  12 + android:layout_height="wrap_content"
  13 + android:theme="@style/AppTheme.AppBarOverlay">
  14 +
  15 + <android.support.v7.widget.Toolbar
  16 + android:id="@+id/toolbar"
  17 + android:layout_width="match_parent"
  18 + android:layout_height="?attr/actionBarSize"
  19 + android:background="?attr/colorPrimary"
  20 + app:popupTheme="@style/AppTheme.PopupOverlay" />
  21 +
  22 + </android.support.design.widget.AppBarLayout>
  23 +
  24 + <include layout="@layout/content_main" />
  25 +
  26 + <android.support.design.widget.FloatingActionButton
  27 + android:id="@+id/fab"
  28 + android:layout_width="wrap_content"
  29 + android:layout_height="wrap_content"
  30 + android:layout_gravity="bottom|end"
  31 + android:layout_margin="@dimen/fab_margin"
  32 + android:src="@android:drawable/ic_dialog_email" />
  33 +
  34 +</android.support.design.widget.CoordinatorLayout>
App10p5/app/src/main/res/layout/content_main.xml 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:app="http://schemas.android.com/apk/res-auto"
  4 + xmlns:tools="http://schemas.android.com/tools"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + android:paddingBottom="@dimen/activity_vertical_margin"
  8 + android:paddingLeft="@dimen/activity_horizontal_margin"
  9 + android:paddingRight="@dimen/activity_horizontal_margin"
  10 + android:paddingTop="@dimen/activity_vertical_margin"
  11 + app:layout_behavior="@string/appbar_scrolling_view_behavior"
  12 + tools:context="net.plil.clubinfo.app10p5.MainActivity"
  13 + tools:showIn="@layout/activity_main">
  14 +
  15 + <TextView
  16 + android:layout_width="wrap_content"
  17 + android:layout_height="wrap_content"
  18 + android:text="Hello World!" />
  19 +</RelativeLayout>
App10p5/app/src/main/res/menu/menu_main.xml 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +<menu xmlns:android="http://schemas.android.com/apk/res/android"
  2 + xmlns:app="http://schemas.android.com/apk/res-auto"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + tools:context="net.plil.clubinfo.app10p5.MainActivity">
  5 + <item
  6 + android:id="@+id/action_settings"
  7 + android:orderInCategory="100"
  8 + android:title="@string/action_settings"
  9 + app:showAsAction="never" />
  10 +</menu>
App10p5/app/src/main/res/mipmap-hdpi/ic_launcher.png 0 → 100644

3.34 KB

App10p5/app/src/main/res/mipmap-mdpi/ic_launcher.png 0 → 100644

2.15 KB

App10p5/app/src/main/res/mipmap-xhdpi/ic_launcher.png 0 → 100644

4.73 KB

App10p5/app/src/main/res/mipmap-xxhdpi/ic_launcher.png 0 → 100644

7.54 KB

App10p5/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png 0 → 100644

10.2 KB

App10p5/app/src/main/res/values-v21/styles.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<resources>>
  2 +
  3 + <style name="AppTheme.NoActionBar">
  4 + <item name="windowActionBar">false</item>
  5 + <item name="windowNoTitle">true</item>
  6 + <item name="android:windowDrawsSystemBarBackgrounds">true</item>
  7 + <item name="android:statusBarColor">@android:color/transparent</item>
  8 + </style>
  9 +</resources>
App10p5/app/src/main/res/values-w820dp/dimens.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<resources>
  2 + <!-- Example customization of dimensions originally defined in res/values/dimens.xml
  3 + (such as screen margins) for screens with more than 820dp of available width. This
  4 + would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
  5 + <dimen name="activity_horizontal_margin">64dp</dimen>
  6 +</resources>
App10p5/app/src/main/res/values/colors.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <color name="colorPrimary">#3F51B5</color>
  4 + <color name="colorPrimaryDark">#303F9F</color>
  5 + <color name="colorAccent">#FF4081</color>
  6 +</resources>
App10p5/app/src/main/res/values/dimens.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<resources>
  2 + <!-- Default screen margins, per the Android Design guidelines. -->
  3 + <dimen name="activity_horizontal_margin">16dp</dimen>
  4 + <dimen name="activity_vertical_margin">16dp</dimen>
  5 + <dimen name="fab_margin">16dp</dimen>
  6 +</resources>
App10p5/app/src/main/res/values/strings.xml 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +<resources>
  2 + <string name="app_name">App10p5</string>
  3 + <string name="action_settings">Settings</string>
  4 +</resources>
App10p5/app/src/main/res/values/styles.xml 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +<resources>
  2 +
  3 + <!-- Base application theme. -->
  4 + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  5 + <!-- Customize your theme here. -->
  6 + <item name="colorPrimary">@color/colorPrimary</item>
  7 + <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  8 + <item name="colorAccent">@color/colorAccent</item>
  9 + </style>
  10 +
  11 + <style name="AppTheme.NoActionBar">
  12 + <item name="windowActionBar">false</item>
  13 + <item name="windowNoTitle">true</item>
  14 + </style>
  15 +
  16 + <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
  17 +
  18 + <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
  19 +
  20 +</resources>
App10p5/app/src/main/res/xml/tech.xml 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
  3 + <tech-list>
  4 + <!-- Pour la carte Lille1 sur des tablettes non-compatibles Mifare Classic,
  5 + ie. les NEXUS 7 version 2013 -->
  6 + <tech>android.nfc.tech.NfcA</tech>
  7 + </tech-list>
  8 + <tech-list>
  9 + <!-- Pour la carte Lille1 sur des tablettes compatibles Mifare Classic -->
  10 + <tech>android.nfc.tech.NfcA</tech>
  11 + <tech>android.nfc.tech.MifareClassic</tech>
  12 + </tech-list>
  13 +</resources>
0 \ No newline at end of file 14 \ No newline at end of file
App10p5/app/src/test/java/net/plil/clubinfo/app10p5/ExampleUnitTest.java 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +package net.plil.clubinfo.app10p5;
  2 +
  3 +import org.junit.Test;
  4 +
  5 +import static org.junit.Assert.*;
  6 +
  7 +/**
  8 + * To work on unit tests, switch the Test Artifact in the Build Variants view.
  9 + */
  10 +public class ExampleUnitTest {
  11 + @Test
  12 + public void addition_isCorrect() throws Exception {
  13 + assertEquals(4, 2 + 2);
  14 + }
  15 +}
0 \ No newline at end of file 16 \ No newline at end of file
App10p5/build.gradle 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +// Top-level build file where you can add configuration options common to all sub-projects/modules.
  2 +
  3 +buildscript {
  4 + repositories {
  5 + jcenter()
  6 + }
  7 + dependencies {
  8 + classpath 'com.android.tools.build:gradle:1.5.0'
  9 +
  10 + // NOTE: Do not place your application dependencies here; they belong
  11 + // in the individual module build.gradle files
  12 + }
  13 +}
  14 +
  15 +allprojects {
  16 + repositories {
  17 + jcenter()
  18 + }
  19 +}
  20 +
  21 +task clean(type: Delete) {
  22 + delete rootProject.buildDir
  23 +}
App10p5/gradle.properties 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +# Project-wide Gradle settings.
  2 +
  3 +# IDE (e.g. Android Studio) users:
  4 +# Gradle settings configured through the IDE *will override*
  5 +# any settings specified in this file.
  6 +
  7 +# For more details on how to configure your build environment visit
  8 +# http://www.gradle.org/docs/current/userguide/build_environment.html
  9 +
  10 +# Specifies the JVM arguments used for the daemon process.
  11 +# The setting is particularly useful for tweaking memory settings.
  12 +# Default value: -Xmx10248m -XX:MaxPermSize=256m
  13 +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
  14 +
  15 +# When configured, Gradle will run in incubating parallel mode.
  16 +# This option should only be used with decoupled projects. More details, visit
  17 +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
  18 +# org.gradle.parallel=true
0 \ No newline at end of file 19 \ No newline at end of file
App10p5/gradle/wrapper/gradle-wrapper.jar 0 → 100644
No preview for this file type
App10p5/gradle/wrapper/gradle-wrapper.properties 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +#Wed Oct 21 11:34:03 PDT 2015
  2 +distributionBase=GRADLE_USER_HOME
  3 +distributionPath=wrapper/dists
  4 +zipStoreBase=GRADLE_USER_HOME
  5 +zipStorePath=wrapper/dists
  6 +distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
App10p5/gradlew 0 → 100755
@@ -0,0 +1,160 @@ @@ -0,0 +1,160 @@
  1 +#!/usr/bin/env bash
  2 +
  3 +##############################################################################
  4 +##
  5 +## Gradle start up script for UN*X
  6 +##
  7 +##############################################################################
  8 +
  9 +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  10 +DEFAULT_JVM_OPTS=""
  11 +
  12 +APP_NAME="Gradle"
  13 +APP_BASE_NAME=`basename "$0"`
  14 +
  15 +# Use the maximum available, or set MAX_FD != -1 to use that value.
  16 +MAX_FD="maximum"
  17 +
  18 +warn ( ) {
  19 + echo "$*"
  20 +}
  21 +
  22 +die ( ) {
  23 + echo
  24 + echo "$*"
  25 + echo
  26 + exit 1
  27 +}
  28 +
  29 +# OS specific support (must be 'true' or 'false').
  30 +cygwin=false
  31 +msys=false
  32 +darwin=false
  33 +case "`uname`" in
  34 + CYGWIN* )
  35 + cygwin=true
  36 + ;;
  37 + Darwin* )
  38 + darwin=true
  39 + ;;
  40 + MINGW* )
  41 + msys=true
  42 + ;;
  43 +esac
  44 +
  45 +# Attempt to set APP_HOME
  46 +# Resolve links: $0 may be a link
  47 +PRG="$0"
  48 +# Need this for relative symlinks.
  49 +while [ -h "$PRG" ] ; do
  50 + ls=`ls -ld "$PRG"`
  51 + link=`expr "$ls" : '.*-> \(.*\)$'`
  52 + if expr "$link" : '/.*' > /dev/null; then
  53 + PRG="$link"
  54 + else
  55 + PRG=`dirname "$PRG"`"/$link"
  56 + fi
  57 +done
  58 +SAVED="`pwd`"
  59 +cd "`dirname \"$PRG\"`/" >/dev/null
  60 +APP_HOME="`pwd -P`"
  61 +cd "$SAVED" >/dev/null
  62 +
  63 +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
  64 +
  65 +# Determine the Java command to use to start the JVM.
  66 +if [ -n "$JAVA_HOME" ] ; then
  67 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
  68 + # IBM's JDK on AIX uses strange locations for the executables
  69 + JAVACMD="$JAVA_HOME/jre/sh/java"
  70 + else
  71 + JAVACMD="$JAVA_HOME/bin/java"
  72 + fi
  73 + if [ ! -x "$JAVACMD" ] ; then
  74 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
  75 +
  76 +Please set the JAVA_HOME variable in your environment to match the
  77 +location of your Java installation."
  78 + fi
  79 +else
  80 + JAVACMD="java"
  81 + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  82 +
  83 +Please set the JAVA_HOME variable in your environment to match the
  84 +location of your Java installation."
  85 +fi
  86 +
  87 +# Increase the maximum file descriptors if we can.
  88 +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
  89 + MAX_FD_LIMIT=`ulimit -H -n`
  90 + if [ $? -eq 0 ] ; then
  91 + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
  92 + MAX_FD="$MAX_FD_LIMIT"
  93 + fi
  94 + ulimit -n $MAX_FD
  95 + if [ $? -ne 0 ] ; then
  96 + warn "Could not set maximum file descriptor limit: $MAX_FD"
  97 + fi
  98 + else
  99 + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
  100 + fi
  101 +fi
  102 +
  103 +# For Darwin, add options to specify how the application appears in the dock
  104 +if $darwin; then
  105 + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
  106 +fi
  107 +
  108 +# For Cygwin, switch paths to Windows format before running java
  109 +if $cygwin ; then
  110 + APP_HOME=`cygpath --path --mixed "$APP_HOME"`
  111 + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
  112 + JAVACMD=`cygpath --unix "$JAVACMD"`
  113 +
  114 + # We build the pattern for arguments to be converted via cygpath
  115 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
  116 + SEP=""
  117 + for dir in $ROOTDIRSRAW ; do
  118 + ROOTDIRS="$ROOTDIRS$SEP$dir"
  119 + SEP="|"
  120 + done
  121 + OURCYGPATTERN="(^($ROOTDIRS))"
  122 + # Add a user-defined pattern to the cygpath arguments
  123 + if [ "$GRADLE_CYGPATTERN" != "" ] ; then
  124 + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
  125 + fi
  126 + # Now convert the arguments - kludge to limit ourselves to /bin/sh
  127 + i=0
  128 + for arg in "$@" ; do
  129 + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
  130 + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
  131 +
  132 + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
  133 + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
  134 + else
  135 + eval `echo args$i`="\"$arg\""
  136 + fi
  137 + i=$((i+1))
  138 + done
  139 + case $i in
  140 + (0) set -- ;;
  141 + (1) set -- "$args0" ;;
  142 + (2) set -- "$args0" "$args1" ;;
  143 + (3) set -- "$args0" "$args1" "$args2" ;;
  144 + (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
  145 + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
  146 + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
  147 + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
  148 + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
  149 + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
  150 + esac
  151 +fi
  152 +
  153 +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
  154 +function splitJvmOpts() {
  155 + JVM_OPTS=("$@")
  156 +}
  157 +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
  158 +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
  159 +
  160 +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
App10p5/gradlew.bat 0 → 100644
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
  1 +@if "%DEBUG%" == "" @echo off
  2 +@rem ##########################################################################
  3 +@rem
  4 +@rem Gradle startup script for Windows
  5 +@rem
  6 +@rem ##########################################################################
  7 +
  8 +@rem Set local scope for the variables with windows NT shell
  9 +if "%OS%"=="Windows_NT" setlocal
  10 +
  11 +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  12 +set DEFAULT_JVM_OPTS=
  13 +
  14 +set DIRNAME=%~dp0
  15 +if "%DIRNAME%" == "" set DIRNAME=.
  16 +set APP_BASE_NAME=%~n0
  17 +set APP_HOME=%DIRNAME%
  18 +
  19 +@rem Find java.exe
  20 +if defined JAVA_HOME goto findJavaFromJavaHome
  21 +
  22 +set JAVA_EXE=java.exe
  23 +%JAVA_EXE% -version >NUL 2>&1
  24 +if "%ERRORLEVEL%" == "0" goto init
  25 +
  26 +echo.
  27 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  28 +echo.
  29 +echo Please set the JAVA_HOME variable in your environment to match the
  30 +echo location of your Java installation.
  31 +
  32 +goto fail
  33 +
  34 +:findJavaFromJavaHome
  35 +set JAVA_HOME=%JAVA_HOME:"=%
  36 +set JAVA_EXE=%JAVA_HOME%/bin/java.exe
  37 +
  38 +if exist "%JAVA_EXE%" goto init
  39 +
  40 +echo.
  41 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
  42 +echo.
  43 +echo Please set the JAVA_HOME variable in your environment to match the
  44 +echo location of your Java installation.
  45 +
  46 +goto fail
  47 +
  48 +:init
  49 +@rem Get command-line arguments, handling Windowz variants
  50 +
  51 +if not "%OS%" == "Windows_NT" goto win9xME_args
  52 +if "%@eval[2+2]" == "4" goto 4NT_args
  53 +
  54 +:win9xME_args
  55 +@rem Slurp the command line arguments.
  56 +set CMD_LINE_ARGS=
  57 +set _SKIP=2
  58 +
  59 +:win9xME_args_slurp
  60 +if "x%~1" == "x" goto execute
  61 +
  62 +set CMD_LINE_ARGS=%*
  63 +goto execute
  64 +
  65 +:4NT_args
  66 +@rem Get arguments from the 4NT Shell from JP Software
  67 +set CMD_LINE_ARGS=%$
  68 +
  69 +:execute
  70 +@rem Setup the command line
  71 +
  72 +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
  73 +
  74 +@rem Execute Gradle
  75 +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
  76 +
  77 +:end
  78 +@rem End local scope for the variables with windows NT shell
  79 +if "%ERRORLEVEL%"=="0" goto mainEnd
  80 +
  81 +:fail
  82 +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
  83 +rem the _cmd.exe /c_ return code!
  84 +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
  85 +exit /b 1
  86 +
  87 +:mainEnd
  88 +if "%OS%"=="Windows_NT" endlocal
  89 +
  90 +:omega
App10p5/settings.gradle 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +include ':app'
PremiereActivite/.gitignore 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +*.iml
  2 +.gradle
  3 +/local.properties
  4 +/.idea/workspace.xml
  5 +/.idea/libraries
  6 +.DS_Store
  7 +/build
  8 +/captures
PremiereActivite/.idea/.name 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +PremiereActivite
0 \ No newline at end of file 2 \ No newline at end of file
PremiereActivite/.idea/compiler.xml 0 → 100644
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="CompilerConfiguration">
  4 + <resourceExtensions />
  5 + <wildcardResourcePatterns>
  6 + <entry name="!?*.java" />
  7 + <entry name="!?*.form" />
  8 + <entry name="!?*.class" />
  9 + <entry name="!?*.groovy" />
  10 + <entry name="!?*.scala" />
  11 + <entry name="!?*.flex" />
  12 + <entry name="!?*.kt" />
  13 + <entry name="!?*.clj" />
  14 + <entry name="!?*.aj" />
  15 + </wildcardResourcePatterns>
  16 + <annotationProcessing>
  17 + <profile default="true" name="Default" enabled="false">
  18 + <processorPath useClasspath="true" />
  19 + </profile>
  20 + </annotationProcessing>
  21 + </component>
  22 +</project>
0 \ No newline at end of file 23 \ No newline at end of file
PremiereActivite/.idea/copyright/profiles_settings.xml 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<component name="CopyrightManager">
  2 + <settings default="" />
  3 +</component>
0 \ No newline at end of file 4 \ No newline at end of file
PremiereActivite/.idea/encodings.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="Encoding">
  4 + <file url="PROJECT" charset="UTF-8" />
  5 + </component>
  6 +</project>
0 \ No newline at end of file 7 \ No newline at end of file
PremiereActivite/.idea/gradle.xml 0 → 100644
@@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="GradleSettings">
  4 + <option name="linkedExternalProjectsSettings">
  5 + <GradleProjectSettings>
  6 + <option name="distributionType" value="LOCAL" />
  7 + <option name="externalProjectPath" value="$PROJECT_DIR$" />
  8 + <option name="gradleHome" value="C:\Program Files\Android\Android Studio\gradle\gradle-2.10" />
  9 + <option name="modules">
  10 + <set>
  11 + <option value="$PROJECT_DIR$" />
  12 + <option value="$PROJECT_DIR$/app" />
  13 + </set>
  14 + </option>
  15 + <option name="myModules">
  16 + <set>
  17 + <option value="$PROJECT_DIR$" />
  18 + <option value="$PROJECT_DIR$/app" />
  19 + </set>
  20 + </option>
  21 + </GradleProjectSettings>
  22 + </option>
  23 + </component>
  24 +</project>
0 \ No newline at end of file 25 \ No newline at end of file
PremiereActivite/.idea/inspectionProfiles/Project_Default.xml 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +<component name="InspectionProjectProfileManager">
  2 + <profile version="1.0">
  3 + <option name="myName" value="Project Default" />
  4 + <inspection_tool class="AndroidLintDeprecated" enabled="false" level="WARNING" enabled_by_default="false" />
  5 + <inspection_tool class="AndroidLintPrivateResource" enabled="false" level="WARNING" enabled_by_default="false" />
  6 + <inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
  7 + <option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
  8 + <option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
  9 + </inspection_tool>
  10 + </profile>
  11 +</component>
0 \ No newline at end of file 12 \ No newline at end of file
PremiereActivite/.idea/inspectionProfiles/profiles_settings.xml 0 → 100644
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
  1 +<component name="InspectionProjectProfileManager">
  2 + <settings>
  3 + <option name="PROJECT_PROFILE" value="Project Default" />
  4 + <option name="USE_PROJECT_PROFILE" value="true" />
  5 + <version value="1.0" />
  6 + </settings>
  7 +</component>
0 \ No newline at end of file 8 \ No newline at end of file
PremiereActivite/.idea/misc.xml 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="EntryPointsManager">
  4 + <entry_points version="2.0" />
  5 + </component>
  6 + <component name="NullableNotNullManager">
  7 + <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
  8 + <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
  9 + <option name="myNullables">
  10 + <value>
  11 + <list size="4">
  12 + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
  13 + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
  14 + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
  15 + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
  16 + </list>
  17 + </value>
  18 + </option>
  19 + <option name="myNotNulls">
  20 + <value>
  21 + <list size="4">
  22 + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
  23 + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
  24 + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
  25 + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
  26 + </list>
  27 + </value>
  28 + </option>
  29 + </component>
  30 + <component name="ProjectLevelVcsManager" settingsEditedManually="false">
  31 + <OptionsSetting value="true" id="Add" />
  32 + <OptionsSetting value="true" id="Remove" />
  33 + <OptionsSetting value="true" id="Checkout" />
  34 + <OptionsSetting value="true" id="Update" />
  35 + <OptionsSetting value="true" id="Status" />
  36 + <OptionsSetting value="true" id="Edit" />
  37 + <ConfirmationsSetting value="0" id="Add" />
  38 + <ConfirmationsSetting value="0" id="Remove" />
  39 + </component>
  40 + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
  41 + <output url="file://$PROJECT_DIR$/build/classes" />
  42 + </component>
  43 + <component name="ProjectType">
  44 + <option name="id" value="Android" />
  45 + </component>
  46 +</project>
0 \ No newline at end of file 47 \ No newline at end of file
PremiereActivite/.idea/modules.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectModuleManager">
  4 + <modules>
  5 + <module fileurl="file://$PROJECT_DIR$/PremiereActivite.iml" filepath="$PROJECT_DIR$/PremiereActivite.iml" />
  6 + <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
  7 + </modules>
  8 + </component>
  9 +</project>
0 \ No newline at end of file 10 \ No newline at end of file
PremiereActivite/.idea/runConfigurations.xml 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="RunConfigurationProducerService">
  4 + <option name="ignoredProducers">
  5 + <set>
  6 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
  7 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
  8 + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
  9 + </set>
  10 + </option>
  11 + </component>
  12 +</project>
0 \ No newline at end of file 13 \ No newline at end of file
PremiereActivite/app/.gitignore 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +/build
PremiereActivite/app/build.gradle 0 → 100644
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +apply plugin: 'com.android.application'
  2 +
  3 +android {
  4 + compileSdkVersion 23
  5 + buildToolsVersion "23.0.3"
  6 +
  7 + defaultConfig {
  8 + applicationId "com.example.app_10p5"
  9 + minSdkVersion 21
  10 + targetSdkVersion 23
  11 + versionCode 1
  12 + versionName "1.0"
  13 + }
  14 + buildTypes {
  15 + release {
  16 + minifyEnabled false
  17 + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  18 + }
  19 + }
  20 +}
  21 +
  22 +dependencies {
  23 + compile fileTree(dir: 'libs', include: ['*.jar'])
  24 + testCompile 'junit:junit:4.12'
  25 + compile 'com.android.support:appcompat-v7:23.2.1'
  26 + compile 'com.android.support:design:23.2.1'
  27 +
  28 +}
PremiereActivite/app/proguard-rules.pro 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +# Add project specific ProGuard rules here.
  2 +# By default, the flags in this file are appended to flags specified
  3 +# in /Users/florian/Library/Android/sdk/tools/proguard/proguard-android.txt
  4 +# You can edit the include path and order by changing the proguardFiles
  5 +# directive in build.gradle.
  6 +#
  7 +# For more details, see
  8 +# http://developer.android.com/guide/developing/tools/proguard.html
  9 +
  10 +# Add any project specific keep options here:
  11 +
  12 +# If your project uses WebView with JS, uncomment the following
  13 +# and specify the fully qualified class name to the JavaScript interface
  14 +# class:
  15 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  16 +# public *;
  17 +#}
PremiereActivite/app/src/androidTest/java/com/example/florian/premiereactivite/ApplicationTest.java 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +package com.example.florian.premiereactivite;
  2 +
  3 +import android.app.Application;
  4 +import android.test.ApplicationTestCase;
  5 +
  6 +/**
  7 + * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
  8 + */
  9 +public class ApplicationTest extends ApplicationTestCase<Application> {
  10 + public ApplicationTest() {
  11 + super(Application.class);
  12 + }
  13 +}
0 \ No newline at end of file 14 \ No newline at end of file
PremiereActivite/app/src/main/AndroidManifest.xml 0 → 100644
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3 + package="com.example.app_10p5">
  4 +
  5 + <!-- Nécessaire pour utiliser les cartes NFC -->
  6 + <uses-permission android:name="android.permission.NFC" />
  7 + <uses-permission android:name="android.permission.INTERNET" />
  8 + <uses-sdk android:minSdkVersion="20"/>
  9 + <uses-feature android:name="android.hardware.nfc" android:required="true" />
  10 +
  11 + <application
  12 + android:allowBackup="true"
  13 + android:icon="@mipmap/ic_launcher"
  14 + android:label="@string/app_name"
  15 + android:supportsRtl="true"
  16 + android:theme="@style/AppTheme">
  17 + <activity
  18 + android:name=".CarteActivite"
  19 + android:launchMode="singleTask"
  20 + android:label="CarteActivite"
  21 + android:parentActivityName="com.example.app_10p5.MainActivite" >
  22 + </activity>
  23 +
  24 + <activity
  25 + android:name=".MainActivite"
  26 + android:label="MainActivite">
  27 + <intent-filter>
  28 + <action android:name="android.intent.action.MAIN" />
  29 + <category android:name="android.intent.category.LAUNCHER" />
  30 + </intent-filter>
  31 + </activity>
  32 + </application>
  33 +
  34 +</manifest>
PremiereActivite/app/src/main/java/com/example/app_10p5/ASyncResponse.java 0 → 100644
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import org.json.JSONObject;
  4 +
  5 +/**
  6 + * Created by beaus on 30/04/2016.
  7 + */
  8 +public interface ASyncResponse {
  9 + void processFinish(JSONObject output);
  10 +}
PremiereActivite/app/src/main/java/com/example/app_10p5/CarteActivite.java 0 → 100644
@@ -0,0 +1,211 @@ @@ -0,0 +1,211 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.app.Activity;
  4 +import android.app.PendingIntent;
  5 +import android.content.Intent;
  6 +import android.nfc.NfcAdapter;
  7 +import android.nfc.Tag;
  8 +import android.nfc.tech.MifareClassic;
  9 +import android.os.Bundle;
  10 +import android.widget.Toast;
  11 +
  12 +import org.json.JSONObject;
  13 +
  14 +import java.net.URL;
  15 +import java.util.HashMap;
  16 +
  17 +/**
  18 + * Created by beaus on 24/04/2016.
  19 + */
  20 +public class CarteActivite extends Activity implements ASyncResponse {
  21 +
  22 + private NfcAdapter mNfcAdapter;
  23 + private HashMap<String, String> mParam;
  24 + private String mAPI;
  25 +
  26 + public static final String HOST = "https://10p5.clubinfo.frogeye.fr/";
  27 +
  28 + @Override
  29 + protected void onCreate(Bundle savedInstanceState) {
  30 + super.onCreate(savedInstanceState);
  31 + setContentView(R.layout.layout_carte);
  32 +
  33 + mParam = new HashMap<String, String>();
  34 +
  35 + switch (getIntent().getIntExtra("state", MainActivite.STATE_RIEN)) {
  36 + case MainActivite.STATE_COMMANDE:
  37 + //TODO: XOR du cancer
  38 + //mParam.put("quantite", String.valueOf(getIntent().getIntExtra("quantite", -1)));
  39 + mParam.put("montant", String.valueOf(getIntent().getFloatExtra("montant", -1)));
  40 + mParam.put("jeton", getIntent().getStringExtra("token"));
  41 + mAPI = "api/client/payer";
  42 + break;
  43 + case MainActivite.STATE_CREATION_COMPTE:
  44 + mParam.put("solde", String.valueOf(getIntent().getFloatExtra("montant", -1)));
  45 + mParam.put("jeton", getIntent().getStringExtra("token"));
  46 + mAPI = "api/client/ajouter";
  47 + break;
  48 + case MainActivite.STATE_RECHARGEMENT:
  49 + mParam.put("montant", String.valueOf(getIntent().getFloatExtra("montant", -1)));
  50 + mParam.put("jeton", getIntent().getStringExtra("token"));
  51 + mAPI = "api/client/recharger";
  52 + break;
  53 + case MainActivite.STATE_VIDANGE:
  54 + //pas de paramètre
  55 + mAPI = "api/client/vidange";
  56 + break;
  57 + case MainActivite.STATE_CONNEXION: //Impossible c'est pas géré ici
  58 + case MainActivite.STATE_RIEN:
  59 + default:
  60 + Toast.makeText(this, "WTF, le cancer est dans l'application!!", Toast.LENGTH_LONG).show();
  61 + finish();
  62 + return;
  63 + }
  64 +
  65 + mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
  66 +
  67 + if (mNfcAdapter == null) {
  68 + // Stop here, we definitely need NFC
  69 + Toast.makeText(this, "This device doesn't support NFC.", Toast.LENGTH_LONG).show();
  70 + finish();
  71 + return;
  72 + }
  73 +
  74 + handleIntent(getIntent());
  75 + }
  76 +
  77 + @Override
  78 + protected void onResume() {
  79 + super.onResume();
  80 + setupForegroundDispatch(this, mNfcAdapter);
  81 + }
  82 +
  83 + // Convertit l'array de byte en chaîne hexadécimale (si le byte = 0x63, str = "63").
  84 + private String ByteArrayToHexString(byte [] inarray) {
  85 + int i, j, in;
  86 + String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
  87 + String out= "";
  88 + for(j = 0 ; j < inarray.length ; ++j)
  89 + {
  90 + in = (int) inarray[j] & 0xff;
  91 + i = (in >> 4) & 0x0f;
  92 + out += hex[i];
  93 + i = in & 0x0f;
  94 + out += hex[i];
  95 + }
  96 + return out;
  97 + }
  98 +
  99 + @Override
  100 + protected void onNewIntent(Intent intent) {
  101 + handleIntent(intent);
  102 + }
  103 +
  104 + @Override
  105 + protected void onPause() {
  106 + stopForegroundDispatch(this, mNfcAdapter);
  107 + super.onPause();
  108 + }
  109 +
  110 + private void handleIntent(Intent intent){
  111 + if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
  112 + String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID));
  113 + mParam.put("idCarte", id_carte);
  114 +
  115 + //Lecture des données
  116 + Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  117 + MifareClassic mfc = MifareClassic.get(tag);
  118 + byte[] data;
  119 + String prenom = null, nom = null, login = null;
  120 +
  121 + if (mfc != null) {
  122 + try {
  123 + mfc.connect();
  124 +
  125 + //Clé A
  126 + byte[] cleA = new byte[]{(byte) 0xa0, (byte) 0xa1, (byte) 0xa2,
  127 + (byte) 0xa3, (byte) 0xa4, (byte) 0xa5};
  128 +
  129 + //On veut juste lire le secteur 12
  130 + boolean estConnecte = mfc.authenticateSectorWithKeyA(12, cleA);
  131 +
  132 + if (estConnecte) {
  133 + //Il y a 4 blocs dans le secteur 12 -> INE, numéro étudiant, prénom, nom
  134 + //On ne veut que prénom et nom, donc on passe les deux premiers
  135 + for (int i = 2, bIndex = mfc.sectorToBlock(12) + i; i < 4; i++, bIndex++) {
  136 + //sectorToBlock : Renvoie l'indice (global, parmis tous les blocs de
  137 + // tous les secteurs) du premier bloc du secteur 12
  138 + //Lit les données du bloc
  139 + data = mfc.readBlock(bIndex);
  140 +
  141 + //Convertit les bytes en String
  142 + String dataStr = new String(data);
  143 + if (i == 2) //Prénom
  144 + prenom = dataStr;
  145 + else if (i == 3) //Nom
  146 + nom = dataStr;
  147 + }
  148 + } else {
  149 + Toast.makeText(this, "Impossible de lire le secteur 12", Toast.LENGTH_LONG).show();
  150 + }
  151 + mfc.close();
  152 + } catch (Throwable t) {
  153 + Toast.makeText(this, "WTF, le cancer est dans l'application!! Autodéstruction dans 5 secondes !!!!!!!!!" + t.toString(), Toast.LENGTH_LONG).show();
  154 + }
  155 +
  156 + //Concaténation des données récupérées en login
  157 + login = prenom;
  158 + login.concat(".");
  159 + login.concat(nom);
  160 + } else {
  161 + Toast.makeText(this, "Pas de Mifare Classic", Toast.LENGTH_SHORT).show();
  162 + }
  163 +
  164 + //Éxécution de la fonction
  165 + clientAPI();
  166 + }
  167 + }
  168 +
  169 + public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter){
  170 + final Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
  171 + intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
  172 + final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
  173 + adapter.enableForegroundDispatch(activity, pendingIntent, null, null);
  174 + }
  175 +
  176 + public static void stopForegroundDispatch(final Activity activity, NfcAdapter adapter) {
  177 + adapter.disableForegroundDispatch(activity);
  178 + }
  179 +
  180 + public void clientAPI() {
  181 + try {
  182 + URL url = new URL(HOST + mAPI);
  183 + NetworkThread nt = new NetworkThread(url, mParam);
  184 + nt.delegate = this;
  185 + nt.execute();
  186 + }
  187 + catch (Throwable t){
  188 + Toast.makeText(this, "WTF, le cancer est dans l'application!! " + t.toString(), Toast.LENGTH_LONG).show();
  189 + finish();
  190 + return;
  191 + }
  192 + }
  193 +
  194 +
  195 + /* Retour du NetworkThread */
  196 + @Override
  197 + public void processFinish(JSONObject output) {
  198 + try {
  199 + if (output.get("status").equals("ok")) {
  200 + Toast.makeText(this, "Tout c'est bien passé: " + output.get("status").toString(), Toast.LENGTH_LONG).show();
  201 + } else {
  202 + Toast.makeText(this, "Erreur lors du traitement de la requête: " + output.get("status").toString(), Toast.LENGTH_LONG).show();
  203 + }
  204 + } catch (Throwable t) {
  205 + Toast.makeText(this, "WTF, le cancer est dans l'application!! " + t.toString(), Toast.LENGTH_LONG).show();
  206 + }
  207 +
  208 + finish();
  209 + return;
  210 + }
  211 +}
PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java 0 → 100644
@@ -0,0 +1,284 @@ @@ -0,0 +1,284 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.content.Intent;
  4 +import android.os.Bundle;
  5 +import android.os.SystemClock;
  6 +import android.support.design.widget.TabLayout;
  7 +import android.support.v4.app.FragmentActivity;
  8 +import android.support.v4.view.ViewPager;
  9 +import android.view.View;
  10 +import android.widget.EditText;
  11 +import android.widget.Toast;
  12 +
  13 +import org.json.JSONObject;
  14 +
  15 +import java.net.URL;
  16 +import java.util.HashMap;
  17 +
  18 +
  19 +/**
  20 + * Created by beaus on 24/04/2016.
  21 + */
  22 +public class MainActivite extends FragmentActivity implements ASyncResponse {
  23 +
  24 + public static final int STATE_RIEN = 0;
  25 + public static final int STATE_COMMANDE = 3;
  26 + public static final int STATE_VIDANGE = 4;
  27 + public static final int STATE_RECHARGEMENT = 2;
  28 + public static final int STATE_CREATION_COMPTE = 1;
  29 + public static final int STATE_CONNEXION = 5;
  30 + public static final long EXPIRATION = 1000*60*10;
  31 +
  32 + private int mState;
  33 + private String mToken;
  34 + private int mDroit;
  35 + private long mTimeToken;
  36 + private String mUser;
  37 +
  38 + @Override
  39 + protected void onCreate(Bundle savedInstanceState){
  40 + super.onCreate(savedInstanceState);
  41 + setContentView(R.layout.layout_main);
  42 +
  43 + mState = STATE_RIEN;
  44 + mTimeToken = -1;
  45 + mToken = "";
  46 +
  47 + TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
  48 + tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
  49 + tabLayout.addTab(tabLayout.newTab().setText("Connexion"));
  50 + tabLayout.addTab(tabLayout.newTab().setText("Commande"));
  51 + tabLayout.addTab(tabLayout.newTab().setText("Rechargement"));
  52 + tabLayout.addTab(tabLayout.newTab().setText("Création"));
  53 + tabLayout.addTab(tabLayout.newTab().setText("Vidange"));
  54 + tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
  55 +
  56 + final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
  57 + final PagerAdapter adapter = new PagerAdapter
  58 + (getSupportFragmentManager(), tabLayout.getTabCount());
  59 + viewPager.setAdapter(adapter);
  60 + viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
  61 + tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
  62 + @Override
  63 + public void onTabSelected(TabLayout.Tab tab) {
  64 + if(mToken != "" && System.currentTimeMillis() - mTimeToken < EXPIRATION){
  65 + viewPager.setCurrentItem(tab.getPosition());
  66 + }
  67 + else{
  68 + viewPager.setCurrentItem(tab.getPosition()); //Empeche un bug graphique
  69 + viewPager.setCurrentItem(0);
  70 + Toast.makeText(MainActivite.this, "Veuillez vous connecter biatche.", Toast.LENGTH_LONG).show();
  71 + }
  72 + }
  73 +
  74 + @Override
  75 + public void onTabUnselected(TabLayout.Tab tab) {
  76 +
  77 + }
  78 +
  79 + @Override
  80 + public void onTabReselected(TabLayout.Tab tab) {
  81 +
  82 + }
  83 + });
  84 + }
  85 +
  86 + @Override
  87 + public void onSaveInstanceState(Bundle savedInstanceState){
  88 + savedInstanceState.putString("token", mToken);
  89 + savedInstanceState.putInt("state", mState);
  90 + savedInstanceState.putString("user", mUser);
  91 + savedInstanceState.putInt("droit", mDroit);
  92 + savedInstanceState.putLong("timeToken", mTimeToken);
  93 +
  94 + super.onSaveInstanceState(savedInstanceState);
  95 + }
  96 +
  97 + @Override
  98 + public void onRestoreInstanceState(Bundle savedInstanceState) {
  99 + mTimeToken = savedInstanceState.getLong("timeToken");
  100 + mToken = savedInstanceState.getString("user");
  101 + mState = savedInstanceState.getInt("state");
  102 + mUser = savedInstanceState.getString("user");
  103 + mDroit = savedInstanceState.getInt("droit");
  104 +
  105 + super.onRestoreInstanceState(savedInstanceState);
  106 + }
  107 +
  108 + public void valideCreationCompte(View v){
  109 + if((mToken != "") && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
  110 + EditText champMontant = (EditText) findViewById(R.id.creation_montant);
  111 + float montant = 0.0f;
  112 +
  113 + try{
  114 + montant = Float.parseFloat(champMontant.getText().toString());
  115 + }
  116 + catch (Throwable t){
  117 + Toast.makeText(this, "Remplir le champ montant avec un nombre: " + t.toString(), Toast.LENGTH_LONG).show();
  118 + }
  119 +
  120 + if((montant > 0.0f) && (montant < 200.0f) && (mDroit >= 1)){
  121 + mState = STATE_CREATION_COMPTE;
  122 + Intent intent = new Intent(this, CarteActivite.class);
  123 + intent.putExtra("token", mToken);
  124 + intent.putExtra("state", mState);
  125 + intent.putExtra("montant", montant);
  126 + startActivityForResult(intent, mState);
  127 + }
  128 + else{
  129 + Toast.makeText(this, "Valeur incorrecte ou droit insuffisant.", Toast.LENGTH_LONG).show();
  130 + }
  131 + }
  132 + else{
  133 + Toast.makeText(this, "Veuillez vous reconnecter.", Toast.LENGTH_LONG).show();
  134 + final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
  135 + viewPager.setCurrentItem(0);
  136 + }
  137 + }
  138 +
  139 + public void valideCommande(View v)
  140 + {
  141 + if((mToken != "") && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
  142 + EditText champMontant = (EditText) findViewById(R.id.commande_prix);
  143 + EditText champQuantite = (EditText) findViewById(R.id.commande_quantite);
  144 + float montant = 0.0f;
  145 + int quantite = 0;
  146 +
  147 + try{
  148 + montant = Float.parseFloat(champMontant.getText().toString());
  149 + quantite = Integer.parseInt(champQuantite.getText().toString());
  150 + }
  151 + catch (Throwable t)
  152 + {
  153 + Toast.makeText(this, "Remplir les champs avec des nombres: " + t.toString(), Toast.LENGTH_LONG).show();
  154 + }
  155 +
  156 + if ((montant > 0.0f) && (montant < 200.0f) && (quantite > 0) && (mDroit >= 1)) {
  157 + mState = STATE_COMMANDE;
  158 + Intent intent = new Intent(this, CarteActivite.class);
  159 + intent.putExtra("token", mToken);
  160 + intent.putExtra("state", mState);
  161 + intent.putExtra("montant", montant);
  162 + intent.putExtra("quantite", quantite);
  163 + startActivityForResult(intent, mState);
  164 + }
  165 + else{
  166 + Toast.makeText(this, "Valeur incorrecte ou droit insuffisant.", Toast.LENGTH_LONG).show();
  167 + }
  168 + }
  169 + else{
  170 + Toast.makeText(this, "Veuillez vous reconnecter.", Toast.LENGTH_LONG).show();
  171 + final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
  172 + viewPager.setCurrentItem(0);
  173 + }
  174 + }
  175 +
  176 + public void valideRechargement(View v)
  177 + {
  178 + if((mToken != "") && ((System.currentTimeMillis() - mTimeToken) < EXPIRATION)) {
  179 + EditText champMontant = (EditText) findViewById(R.id.rechargement_champ_montant);
  180 + float montant = 0.0f;
  181 +
  182 + try{
  183 + montant = Float.parseFloat(champMontant.getText().toString());
  184 + }
  185 + catch (Throwable t){
  186 + Toast.makeText(this, "Remplir le champ montant avec un nombre: " + t.toString(), Toast.LENGTH_LONG).show();
  187 + }
  188 +
  189 + if((montant > 0.0f) && (montant < 200.0f) && (mDroit >= 2)){
  190 + mState = STATE_RECHARGEMENT;
  191 + Intent intent = new Intent(this, CarteActivite.class);
  192 + intent.putExtra("token", mToken);
  193 + intent.putExtra("state", mState);
  194 + intent.putExtra("montant", montant);
  195 + startActivityForResult(intent, mState);
  196 + }
  197 + else{
  198 + Toast.makeText(this, "Valeur incorrecte ou droit insuffisant.", Toast.LENGTH_LONG).show();
  199 + }
  200 + }
  201 + else{
  202 + Toast.makeText(this, "Veuillez vous reconnecter.", Toast.LENGTH_LONG).show();
  203 + final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
  204 + viewPager.setCurrentItem(0);
  205 + }
  206 + }
  207 +
  208 + public void valideConnection(View v)
  209 + {
  210 + EditText viewUser = (EditText) findViewById(R.id.connection_username);
  211 + EditText viewPsw = (EditText) findViewById(R.id.connection_password);
  212 +
  213 + String user = viewUser.getText().toString();
  214 + String password = viewPsw.getText().toString();
  215 +
  216 + if ((user != "") && (password != "")) {
  217 + mState = STATE_CONNEXION;
  218 +
  219 + try{
  220 + URL url = new URL(CarteActivite.HOST + "api/utilisateur/connexion");
  221 + HashMap<String, String> param = new HashMap<String, String>();
  222 + param.put("login", user);
  223 + param.put("mdp", password);
  224 + NetworkThread nt = new NetworkThread(url, param);
  225 + nt.delegate = this;
  226 + nt.execute();
  227 + }
  228 + catch (Throwable t) {
  229 + //TODO: gérer les exceptions du cancer de la connexion
  230 + }
  231 + }
  232 + else{
  233 + Toast.makeText(this, "Veuillez remplir les champs.", Toast.LENGTH_LONG).show();
  234 + }
  235 + }
  236 +
  237 + @Override
  238 + protected void onActivityResult(int requestCode, int resultCode, Intent data){
  239 + //TODO: faire des choses avec ca
  240 + switch (requestCode) {
  241 + case STATE_COMMANDE:
  242 + break;
  243 + case STATE_CONNEXION:
  244 + break;
  245 + case STATE_CREATION_COMPTE:
  246 + break;
  247 + case STATE_RECHARGEMENT:
  248 + break;
  249 + case STATE_VIDANGE:
  250 + break;
  251 + case STATE_RIEN:
  252 + default:
  253 + Toast.makeText(this, "WTF, le cancer est dans l'application!!", Toast.LENGTH_LONG).show();
  254 + break;
  255 + }
  256 + }
  257 +
  258 + /* Retour du network thread */
  259 + @Override
  260 + public void processFinish(JSONObject output) {
  261 + if(output.length() != 0){
  262 + try{
  263 + if(output.get("status").toString().equals("ok")){
  264 + mToken = output.get("jeton").toString();
  265 + mTimeToken = System.currentTimeMillis();
  266 + mDroit = output.getInt("droit");
  267 + mUser = output.get("login").toString();
  268 + Toast.makeText(this, "Bonjour " + mUser + " vous êtes bien connecté pour " + EXPIRATION / (1000 * 60) + " minutes.", Toast.LENGTH_LONG).show();
  269 + final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
  270 + viewPager.setCurrentItem(1);
  271 + }
  272 + else{
  273 + Toast.makeText(this, "Erreur dans la requête: " + output.get("status"), Toast.LENGTH_LONG).show();
  274 + }
  275 + }
  276 + catch(Throwable t){
  277 + Toast.makeText(this, "WTF, le cancer est dans l'application!!" + t.toString(), Toast.LENGTH_LONG).show();
  278 + }
  279 + }
  280 + else{
  281 + Toast.makeText(this, "Impossible de se connecter au serveur", Toast.LENGTH_LONG).show();
  282 + }
  283 + }
  284 +}
PremiereActivite/app/src/main/java/com/example/app_10p5/NetworkThread.java 0 → 100644
@@ -0,0 +1,105 @@ @@ -0,0 +1,105 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.os.AsyncTask;
  4 +
  5 +import org.json.JSONObject;
  6 +
  7 +import java.io.BufferedReader;
  8 +import java.io.InputStreamReader;
  9 +import java.io.OutputStreamWriter;
  10 +import java.net.HttpURLConnection;
  11 +import java.net.URL;
  12 +import java.util.HashMap;
  13 +import java.util.Map;
  14 +
  15 +import javax.net.ssl.HttpsURLConnection;
  16 +
  17 +/**
  18 + * Created by beaus on 30/04/2016.
  19 + */
  20 +public class NetworkThread extends AsyncTask<Void, Void, JSONObject> {
  21 + public ASyncResponse delegate = null;
  22 + private URL mUrl;
  23 + private HashMap<String, String> mParam;
  24 +
  25 + NetworkThread(URL url, HashMap<String, String> param){
  26 +
  27 + mUrl = url;
  28 + mParam = param;
  29 + }
  30 +
  31 + @Override
  32 + protected void onPreExecute() {
  33 + /**
  34 + * show dialog
  35 + */
  36 + super.onPreExecute();
  37 + }
  38 +
  39 + @Override
  40 + protected JSONObject doInBackground(Void ... params) {
  41 +
  42 + /**
  43 + * Do network related stuff
  44 + * return string response.
  45 + */
  46 +
  47 + JSONObject json = new JSONObject();
  48 + try {
  49 + HttpURLConnection httpCo = (HttpURLConnection) mUrl.openConnection();
  50 + httpCo.setDoOutput(true);
  51 +
  52 + httpCo.connect();
  53 +
  54 + boolean debut = true;
  55 + StringBuilder buffer = new StringBuilder();
  56 +
  57 + for (Map.Entry<String, String> entry : mParam.entrySet()) {
  58 + if(debut){
  59 + debut = false;
  60 + }
  61 + else
  62 + {
  63 + buffer.append("&");
  64 + }
  65 + buffer.append(entry.getKey());
  66 + buffer.append("=");
  67 + buffer.append(entry.getValue());
  68 + }
  69 +
  70 + OutputStreamWriter wr = new OutputStreamWriter(httpCo.getOutputStream());
  71 + wr.write(buffer.toString());
  72 + wr.flush();
  73 +
  74 + String response = "";
  75 +
  76 + if (httpCo.getResponseCode() == HttpsURLConnection.HTTP_OK) {
  77 + String line;
  78 + BufferedReader br = new BufferedReader(new InputStreamReader(httpCo.getInputStream()));
  79 + while ((line = br.readLine()) != null) {
  80 + response += line;
  81 + }
  82 + } else {
  83 + response = "{\"status\":" + httpCo.getResponseCode() + "}";
  84 + }
  85 +
  86 + json = new JSONObject(response);
  87 +
  88 + httpCo.disconnect();
  89 + } catch (Throwable t) {
  90 + System.out.println(t.toString());
  91 + }
  92 +
  93 + return json;
  94 + }
  95 +
  96 + @Override
  97 + protected void onPostExecute(JSONObject result) {
  98 +
  99 + /**
  100 + * update ui thread and remove dialog
  101 + */
  102 + super.onPostExecute(result);
  103 + delegate.processFinish(result);
  104 + }
  105 +}
0 \ No newline at end of file 106 \ No newline at end of file
PremiereActivite/app/src/main/java/com/example/app_10p5/PagerAdapter.java 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +package com.example.app_10p5;
  2 +
  3 +/**
  4 + * Created by beaus on 24/04/2016.
  5 + */
  6 +import android.support.v4.app.Fragment;
  7 +import android.support.v4.app.FragmentManager;
  8 +import android.support.v4.app.FragmentStatePagerAdapter;
  9 +
  10 +public class PagerAdapter extends FragmentStatePagerAdapter {
  11 + int mNumOfTabs;
  12 +
  13 + public PagerAdapter(FragmentManager fm, int NumOfTabs) {
  14 + super(fm);
  15 + this.mNumOfTabs = NumOfTabs;
  16 + }
  17 +
  18 + @Override
  19 + public Fragment getItem(int position) {
  20 +
  21 + switch (position) {
  22 + case 0:
  23 + TabFragment1 tab1 = new TabFragment1();
  24 + return tab1;
  25 + case 1:
  26 + TabFragment2 tab2 = new TabFragment2();
  27 + return tab2;
  28 + case 2:
  29 + TabFragment3 tab3 = new TabFragment3();
  30 + return tab3;
  31 + case 3:
  32 + TabFragment4 tab4 = new TabFragment4();
  33 + return tab4;
  34 + case 4:
  35 + TabFragment5 tab5 = new TabFragment5();
  36 + return tab5;
  37 + default:
  38 + return null;
  39 + }
  40 + }
  41 +
  42 + @Override
  43 + public int getCount() {
  44 + return mNumOfTabs;
  45 + }
  46 +}
PremiereActivite/app/src/main/java/com/example/app_10p5/TabFragment1.java 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.v4.app.Fragment;
  5 +import android.view.LayoutInflater;
  6 +import android.view.View;
  7 +import android.view.ViewGroup;
  8 +
  9 +/**
  10 + * Created by beaus on 24/04/2016.
  11 + */
  12 +
  13 +public class TabFragment1 extends Fragment {
  14 + @Override
  15 + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  16 + return inflater.inflate(R.layout.tab_fragment_1, container, false);
  17 + }
  18 +}
0 \ No newline at end of file 19 \ No newline at end of file
PremiereActivite/app/src/main/java/com/example/app_10p5/TabFragment2.java 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.v4.app.Fragment;
  5 +import android.view.LayoutInflater;
  6 +import android.view.View;
  7 +import android.view.ViewGroup;
  8 +
  9 +/**
  10 + * Created by beaus on 24/04/2016.
  11 + */
  12 +
  13 +public class TabFragment2 extends Fragment {
  14 +
  15 + @Override
  16 + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  17 + return inflater.inflate(R.layout.tab_fragment_2, container, false);
  18 + }
  19 +}
PremiereActivite/app/src/main/java/com/example/app_10p5/TabFragment3.java 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +package com.example.app_10p5;
  2 +
  3 +
  4 +import android.os.Bundle;
  5 +import android.support.v4.app.Fragment;
  6 +import android.view.LayoutInflater;
  7 +import android.view.View;
  8 +import android.view.ViewGroup;
  9 +
  10 +/**
  11 + * Created by beaus on 24/04/2016.
  12 + */
  13 +
  14 +public class TabFragment3 extends Fragment {
  15 +
  16 + @Override
  17 + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  18 + return inflater.inflate(R.layout.tab_fragment_3, container, false);
  19 + }
  20 +}
PremiereActivite/app/src/main/java/com/example/app_10p5/TabFragment4.java 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.v4.app.Fragment;
  5 +import android.view.LayoutInflater;
  6 +import android.view.View;
  7 +import android.view.ViewGroup;
  8 +
  9 +/**
  10 + * Created by beaus on 24/04/2016.
  11 + */
  12 +
  13 +public class TabFragment4 extends Fragment {
  14 + @Override
  15 + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  16 + return inflater.inflate(R.layout.tab_fragment_4, container, false);
  17 + }
  18 +}
0 \ No newline at end of file 19 \ No newline at end of file
PremiereActivite/app/src/main/java/com/example/app_10p5/TabFragment5.java 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +package com.example.app_10p5;
  2 +
  3 +import android.os.Bundle;
  4 +import android.support.v4.app.Fragment;
  5 +import android.view.LayoutInflater;
  6 +import android.view.View;
  7 +import android.view.ViewGroup;
  8 +
  9 +/**
  10 + * Created by beaus on 24/04/2016.
  11 + */
  12 +
  13 +public class TabFragment5 extends Fragment {
  14 + @Override
  15 + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  16 + return inflater.inflate(R.layout.tab_fragment_5, container, false);
  17 + }
  18 +}
0 \ No newline at end of file 19 \ No newline at end of file
PremiereActivite/app/src/main/java/com/example/app_10p5/fonction_API_client.java 0 → 100644
@@ -0,0 +1,230 @@ @@ -0,0 +1,230 @@
  1 +
  2 +/*
  3 +
  4 +public JSON client_ajouter(String logiLille1,String soldeini, String IdCarte, String decouvert){
  5 + try{
  6 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/client/ajouter");
  7 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  8 + postParameters.add(new BasicNameValuePair("loginLille1", loginLille1));
  9 + postParameters.add(new BasicNameValuePair("soldeInitial",soldeini));
  10 + postParameters.add(new BasicNameValuePair("idCarte", IdCarte));
  11 + postParameters.add(new BasicNameValuePair("decouvertAutorise",decouvert));
  12 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  13 +
  14 + HttpClient httpclient = new DefaultHttpClient();
  15 + HttpResponse responce = httpclient.execute(httppost);
  16 + return(responce);
  17 + }
  18 + catch(Exception e) {}
  19 +}
  20 +
  21 +
  22 +public void client_carte(String logiLille1,String newIdCarte){
  23 + try{
  24 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/client/carte");
  25 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  26 + postParameters.add(new BasicNameValuePair("loginLille1", loginLille1));
  27 + postParameters.add(new BasicNameValuePair("idCarte",newIdCarte));
  28 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  29 +
  30 + HttpClient httpclient = new DefaultHttpClient();
  31 + HttpResponse responce = httpclient.execute(httppost);
  32 + }
  33 + catch(Exception e) {}
  34 +}
  35 +
  36 +public JSON client_liste(){
  37 + try{
  38 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/client/liste");
  39 +
  40 + HttpClient httpclient = new DefaultHttpClient();
  41 + HttpResponse responce = httpclient.execute(httppost);
  42 + return(responce);
  43 + }
  44 + catch(Exception e) {}
  45 +}
  46 +
  47 +
  48 +public void client_decouvert(String idCarte,String newDecouvertAutorise){
  49 + try{
  50 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/client/decouvert");
  51 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  52 + postParameters.add(new BasicNameValuePair("idCarte",idCarte));
  53 + postParameters.add(new BasicNameValuePair("decouvertAutorise", newDecouvertAutorise));
  54 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  55 +
  56 + HttpClient httpclient = new DefaultHttpClient();
  57 + httpclient.execute(httppost);
  58 + }
  59 + catch(Exception e) {}
  60 +}
  61 +
  62 +
  63 +public JSON utilisateur_connexion(String login, String mdp, String idCarte, String loginLille1){
  64 + try{
  65 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/connexion");
  66 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  67 + postParameters.add(new BasicNameValuePair("login",idCarte));
  68 + postParameters.add(new BasicNameValuePair("mdp",mdp));
  69 + postParameters.add(new BasicNameValuePair("idCarte",idCarte));
  70 + postParameters.add(new BasicNameValuePair("loginLille1", loginLille1));
  71 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  72 +
  73 + HttpClient httpclient = new DefaultHttpClient();
  74 + HttpResponse responce = httpclient.execute(httppost);
  75 + return(responce);
  76 + }
  77 + catch(Exception e) {}
  78 +}
  79 +
  80 +public void utilisateur_deconnexion(){
  81 + try{
  82 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/deconnexion");
  83 +
  84 + HttpClient httpclient = new DefaultHttpClient();
  85 + httpclient.execute(httppost);
  86 + }
  87 + catch(Exception e) {}
  88 +}
  89 +
  90 +
  91 +public void utilisateur_mdp(String login, String newmdp){
  92 + try{
  93 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/mdp");
  94 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  95 + postParameters.add(new BasicNameValuePair("login",idCarte));
  96 + postParameters.add(new BasicNameValuePair("mdp",newmdp));
  97 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  98 +
  99 + HttpClient httpclient = new DefaultHttpClient();
  100 + httpclient.execute(httppost);
  101 + }
  102 + catch(Exception e) {}
  103 +}
  104 +
  105 +
  106 +public void utilisateur_droit(String login, String newdroit){
  107 + try{
  108 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/droit");
  109 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  110 + postParameters.add(new BasicNameValuePair("login",idCarte));
  111 + postParameters.add(new BasicNameValuePair("niveau de droit",newdroit));
  112 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  113 +
  114 + HttpClient httpclient = new DefaultHttpClient();
  115 + httpclient.execute(httppost);
  116 + }
  117 + catch(Exception e) {}
  118 +}
  119 +
  120 +public void utilisateur_ajouter(String login, String mdp, String loginLille1, String idCarte, String droit){
  121 + try{
  122 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/ajouter");
  123 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  124 + postParameters.add(new BasicNameValuePair("login",idCarte));
  125 + postParameters.add(new BasicNameValuePair("mdp",mdp));
  126 + postParameters.add(new BasicNameValuePair("loginLille1", loginLille1));
  127 + postParameters.add(new BasicNameValuePair("idCarte",IdCarte));
  128 + postParameters.add(new BasicNameValuePair("niveau de droit",droit));
  129 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  130 +
  131 + HttpClient httpclient = new DefaultHttpClient();
  132 + httpclient.execute(httppost);
  133 + }
  134 + catch(Exception e) {}
  135 +}
  136 +
  137 +
  138 +
  139 +public void utilisateur_carte(String login, String loginLille1, String idCarte){
  140 + try{
  141 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/carte");
  142 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  143 + postParameters.add(new BasicNameValuePair("login",idCarte));
  144 + postParameters.add(new BasicNameValuePair("loginLille1", loginLille1));
  145 + postParameters.add(new BasicNameValuePair("idCarte",newIdCarte));
  146 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  147 +
  148 + HttpClient httpclient = new DefaultHttpClient();
  149 + httpclient.execute(httppost);
  150 + }
  151 + catch(Exception e) {}
  152 +}
  153 +
  154 +
  155 +public void utilisateur_supprimer(String login){
  156 + try{
  157 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/utilisateur/carte");
  158 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  159 + postParameters.add(new BasicNameValuePair("login",idCarte));
  160 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  161 +
  162 + HttpClient httpclient = new DefaultHttpClient();
  163 + httpclient.execute(httppost);
  164 + }
  165 + catch(Exception e) {}
  166 +}
  167 +
  168 +
  169 +public JSON transaction_rechargement(String idCarte, String montant){
  170 + try{
  171 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/transaction/rechargement");
  172 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  173 + postParameters.add(new BasicNameValuePair("idCarte",idCarte));
  174 + postParameters.add(new BasicNameValuePair("montant",montant));
  175 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  176 +
  177 + HttpClient httpclient = new DefaultHttpClient();
  178 + HttpResponse responce = httpclient.execute(httppost);
  179 + return(responce);
  180 + }
  181 + catch(Exception e) {}
  182 +}
  183 +
  184 +
  185 +public JSON transaction_paiementt(String idCarte, String montant, String nbConso){
  186 + try{
  187 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/transaction/paiement");
  188 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  189 + postParameters.add(new BasicNameValuePair("idCarte",idCarte));
  190 + postParameters.add(new BasicNameValuePair("montant",montant));
  191 + postParameters.add(new BasicNameValuePair("qte",nbConso));
  192 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  193 +
  194 + HttpClient httpclient = new DefaultHttpClient();
  195 + HttpResponse responce = httpclient.execute(httppost);
  196 + return(responce);
  197 + }
  198 + catch(Exception e) {}
  199 +}
  200 +
  201 +
  202 +
  203 +public JSON transaction_vidange(String idCarte){
  204 + try{
  205 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/transaction/vidange");
  206 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  207 + postParameters.add(new BasicNameValuePair("idCarte",idCarte));
  208 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  209 +
  210 + HttpClient httpclient = new DefaultHttpClient();
  211 + HttpResponse responce = httpclient.execute(httppost);
  212 + return(responce);
  213 + }
  214 + catch(Exception e) {}
  215 +}
  216 +
  217 +
  218 +public void transaction_annuler(String idTransac){
  219 + try{
  220 + Httppost httpost = new HttpPost("10p5.clubinfo.frogeye.fr/api/transaction/annuler");
  221 + List<NameValuePair> postParameters = new ArrayList>NameValuePair>();
  222 + postParameters.add(new BasicNameValuePair("id",idTransac));
  223 + httppost.setEntity(new UrlEncodedFormEntity(postParameters));
  224 +
  225 + HttpClient httpclient = new DefaultHttpClient();
  226 + httpclient.execute(httppost);
  227 + }
  228 + catch(Exception e) {}
  229 +}
  230 +*/
0 \ No newline at end of file 231 \ No newline at end of file
PremiereActivite/app/src/main/res/layout-v23/layout_commande.xml 0 → 100644
@@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:baselineAligned="false"
  6 + android:weightSum="1"
  7 + android:nestedScrollingEnabled="true">
  8 +
  9 +
  10 + <EditText
  11 + android:layout_width="wrap_content"
  12 + android:layout_height="wrap_content"
  13 + android:inputType="number"
  14 + android:ems="10"
  15 + android:id="@+id/commande_quantite"
  16 + android:editable="true"
  17 + android:elegantTextHeight="true"
  18 + android:enabled="true"
  19 + android:numeric="integer"
  20 + android:width="300dp"
  21 + android:hint="@string/quant"
  22 + android:textAlignment="center"
  23 + android:layout_gravity="center_horizontal"
  24 + android:layout_marginTop="20dp"
  25 + android:height="150dp"
  26 + android:minHeight="50dp"
  27 + android:maxHeight="500dp"
  28 + android:minWidth="120dp" />
  29 +
  30 + <EditText
  31 + android:layout_width="wrap_content"
  32 + android:layout_height="wrap_content"
  33 + android:inputType="number"
  34 + android:ems="10"
  35 + android:id="@+id/commande_prix"
  36 + android:editable="true"
  37 + android:elegantTextHeight="true"
  38 + android:enabled="true"
  39 + android:numeric="decimal"
  40 + android:width="300dp"
  41 + android:hint="@string/prix"
  42 + android:textAlignment="center"
  43 + android:layout_gravity="center_horizontal"
  44 + android:layout_marginTop="20dp"
  45 + android:height="80dp"
  46 + android:minHeight="50dp"
  47 + android:maxHeight="500dp"
  48 + android:minWidth="120dp" />
  49 +
  50 + <Button
  51 + android:layout_width="wrap_content"
  52 + android:layout_height="wrap_content"
  53 + android:text="@string/validate"
  54 + android:id="@+id/commande_validation"
  55 + android:layout_gravity="center_horizontal"
  56 + android:layout_marginTop="40dp"
  57 + android:width="180dp"
  58 + android:height="80dp"
  59 + android:onClick="valideCommande"
  60 + android:nestedScrollingEnabled="false"
  61 + android:enabled="true" />
  62 +
  63 +</LinearLayout>
0 \ No newline at end of file 64 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/layout_carte.xml 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + xmlns:app="http://schemas.android.com/apk/res-auto"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + android:orientation="vertical">
  8 +
  9 + <TextView
  10 + android:layout_width="wrap_content"
  11 + android:layout_height="wrap_content"
  12 + android:text="@string/passCarte"
  13 + android:id="@+id/textView_carte"
  14 + android:layout_gravity="center_horizontal"
  15 + android:enabled="true"
  16 + android:textAlignment="center"
  17 + android:textSize="50sp"
  18 + android:layout_marginTop="40dp"
  19 + android:inputType="none" />
  20 +</LinearLayout>
0 \ No newline at end of file 21 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/layout_connection.xml 0 → 100644
@@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent">
  5 +
  6 + <EditText
  7 + android:layout_width="wrap_content"
  8 + android:layout_height="wrap_content"
  9 + android:id="@+id/connection_username"
  10 + android:layout_gravity="center_horizontal"
  11 + android:editable="true"
  12 + android:enabled="true"
  13 + android:focusable="true"
  14 + android:focusableInTouchMode="true"
  15 + android:inputType="text"
  16 + android:minHeight="80dp"
  17 + android:minWidth="250dp"
  18 + android:width="250dp"
  19 + android:hint="@string/user"
  20 + android:height="80dp"
  21 + android:textAlignment="center" />
  22 +
  23 + <EditText
  24 + android:layout_width="wrap_content"
  25 + android:layout_height="wrap_content"
  26 + android:id="@+id/connection_password"
  27 + android:layout_gravity="center_horizontal"
  28 + android:hint="@string/password"
  29 + android:inputType="textPassword"
  30 + android:editable="true"
  31 + android:enabled="true"
  32 + android:focusable="true"
  33 + android:focusableInTouchMode="true"
  34 + android:height="80dp"
  35 + android:minHeight="80dp"
  36 + android:minWidth="250dp"
  37 + android:password="true"
  38 + android:width="250dp"
  39 + android:layout_marginTop="40dp"
  40 + android:textAlignment="center" />
  41 +
  42 + <Button
  43 + android:layout_width="wrap_content"
  44 + android:layout_height="wrap_content"
  45 + android:text="@string/validate"
  46 + android:id="@+id/connection_button"
  47 + android:layout_gravity="center_horizontal"
  48 + android:layout_marginTop="40dp"
  49 + android:clickable="true"
  50 + android:enabled="true"
  51 + android:height="50dp"
  52 + android:hint="@string/validate"
  53 + android:minHeight="40dp"
  54 + android:minWidth="150dp"
  55 + android:onClick="valideConnection"
  56 + android:textAlignment="center"
  57 + android:width="150dp" />
  58 +</LinearLayout>
0 \ No newline at end of file 59 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/layout_creation.xml 0 → 100644
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent">
  5 +
  6 + <EditText
  7 + android:layout_width="wrap_content"
  8 + android:layout_height="wrap_content"
  9 + android:inputType="numberDecimal"
  10 + android:ems="10"
  11 + android:id="@+id/creation_montant"
  12 + android:layout_gravity="center_horizontal"
  13 + android:editable="true"
  14 + android:elegantTextHeight="true"
  15 + android:enabled="true"
  16 + android:focusable="true"
  17 + android:focusableInTouchMode="true"
  18 + android:minHeight="80dp"
  19 + android:minWidth="200dp"
  20 + android:numeric="decimal"
  21 + android:width="250dp"
  22 + android:layout_marginTop="80dp"
  23 + android:hint="@string/montant"
  24 + android:textAlignment="center" />
  25 +
  26 + <Button
  27 + android:layout_width="wrap_content"
  28 + android:layout_height="wrap_content"
  29 + android:text="@string/validate"
  30 + android:id="@+id/creation_validation"
  31 + android:layout_gravity="center_horizontal"
  32 + android:layout_marginTop="80dp"
  33 + android:elegantTextHeight="true"
  34 + android:enabled="true"
  35 + android:height="80dp"
  36 + android:minHeight="80dp"
  37 + android:minWidth="150dp"
  38 + android:textAlignment="center"
  39 + android:width="200dp"
  40 + android:onClick="valideCreationCompte" />
  41 +</LinearLayout>
0 \ No newline at end of file 42 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/layout_main.xml 0 → 100644
@@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + xmlns:tools="http://schemas.android.com/tools"
  4 + xmlns:app="http://schemas.android.com/apk/res-auto"
  5 + android:layout_width="match_parent"
  6 + android:layout_height="match_parent"
  7 + tools:context=".MainActivite"
  8 + android:orientation="vertical">
  9 +
  10 + <android.support.v7.widget.Toolbar
  11 + android:id="@+id/toolbar"
  12 + android:layout_width="match_parent"
  13 + android:layout_height="wrap_content"
  14 + android:layout_alignParentTop="true"
  15 + android:background="?attr/colorPrimary"
  16 + android:elevation="6dp"
  17 + android:minHeight="?attr/actionBarSize"
  18 + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
  19 + app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
  20 +
  21 + <android.support.design.widget.TabLayout
  22 + android:id="@+id/tab_layout"
  23 + android:layout_width="match_parent"
  24 + android:layout_height="wrap_content"
  25 + android:layout_below="@+id/toolbar"
  26 + android:background="?attr/colorPrimary"
  27 + android:elevation="6dp"
  28 + android:minHeight="?attr/actionBarSize"
  29 + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
  30 +
  31 + <android.support.v4.view.ViewPager
  32 + android:id="@+id/pager"
  33 + android:layout_width="match_parent"
  34 + android:layout_height="fill_parent"
  35 + android:layout_below="@id/tab_layout"/>
  36 +
  37 +</LinearLayout>
0 \ No newline at end of file 38 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/layout_rechargement.xml 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:gravity="center_horizontal">
  6 +
  7 + <EditText
  8 + android:layout_width="wrap_content"
  9 + android:layout_height="wrap_content"
  10 + android:inputType="numberDecimal"
  11 + android:ems="10"
  12 + android:id="@+id/rechargement_champ_montant"
  13 + android:layout_gravity="center_horizontal"
  14 + android:layout_marginTop="80dp"
  15 + android:editable="true"
  16 + android:elegantTextHeight="true"
  17 + android:enabled="true"
  18 + android:height="150dp"
  19 + android:maxHeight="500dp"
  20 + android:maxLength="10"
  21 + android:maxWidth="600dp"
  22 + android:minHeight="80dp"
  23 + android:numeric="decimal"
  24 + android:width="300dp"
  25 + android:hint="@string/montant"
  26 + android:textAlignment="center"
  27 + android:textStyle="bold" />
  28 +
  29 + <Button
  30 + android:layout_width="wrap_content"
  31 + android:layout_height="wrap_content"
  32 + android:text="@string/validate"
  33 + android:id="@+id/rechargement_bouton"
  34 + android:layout_marginTop="80dp"
  35 + android:layout_gravity="center_horizontal"
  36 + android:minWidth="150dp"
  37 + android:minHeight="50dp"
  38 + android:textAlignment="center"
  39 + android:width="150dp"
  40 + android:elegantTextHeight="true"
  41 + android:enabled="true"
  42 + android:onClick="valideRechargement"
  43 + android:height="80dp"
  44 + android:maxHeight="200dp"
  45 + android:maxWidth="150dp" />
  46 +</LinearLayout>
0 \ No newline at end of file 47 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/layout_vidange.xml 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:orientation="vertical" android:layout_width="match_parent"
  4 + android:layout_height="match_parent">
  5 +
  6 + <TextView
  7 + android:layout_width="wrap_content"
  8 + android:layout_height="wrap_content"
  9 + android:text="@string/vidange"
  10 + android:id="@+id/textView"
  11 + android:layout_gravity="center_horizontal"
  12 + android:layout_marginTop="50dp" />
  13 +</LinearLayout>
0 \ No newline at end of file 14 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/tab_fragment_1.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:orientation="vertical">
  6 +
  7 + <include layout="@layout/layout_connection"></include>
  8 +
  9 +</RelativeLayout>
0 \ No newline at end of file 10 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/tab_fragment_2.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:orientation="vertical">
  6 +
  7 + <include layout="@layout/layout_commande"></include>
  8 +
  9 +</RelativeLayout>
0 \ No newline at end of file 10 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/tab_fragment_3.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:orientation="vertical">
  6 +
  7 + <include layout="@layout/layout_rechargement"></include>
  8 +
  9 +</RelativeLayout>
0 \ No newline at end of file 10 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/tab_fragment_4.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:orientation="vertical">
  6 +
  7 + <include layout="@layout/layout_creation"></include>
  8 +
  9 +</RelativeLayout>
0 \ No newline at end of file 10 \ No newline at end of file
PremiereActivite/app/src/main/res/layout/tab_fragment_5.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3 + android:layout_width="match_parent"
  4 + android:layout_height="match_parent"
  5 + android:orientation="vertical">
  6 +
  7 + <include layout="@layout/layout_vidange"></include>
  8 +
  9 +</RelativeLayout>
0 \ No newline at end of file 10 \ No newline at end of file
PremiereActivite/app/src/main/res/mipmap-hdpi/ic_launcher.png 0 → 100644

3.34 KB

PremiereActivite/app/src/main/res/mipmap-mdpi/ic_launcher.png 0 → 100644

2.15 KB

PremiereActivite/app/src/main/res/mipmap-xhdpi/ic_launcher.png 0 → 100644

4.73 KB

PremiereActivite/app/src/main/res/mipmap-xxhdpi/ic_launcher.png 0 → 100644

7.54 KB

PremiereActivite/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png 0 → 100644

10.2 KB

PremiereActivite/app/src/main/res/values-v21/styles.xml 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<resources>>
  2 +
  3 + <style name="AppTheme.NoActionBar">
  4 + <item name="windowActionBar">false</item>
  5 + <item name="windowNoTitle">true</item>
  6 + <item name="android:windowDrawsSystemBarBackgrounds">true</item>
  7 + <item name="android:statusBarColor">@android:color/transparent</item>
  8 + </style>
  9 +</resources>
PremiereActivite/app/src/main/res/values-w820dp/dimens.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<resources>
  2 + <!-- Example customization of dimensions originally defined in res/values/dimens.xml
  3 + (such as screen margins) for screens with more than 820dp of available width. This
  4 + would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
  5 + <dimen name="activity_horizontal_margin">64dp</dimen>
  6 +</resources>
PremiereActivite/app/src/main/res/values/colors.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <color name="colorPrimary">#3F51B5</color>
  4 + <color name="colorPrimaryDark">#303F9F</color>
  5 + <color name="colorAccent">#ff4081</color>
  6 +</resources>
PremiereActivite/app/src/main/res/values/dimens.xml 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +<resources>
  2 + <!-- Default screen margins, per the Android Design guidelines. -->
  3 + <dimen name="activity_horizontal_margin">16dp</dimen>
  4 + <dimen name="activity_vertical_margin">16dp</dimen>
  5 + <dimen name="fab_margin">16dp</dimen>
  6 +</resources>
PremiereActivite/app/src/main/res/values/ids.xml 0 → 100644
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <item name="boutton" type="id" />
  4 +</resources>
0 \ No newline at end of file 5 \ No newline at end of file
PremiereActivite/app/src/main/res/values/strings.xml 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +<resources>
  2 + <string name="app_name">PremiereActivite</string>
  3 + <string name="action_settings">Settings</string>
  4 + <string name="user">Identifiant</string>
  5 + <string name="password">Mot de passe</string>
  6 + <string name="validate">Valider</string>
  7 + <string name="quant">Quantité</string>
  8 + <string name="montant">Montant</string>
  9 + <string name="prix">Prix</string>
  10 + <string name="vidange">Vidange</string>
  11 + <string name="passCarte">Passez la carte du client</string>
  12 +
  13 +</resources>
PremiereActivite/app/src/main/res/values/styles.xml 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +<resources>
  2 +
  3 + <!-- Base application theme. -->
  4 + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  5 + <!-- Customize your theme here. -->
  6 + <item name="colorPrimary">@color/colorPrimary</item>
  7 + <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  8 + <item name="colorAccent">@color/colorAccent</item>
  9 + </style>
  10 +
  11 + <style name="AppTheme.NoActionBar">
  12 + <item name="windowActionBar">false</item>
  13 + <item name="windowNoTitle">true</item>
  14 + </style>
  15 +
  16 + <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
  17 +
  18 + <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
  19 +
  20 +</resources>
PremiereActivite/app/src/test/java/com/example/florian/premiereactivite/ExampleUnitTest.java 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +package com.example.florian.premiereactivite;
  2 +
  3 +import org.junit.Test;
  4 +
  5 +import static org.junit.Assert.*;
  6 +
  7 +/**
  8 + * To work on unit tests, switch the Test Artifact in the Build Variants view.
  9 + */
  10 +public class ExampleUnitTest {
  11 + @Test
  12 + public void addition_isCorrect() throws Exception {
  13 + assertEquals(4, 2 + 2);
  14 + }
  15 +}
0 \ No newline at end of file 16 \ No newline at end of file
PremiereActivite/build.gradle 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +// Top-level build file where you can add configuration options common to all sub-projects/modules.
  2 +
  3 +buildscript {
  4 + repositories {
  5 + jcenter()
  6 + }
  7 + dependencies {
  8 + classpath 'com.android.tools.build:gradle:2.1.0'
  9 +
  10 + // NOTE: Do not place your application dependencies here; they belong
  11 + // in the individual module build.gradle files
  12 + }
  13 +}
  14 +
  15 +allprojects {
  16 + repositories {
  17 + jcenter()
  18 + }
  19 +}
  20 +
  21 +task clean(type: Delete) {
  22 + delete rootProject.buildDir
  23 +}
PremiereActivite/gradle.properties 0 → 100644
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
  1 +# Project-wide Gradle settings.
  2 +
  3 +# IDE (e.g. Android Studio) users:
  4 +# Gradle settings configured through the IDE *will override*
  5 +# any settings specified in this file.
  6 +
  7 +# For more details on how to configure your build environment visit
  8 +# http://www.gradle.org/docs/current/userguide/build_environment.html
  9 +
  10 +# Specifies the JVM arguments used for the daemon process.
  11 +# The setting is particularly useful for tweaking memory settings.
  12 +# Default value: -Xmx10248m -XX:MaxPermSize=256m
  13 +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
  14 +
  15 +# When configured, Gradle will run in incubating parallel mode.
  16 +# This option should only be used with decoupled projects. More details, visit
  17 +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
  18 +# org.gradle.parallel=true
0 \ No newline at end of file 19 \ No newline at end of file
PremiereActivite/gradle/wrapper/gradle-wrapper.jar 0 → 100644
No preview for this file type
PremiereActivite/gradle/wrapper/gradle-wrapper.properties 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +#Sun Apr 24 11:38:10 CEST 2016
  2 +distributionBase=GRADLE_USER_HOME
  3 +distributionPath=wrapper/dists
  4 +zipStoreBase=GRADLE_USER_HOME
  5 +zipStorePath=wrapper/dists
  6 +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
PremiereActivite/gradlew 0 → 100755
@@ -0,0 +1,160 @@ @@ -0,0 +1,160 @@
  1 +#!/usr/bin/env bash
  2 +
  3 +##############################################################################
  4 +##
  5 +## Gradle start up script for UN*X
  6 +##
  7 +##############################################################################
  8 +
  9 +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  10 +DEFAULT_JVM_OPTS=""
  11 +
  12 +APP_NAME="Gradle"
  13 +APP_BASE_NAME=`basename "$0"`
  14 +
  15 +# Use the maximum available, or set MAX_FD != -1 to use that value.
  16 +MAX_FD="maximum"
  17 +
  18 +warn ( ) {
  19 + echo "$*"
  20 +}
  21 +
  22 +die ( ) {
  23 + echo
  24 + echo "$*"
  25 + echo
  26 + exit 1
  27 +}
  28 +
  29 +# OS specific support (must be 'true' or 'false').
  30 +cygwin=false
  31 +msys=false
  32 +darwin=false
  33 +case "`uname`" in
  34 + CYGWIN* )
  35 + cygwin=true
  36 + ;;
  37 + Darwin* )
  38 + darwin=true
  39 + ;;
  40 + MINGW* )
  41 + msys=true
  42 + ;;
  43 +esac
  44 +
  45 +# Attempt to set APP_HOME
  46 +# Resolve links: $0 may be a link
  47 +PRG="$0"
  48 +# Need this for relative symlinks.
  49 +while [ -h "$PRG" ] ; do
  50 + ls=`ls -ld "$PRG"`
  51 + link=`expr "$ls" : '.*-> \(.*\)$'`
  52 + if expr "$link" : '/.*' > /dev/null; then
  53 + PRG="$link"
  54 + else
  55 + PRG=`dirname "$PRG"`"/$link"
  56 + fi
  57 +done
  58 +SAVED="`pwd`"
  59 +cd "`dirname \"$PRG\"`/" >/dev/null
  60 +APP_HOME="`pwd -P`"
  61 +cd "$SAVED" >/dev/null
  62 +
  63 +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
  64 +
  65 +# Determine the Java command to use to start the JVM.
  66 +if [ -n "$JAVA_HOME" ] ; then
  67 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
  68 + # IBM's JDK on AIX uses strange locations for the executables
  69 + JAVACMD="$JAVA_HOME/jre/sh/java"
  70 + else
  71 + JAVACMD="$JAVA_HOME/bin/java"
  72 + fi
  73 + if [ ! -x "$JAVACMD" ] ; then
  74 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
  75 +
  76 +Please set the JAVA_HOME variable in your environment to match the
  77 +location of your Java installation."
  78 + fi
  79 +else
  80 + JAVACMD="java"
  81 + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  82 +
  83 +Please set the JAVA_HOME variable in your environment to match the
  84 +location of your Java installation."
  85 +fi
  86 +
  87 +# Increase the maximum file descriptors if we can.
  88 +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
  89 + MAX_FD_LIMIT=`ulimit -H -n`
  90 + if [ $? -eq 0 ] ; then
  91 + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
  92 + MAX_FD="$MAX_FD_LIMIT"
  93 + fi
  94 + ulimit -n $MAX_FD
  95 + if [ $? -ne 0 ] ; then
  96 + warn "Could not set maximum file descriptor limit: $MAX_FD"
  97 + fi
  98 + else
  99 + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
  100 + fi
  101 +fi
  102 +
  103 +# For Darwin, add options to specify how the application appears in the dock
  104 +if $darwin; then
  105 + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
  106 +fi
  107 +
  108 +# For Cygwin, switch paths to Windows format before running java
  109 +if $cygwin ; then
  110 + APP_HOME=`cygpath --path --mixed "$APP_HOME"`
  111 + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
  112 + JAVACMD=`cygpath --unix "$JAVACMD"`
  113 +
  114 + # We build the pattern for arguments to be converted via cygpath
  115 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
  116 + SEP=""
  117 + for dir in $ROOTDIRSRAW ; do
  118 + ROOTDIRS="$ROOTDIRS$SEP$dir"
  119 + SEP="|"
  120 + done
  121 + OURCYGPATTERN="(^($ROOTDIRS))"
  122 + # Add a user-defined pattern to the cygpath arguments
  123 + if [ "$GRADLE_CYGPATTERN" != "" ] ; then
  124 + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
  125 + fi
  126 + # Now convert the arguments - kludge to limit ourselves to /bin/sh
  127 + i=0
  128 + for arg in "$@" ; do
  129 + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
  130 + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
  131 +
  132 + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
  133 + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
  134 + else
  135 + eval `echo args$i`="\"$arg\""
  136 + fi
  137 + i=$((i+1))
  138 + done
  139 + case $i in
  140 + (0) set -- ;;
  141 + (1) set -- "$args0" ;;
  142 + (2) set -- "$args0" "$args1" ;;
  143 + (3) set -- "$args0" "$args1" "$args2" ;;
  144 + (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
  145 + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
  146 + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
  147 + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
  148 + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
  149 + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
  150 + esac
  151 +fi
  152 +
  153 +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
  154 +function splitJvmOpts() {
  155 + JVM_OPTS=("$@")
  156 +}
  157 +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
  158 +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
  159 +
  160 +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
PremiereActivite/gradlew.bat 0 → 100644
@@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
  1 +@if "%DEBUG%" == "" @echo off
  2 +@rem ##########################################################################
  3 +@rem
  4 +@rem Gradle startup script for Windows
  5 +@rem
  6 +@rem ##########################################################################
  7 +
  8 +@rem Set local scope for the variables with windows NT shell
  9 +if "%OS%"=="Windows_NT" setlocal
  10 +
  11 +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  12 +set DEFAULT_JVM_OPTS=
  13 +
  14 +set DIRNAME=%~dp0
  15 +if "%DIRNAME%" == "" set DIRNAME=.
  16 +set APP_BASE_NAME=%~n0
  17 +set APP_HOME=%DIRNAME%
  18 +
  19 +@rem Find java.exe
  20 +if defined JAVA_HOME goto findJavaFromJavaHome
  21 +
  22 +set JAVA_EXE=java.exe
  23 +%JAVA_EXE% -version >NUL 2>&1
  24 +if "%ERRORLEVEL%" == "0" goto init
  25 +
  26 +echo.
  27 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  28 +echo.
  29 +echo Please set the JAVA_HOME variable in your environment to match the
  30 +echo location of your Java installation.
  31 +
  32 +goto fail
  33 +
  34 +:findJavaFromJavaHome
  35 +set JAVA_HOME=%JAVA_HOME:"=%
  36 +set JAVA_EXE=%JAVA_HOME%/bin/java.exe
  37 +
  38 +if exist "%JAVA_EXE%" goto init
  39 +
  40 +echo.
  41 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
  42 +echo.
  43 +echo Please set the JAVA_HOME variable in your environment to match the
  44 +echo location of your Java installation.
  45 +
  46 +goto fail
  47 +
  48 +:init
  49 +@rem Get command-line arguments, handling Windowz variants
  50 +
  51 +if not "%OS%" == "Windows_NT" goto win9xME_args
  52 +if "%@eval[2+2]" == "4" goto 4NT_args
  53 +
  54 +:win9xME_args
  55 +@rem Slurp the command line arguments.
  56 +set CMD_LINE_ARGS=
  57 +set _SKIP=2
  58 +
  59 +:win9xME_args_slurp
  60 +if "x%~1" == "x" goto execute
  61 +
  62 +set CMD_LINE_ARGS=%*
  63 +goto execute
  64 +
  65 +:4NT_args
  66 +@rem Get arguments from the 4NT Shell from JP Software
  67 +set CMD_LINE_ARGS=%$
  68 +
  69 +:execute
  70 +@rem Setup the command line
  71 +
  72 +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
  73 +
  74 +@rem Execute Gradle
  75 +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
  76 +
  77 +:end
  78 +@rem End local scope for the variables with windows NT shell
  79 +if "%ERRORLEVEL%"=="0" goto mainEnd
  80 +
  81 +:fail
  82 +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
  83 +rem the _cmd.exe /c_ return code!
  84 +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
  85 +exit /b 1
  86 +
  87 +:mainEnd
  88 +if "%OS%"=="Windows_NT" endlocal
  89 +
  90 +:omega
PremiereActivite/settings.gradle 0 → 100644
@@ -0,0 +1 @@ @@ -0,0 +1 @@
  1 +include ':app'