Skip to content

Commit f404ac9

Browse files
Remove Image From Upload Wizard (commons-app#5636)
* Added Remove Icon to Image Thumnails * fix * fix * fix tests
1 parent 78a53fd commit f404ac9

File tree

5 files changed

+43
-8
lines changed

5 files changed

+43
-8
lines changed

app/src/main/java/fr/free/nrw/commons/upload/ThumbnailsAdapter.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ class ThumbnailsAdapter extends RecyclerView.Adapter<ThumbnailsAdapter.ViewHolde
2828
List<UploadableFile> uploadableFiles;
2929
private Callback callback;
3030

31+
private OnThumbnailDeletedListener listener;
32+
3133
private ItemUploadThumbnailBinding binding;
3234

3335
public ThumbnailsAdapter(Callback callback) {
@@ -45,6 +47,10 @@ public void setUploadableFiles(
4547
notifyDataSetChanged();
4648
}
4749

50+
public void setOnThumbnailDeletedListener(OnThumbnailDeletedListener listener) {
51+
this.listener = listener;
52+
}
53+
4854
@NonNull
4955
@Override
5056
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
@@ -69,11 +75,14 @@ public class ViewHolder extends RecyclerView.ViewHolder {
6975
SimpleDraweeView background;
7076
ImageView ivError;
7177

78+
ImageView ivCross;
79+
7280
public ViewHolder(@NonNull View itemView) {
7381
super(itemView);
7482
rlContainer = binding.rlContainer;
7583
background = binding.ivThumbnail;
7684
ivError = binding.ivError;
85+
ivCross = binding.icCross;
7786
}
7887

7988
/**
@@ -104,6 +113,12 @@ public void bind(int position) {
104113
rlContainer.setElevation(0);
105114
}
106115
}
116+
117+
ivCross.setOnClickListener(v -> {
118+
if(listener != null) {
119+
listener.onThumbnailDeleted(position);
120+
}
121+
});
107122
}
108123
}
109124

@@ -114,4 +129,13 @@ interface Callback {
114129

115130
int getCurrentSelectedFilePosition();
116131
}
132+
133+
/**
134+
* Interface to listen to thumbnail delete events
135+
*/
136+
137+
public interface OnThumbnailDeletedListener {
138+
void onThumbnailDeleted(int position);
139+
}
140+
117141
}

app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
import javax.inject.Named;
7171
import timber.log.Timber;
7272

73-
public class UploadActivity extends BaseActivity implements UploadContract.View, UploadBaseFragment.Callback {
73+
public class UploadActivity extends BaseActivity implements UploadContract.View, UploadBaseFragment.Callback, ThumbnailsAdapter.OnThumbnailDeletedListener {
7474

7575
@Inject
7676
ContributionController contributionController;
@@ -199,6 +199,7 @@ private void initThumbnailsRecyclerView() {
199199
binding.rvThumbnails.setLayoutManager(new LinearLayoutManager(this,
200200
LinearLayoutManager.HORIZONTAL, false));
201201
thumbnailsAdapter = new ThumbnailsAdapter(() -> currentSelectedPosition);
202+
thumbnailsAdapter.setOnThumbnailDeletedListener(this);
202203
binding.rvThumbnails.setAdapter(thumbnailsAdapter);
203204

204205
}
@@ -454,7 +455,7 @@ private void receiveSharedItems() {
454455
.getQuantityString(R.plurals.upload_count_title, uploadableFiles.size(), uploadableFiles.size()));
455456

456457

457-
if(fragments==null){
458+
if(fragments == null){
458459
fragments = new ArrayList<>();
459460
}
460461

@@ -799,9 +800,15 @@ public void onPreviousButtonClicked(int index) {
799800
fragments.get(index - 1).onBecameVisible();
800801
((LinearLayoutManager) binding.rvThumbnails.getLayoutManager())
801802
.scrollToPositionWithOffset((index > 3) ? index-2 : 0, 0);
803+
binding.llContainerTopCard.setVisibility(View.VISIBLE);
802804
}
803805
}
804806

807+
@Override
808+
public void onThumbnailDeleted(int position) {
809+
presenter.deletePictureAtIndex(position);
810+
}
811+
805812
/**
806813
* The adapter used to show image upload intermediate fragments
807814
*/

app/src/main/java/fr/free/nrw/commons/upload/UploadPresenter.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,6 @@ public void onComplete() {
138138
@Override
139139
public void deletePictureAtIndex(int index) {
140140
List<UploadableFile> uploadableFiles = view.getUploadableFiles();
141-
if (index == uploadableFiles.size() - 1) {//If the next fragment to be shown is not one of the MediaDetailsFragment, lets hide the top card
142-
view.showHideTopCard(false);
143-
}
144141
view.setImageCancelled(true);
145142
repository.deletePicture(uploadableFiles.get(index).getFilePath());
146143
if (uploadableFiles.size() == 1) {
@@ -156,7 +153,6 @@ public void deletePictureAtIndex(int index) {
156153

157154
//In case lets update the number of uploadable media
158155
view.updateTopCardTitle();
159-
view.highlightNextImageOnCancelledImage(index, uploadableFiles.size());
160156

161157
}
162158

app/src/main/res/layout/item_upload_thumbnail.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,14 @@
2626
android:visibility="gone"
2727
app:srcCompat="@drawable/ic_error_red_24dp"
2828
tools:visibility="visible"/>
29+
30+
<ImageView
31+
android:id="@+id/ic_cross"
32+
android:layout_width="@dimen/half_standard_height"
33+
android:layout_height="@dimen/half_standard_height"
34+
android:layout_alignParentTop="true"
35+
android:layout_alignParentRight="true"
36+
android:layout_gravity="end"
37+
app:srcCompat="@drawable/ic_cancel_white"
38+
tools:visibility="visible"/>
2939
</RelativeLayout>

app/src/test/kotlin/fr/free/nrw/commons/upload/UploadPresenterTest.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ class UploadPresenterTest {
157157
deletePictureBaseTest()
158158
uploadableFiles.add(uploadableFile)
159159
uploadPresenter.deletePictureAtIndex(0)
160-
verify(view).showHideTopCard(false)
161160
verify(repository).deletePicture(ArgumentMatchers.anyString())
162161
}
163162

@@ -169,7 +168,6 @@ class UploadPresenterTest {
169168
deletePictureBaseTest()
170169
uploadableFiles.add(uploadableFile)
171170
uploadPresenter.deletePictureAtIndex(0)
172-
verify(view).showHideTopCard(false)
173171
verify(repository).deletePicture(ArgumentMatchers.anyString())
174172
verify(view).showMessage(ArgumentMatchers.anyInt())//As there is only one while which we are asking for deletion, upload should be cancelled and this flow should be triggered
175173
verify(view).finish()

0 commit comments

Comments
 (0)