From 92672ce030259a8884c01a2676a2e7259cba202b Mon Sep 17 00:00:00 2001 From: Pascal Alberti Date: Mon, 19 Mar 2018 10:09:04 +0100 Subject: [PATCH] Clean up et modif README --- .gitignore | 132 +++++++++++++++ .idea/gradle.xml | 18 ++ .idea/runConfigurations.xml | 12 ++ README | 14 ++ app/.gitignore | 1 + app/build.gradle | 33 ++++ app/proguard-rules.pro | 25 +++ .../blablacrade/ExampleInstrumentedTest.java | 26 +++ app/src/main/AndroidManifest.xml | 26 +++ .../java/fr/wcs/blablacrade/MainActivity.java | 27 +++ .../blablacrade/SearchItineraryActivity.java | 74 ++++++++ .../wcs/blablacrade/SearchRequestModel.java | 59 +++++++ .../fr/wcs/blablacrade/TripResultAdapter.java | 52 ++++++ .../fr/wcs/blablacrade/TripResultModel.java | 29 ++++ ...iewSearchItineraryResultsListActivity.java | 41 +++++ app/src/main/res/layout/activity_main.xml | 23 +++ .../res/layout/activity_search_itinerary.xml | 52 ++++++ ...ity_view_search_itinerary_results_list.xml | 9 + app/src/main/res/layout/content_main.xml | 21 +++ app/src/main/res/layout/item_trip.xml | 29 ++++ app/src/main/res/menu/menu_main.xml | 10 ++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4208 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2555 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6114 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10056 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 14696 bytes app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/strings.xml | 10 ++ app/src/main/res/values/styles.xml | 20 +++ .../fr/wcs/blablacrade/ExampleUnitTest.java | 17 ++ build.gradle | 23 +++ gradle.properties | 17 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++++++++++++++++ gradlew.bat | 90 ++++++++++ settings.gradle | 1 + 43 files changed, 1066 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/gradle.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 README create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/fr/wcs/blablacrade/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/fr/wcs/blablacrade/MainActivity.java create mode 100644 app/src/main/java/fr/wcs/blablacrade/SearchItineraryActivity.java create mode 100644 app/src/main/java/fr/wcs/blablacrade/SearchRequestModel.java create mode 100644 app/src/main/java/fr/wcs/blablacrade/TripResultAdapter.java create mode 100644 app/src/main/java/fr/wcs/blablacrade/TripResultModel.java create mode 100644 app/src/main/java/fr/wcs/blablacrade/ViewSearchItineraryResultsListActivity.java create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_search_itinerary.xml create mode 100644 app/src/main/res/layout/activity_view_search_itinerary_results_list.xml create mode 100644 app/src/main/res/layout/content_main.xml create mode 100644 app/src/main/res/layout/item_trip.xml create mode 100644 app/src/main/res/menu/menu_main.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/fr/wcs/blablacrade/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a6e022e --- /dev/null +++ b/.gitignore @@ -0,0 +1,132 @@ + +# Created by https://www.gitignore.io/api/androidstudio + +### AndroidStudio ### +# Covers files to be ignored for android development using Android Studio. + +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle +.gradle/ +build/ + +# Signing files +.signing/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio +/*/build/ +/*/local.properties +/*/out +/*/*/build +/*/*/production +captures/ +.navigation/ +*.ipr +*~ +*.swp + +# Android Patch +gen-external-apklibs + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# NDK +obj/ + +# IntelliJ IDEA +*.iml +*.iws +/out/ + +# User-specific configurations +.idea/libraries/ +.idea/workspace.xml +.idea/tasks.xml +.idea/.name +.idea/compiler.xml +.idea/copyright/profiles_settings.xml +.idea/encodings.xml +.idea/misc.xml +.idea/modules.xml +.idea/scopes/scope_settings.xml +.idea/dictionaries +.idea/vcs.xml +.idea/jsLibraryMappings.xml +.idea/datasources.xml +.idea/dataSources.ids +.idea/sqlDataSources.xml +.idea/dynamic.xml +.idea/uiDesigner.xml + +# OS-specific files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Legacy Eclipse project files +.classpath +.project +.cproject +.settings/ + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.war +*.ear + +# virtual machine crash logs (Reference: http://www.java.com/en/download/help/error_hotspot.xml) +hs_err_pid* + +## Plugin-specific files: + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Mongo Explorer plugin +.idea/mongoSettings.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### AndroidStudio Patch ### + +!/gradle/wrapper/gradle-wrapper.jar + + +# End of https://www.gitignore.io/api/androidstudio \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7ac24c7 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..14112b2 --- /dev/null +++ b/README @@ -0,0 +1,14 @@ +## BLA BLA CLEAN + +Besoin d'un transport pour coder proprement ? Bla Bla Clean est là pour vous ! D'un simple clic +sur votre téléphone, trouvez un covoitureur développeur à n'importe quel moment. Sélectionnez votre +ville de départ, celle d'arrivée, ainsi que la date et l'heure de votre voyage, et nous nous occupons +du reste. Nous vous trouvons les meilleurs chauffeurs-codeurs de votre région et nous vous mettons en +relation avec eux. + +Vous ferez de belles rencontres et pourrez pester ensemble contre ces noobs qui produisent du trop +mauvais code plutôt que contre les embouteillages. + +Bla Bla Clean, avec nos chauffeurs-codeurs très disciplinés, vous ne verrez pas passer les kilomètres. + +A la prochaine ! (Signalez-nous les éventuels bugs que vous rencontrez) diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..dce9482 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,33 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 26 + buildToolsVersion "26.0.2" + defaultConfig { + applicationId 'fr.wcs.blablacrade' + minSdkVersion 15 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + productFlavors { + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:26.+' + compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.android.support:design:26.+' + testCompile 'junit:junit:4.12' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..884b6c3 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/wilder/Android/Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/fr/wcs/blablacrade/ExampleInstrumentedTest.java b/app/src/androidTest/java/fr/wcs/blablacrade/ExampleInstrumentedTest.java new file mode 100644 index 0000000..6a5f686 --- /dev/null +++ b/app/src/androidTest/java/fr/wcs/blablacrade/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package fr.wcs.blablacrade; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("fr.wcs.blablawild", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..36c818e --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/fr/wcs/blablacrade/MainActivity.java b/app/src/main/java/fr/wcs/blablacrade/MainActivity.java new file mode 100644 index 0000000..a281b81 --- /dev/null +++ b/app/src/main/java/fr/wcs/blablacrade/MainActivity.java @@ -0,0 +1,27 @@ +package fr.wcs.blablacrade; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.widget.Button; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + Button Search = (Button) findViewById(R.id.btn_search); + Search.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view){ + Intent intent=new Intent(MainActivity.this, SearchItineraryActivity.class); + startActivity(intent); + }}); + } +} diff --git a/app/src/main/java/fr/wcs/blablacrade/SearchItineraryActivity.java b/app/src/main/java/fr/wcs/blablacrade/SearchItineraryActivity.java new file mode 100644 index 0000000..25d5b69 --- /dev/null +++ b/app/src/main/java/fr/wcs/blablacrade/SearchItineraryActivity.java @@ -0,0 +1,74 @@ +package fr.wcs.blablacrade; + +import android.app.DatePickerDialog; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.EditText; +import android.widget.Toast; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; + +public class SearchItineraryActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_search_itinerary); + + final EditText departure = (EditText) findViewById(R.id.departure); + final EditText destination = (EditText) findViewById(R.id.destination); + final EditText date = (EditText) findViewById(R.id.date); + Button buttonSearch = (Button) findViewById(R.id.push); + + + buttonSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + String departureValue = departure.getText().toString(); + String destinationValue = destination.getText().toString(); + String dateValue = date.getText().toString(); + if (departureValue.isEmpty() || destinationValue.isEmpty()) { + Toast painGrillé = Toast.makeText(getApplicationContext(), getResources().getString(R.string.form_error), Toast.LENGTH_SHORT); + painGrillé.show(); + } + else { + Intent intent = new Intent(SearchItineraryActivity.this, ViewSearchItineraryResultsListActivity.class); + SearchRequestModel searchRequest=new SearchRequestModel(departureValue, destinationValue, dateValue); + intent.putExtra("searchRequest", searchRequest); + SearchItineraryActivity.this.startActivity(intent); + } + } + }); + + final Calendar calendar = Calendar.getInstance(); + final DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() { + + @Override + public void onDateSet(DatePicker view, int year,int month,int day){ + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month); + calendar.set(Calendar.DAY_OF_MONTH, day); + UpdateLabel(date, calendar); + }}; + + date.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new DatePickerDialog(SearchItineraryActivity.this, dateListener, calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show(); + } + }); + } + + private void UpdateLabel(EditText editText, Calendar myCalendar) { + String myFormat = "dd/MM/yyyy"; + SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.FRANCE); + editText.setText(sdf.format(myCalendar.getTime())); + } +} diff --git a/app/src/main/java/fr/wcs/blablacrade/SearchRequestModel.java b/app/src/main/java/fr/wcs/blablacrade/SearchRequestModel.java new file mode 100644 index 0000000..12058e5 --- /dev/null +++ b/app/src/main/java/fr/wcs/blablacrade/SearchRequestModel.java @@ -0,0 +1,59 @@ +package fr.wcs.blablacrade; + +import android.os.Parcel; +import android.os.Parcelable; + +public class SearchRequestModel implements Parcelable { + + private String departure; + private String destination; + private String date; + + public String getDeparture() { + return departure; + } + + public String getDestination() { + return destination; + } + + public SearchRequestModel(String departure, String destination, String date) { + this.departure = departure; + this.destination = destination; + this.date = date; + } + + protected SearchRequestModel(Parcel in) { + departure = in.readString(); + destination = in.readString(); + date = in.readString(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(departure); + dest.writeString(destination); + dest.writeString(date); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public SearchRequestModel createFromParcel(Parcel in) { + return new SearchRequestModel(in); + } + + @Override + public SearchRequestModel[] newArray(int size) { + return new SearchRequestModel[size]; + } + }; + + public String getDate() { + return date; + } +} diff --git a/app/src/main/java/fr/wcs/blablacrade/TripResultAdapter.java b/app/src/main/java/fr/wcs/blablacrade/TripResultAdapter.java new file mode 100644 index 0000000..83d4272 --- /dev/null +++ b/app/src/main/java/fr/wcs/blablacrade/TripResultAdapter.java @@ -0,0 +1,52 @@ +package fr.wcs.blablacrade; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import java.util.ArrayList; + + +public class TripResultAdapter extends BaseAdapter { + private Context context; + private ArrayList items; + + public TripResultAdapter(Context context, ArrayList items) { + this.context = context; + this.items = items; + } + + @Override + public int getCount() { + return items.size(); + } + + @Override + public Object getItem(int position) { + return items.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + if (convertView == null) { + convertView = LayoutInflater.from(context).inflate(R.layout.item_trip, parent, false); + } + TripResultModel currentItem = (TripResultModel) getItem(position); + TextView departure = convertView.findViewById(R.id.texteresu1); + TextView firstname = convertView.findViewById(R.id.textres2); + TextView price = convertView.findViewById(R.id.txt); + departure.setText(currentItem.getDeparture().toString()); + firstname.setText(currentItem.getFirstname()); + price.setText(String.valueOf(currentItem.getPrice())); + + return convertView; + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/wcs/blablacrade/TripResultModel.java b/app/src/main/java/fr/wcs/blablacrade/TripResultModel.java new file mode 100644 index 0000000..1bf9b2d --- /dev/null +++ b/app/src/main/java/fr/wcs/blablacrade/TripResultModel.java @@ -0,0 +1,29 @@ +package fr.wcs.blablacrade; + +import java.util.Date; + + +public class TripResultModel { + + private Date departure; + private String firstname; + private int price; + + public TripResultModel(String firstname, Date departure, int price) { + this.firstname = firstname; + this.departure = departure; + this.price = price; + } + + public Date getDeparture() { + return departure; + } + + public int getPrice() { + return price; + } + + public String getFirstname() { + return firstname; + } +} diff --git a/app/src/main/java/fr/wcs/blablacrade/ViewSearchItineraryResultsListActivity.java b/app/src/main/java/fr/wcs/blablacrade/ViewSearchItineraryResultsListActivity.java new file mode 100644 index 0000000..d0be9d0 --- /dev/null +++ b/app/src/main/java/fr/wcs/blablacrade/ViewSearchItineraryResultsListActivity.java @@ -0,0 +1,41 @@ +package fr.wcs.blablacrade; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.widget.ListView; +import android.widget.Toast; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; + +public class ViewSearchItineraryResultsListActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_view_search_itinerary_results_list); + + SearchRequestModel searchTrip = getIntent().getParcelableExtra("searchRequest"); + String departure = searchTrip.getDeparture(); + String destination = searchTrip.getDestination(); + String date = searchTrip.getDate(); + ListView searchResult = (ListView) findViewById(R.id.listViewSearchResults); + ArrayList listTrip = new ArrayList<>();SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy-hh:mm"); + + Toast.makeText(this, date, Toast.LENGTH_LONG).show(); + setTitle(departure + " >> " + destination); + + try { + listTrip.add(new TripResultModel("Bernard", sdf.parse("21/02/2017-15:30"), 15)); + listTrip.add(new TripResultModel("Jean-Jacques", sdf.parse("21/02/2017-16:00"), 20)); + listTrip.add(new TripResultModel("Bertrand", sdf.parse("21/02/2017-16:30"), 16)); + listTrip.add(new TripResultModel("Gertrude", sdf.parse("21/02/2017-17:00"), 40)); + } + catch (ParseException e) { + } + + TripResultAdapter adapter = new TripResultAdapter(this, listTrip); + searchResult.setAdapter(adapter); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..f85c150 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_search_itinerary.xml b/app/src/main/res/layout/activity_search_itinerary.xml new file mode 100644 index 0000000..665fe59 --- /dev/null +++ b/app/src/main/res/layout/activity_search_itinerary.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + +