From 3d8de64fff6c6027480457e80d8bb4c449a36db7 Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Wed, 1 Feb 2023 11:43:40 +0100 Subject: [PATCH 1/9] completed v01 of activity_neighbour_detail.xml --- .../androidTestResultsUserPreferences.xml | 22 ++ Android/Entrevoisins/.idea/compiler.xml | 6 + Android/Entrevoisins/.idea/gradle.xml | 13 +- .../Entrevoisins/.idea/jarRepositories.xml | 40 +++ Android/Entrevoisins/.idea/misc.xml | 2 +- .../Entrevoisins/.idea/runConfigurations.xml | 12 - Android/Entrevoisins/app/build.gradle | 10 +- .../app/src/main/AndroidManifest.xml | 9 +- .../NeighbourDetailActivity.java | 15 ++ .../res/drawable/baseline_language_24.xml | 5 + .../res/drawable/baseline_location_on_24.xml | 5 + .../main/res/drawable/baseline_phone_24.xml | 5 + .../main/res/drawable/ic_star_yellow_24dp.xml | 5 + .../main/res/drawable/white_detail_block.xml | 9 + .../res/layout/activity_neighbour_detail.xml | 230 ++++++++++++++++++ .../app/src/main/res/values/colors.xml | 2 + .../app/src/main/res/values/strings.xml | 9 + .../service/NeighbourServiceTest.java | 1 + Android/Entrevoisins/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 20 files changed, 380 insertions(+), 24 deletions(-) create mode 100644 Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml create mode 100644 Android/Entrevoisins/.idea/compiler.xml create mode 100644 Android/Entrevoisins/.idea/jarRepositories.xml delete mode 100644 Android/Entrevoisins/.idea/runConfigurations.xml create mode 100644 Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/ic_star_yellow_24dp.xml create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/white_detail_block.xml create mode 100644 Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml diff --git a/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml b/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml new file mode 100644 index 0000000..cbd79b0 --- /dev/null +++ b/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/Android/Entrevoisins/.idea/compiler.xml b/Android/Entrevoisins/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/Android/Entrevoisins/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Android/Entrevoisins/.idea/gradle.xml b/Android/Entrevoisins/.idea/gradle.xml index 2996d53..a0de2a1 100644 --- a/Android/Entrevoisins/.idea/gradle.xml +++ b/Android/Entrevoisins/.idea/gradle.xml @@ -1,14 +1,19 @@ + diff --git a/Android/Entrevoisins/.idea/jarRepositories.xml b/Android/Entrevoisins/.idea/jarRepositories.xml new file mode 100644 index 0000000..0376040 --- /dev/null +++ b/Android/Entrevoisins/.idea/jarRepositories.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Entrevoisins/.idea/misc.xml b/Android/Entrevoisins/.idea/misc.xml index ad6da9c..a740c72 100644 --- a/Android/Entrevoisins/.idea/misc.xml +++ b/Android/Entrevoisins/.idea/misc.xml @@ -5,7 +5,7 @@ - + diff --git a/Android/Entrevoisins/.idea/runConfigurations.xml b/Android/Entrevoisins/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/Android/Entrevoisins/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Android/Entrevoisins/app/build.gradle b/Android/Entrevoisins/app/build.gradle index cac6e75..c96a63a 100644 --- a/Android/Entrevoisins/app/build.gradle +++ b/Android/Entrevoisins/app/build.gradle @@ -21,17 +21,23 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + namespace 'com.openclassrooms.entrevoisins' + buildFeatures { + viewBinding true + } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.android.support.constraint:constraint-layout:2.0.4' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.jakewharton:butterknife:9.0.0' + implementation 'android.arch.navigation:navigation-fragment:1.0.0' + implementation 'android.arch.navigation:navigation-ui:1.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0' implementation 'com.github.bumptech.glide:glide:4.9.0' @@ -41,7 +47,7 @@ dependencies { implementation 'org.greenrobot:eventbus:3.1.1' // UNIT TEST - testImplementation 'junit:junit:4.12' + testImplementation 'junit:junit:4.13.2' testImplementation 'org.hamcrest:java-hamcrest:2.0.0.0' // INSTRUMENTATION TEST androidTestImplementation 'com.android.support.test:rules:1.0.2' diff --git a/Android/Entrevoisins/app/src/main/AndroidManifest.xml b/Android/Entrevoisins/app/src/main/AndroidManifest.xml index b0d0645..affa06c 100644 --- a/Android/Entrevoisins/app/src/main/AndroidManifest.xml +++ b/Android/Entrevoisins/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.openclassrooms.entrevoisins" > @@ -11,14 +11,17 @@ android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme" > + + android:theme="@style/AppTheme.NoActionBar" > diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java new file mode 100644 index 0000000..6a90745 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java @@ -0,0 +1,15 @@ +package com.openclassrooms.entrevoisins.ui.neighbour_list; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +import com.openclassrooms.entrevoisins.R; + +public class NeighbourDetailActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_neighbour_detail); + } +} \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml new file mode 100644 index 0000000..3e0737c --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml new file mode 100644 index 0000000..b1be4f3 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml new file mode 100644 index 0000000..d9722ea --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Android/Entrevoisins/app/src/main/res/drawable/ic_star_yellow_24dp.xml b/Android/Entrevoisins/app/src/main/res/drawable/ic_star_yellow_24dp.xml new file mode 100644 index 0000000..63ad6ad --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/ic_star_yellow_24dp.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/drawable/white_detail_block.xml b/Android/Entrevoisins/app/src/main/res/drawable/white_detail_block.xml new file mode 100644 index 0000000..11a9021 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/white_detail_block.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml b/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml new file mode 100644 index 0000000..4bcdd68 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/values/colors.xml b/Android/Entrevoisins/app/src/main/res/values/colors.xml index 885e153..becacc0 100644 --- a/Android/Entrevoisins/app/src/main/res/values/colors.xml +++ b/Android/Entrevoisins/app/src/main/res/values/colors.xml @@ -3,4 +3,6 @@ #03A9F4 #0287c3 #FF80AB + #454545 + #E2498E diff --git a/Android/Entrevoisins/app/src/main/res/values/strings.xml b/Android/Entrevoisins/app/src/main/res/values/strings.xml index c153138..07b5598 100644 --- a/Android/Entrevoisins/app/src/main/res/values/strings.xml +++ b/Android/Entrevoisins/app/src/main/res/values/strings.xml @@ -3,4 +3,13 @@ My neighbours Favorites New neighbour + NeighbourDetailActivity + + First Fragment + Second Fragment + Next + Previous + + Hello first fragment + Hello second fragment. Arg: %1$s diff --git a/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java b/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java index ebc1d06..ac15d77 100644 --- a/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java +++ b/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java @@ -3,6 +3,7 @@ import com.openclassrooms.entrevoisins.di.DI; import com.openclassrooms.entrevoisins.model.Neighbour; + import org.hamcrest.collection.IsIterableContainingInAnyOrder; import org.junit.Before; import org.junit.Test; diff --git a/Android/Entrevoisins/build.gradle b/Android/Entrevoisins/build.gradle index e11a5b3..0998836 100644 --- a/Android/Entrevoisins/build.gradle +++ b/Android/Entrevoisins/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.2' + classpath 'com.android.tools.build:gradle:4.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/Android/Entrevoisins/gradle/wrapper/gradle-wrapper.properties b/Android/Entrevoisins/gradle/wrapper/gradle-wrapper.properties index e8ccc44..868959e 100644 --- a/Android/Entrevoisins/gradle/wrapper/gradle-wrapper.properties +++ b/Android/Entrevoisins/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip From ba2b12ea4ed5ececa08f32e7aea6a757f29d754d Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Thu, 2 Feb 2023 14:42:23 +0100 Subject: [PATCH 2/9] =?UTF-8?q?Cre=C3=A9ation=20du=20clickListner=20sur=20?= =?UTF-8?q?les=20=C3=A9l=C3=A9ment=20de=20la=20Neighbour=20list,=20pour=20?= =?UTF-8?q?emmener=20sur=20l'=C3=A9crant=20Neighbour=20details=20avec=20le?= =?UTF-8?q?s=20bonnes=20information,=20en=20passent=20une=20r=C3=A9f=C3=A9?= =?UTF-8?q?rence=20a=20un=20objet=20de=20type=20Neighbour.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/AndroidManifest.xml | 2 +- .../entrevoisins/model/Neighbour.java | 3 +- .../service/DummyNeighbourGenerator.java | 2 +- .../MyNeighbourRecyclerViewAdapter.java | 16 +++++++ .../NeighbourDetailActivity.java | 43 ++++++++++++++++++- .../res/layout/activity_neighbour_detail.xml | 29 ++++++------- .../main/res/layout/fragment_neighbour.xml | 1 + 7 files changed, 76 insertions(+), 20 deletions(-) diff --git a/Android/Entrevoisins/app/src/main/AndroidManifest.xml b/Android/Entrevoisins/app/src/main/AndroidManifest.xml index affa06c..4b8a940 100644 --- a/Android/Entrevoisins/app/src/main/AndroidManifest.xml +++ b/Android/Entrevoisins/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme" > + android:layout_marginBottom="8dp" + android:text="Caroline" + android:textColor="@color/colorHeadingDetail" + android:textSize="28sp" /> + + - + + android:layout_marginBottom="8dp" + android:text="A propos de moi" + android:textColor="@color/colorHeadingDetail" + android:textSize="28sp" /> From 8d45359f1bf5509ef6f5b8fbd229518e5c5e8f1c Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Mon, 6 Feb 2023 17:10:29 +0100 Subject: [PATCH 3/9] Neighbour extends parcelable a la place de serializable Tablayout change de tab en remplacent la list utiliser dans le recyclerViewAdapter --- .../entrevoisins/model/Neighbour.java | 55 ++++++++++++++++++- .../neighbour_list/ListNeighbourActivity.java | 26 ++++++++- .../ListNeighbourPagerAdapter.java | 12 ++-- .../MyNeighbourRecyclerViewAdapter.java | 13 ++++- .../NeighbourDetailActivity.java | 2 +- .../ui/neighbour_list/NeighbourFragment.java | 15 ++++- .../res/drawable/baseline_language_24.xml | 2 +- .../res/drawable/baseline_location_on_24.xml | 2 +- .../main/res/drawable/baseline_phone_24.xml | 2 +- 9 files changed, 113 insertions(+), 16 deletions(-) diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java index 6e52980..27a254b 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java @@ -1,13 +1,15 @@ package com.openclassrooms.entrevoisins.model; +import android.os.Parcel; +import android.os.Parcelable; + import java.io.Serializable; import java.util.Objects; /** * Model object representing a Neighbour */ -public class Neighbour implements Serializable { - +public class Neighbour implements Parcelable { /** Identifier */ private long id; @@ -26,6 +28,10 @@ public class Neighbour implements Serializable { /** About me */ private String aboutMe; + private boolean isFavorite; + + + /** * Constructor * @param id @@ -42,6 +48,28 @@ public Neighbour(long id, String name, String avatarUrl, String address, this.aboutMe = aboutMe; } + protected Neighbour(Parcel in) { + id = in.readLong(); + name = in.readString(); + avatarUrl = in.readString(); + address = in.readString(); + phoneNumber = in.readString(); + aboutMe = in.readString(); + isFavorite = in.readByte() != 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public Neighbour createFromParcel(Parcel in) { + return new Neighbour(in); + } + + @Override + public Neighbour[] newArray(int size) { + return new Neighbour[size]; + } + }; + public long getId() { return id; } @@ -89,6 +117,13 @@ public String getAboutMe() { public void setAboutMe(String aboutMe) { this.aboutMe = aboutMe; } + public boolean getIsFavorite() { + return isFavorite; + } + + public void setIsFavorite(boolean favorite) { + isFavorite = favorite; + } @Override public boolean equals(Object o) { @@ -102,4 +137,20 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(id); } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int i) { + parcel.writeLong(id); + parcel.writeString(name); + parcel.writeString(avatarUrl); + parcel.writeString(address); + parcel.writeString(phoneNumber); + parcel.writeString(aboutMe); + parcel.writeByte((byte) (isFavorite ? 1 : 0)); + } } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java index 1503f7f..e92ba1e 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java @@ -8,6 +8,9 @@ import android.widget.Button; import com.openclassrooms.entrevoisins.R; +import com.openclassrooms.entrevoisins.model.Neighbour; + +import java.io.Console; import butterknife.BindView; import butterknife.ButterKnife; @@ -32,10 +35,29 @@ protected void onCreate(Bundle savedInstanceState) { ButterKnife.bind(this); setSupportActionBar(mToolbar); - mPagerAdapter = new ListNeighbourPagerAdapter(getSupportFragmentManager()); + + mPagerAdapter = new ListNeighbourPagerAdapter(this, getSupportFragmentManager()); mViewPager.setAdapter(mPagerAdapter); mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout)); - mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); + mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager){//checks what tab you are on + @Override + public void onTabSelected(TabLayout.Tab tab) { + if(tab.getPosition() == 0) { + System.out.println("tabselected: " + tab.getPosition()); + } + else{ + System.out.println("tabselected: " + tab.getPosition()); + //mViewPager.setAdapter(mPagerAdapter); + } + mViewPager.setCurrentItem(tab.getPosition()); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) {} + + @Override + public void onTabReselected(TabLayout.Tab tab) {} + }); } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java index 8eb6cb7..8aa118f 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java @@ -1,14 +1,16 @@ package com.openclassrooms.entrevoisins.ui.neighbour_list; +import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; public class ListNeighbourPagerAdapter extends FragmentPagerAdapter { - - public ListNeighbourPagerAdapter(FragmentManager fm) { + private Context myContext; + public ListNeighbourPagerAdapter(Context context, FragmentManager fm) { super(fm); + myContext = context; } /** @@ -18,15 +20,17 @@ public ListNeighbourPagerAdapter(FragmentManager fm) { */ @Override public Fragment getItem(int position) { - return NeighbourFragment.newInstance(); + System.out.println("fragement Position: " + position); + return NeighbourFragment.newInstance(position); } + /** * get the number of pages * @return */ @Override public int getCount() { - return 1; + return 2; } } \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java index db92c92..daf0a56 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java @@ -21,6 +21,7 @@ import org.greenrobot.eventbus.EventBus; +import java.util.ArrayList; import java.util.List; import butterknife.BindView; @@ -30,8 +31,16 @@ public class MyNeighbourRecyclerViewAdapter extends RecyclerView.Adapter mNeighbours; - public MyNeighbourRecyclerViewAdapter(List items) { - mNeighbours = items; + public MyNeighbourRecyclerViewAdapter(List items, boolean isFavorite) { + if(isFavorite) { + mNeighbours = new ArrayList<>(); + for(Neighbour item: items){ + if(item.getIsFavorite()) mNeighbours.add(item); + } + } + else { + mNeighbours = items; + } } @Override diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java index 6c70f14..65f4308 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java @@ -36,7 +36,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_neighbour_detail); ButterKnife.bind(this); - mNeighbour = (Neighbour) getIntent().getSerializableExtra("Neighbour"); + mNeighbour = (Neighbour) getIntent().getParcelableExtra("Neighbour"); mAvatarLableName.setText(mNeighbour.getName()); mInfoName.setText(mNeighbour.getName()); mInfoAddress.setText(mNeighbour.getAddress()); diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java index afd3300..158d8b5 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java @@ -19,6 +19,7 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; +import java.util.ArrayList; import java.util.List; @@ -26,15 +27,18 @@ public class NeighbourFragment extends Fragment { private NeighbourApiService mApiService; private List mNeighbours; + private List mFavoriteNeighbours; private RecyclerView mRecyclerView; + private int choice; /** * Create and return a new instance * @return @{@link NeighbourFragment} */ - public static NeighbourFragment newInstance() { + public static NeighbourFragment newInstance(int pos) { NeighbourFragment fragment = new NeighbourFragment(); + fragment.choice=pos; return fragment; } @@ -60,24 +64,31 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, */ private void initList() { mNeighbours = mApiService.getNeighbours(); - mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mNeighbours)); + //mFavoriteNeighbours = new ArrayList<>(); + + mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mNeighbours, choice !=0)); + /*if(choice == 0) mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mNeighbours)); + else mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mFavoriteNeighbours));*/ } @Override public void onResume() { super.onResume(); + System.out.println("resume fragrement"); initList(); } @Override public void onStart() { super.onStart(); + System.out.println("start fragrement"); EventBus.getDefault().register(this); } @Override public void onStop() { super.onStop(); + System.out.println("stop fragrement"); EventBus.getDefault().unregister(this); } diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml index 3e0737c..c0ef7e4 100644 --- a/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_language_24.xml @@ -1,4 +1,4 @@ - diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml index b1be4f3..4bb0846 100644 --- a/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_location_on_24.xml @@ -1,4 +1,4 @@ - diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml index d9722ea..689637d 100644 --- a/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_phone_24.xml @@ -1,4 +1,4 @@ - From 32267dd69f0f7aa380bd5ebc75f2b9947affce61 Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Thu, 9 Feb 2023 14:35:54 +0100 Subject: [PATCH 4/9] =?UTF-8?q?Neighbour=20n'extends=20plu=20parcelable=20?= =?UTF-8?q?car=20maintenant=20je=20passe=20l'ID=20et=20je=20r=C3=A9cup?= =?UTF-8?q?=C3=A8re=20l'objet=20avec=20l'api=20et=20l'ID=20La=20liste=20de?= =?UTF-8?q?=20favorit=20marche=20le=20bouton=20favorit=20change=20de=20cou?= =?UTF-8?q?leur=20d=C3=A9pendent=20du=20statut=20de=20favorit=20du=20voisi?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/src/main/AndroidManifest.xml | 1 + .../entrevoisins/model/Neighbour.java | 14 +++---- .../service/DummyNeighbourApiService.java | 7 ++++ .../service/NeighbourApiService.java | 1 + .../MyNeighbourRecyclerViewAdapter.java | 3 +- .../NeighbourDetailActivity.java | 42 ++++++++++++++++++- .../service/NeighbourServiceTest.java | 8 ++++ 7 files changed, 66 insertions(+), 10 deletions(-) diff --git a/Android/Entrevoisins/app/src/main/AndroidManifest.xml b/Android/Entrevoisins/app/src/main/AndroidManifest.xml index 4b8a940..1881e6f 100644 --- a/Android/Entrevoisins/app/src/main/AndroidManifest.xml +++ b/Android/Entrevoisins/app/src/main/AndroidManifest.xml @@ -14,6 +14,7 @@ android:theme="@style/AppTheme" > CREATOR = new Creator() { + /*public static final Creator CREATOR = new Creator() { @Override public Neighbour createFromParcel(Parcel in) { return new Neighbour(in); @@ -68,7 +68,7 @@ public Neighbour createFromParcel(Parcel in) { public Neighbour[] newArray(int size) { return new Neighbour[size]; } - }; + };*/ public long getId() { return id; @@ -125,7 +125,7 @@ public void setIsFavorite(boolean favorite) { isFavorite = favorite; } - @Override + /*@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; @@ -152,5 +152,5 @@ public void writeToParcel(Parcel parcel, int i) { parcel.writeString(phoneNumber); parcel.writeString(aboutMe); parcel.writeByte((byte) (isFavorite ? 1 : 0)); - } + }*/ } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java index 5c487af..82321ba 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java @@ -36,4 +36,11 @@ public void deleteNeighbour(Neighbour neighbour) { public void createNeighbour(Neighbour neighbour) { neighbours.add(neighbour); } + + @Override + public void changeFavoriteStatus(Neighbour neighbour) { + neighbour.setIsFavorite(!neighbour.getIsFavorite()); + } + + } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java index 20fa34c..8f880c1 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java @@ -27,4 +27,5 @@ public interface NeighbourApiService { * @param neighbour */ void createNeighbour(Neighbour neighbour); + void changeFavoriteStatus(Neighbour neighbour); } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java index daf0a56..d0d5b74 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java @@ -68,9 +68,8 @@ public void onClick(View v) { holder.mConstraintLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - System.out.println("You have clicked on " + neighbour.getName() ); Intent intent = new Intent(v.getContext(), NeighbourDetailActivity.class); - intent.putExtra("Neighbour", neighbour); + intent.putExtra("Neighbour", neighbour.getId()); v.getContext().startActivity(intent); } }); diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java index 65f4308..6cab60f 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java @@ -1,8 +1,13 @@ package com.openclassrooms.entrevoisins.ui.neighbour_list; +import android.content.res.ColorStateList; +import android.graphics.Color; +import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.view.View; +import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -10,10 +15,15 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.openclassrooms.entrevoisins.R; +import com.openclassrooms.entrevoisins.di.DI; import com.openclassrooms.entrevoisins.model.Neighbour; +import com.openclassrooms.entrevoisins.service.NeighbourApiService; + +import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.OnClick; public class NeighbourDetailActivity extends AppCompatActivity { private Neighbour mNeighbour; @@ -31,12 +41,25 @@ public class NeighbourDetailActivity extends AppCompatActivity { TextView mInfoPhone; @BindView(R.id.detail_info_text_aboutMe) TextView mInfoAboutMe; + /*@BindView(R.id.detail_button_favorite) + Button mInfoFavorite;*/ + private NeighbourApiService mApiService; + private List mNeighbours; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_neighbour_detail); ButterKnife.bind(this); - mNeighbour = (Neighbour) getIntent().getParcelableExtra("Neighbour"); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + mApiService = DI.getNeighbourApiService(); + mNeighbours = mApiService.getNeighbours(); + long neighbourID = getIntent().getLongExtra("Neighbour",0); + for (Neighbour n : mNeighbours) {//Loops to retrieve the correct Neighbour by ID + if (n.getId()==neighbourID) { + mNeighbour = n; + } + } + checkFavoriteStatus(); mAvatarLableName.setText(mNeighbour.getName()); mInfoName.setText(mNeighbour.getName()); mInfoAddress.setText(mNeighbour.getAddress()); @@ -53,4 +76,21 @@ protected void onCreate(Bundle savedInstanceState) { } + @OnClick(R.id.detail_button_favorite) + void addFavorite() { + mApiService.changeFavoriteStatus(mNeighbour); + //mNeighbour.setIsFavorite(!mNeighbour.getIsFavorite()); + checkFavoriteStatus(); + + } + void checkFavoriteStatus(){ + FloatingActionButton fab = findViewById(R.id.detail_button_favorite); + if(mNeighbour.getIsFavorite()){ + fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#FF80AB"))); + } + else{ + fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#FAFAFA"))); + } + } + } \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java b/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java index ac15d77..ab363b2 100644 --- a/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java +++ b/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java @@ -14,6 +14,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; /** * Unit test on Neighbour service @@ -41,4 +42,11 @@ public void deleteNeighbourWithSuccess() { service.deleteNeighbour(neighbourToDelete); assertFalse(service.getNeighbours().contains(neighbourToDelete)); } + @Test + public void makeNeighbourFavoriteWithSuccess(){ + Neighbour neighbourToFavorite = service.getNeighbours().get(0); + neighbourToFavorite.setIsFavorite(false); + service.changeFavoriteStatus(neighbourToFavorite); + assertTrue(neighbourToFavorite.getIsFavorite()); + } } From f0f466139fe2a7da88ce7a9b2409eb7fdea155d7 Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Fri, 10 Feb 2023 14:14:26 +0100 Subject: [PATCH 5/9] =?UTF-8?q?creation=20des=20testes=20instrumentalis?= =?UTF-8?q?=C3=A9=20pour=20la=20page=20detail=20et=20la=20liste=20de=20fav?= =?UTF-8?q?ori?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../androidTestResultsUserPreferences.xml | 78 +++++++++++++++++++ .../neighbour_list/NeighboursListTest.java | 58 ++++++++++++-- .../MyNeighbourRecyclerViewAdapter.java | 7 +- 3 files changed, 133 insertions(+), 10 deletions(-) diff --git a/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml b/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml index cbd79b0..f38484e 100644 --- a/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml +++ b/Android/Entrevoisins/.idea/androidTestResultsUserPreferences.xml @@ -3,6 +3,32 @@ diff --git a/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java b/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java index 84e2df8..59a833e 100644 --- a/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java +++ b/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java @@ -7,6 +7,9 @@ import android.support.test.runner.AndroidJUnit4; import com.openclassrooms.entrevoisins.R; +import com.openclassrooms.entrevoisins.di.DI; +import com.openclassrooms.entrevoisins.model.Neighbour; +import com.openclassrooms.entrevoisins.service.NeighbourApiService; import com.openclassrooms.entrevoisins.ui.neighbour_list.ListNeighbourActivity; import com.openclassrooms.entrevoisins.utils.DeleteViewAction; @@ -15,13 +18,25 @@ import org.junit.Test; import org.junit.runner.RunWith; +import static android.support.test.espresso.Espresso.onData; import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.action.ViewActions.swipeLeft; +import static android.support.test.espresso.action.ViewActions.swipeRight; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.assertThat; +import static android.support.test.espresso.matcher.ViewMatchers.hasChildCount; import static android.support.test.espresso.matcher.ViewMatchers.hasMinimumChildCount; +import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; +import static android.support.test.espresso.matcher.ViewMatchers.withId; +import static android.support.test.espresso.matcher.ViewMatchers.withText; import static com.openclassrooms.entrevoisins.utils.RecyclerViewItemCountAssertion.withItemCount; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.anything; import static org.hamcrest.core.IsNull.notNullValue; +import java.util.List; /** @@ -34,6 +49,8 @@ public class NeighboursListTest { private static int ITEMS_COUNT = 12; private ListNeighbourActivity mActivity; + private NeighbourApiService mApiService; + private List mNeighbours; @Rule public ActivityTestRule mActivityRule = @@ -43,6 +60,8 @@ public class NeighboursListTest { public void setUp() { mActivity = mActivityRule.getActivity(); assertThat(mActivity, notNullValue()); + mApiService = DI.getNeighbourApiService(); + mNeighbours = mApiService.getNeighbours(); } /** @@ -51,8 +70,7 @@ public void setUp() { @Test public void myNeighboursList_shouldNotBeEmpty() { // First scroll to the position that needs to be matched and click on it. - onView(ViewMatchers.withId(R.id.list_neighbours)) - .check(matches(hasMinimumChildCount(1))); + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(matches(hasMinimumChildCount(1))); } /** @@ -61,11 +79,41 @@ public void myNeighboursList_shouldNotBeEmpty() { @Test public void myNeighboursList_deleteAction_shouldRemoveItem() { // Given : We remove the element at position 2 - onView(ViewMatchers.withId(R.id.list_neighbours)).check(withItemCount(ITEMS_COUNT)); + //onView(withId(R.id.list_neighbours)) + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(withItemCount(ITEMS_COUNT)); // When perform a click on a delete icon - onView(ViewMatchers.withId(R.id.list_neighbours)) + onView(allOf(withId(R.id.list_neighbours), isDisplayed())) .perform(RecyclerViewActions.actionOnItemAtPosition(1, new DeleteViewAction())); // Then : the number of element is 11 - onView(ViewMatchers.withId(R.id.list_neighbours)).check(withItemCount(ITEMS_COUNT-1)); + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(withItemCount(ITEMS_COUNT-1)); + } + @Test + public void neighbourIsClicked_shouldOpenDetailPage_withCorrectInfo() { + //launches second page + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); + Neighbour neighbour = mNeighbours.get(0); + onView(withId(R.id.constraintLayout_UserInfo)).check(matches(isDisplayed())); + + onView(withId(R.id.detail_avatar_lable_name)).check(matches(withText(neighbour.getName()))); + onView(withId(R.id.detail_info_text_name)).check(matches(withText(neighbour.getName()))); + } + @Test + public void testFavoriteList_OnlyDisplaysFavoriteNeighbours() throws InterruptedException { + //checks that the favorite list is empty at first + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(swipeLeft()); + Thread.sleep(500); + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(withItemCount(0)); + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(swipeRight()); + Thread.sleep(500); + //adds a favorite neighbour + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); + Neighbour neighbour = mNeighbours.get(0); + onView(withId(R.id.detail_button_favorite)).perform(click()); + onView(withContentDescription(R.string.abc_action_bar_up_description)).perform(click());//go back home page + //Checks the the favorite list has one member + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(swipeLeft()); + Thread.sleep(500); + onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(withItemCount(1)); + onView(allOf(withText(neighbour.getName()),isDisplayed())).check(matches(isDisplayed())); } } \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java index d0d5b74..0ea08d2 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java @@ -1,10 +1,7 @@ package com.openclassrooms.entrevoisins.ui.neighbour_list; -import static android.support.v4.content.ContextCompat.startActivity; - import android.content.Intent; import android.support.constraint.ConstraintLayout; -import android.support.v4.app.ActivityCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -65,7 +62,7 @@ public void onClick(View v) { EventBus.getDefault().post(new DeleteNeighbourEvent(neighbour)); } }); - holder.mConstraintLayout.setOnClickListener(new View.OnClickListener() { + holder.cl_neighbour.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(v.getContext(), NeighbourDetailActivity.class); @@ -88,7 +85,7 @@ public class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.item_list_delete_button) public ImageButton mDeleteButton; @BindView(R.id.cl_neighbour) - public ConstraintLayout mConstraintLayout; + public ConstraintLayout cl_neighbour; public ViewHolder(View view) { super(view); From 65d77f229cb582fcc98bdad596313b720b2cd5f5 Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Mon, 13 Feb 2023 12:14:02 +0100 Subject: [PATCH 6/9] Neighbour est redevenu une implementation de Parcelable Changement de la fonction changeFavoriteStatus dans DummyNeighbourApiService pour trouver le neighbour par ID nettoyage du code et rajout de commentaires --- .../neighbour_list/NeighboursListTest.java | 4 +-- .../entrevoisins/model/Neighbour.java | 25 ++++--------- .../service/DummyNeighbourApiService.java | 6 +++- .../neighbour_list/ListNeighbourActivity.java | 20 +---------- .../MyNeighbourRecyclerViewAdapter.java | 2 +- .../NeighbourDetailActivity.java | 35 +++++-------------- .../ui/neighbour_list/NeighbourFragment.java | 6 ---- .../drawable/ic_star_border_yellow_24dp.xml | 5 +++ 8 files changed, 28 insertions(+), 75 deletions(-) create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/ic_star_border_yellow_24dp.xml diff --git a/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java b/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java index 59a833e..7465f7c 100644 --- a/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java +++ b/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java @@ -105,12 +105,12 @@ public void testFavoriteList_OnlyDisplaysFavoriteNeighbours() throws Interrupted onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(withItemCount(0)); onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(swipeRight()); Thread.sleep(500); - //adds a favorite neighbour + //adds a favorite neighbour by clicking on the fab button onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); Neighbour neighbour = mNeighbours.get(0); onView(withId(R.id.detail_button_favorite)).perform(click()); onView(withContentDescription(R.string.abc_action_bar_up_description)).perform(click());//go back home page - //Checks the the favorite list has one member + //Checks the the favorite list has one member and that it is the correct neighbour onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(swipeLeft()); Thread.sleep(500); onView(allOf(withId(R.id.list_neighbours), isDisplayed())).check(withItemCount(1)); diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java index 35d9ecc..b3b3cc3 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java @@ -9,7 +9,7 @@ /** * Model object representing a Neighbour */ -public class Neighbour{ +public class Neighbour implements Parcelable{ /** Identifier */ private long id; @@ -48,7 +48,7 @@ public Neighbour(long id, String name, String avatarUrl, String address, this.aboutMe = aboutMe; } - /*protected Neighbour(Parcel in) { + protected Neighbour(Parcel in) { id = in.readLong(); name = in.readString(); avatarUrl = in.readString(); @@ -56,9 +56,9 @@ public Neighbour(long id, String name, String avatarUrl, String address, phoneNumber = in.readString(); aboutMe = in.readString(); isFavorite = in.readByte() != 0; - }*/ + } - /*public static final Creator CREATOR = new Creator() { + public static final Creator CREATOR = new Creator() { @Override public Neighbour createFromParcel(Parcel in) { return new Neighbour(in); @@ -68,7 +68,7 @@ public Neighbour createFromParcel(Parcel in) { public Neighbour[] newArray(int size) { return new Neighbour[size]; } - };*/ + }; public long getId() { return id; @@ -125,19 +125,6 @@ public void setIsFavorite(boolean favorite) { isFavorite = favorite; } - /*@Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Neighbour neighbour = (Neighbour) o; - return Objects.equals(id, neighbour.id); - } - - @Override - public int hashCode() { - return Objects.hash(id); - } - @Override public int describeContents() { return 0; @@ -152,5 +139,5 @@ public void writeToParcel(Parcel parcel, int i) { parcel.writeString(phoneNumber); parcel.writeString(aboutMe); parcel.writeByte((byte) (isFavorite ? 1 : 0)); - }*/ + } } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java index 82321ba..8c31a37 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java @@ -39,7 +39,11 @@ public void createNeighbour(Neighbour neighbour) { @Override public void changeFavoriteStatus(Neighbour neighbour) { - neighbour.setIsFavorite(!neighbour.getIsFavorite()); + for (Neighbour n : neighbours) {//Loops to retrieve the correct Neighbour by ID + if (n.getId()==neighbour.getId()) { + n.setIsFavorite(neighbour.getIsFavorite()); + } + } } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java index e92ba1e..bb80605 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourActivity.java @@ -39,25 +39,7 @@ protected void onCreate(Bundle savedInstanceState) { mPagerAdapter = new ListNeighbourPagerAdapter(this, getSupportFragmentManager()); mViewPager.setAdapter(mPagerAdapter); mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout)); - mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager){//checks what tab you are on - @Override - public void onTabSelected(TabLayout.Tab tab) { - if(tab.getPosition() == 0) { - System.out.println("tabselected: " + tab.getPosition()); - } - else{ - System.out.println("tabselected: " + tab.getPosition()); - //mViewPager.setAdapter(mPagerAdapter); - } - mViewPager.setCurrentItem(tab.getPosition()); - } - - @Override - public void onTabUnselected(TabLayout.Tab tab) {} - - @Override - public void onTabReselected(TabLayout.Tab tab) {} - }); + mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java index 0ea08d2..286f517 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java @@ -66,7 +66,7 @@ public void onClick(View v) { @Override public void onClick(View v) { Intent intent = new Intent(v.getContext(), NeighbourDetailActivity.class); - intent.putExtra("Neighbour", neighbour.getId()); + intent.putExtra("Neighbour", neighbour); v.getContext().startActivity(intent); } }); diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java index 6cab60f..a368548 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java @@ -3,24 +3,17 @@ import android.content.res.ColorStateList; import android.graphics.Color; import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.TabLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.view.View; -import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; import com.openclassrooms.entrevoisins.R; import com.openclassrooms.entrevoisins.di.DI; import com.openclassrooms.entrevoisins.model.Neighbour; import com.openclassrooms.entrevoisins.service.NeighbourApiService; -import java.util.List; - import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -41,10 +34,7 @@ public class NeighbourDetailActivity extends AppCompatActivity { TextView mInfoPhone; @BindView(R.id.detail_info_text_aboutMe) TextView mInfoAboutMe; - /*@BindView(R.id.detail_button_favorite) - Button mInfoFavorite;*/ private NeighbourApiService mApiService; - private List mNeighbours; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -52,13 +42,9 @@ protected void onCreate(Bundle savedInstanceState) { ButterKnife.bind(this); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mApiService = DI.getNeighbourApiService(); - mNeighbours = mApiService.getNeighbours(); - long neighbourID = getIntent().getLongExtra("Neighbour",0); - for (Neighbour n : mNeighbours) {//Loops to retrieve the correct Neighbour by ID - if (n.getId()==neighbourID) { - mNeighbour = n; - } - } + + mNeighbour = getIntent().getParcelableExtra("Neighbour"); + checkFavoriteStatus(); mAvatarLableName.setText(mNeighbour.getName()); mInfoName.setText(mNeighbour.getName()); @@ -70,26 +56,21 @@ protected void onCreate(Bundle savedInstanceState) { .load(mNeighbour.getAvatarUrl()) // image url .centerCrop() .into(mAvatar); - - - //Toast.makeText(this,"Your are looking at "+mNeighbour.getName(), Toast.LENGTH_SHORT).show(); - - } @OnClick(R.id.detail_button_favorite) - void addFavorite() { + void changeFavorite() {//inverts the boolean favorite attribute of current neighbour + mNeighbour.setIsFavorite(!mNeighbour.getIsFavorite()); mApiService.changeFavoriteStatus(mNeighbour); - //mNeighbour.setIsFavorite(!mNeighbour.getIsFavorite()); checkFavoriteStatus(); } - void checkFavoriteStatus(){ + void checkFavoriteStatus(){//used to update the favorite button image from empty star to filled star FloatingActionButton fab = findViewById(R.id.detail_button_favorite); if(mNeighbour.getIsFavorite()){ - fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#FF80AB"))); + fab.setImageResource(R.drawable.ic_star_yellow_24dp); } else{ - fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#FAFAFA"))); + fab.setImageResource(R.drawable.ic_star_border_yellow_24dp); } } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java index 158d8b5..e9c84aa 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourFragment.java @@ -64,31 +64,25 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, */ private void initList() { mNeighbours = mApiService.getNeighbours(); - //mFavoriteNeighbours = new ArrayList<>(); mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mNeighbours, choice !=0)); - /*if(choice == 0) mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mNeighbours)); - else mRecyclerView.setAdapter(new MyNeighbourRecyclerViewAdapter(mFavoriteNeighbours));*/ } @Override public void onResume() { super.onResume(); - System.out.println("resume fragrement"); initList(); } @Override public void onStart() { super.onStart(); - System.out.println("start fragrement"); EventBus.getDefault().register(this); } @Override public void onStop() { super.onStop(); - System.out.println("stop fragrement"); EventBus.getDefault().unregister(this); } diff --git a/Android/Entrevoisins/app/src/main/res/drawable/ic_star_border_yellow_24dp.xml b/Android/Entrevoisins/app/src/main/res/drawable/ic_star_border_yellow_24dp.xml new file mode 100644 index 0000000..bf69de5 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/ic_star_border_yellow_24dp.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file From 110549717016736d984389b035a7a12f442ecf93 Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Mon, 20 Feb 2023 10:49:56 +0100 Subject: [PATCH 7/9] =?UTF-8?q?n=C3=A9ttoyage=20du=20code=20et=20rajout=20?= =?UTF-8?q?de=20commentaires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Android/Entrevoisins/README.md | 38 ++++++++++++++++++- .../neighbour_list/NeighboursListTest.java | 5 +-- .../entrevoisins/model/Neighbour.java | 1 + .../service/DummyNeighbourApiService.java | 2 - .../service/NeighbourApiService.java | 4 ++ .../ListNeighbourPagerAdapter.java | 1 - .../MyNeighbourRecyclerViewAdapter.java | 6 +-- .../NeighbourDetailActivity.java | 16 +++++--- .../res/drawable/baseline_arrow_back_24.xml | 5 +++ .../res/layout/activity_neighbour_detail.xml | 33 ++++++++++++---- .../service/NeighbourServiceTest.java | 11 +++++- 11 files changed, 95 insertions(+), 27 deletions(-) create mode 100644 Android/Entrevoisins/app/src/main/res/drawable/baseline_arrow_back_24.xml diff --git a/Android/Entrevoisins/README.md b/Android/Entrevoisins/README.md index d12fb0c..547a9df 100644 --- a/Android/Entrevoisins/README.md +++ b/Android/Entrevoisins/README.md @@ -1,3 +1,37 @@ -# OpenClassrooms +# Entrevoisin -Ce dépôt contient une mini-application pour le P3 du parcours **Grande École du Numérique**. \ No newline at end of file +## Description +Ce dépôt contient une mini-application pour le P3 du parcours “Développement d’application Android” d’Openclassrooms. + +Cette application consiste à: +*Afficher une liste de voisins. +*Faire une création de nouveau voisin +*Supprimer un voisin choisi +*Afficher les détails d’un voisin sélection +*Mettre un voisin en favori +*Afficher la liste de voisins favoris +## Prérequis +* Installation de [Android Studio](https://developer.android.com/studio?gclid=CjwKCAiAlp2fBhBPEiwA2Q10DylEC18SIGfmsSq9IHXwIvfDtvdeyjUUL9axVlY7wGES4gyH5kgjdxoCqlsQAvD_BwE&gclsrc=aw.ds) +* Installation du [Java sdk](https://www.oracle.com/fr/java/technologies/downloads/) +* Installation de [Git](https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git) +* Télécharger les fichiers du projet Entre Voisin ou faire un [clone](https://docs.github.com/fr/repositories/creating-and-managing-repositories/cloning-a-repository) sur votre ordinateur +## Comment exécuter et compiler +* Ouvrir les fichiers avec android studio +* Synchroniser le build.gradle + * minSdkVersion 21 + * targetSdkVersion 28 + * dépendances + * [glide](https://github.com/bumptech/glide) + * [butterknife](https://jakewharton.github.io/butterknife/) + * [eventbus](https://greenrobot.org/eventbus/) + * [espresso](https://developer.android.com/training/testing/espresso) +* Sélectionner le device pour l'émulateur +* Sélectionner “app” dans la configuration +* appuyer sur le bouton Run + + +![Image](/images/ExecuterCompiler.JPG) + +## Crédits +Ce code est basé sur le code créé par Deyine d’Openclassrooms. +Voici le lien [Github](https://github.com/Deyine/OpenClassrooms/tree/master/Android/Entrevoisins) diff --git a/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java b/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java index 7465f7c..12ea60f 100644 --- a/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java +++ b/Android/Entrevoisins/app/src/androidTest/java/com/openclassrooms/entrevoisins/neighbour_list/NeighboursListTest.java @@ -2,7 +2,6 @@ package com.openclassrooms.entrevoisins.neighbour_list; import android.support.test.espresso.contrib.RecyclerViewActions; -import android.support.test.espresso.matcher.ViewMatchers; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; @@ -18,14 +17,12 @@ import org.junit.Test; import org.junit.runner.RunWith; -import static android.support.test.espresso.Espresso.onData; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.swipeLeft; import static android.support.test.espresso.action.ViewActions.swipeRight; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.assertThat; -import static android.support.test.espresso.matcher.ViewMatchers.hasChildCount; import static android.support.test.espresso.matcher.ViewMatchers.hasMinimumChildCount; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; @@ -109,7 +106,7 @@ public void testFavoriteList_OnlyDisplaysFavoriteNeighbours() throws Interrupted onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); Neighbour neighbour = mNeighbours.get(0); onView(withId(R.id.detail_button_favorite)).perform(click()); - onView(withContentDescription(R.string.abc_action_bar_up_description)).perform(click());//go back home page + onView(withId(R.id.detail_back_arrow)).perform(click());//go back home page //Checks the the favorite list has one member and that it is the correct neighbour onView(allOf(withId(R.id.list_neighbours), isDisplayed())).perform(swipeLeft()); Thread.sleep(500); diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java index b3b3cc3..ba12b0c 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/model/Neighbour.java @@ -46,6 +46,7 @@ public Neighbour(long id, String name, String avatarUrl, String address, this.address = address; this.phoneNumber = phoneNumber; this.aboutMe = aboutMe; + this.isFavorite = false; } protected Neighbour(Parcel in) { diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java index 8c31a37..6d95548 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/DummyNeighbourApiService.java @@ -45,6 +45,4 @@ public void changeFavoriteStatus(Neighbour neighbour) { } } } - - } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java index 8f880c1..6fafe2a 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/service/NeighbourApiService.java @@ -27,5 +27,9 @@ public interface NeighbourApiService { * @param neighbour */ void createNeighbour(Neighbour neighbour); + /** + * Changes the isFavorite sattus of a neighbour + * @param neighbour + */ void changeFavoriteStatus(Neighbour neighbour); } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java index 8aa118f..bbf6a0e 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/ListNeighbourPagerAdapter.java @@ -20,7 +20,6 @@ public ListNeighbourPagerAdapter(Context context, FragmentManager fm) { */ @Override public Fragment getItem(int position) { - System.out.println("fragement Position: " + position); return NeighbourFragment.newInstance(position); } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java index 286f517..ef36b18 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/MyNeighbourRecyclerViewAdapter.java @@ -30,13 +30,13 @@ public class MyNeighbourRecyclerViewAdapter extends RecyclerView.Adapter items, boolean isFavorite) { if(isFavorite) { - mNeighbours = new ArrayList<>(); + mNeighbours = new ArrayList<>(); //empty List for(Neighbour item: items){ - if(item.getIsFavorite()) mNeighbours.add(item); + if(item.getIsFavorite()) mNeighbours.add(item);//add favorite to List } } else { - mNeighbours = items; + mNeighbours = items;//all Neighbours } } diff --git a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java index a368548..899c452 100644 --- a/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java +++ b/Android/Entrevoisins/app/src/main/java/com/openclassrooms/entrevoisins/ui/neighbour_list/NeighbourDetailActivity.java @@ -1,7 +1,5 @@ package com.openclassrooms.entrevoisins.ui.neighbour_list; -import android.content.res.ColorStateList; -import android.graphics.Color; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; @@ -40,12 +38,12 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_neighbour_detail); ButterKnife.bind(this); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - mApiService = DI.getNeighbourApiService(); + getSupportActionBar().hide(); - mNeighbour = getIntent().getParcelableExtra("Neighbour"); + mApiService = DI.getNeighbourApiService(); - checkFavoriteStatus(); + mNeighbour = getIntent().getParcelableExtra("Neighbour");//retrieve Neighbour + //fill in neighbour detail mAvatarLableName.setText(mNeighbour.getName()); mInfoName.setText(mNeighbour.getName()); mInfoAddress.setText(mNeighbour.getAddress()); @@ -56,6 +54,8 @@ protected void onCreate(Bundle savedInstanceState) { .load(mNeighbour.getAvatarUrl()) // image url .centerCrop() .into(mAvatar); + + checkFavoriteStatus();//checks isFavorite status in order to select button image } @OnClick(R.id.detail_button_favorite) void changeFavorite() {//inverts the boolean favorite attribute of current neighbour @@ -73,5 +73,9 @@ void checkFavoriteStatus(){//used to update the favorite button image from empty fab.setImageResource(R.drawable.ic_star_border_yellow_24dp); } } + @OnClick(R.id.detail_back_arrow) + void backHome() { + finish(); + } } \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/drawable/baseline_arrow_back_24.xml b/Android/Entrevoisins/app/src/main/res/drawable/baseline_arrow_back_24.xml new file mode 100644 index 0000000..31e7df2 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/drawable/baseline_arrow_back_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml b/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml index 7b15eba..7a48cb3 100644 --- a/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml +++ b/Android/Entrevoisins/app/src/main/res/layout/activity_neighbour_detail.xml @@ -9,7 +9,7 @@ + + @@ -96,7 +113,7 @@ @@ -205,7 +222,7 @@ android:textSize="28sp" /> @@ -214,7 +231,7 @@ android:id="@+id/detail_info_text_aboutMe" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="16dp" + android:layout_margin="14dp" android:text="Bonjour !Je souhaiterais faire de la marche nordique. Pas initiée, je recherche une ou plusieurs personnes susceptibles de m'accompagner !J'aime les jeux de cartes tels la belote et le tarot.. " /> diff --git a/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java b/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java index ab363b2..4ffe675 100644 --- a/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java +++ b/Android/Entrevoisins/app/src/test/java/com/openclassrooms/entrevoisins/service/NeighbourServiceTest.java @@ -12,6 +12,7 @@ import java.util.List; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; @@ -43,9 +44,17 @@ public void deleteNeighbourWithSuccess() { assertFalse(service.getNeighbours().contains(neighbourToDelete)); } @Test + public void createNeighbourWithSuccess(){ + service.getNeighbours().clear(); + Neighbour neighbour = new Neighbour(1, "Emma", "https://i.pravatar.cc/150?u=a042581f4e29026706d", "Saint-Pierre-du-Mont ; 5km", + "+33 6 86 57 90 14", "Bonjour !Je souhaiterais faire de la marche nordique. Pas initiée, je recherche une ou plusieurs personnes susceptibles de m'accompagner !J'aime les jeux de cartes tels la belote et le tarot.."); + service.createNeighbour(neighbour); + assertEquals(1,service.getNeighbours().size()); + } + @Test public void makeNeighbourFavoriteWithSuccess(){ Neighbour neighbourToFavorite = service.getNeighbours().get(0); - neighbourToFavorite.setIsFavorite(false); + neighbourToFavorite.setIsFavorite(true); service.changeFavoriteStatus(neighbourToFavorite); assertTrue(neighbourToFavorite.getIsFavorite()); } From a0fd497409f40602cc71799ac3b30dd88a8b9162 Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Mon, 20 Feb 2023 10:53:44 +0100 Subject: [PATCH 8/9] rajout de l'image pour le README --- .../app/src/main/res/navigation/nav_graph.xml | 28 ++++++++++++++++++ .../app/src/main/res/values-land/dimens.xml | 3 ++ .../src/main/res/values-w1240dp/dimens.xml | 3 ++ .../app/src/main/res/values-w600dp/dimens.xml | 3 ++ .../Entrevoisins/images/ExecuterCompiler.JPG | Bin 0 -> 23121 bytes 5 files changed, 37 insertions(+) create mode 100644 Android/Entrevoisins/app/src/main/res/navigation/nav_graph.xml create mode 100644 Android/Entrevoisins/app/src/main/res/values-land/dimens.xml create mode 100644 Android/Entrevoisins/app/src/main/res/values-w1240dp/dimens.xml create mode 100644 Android/Entrevoisins/app/src/main/res/values-w600dp/dimens.xml create mode 100644 Android/Entrevoisins/images/ExecuterCompiler.JPG diff --git a/Android/Entrevoisins/app/src/main/res/navigation/nav_graph.xml b/Android/Entrevoisins/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 0000000..edd31b3 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/values-land/dimens.xml b/Android/Entrevoisins/app/src/main/res/values-land/dimens.xml new file mode 100644 index 0000000..10125a3 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/values-w1240dp/dimens.xml b/Android/Entrevoisins/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 0000000..ec434d3 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/Android/Entrevoisins/app/src/main/res/values-w600dp/dimens.xml b/Android/Entrevoisins/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 0000000..10125a3 --- /dev/null +++ b/Android/Entrevoisins/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/Android/Entrevoisins/images/ExecuterCompiler.JPG b/Android/Entrevoisins/images/ExecuterCompiler.JPG new file mode 100644 index 0000000000000000000000000000000000000000..d139bbb2d1bd632ff401ac8a0a6fc7c5cfa0e561 GIT binary patch literal 23121 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 literal 0 HcmV?d00001 From a7a2b850848962ec59b1d20858c00aabbe5cc1fa Mon Sep 17 00:00:00 2001 From: Fabien Duncan Date: Mon, 20 Feb 2023 10:56:52 +0100 Subject: [PATCH 9/9] =?UTF-8?q?r=C3=A9paration=20de=20l'image=20du=20READM?= =?UTF-8?q?E.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Android/Entrevoisins/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Android/Entrevoisins/README.md b/Android/Entrevoisins/README.md index 547a9df..e96c9b3 100644 --- a/Android/Entrevoisins/README.md +++ b/Android/Entrevoisins/README.md @@ -30,7 +30,7 @@ Cette application consiste à: * appuyer sur le bouton Run -![Image](/images/ExecuterCompiler.JPG) +![Image](images/ExecuterCompiler.JPG) ## Crédits Ce code est basé sur le code créé par Deyine d’Openclassrooms.