Skip to content

Resolves Reloading of image on moving to next question in peer review #2709

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Mar 23, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 34 additions & 29 deletions app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package fr.free.nrw.commons.review;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;
import com.google.android.material.navigation.NavigationView;
import com.viewpagerindicator.CirclePageIndicator;

Expand All @@ -20,6 +23,7 @@
import butterknife.ButterKnife;
import fr.free.nrw.commons.Media;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.auth.AuthenticatedActivity;
import fr.free.nrw.commons.mwapi.MediaResult;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
Expand All @@ -33,30 +37,41 @@

public class ReviewActivity extends AuthenticatedActivity {

public ReviewPagerAdapter reviewPagerAdapter;
public ReviewController reviewController;
@BindView(R.id.reviewPagerIndicator)
public CirclePageIndicator pagerIndicator;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.navigation_view)
NavigationView navigationView;
@BindView(R.id.drawer_layout)
DrawerLayout drawerLayout;

@BindView(R.id.reviewPager)
ReviewViewPager reviewPager;

@BindView(R.id.skip_image)
Button skip_image_button;
@BindView(R.id.imageView)
SimpleDraweeView simpleDraweeView;
@BindView(R.id.progressBar)
ProgressBar progressBar;
@BindView(R.id.imageCaption)
TextView imageCaption;
@Inject
MediaWikiApi mwApi;

@Inject MediaWikiApi mwApi;
/**
* Consumers should be simply using this method to use this activity.
*
* @param context
* @param title Page title
*/
public static void startYourself(Context context, String title) {
Intent reviewActivity = new Intent(context, ReviewActivity.class);
context.startActivity(reviewActivity);
}
@Inject
ReviewHelper reviewHelper;

public ReviewPagerAdapter reviewPagerAdapter;

public ReviewController reviewController;

@BindView(R.id.reviewPagerIndicator)
public CirclePageIndicator pagerIndicator;

private CompositeDisposable compositeDisposable = new CompositeDisposable();


Expand All @@ -82,20 +97,16 @@ protected void onCreate(Bundle savedInstanceState) {
reviewPager.setAdapter(reviewPagerAdapter);
reviewPagerAdapter.getItem(0);
pagerIndicator.setViewPager(reviewPager);
progressBar.setVisibility(View.VISIBLE);

runRandomizer(); //Run randomizer whenever everything is ready so that a first random image will be added

skip_image_button.setOnClickListener(view -> runRandomizer());
}



@SuppressLint("CheckResult")
public boolean runRandomizer() {
ProgressBar progressBar = reviewPagerAdapter.reviewImageFragments[reviewPager.getCurrentItem()].progressBar;
if (progressBar != null) {
progressBar.setVisibility(View.VISIBLE);
}

progressBar.setVisibility(View.VISIBLE);
reviewPager.setCurrentItem(0);
compositeDisposable.add(reviewHelper.getRandomMedia()
.map(Media::getFilename)
Expand All @@ -105,18 +116,22 @@ public boolean runRandomizer() {
return true;
}

@SuppressLint("CheckResult")
private void updateImage(String fileName) {
if (fileName.length() == 0) {
ViewUtil.showShortSnackbar(drawerLayout, R.string.error_review);
return;
}
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
reviewController.onImageRefreshed(fileName); //file name is updated
compositeDisposable.add(reviewHelper.getFirstRevisionOfFile("File:" + fileName)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(revision -> {
reviewController.firstRevision = revision;
reviewPagerAdapter.updateFileInformation(fileName, revision);
reviewPagerAdapter.updateFileInformation(fileName);
((TextView) imageCaption).setText(fileName + " is uploaded by: " + revision.getUser());
progressBar.setVisibility(View.GONE);
}));
reviewPager.setCurrentItem(0);
compositeDisposable.add(Observable.fromCallable(() -> {
Expand Down Expand Up @@ -148,14 +163,4 @@ public void swipeToNext() {
runRandomizer();
}
}

/**
* Consumers should be simply using this method to use this activity.
* @param context
* @param title Page title
*/
public static void startYourself(Context context, String title) {
Intent reviewActivity = new Intent(context, ReviewActivity.class);
context.startActivity(reviewActivity);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,7 @@
import android.widget.ProgressBar;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.media.model.MwQueryPage;

Expand All @@ -30,28 +27,20 @@ public class ReviewImageFragment extends CommonsDaggerSupportFragment {
private String catString;

private View textViewQuestionContext;
private View imageCaption;
private View textViewQuestion;
private SimpleDraweeView simpleDraweeView;

private Button yesButton;
private Button noButton;


public ProgressBar progressBar;
private MwQueryPage.Revision revision;


public void update(int position, String fileName, MwQueryPage.Revision revision) {
public void update(int position, String fileName) {
this.position = position;
this.fileName = fileName;
this.revision = revision;

fillImageCaption();

if (simpleDraweeView != null) {
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
progressBar.setVisibility(View.GONE);
}
}

public void updateCategories(Iterable<String> categories) {
Expand All @@ -78,15 +67,11 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
position = getArguments().getInt("position");
View layoutView = inflater.inflate(R.layout.fragment_review_image, container,
false);
progressBar = layoutView.findViewById(R.id.progressBar);
textViewQuestion = layoutView.findViewById(R.id.reviewQuestion);
textViewQuestionContext = layoutView.findViewById(R.id.reviewQuestionContext);
imageCaption = layoutView.findViewById(R.id.imageCaption);
yesButton = layoutView.findViewById(R.id.yesButton);
noButton = layoutView.findViewById(R.id.noButton);

fillImageCaption();

String question, explanation, yesButtonText, noButtonText;
switch (position) {
case COPYRIGHT:
Expand Down Expand Up @@ -125,7 +110,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
getReviewActivity().swipeToNext();
});
break;
default :
default:
question = "How did we get here?";
explanation = "No idea.";
yesButtonText = "yes";
Expand All @@ -139,26 +124,13 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
yesButton.setText(yesButtonText);
noButton.setText(noButtonText);

if(position==CATEGORY){
if (position == CATEGORY) {
updateCategories(ReviewController.categories);
}

simpleDraweeView = layoutView.findViewById(R.id.imageView);

if (fileName != null) {
simpleDraweeView.setImageURI(Utils.makeThumbBaseUrl(fileName));
progressBar.setVisibility(View.GONE);
}
return layoutView;
}

private ReviewActivity getReviewActivity() {
return (ReviewActivity) requireActivity();
}

private void fillImageCaption() {
if (imageCaption != null && fileName != null && revision != null) {
((TextView) imageCaption).setText(fileName + " is uploaded by: " + revision.getUser());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ public class ReviewPagerAdapter extends FragmentStatePagerAdapter {

public ReviewPagerAdapter(FragmentManager fm) {
super(fm);
reviewImageFragments = new ReviewImageFragment[] {
new ReviewImageFragment(),
new ReviewImageFragment(),
new ReviewImageFragment(),
new ReviewImageFragment()
reviewImageFragments = new ReviewImageFragment[]{
new ReviewImageFragment(),
new ReviewImageFragment(),
new ReviewImageFragment(),
new ReviewImageFragment()
};
}

Expand All @@ -26,10 +26,10 @@ public int getCount() {
return reviewImageFragments.length;
}

public void updateFileInformation(String fileName, MwQueryPage.Revision revision) {
public void updateFileInformation(String fileName) {
for (int i = 0; i < getCount(); i++) {
ReviewImageFragment fragment = reviewImageFragments[i];
fragment.update(i, fileName, revision);
fragment.update(i, fileName);
}
}

Expand Down
62 changes: 51 additions & 11 deletions app/src/main/res/layout/activity_review.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">

<include layout="@layout/toolbar"/>
<include layout="@layout/toolbar" />

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
Expand All @@ -26,31 +26,71 @@
android:id="@+id/skip_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:text="SKIP THIS IMAGE"
android:textColor="@color/button_blue_dark"
android:background="@android:color/transparent"
android:layout_weight="1"
android:textStyle="bold"/>
android:textStyle="bold" />

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="5dp">

<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_marginTop="0dp"
android:src="@drawable/commons_logo_large" />

<RelativeLayout
android:id="@+id/uploadOverlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="center|bottom"
android:background="#77000000"
android:gravity="center"
android:padding="@dimen/tiny_gap">

<TextView
android:id="@+id/imageCaption"
style="?android:textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFFFF" />

</RelativeLayout>

<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />

</RelativeLayout>


<fr.free.nrw.commons.review.ReviewViewPager
android:id="@+id/reviewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fadingEdge="none"
android:layout_weight="13.5"/>
android:layout_weight="13.5"
android:fadingEdge="none" />


<com.viewpagerindicator.CirclePageIndicator
android:id="@+id/reviewPagerIndicator"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center"
android:foregroundGravity="center_vertical"
android:elevation="1dp"
android:background="?attr/colorPrimaryDark"
android:layout_weight="0.5"
/>
android:background="?attr/colorPrimaryDark"
android:elevation="1dp"
android:foregroundGravity="center_vertical" />

</LinearLayout>

Expand Down
Loading