Add onActivityResult() to NearbyListFragment and pass controller

This commit is contained in:
misaochan 2018-02-07 20:10:40 +10:00 committed by maskara
parent 4f74aaed15
commit 863eee64dd
3 changed files with 32 additions and 7 deletions

View file

@ -9,21 +9,25 @@ import com.pedrogomez.renderers.RendererBuilder;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import fr.free.nrw.commons.contributions.ContributionController;
class NearbyAdapterFactory { class NearbyAdapterFactory {
private Fragment fragment; private Fragment fragment;
private ContributionController controller;
NearbyAdapterFactory(){ NearbyAdapterFactory(){
} }
NearbyAdapterFactory(Fragment fragment) { NearbyAdapterFactory(Fragment fragment, ContributionController controller) {
this.fragment = fragment; this.fragment = fragment;
this.controller = controller;
} }
public RVRendererAdapter<Place> create(List<Place> placeList) { public RVRendererAdapter<Place> create(List<Place> placeList) {
RendererBuilder<Place> builder = new RendererBuilder<Place>() RendererBuilder<Place> builder = new RendererBuilder<Place>()
.bind(Place.class, new PlaceRenderer(fragment)); .bind(Place.class, new PlaceRenderer(fragment, controller));
ListAdapteeCollection<Place> collection = new ListAdapteeCollection<>( ListAdapteeCollection<Place> collection = new ListAdapteeCollection<>(
placeList != null ? placeList : Collections.emptyList()); placeList != null ? placeList : Collections.emptyList());
return new RVRendererAdapter<>(builder, collection); return new RVRendererAdapter<>(builder, collection);

View file

@ -1,6 +1,7 @@
package fr.free.nrw.commons.nearby; package fr.free.nrw.commons.nearby;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
@ -20,10 +21,13 @@ import java.util.List;
import dagger.android.support.AndroidSupportInjection; import dagger.android.support.AndroidSupportInjection;
import dagger.android.support.DaggerFragment; import dagger.android.support.DaggerFragment;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.contributions.ContributionController;
import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LatLng;
import fr.free.nrw.commons.utils.UriDeserializer; import fr.free.nrw.commons.utils.UriDeserializer;
import timber.log.Timber; import timber.log.Timber;
import static android.app.Activity.RESULT_OK;
public class NearbyListFragment extends DaggerFragment { public class NearbyListFragment extends DaggerFragment {
private static final Type LIST_TYPE = new TypeToken<List<Place>>() { private static final Type LIST_TYPE = new TypeToken<List<Place>>() {
}.getType(); }.getType();
@ -35,6 +39,7 @@ public class NearbyListFragment extends DaggerFragment {
private NearbyAdapterFactory adapterFactory; private NearbyAdapterFactory adapterFactory;
private RecyclerView recyclerView; private RecyclerView recyclerView;
private ContributionController controller;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -56,7 +61,7 @@ public class NearbyListFragment extends DaggerFragment {
View view = inflater.inflate(R.layout.fragment_nearby, container, false); View view = inflater.inflate(R.layout.fragment_nearby, container, false);
recyclerView = view.findViewById(R.id.listView); recyclerView = view.findViewById(R.id.listView);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
adapterFactory = new NearbyAdapterFactory(this); adapterFactory = new NearbyAdapterFactory(this, controller);
return view; return view;
} }
@ -65,6 +70,7 @@ public class NearbyListFragment extends DaggerFragment {
// Check that this is the first time view is created, // Check that this is the first time view is created,
// to avoid double list when screen orientation changed // to avoid double list when screen orientation changed
List<Place> placeList = Collections.emptyList(); List<Place> placeList = Collections.emptyList();
controller = new ContributionController(this);
Bundle bundle = this.getArguments(); Bundle bundle = this.getArguments();
if (bundle != null) { if (bundle != null) {
@ -76,7 +82,21 @@ public class NearbyListFragment extends DaggerFragment {
placeList = NearbyController.loadAttractionsFromLocationToPlaces(curLatLng, placeList); placeList = NearbyController.loadAttractionsFromLocationToPlaces(curLatLng, placeList);
} }
recyclerView.setAdapter(adapterFactory.create(placeList)); recyclerView.setAdapter(adapterFactory.create(placeList));
} }
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Timber.d("OnActivityResult() parameters: Req code: %d Result code: %d Data: %s",
requestCode, resultCode, data);
controller.handleImagePicked(requestCode, data, true);
} else {
Timber.e("OnActivityResult() parameters: Req code: %d Result code: %d Data: %s",
requestCode, resultCode, data);
}
}
} }

View file

@ -68,8 +68,9 @@ public class PlaceRenderer extends Renderer<Place> {
openedItems = new ArrayList<>(); openedItems = new ArrayList<>();
} }
*/ */
public PlaceRenderer(Fragment fragment) { public PlaceRenderer(Fragment fragment, ContributionController controller) {
this.fragment = fragment; this.fragment = fragment;
this.controller = controller;
openedItems = new ArrayList<>(); openedItems = new ArrayList<>();
} }
@ -111,7 +112,7 @@ public class PlaceRenderer extends Renderer<Place> {
//TODO: Set onClickListeners for camera and gallery in list here //TODO: Set onClickListeners for camera and gallery in list here
cameraButton.setOnClickListener(view2 -> { cameraButton.setOnClickListener(view2 -> {
Timber.d("Camera button tapped. Image title: " + place.getName() + "Image desc: " + place.getLongDescription()); Timber.d("Camera button tapped. Image title: " + place.getName() + "Image desc: " + place.getLongDescription());
controller = new ContributionController(fragment); //controller = new ContributionController(fragment);
DirectUpload directUpload = new DirectUpload(fragment, controller); DirectUpload directUpload = new DirectUpload(fragment, controller);
storeSharedPrefs(); storeSharedPrefs();
directUpload.initiateCameraUpload(); directUpload.initiateCameraUpload();
@ -119,7 +120,7 @@ public class PlaceRenderer extends Renderer<Place> {
galleryButton.setOnClickListener(view3 -> { galleryButton.setOnClickListener(view3 -> {
Timber.d("Gallery button tapped. Image title: " + place.getName() + "Image desc: " + place.getLongDescription()); Timber.d("Gallery button tapped. Image title: " + place.getName() + "Image desc: " + place.getLongDescription());
controller = new ContributionController(fragment); //controller = new ContributionController(fragment);
DirectUpload directUpload = new DirectUpload(fragment, controller); DirectUpload directUpload = new DirectUpload(fragment, controller);
storeSharedPrefs(); storeSharedPrefs();
directUpload.initiateGalleryUpload(); directUpload.initiateGalleryUpload();