12
12
import androidx .appcompat .app .AlertDialog ;
13
13
import androidx .appcompat .app .AlertDialog .Builder ;
14
14
import androidx .recyclerview .widget .RecyclerView ;
15
- import butterknife .BindView ;
16
- import butterknife .ButterKnife ;
17
- import butterknife .OnClick ;
18
15
import com .facebook .drawee .view .SimpleDraweeView ;
19
16
import com .facebook .imagepipeline .request .ImageRequest ;
20
17
import com .facebook .imagepipeline .request .ImageRequestBuilder ;
21
18
import fr .free .nrw .commons .R ;
22
19
import fr .free .nrw .commons .contributions .ContributionsListAdapter .Callback ;
20
+ import fr .free .nrw .commons .databinding .LayoutContributionBinding ;
23
21
import fr .free .nrw .commons .media .MediaClient ;
24
22
import io .reactivex .android .schedulers .AndroidSchedulers ;
25
23
import io .reactivex .disposables .CompositeDisposable ;
29
27
public class ContributionViewHolder extends RecyclerView .ViewHolder {
30
28
31
29
private final Callback callback ;
32
- @ BindView (R .id .contributionImage )
33
- SimpleDraweeView imageView ;
34
- @ BindView (R .id .contributionTitle )
35
- TextView titleView ;
36
- @ BindView (R .id .authorView )
37
- TextView authorView ;
38
- @ BindView (R .id .contributionState )
39
- TextView stateView ;
40
- @ BindView (R .id .contributionSequenceNumber )
41
- TextView seqNumView ;
42
- @ BindView (R .id .contributionProgress )
43
- ProgressBar progressView ;
44
- @ BindView (R .id .image_options )
45
- RelativeLayout imageOptions ;
46
- @ BindView (R .id .wikipediaButton )
47
- ImageButton addToWikipediaButton ;
48
- @ BindView (R .id .retryButton )
49
- ImageButton retryButton ;
50
- @ BindView (R .id .cancelButton )
51
- ImageButton cancelButton ;
52
- @ BindView (R .id .pauseResumeButton )
53
- ImageButton pauseResumeButton ;
54
30
31
+ LayoutContributionBinding binding ;
55
32
56
33
private int position ;
57
34
private Contribution contribution ;
@@ -67,9 +44,16 @@ public class ContributionViewHolder extends RecyclerView.ViewHolder {
67
44
super (parent );
68
45
this .parent = parent ;
69
46
this .mediaClient = mediaClient ;
70
- ButterKnife .bind (this , parent );
71
47
this .callback = callback ;
72
48
49
+ binding = LayoutContributionBinding .bind (parent );
50
+
51
+ binding .retryButton .setOnClickListener (v -> retryUpload ());
52
+ binding .cancelButton .setOnClickListener (v -> deleteUpload ());
53
+ binding .contributionImage .setOnClickListener (v -> imageClicked ());
54
+ binding .wikipediaButton .setOnClickListener (v -> wikipediaButtonClicked ());
55
+ binding .pauseResumeButton .setOnClickListener (v -> onPauseResumeButtonClicked ());
56
+
73
57
/* Set a dialog indicating that the upload is being paused. This is needed because pausing
74
58
an upload might take a dozen seconds. */
75
59
AlertDialog .Builder builder = new Builder (parent .getContext ());
@@ -87,14 +71,17 @@ public void init(final int position, final Contribution contribution) {
87
71
88
72
this .contribution = contribution ;
89
73
this .position = position ;
90
- titleView .setText (contribution .getMedia ().getMostRelevantCaption ());
91
- authorView .setText (contribution .getMedia ().getAuthor ());
74
+ binding . contributionTitle .setText (contribution .getMedia ().getMostRelevantCaption ());
75
+ binding . authorView .setText (contribution .getMedia ().getAuthor ());
92
76
93
77
//Removes flicker of loading image.
94
- imageView .getHierarchy ().setFadeDuration (0 );
78
+ binding . contributionImage .getHierarchy ().setFadeDuration (0 );
95
79
96
- imageView .getHierarchy ().setPlaceholderImage (R .drawable .image_placeholder );
97
- imageView .getHierarchy ().setFailureImage (R .drawable .image_placeholder );
80
+ binding .contributionImage .getHierarchy ().setPlaceholderImage (R .drawable .image_placeholder );
81
+ binding .contributionImage .getHierarchy ().setFailureImage (R .drawable .image_placeholder );
82
+
83
+
84
+
98
85
99
86
final String imageSource = chooseImageSource (contribution .getMedia ().getThumbUrl (),
100
87
contribution .getLocalUri ());
@@ -109,67 +96,67 @@ public void init(final int position, final Contribution contribution) {
109
96
}
110
97
111
98
if (imageRequest != null ){
112
- imageView .setImageRequest (imageRequest );
99
+ binding . contributionImage .setImageRequest (imageRequest );
113
100
}
114
101
}
115
102
116
- seqNumView .setText (String .valueOf (position + 1 ));
117
- seqNumView .setVisibility (View .VISIBLE );
103
+ binding . contributionSequenceNumber .setText (String .valueOf (position + 1 ));
104
+ binding . contributionSequenceNumber .setVisibility (View .VISIBLE );
118
105
119
- addToWikipediaButton .setVisibility (View .GONE );
106
+ binding . wikipediaButton .setVisibility (View .GONE );
120
107
switch (contribution .getState ()) {
121
108
case Contribution .STATE_COMPLETED :
122
- stateView .setVisibility (View .GONE );
123
- progressView .setVisibility (View .GONE );
124
- imageOptions .setVisibility (View .GONE );
125
- stateView .setText ("" );
109
+ binding . contributionState .setVisibility (View .GONE );
110
+ binding . contributionProgress .setVisibility (View .GONE );
111
+ binding . imageOptions .setVisibility (View .GONE );
112
+ binding . contributionState .setText ("" );
126
113
checkIfMediaExistsOnWikipediaPage (contribution );
127
114
break ;
128
115
case Contribution .STATE_QUEUED :
129
116
case Contribution .STATE_QUEUED_LIMITED_CONNECTION_MODE :
130
- progressView .setVisibility (View .GONE );
131
- stateView .setVisibility (View .VISIBLE );
132
- stateView .setText (R .string .contribution_state_queued );
133
- imageOptions .setVisibility (View .GONE );
117
+ binding . contributionProgress .setVisibility (View .GONE );
118
+ binding . contributionState .setVisibility (View .VISIBLE );
119
+ binding . contributionState .setText (R .string .contribution_state_queued );
120
+ binding . imageOptions .setVisibility (View .GONE );
134
121
break ;
135
122
case Contribution .STATE_IN_PROGRESS :
136
- stateView .setVisibility (View .GONE );
137
- progressView .setVisibility (View .VISIBLE );
138
- addToWikipediaButton .setVisibility (View .GONE );
139
- pauseResumeButton .setVisibility (View .VISIBLE );
140
- cancelButton .setVisibility (View .GONE );
141
- retryButton .setVisibility (View .GONE );
142
- imageOptions .setVisibility (View .VISIBLE );
123
+ binding . contributionState .setVisibility (View .GONE );
124
+ binding . contributionProgress .setVisibility (View .VISIBLE );
125
+ binding . wikipediaButton .setVisibility (View .GONE );
126
+ binding . pauseResumeButton .setVisibility (View .VISIBLE );
127
+ binding . cancelButton .setVisibility (View .GONE );
128
+ binding . retryButton .setVisibility (View .GONE );
129
+ binding . imageOptions .setVisibility (View .VISIBLE );
143
130
final long total = contribution .getDataLength ();
144
131
final long transferred = contribution .getTransferred ();
145
132
if (transferred == 0 || transferred >= total ) {
146
- progressView .setIndeterminate (true );
133
+ binding . contributionProgress .setIndeterminate (true );
147
134
} else {
148
- progressView .setIndeterminate (false );
149
- progressView .setProgress ((int ) (((double ) transferred / (double ) total ) * 100 ));
135
+ binding . contributionProgress .setIndeterminate (false );
136
+ binding . contributionProgress .setProgress ((int ) (((double ) transferred / (double ) total ) * 100 ));
150
137
}
151
138
break ;
152
139
case Contribution .STATE_PAUSED :
153
- progressView .setVisibility (View .GONE );
154
- stateView .setVisibility (View .VISIBLE );
155
- stateView .setText (R .string .paused );
156
- cancelButton .setVisibility (View .VISIBLE );
157
- retryButton .setVisibility (View .GONE );
158
- pauseResumeButton .setVisibility (View .VISIBLE );
159
- imageOptions .setVisibility (View .VISIBLE );
140
+ binding . contributionProgress .setVisibility (View .GONE );
141
+ binding . contributionState .setVisibility (View .VISIBLE );
142
+ binding . contributionState .setText (R .string .paused );
143
+ binding . cancelButton .setVisibility (View .VISIBLE );
144
+ binding . retryButton .setVisibility (View .GONE );
145
+ binding . pauseResumeButton .setVisibility (View .VISIBLE );
146
+ binding . imageOptions .setVisibility (View .VISIBLE );
160
147
setResume ();
161
148
if (pausingPopUp .isShowing ()){
162
149
pausingPopUp .hide ();
163
150
}
164
151
break ;
165
152
case Contribution .STATE_FAILED :
166
- stateView .setVisibility (View .VISIBLE );
167
- stateView .setText (R .string .contribution_state_failed );
168
- progressView .setVisibility (View .GONE );
169
- cancelButton .setVisibility (View .VISIBLE );
170
- retryButton .setVisibility (View .VISIBLE );
171
- pauseResumeButton .setVisibility (View .GONE );
172
- imageOptions .setVisibility (View .VISIBLE );
153
+ binding . contributionState .setVisibility (View .VISIBLE );
154
+ binding . contributionState .setText (R .string .contribution_state_failed );
155
+ binding . contributionProgress .setVisibility (View .GONE );
156
+ binding . cancelButton .setVisibility (View .VISIBLE );
157
+ binding . retryButton .setVisibility (View .VISIBLE );
158
+ binding . pauseResumeButton .setVisibility (View .GONE );
159
+ binding . imageOptions .setVisibility (View .VISIBLE );
173
160
break ;
174
161
}
175
162
}
@@ -203,11 +190,11 @@ private void checkIfMediaExistsOnWikipediaPage(final Contribution contribution)
203
190
*/
204
191
private void displayWikipediaButton (Boolean mediaExists ) {
205
192
if (!mediaExists ) {
206
- addToWikipediaButton .setVisibility (View .VISIBLE );
193
+ binding . wikipediaButton .setVisibility (View .VISIBLE );
207
194
isWikipediaButtonDisplayed = true ;
208
- cancelButton .setVisibility (View .GONE );
209
- retryButton .setVisibility (View .GONE );
210
- imageOptions .setVisibility (View .VISIBLE );
195
+ binding . cancelButton .setVisibility (View .GONE );
196
+ binding . retryButton .setVisibility (View .GONE );
197
+ binding . imageOptions .setVisibility (View .VISIBLE );
211
198
}
212
199
}
213
200
@@ -229,35 +216,30 @@ private String chooseImageSource(final String thumbUrl, final Uri localUri) {
229
216
/**
230
217
* Retry upload when it is failed
231
218
*/
232
- @ OnClick (R .id .retryButton )
233
219
public void retryUpload () {
234
220
callback .retryUpload (contribution );
235
221
}
236
222
237
223
/**
238
224
* Delete a failed upload attempt
239
225
*/
240
- @ OnClick (R .id .cancelButton )
241
226
public void deleteUpload () {
242
227
callback .deleteUpload (contribution );
243
228
}
244
229
245
- @ OnClick (R .id .contributionImage )
246
230
public void imageClicked () {
247
231
callback .openMediaDetail (position , isWikipediaButtonDisplayed );
248
232
}
249
233
250
- @ OnClick (R .id .wikipediaButton )
251
234
public void wikipediaButtonClicked () {
252
235
callback .addImageToWikipedia (contribution );
253
236
}
254
237
255
238
/**
256
239
* Triggers a callback for pause/resume
257
240
*/
258
- @ OnClick (R .id .pauseResumeButton )
259
241
public void onPauseResumeButtonClicked () {
260
- if (pauseResumeButton .getTag ().toString ().equals ("pause" )) {
242
+ if (binding . pauseResumeButton .getTag ().toString ().equals ("pause" )) {
261
243
pause ();
262
244
} else {
263
245
resume ();
@@ -279,16 +261,16 @@ private void pause() {
279
261
* Update pause/resume button to show pause state
280
262
*/
281
263
private void setPaused () {
282
- pauseResumeButton .setImageResource (R .drawable .pause_icon );
283
- pauseResumeButton .setTag (parent .getContext ().getString (R .string .pause ));
264
+ binding . pauseResumeButton .setImageResource (R .drawable .pause_icon );
265
+ binding . pauseResumeButton .setTag (parent .getContext ().getString (R .string .pause ));
284
266
}
285
267
286
268
/**
287
269
* Update pause/resume button to show resume state
288
270
*/
289
271
private void setResume () {
290
- pauseResumeButton .setImageResource (R .drawable .play_icon );
291
- pauseResumeButton .setTag (parent .getContext ().getString (R .string .resume ));
272
+ binding . pauseResumeButton .setImageResource (R .drawable .play_icon );
273
+ binding . pauseResumeButton .setTag (parent .getContext ().getString (R .string .resume ));
292
274
}
293
275
294
276
public ImageRequest getImageRequest () {
0 commit comments