5252import com .caverock .androidsvg .SVG ;
5353import com .owncloud .android .MainApp ;
5454import com .owncloud .android .R ;
55- import com .owncloud .android .datamodel .FileDataStorageManager ;
56- import com .owncloud .android .datamodel .OCFile ;
5755import com .owncloud .android .lib .common .OwnCloudClient ;
5856import com .owncloud .android .lib .common .utils .Log_OC ;
5957import com .owncloud .android .lib .resources .activities .models .Activity ;
58+ import com .owncloud .android .lib .resources .activities .models .PreviewObject ;
6059import com .owncloud .android .lib .resources .activities .models .RichElement ;
6160import com .owncloud .android .lib .resources .activities .models .RichObject ;
62- import com .owncloud .android .lib .resources .files .FileUtils ;
6361import com .owncloud .android .ui .interfaces .ActivityListInterface ;
6462import com .owncloud .android .utils .DisplayUtils ;
6563import com .owncloud .android .utils .MimeTypeUtil ;
7775 */
7876public class ActivityListAdapter extends RecyclerView .Adapter <RecyclerView .ViewHolder > {
7977
80- protected static final int HEADER_TYPE = 100 ;
81- protected static final int ACTIVITY_TYPE = 101 ;
82- protected final ActivityListInterface activityListInterface ;
78+ static final int HEADER_TYPE = 100 ;
79+ static final int ACTIVITY_TYPE = 101 ;
80+ private final ActivityListInterface activityListInterface ;
8381 private final int px ;
8482 private static final String TAG = ActivityListAdapter .class .getSimpleName ();
8583 protected OwnCloudClient client ;
8684
8785 protected Context context ;
88- private FileDataStorageManager storageManager ;
8986 protected List <Object > values ;
9087 private boolean isDetailView ;
9188
92- public ActivityListAdapter (Context context , ActivityListInterface activityListInterface ,
93- FileDataStorageManager storageManager , boolean isDetailView ) {
89+ public ActivityListAdapter (Context context , ActivityListInterface activityListInterface , boolean isDetailView ) {
9490 this .values = new ArrayList <>();
9591 this .context = context ;
9692 this .activityListInterface = activityListInterface ;
97- this .storageManager = storageManager ;
9893 px = getThumbnailDimension ();
9994 this .isDetailView = isDetailView ;
10095 }
10196
10297 public void setActivityItems (List <Object > activityItems , OwnCloudClient client , boolean clear ) {
10398 this .client = client ;
10499 String sTime = "" ;
105-
100+
106101 if (clear ) {
107102 values .clear ();
108103 }
109-
104+
110105 for (Object o : activityItems ) {
111106 Activity activity = (Activity ) o ;
112107 String time ;
@@ -196,14 +191,13 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi
196191 }
197192 });
198193
199-
200- for ( RichObject richObject : activity . getRichSubjectElement (). getRichObjectList ()) {
201- if ( richObject . getPath () != null ) {
202- ImageView imageView = createThumbnail (richObject , isDetailView );
194+ for ( PreviewObject previewObject : activity . getPreviews ()) {
195+ if (! isDetailView || isDetailView && ( MimeTypeUtil . isImageOrVideo ( previewObject . getMimeType ()) ||
196+ MimeTypeUtil . isVideo ( previewObject . getMimeType ())) ) {
197+ ImageView imageView = createThumbnail (previewObject );
203198 activityViewHolder .list .addView (imageView );
204199 }
205200 }
206-
207201 } else {
208202 activityViewHolder .list .removeAllViews ();
209203 activityViewHolder .list .setVisibility (View .GONE );
@@ -214,64 +208,26 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi
214208 }
215209 }
216210
217- private ImageView createThumbnail (final RichObject richObject , boolean isDetailView ) {
218- String path = FileUtils .PATH_SEPARATOR + richObject .getPath ();
219- OCFile file = storageManager .getFileByPath (path );
220-
221- if (file == null ) {
222- file = storageManager .getFileByPath (path + FileUtils .PATH_SEPARATOR );
223- }
224- if (file == null ) {
225- file = new OCFile (path );
226- file .setRemoteId (richObject .getId ());
227- }
228-
211+ private ImageView createThumbnail (PreviewObject previewObject ) {
229212 LinearLayout .LayoutParams params = new LinearLayout .LayoutParams (px , px );
230213 params .setMargins (10 , 10 , 10 , 10 );
231214 ImageView imageView = new ImageView (context );
232215 imageView .setLayoutParams (params );
233- imageView .setOnClickListener (v -> activityListInterface .onActivityClicked (richObject ));
234- setBitmap (file , imageView , isDetailView );
235-
236- return imageView ;
237- }
238216
239- private void setBitmap (OCFile file , ImageView fileIcon , boolean isDetailView ) {
240- // No Folder
241- if (!file .isFolder ()) {
242- if (MimeTypeUtil .isImage (file ) || MimeTypeUtil .isVideo (file )) {
243- int placeholder ;
244-
245- if (MimeTypeUtil .isImage (file )) {
246- placeholder = R .drawable .file_image ;
247- } else {
248- placeholder = R .drawable .file_movie ;
249- }
250-
251- String uri = client .getBaseUri () + "/index.php/apps/files/api/v1/thumbnail/" + px + "/" + px +
252- Uri .encode (file .getRemotePath (), "/" );
253-
254- Glide .with (context ).using (new CustomGlideStreamLoader ()).load (uri ).placeholder (placeholder )
255- .error (placeholder ).into (fileIcon ); // using custom fetcher
256-
257- } else {
258- if (isDetailView ) {
259- fileIcon .setVisibility (View .GONE );
260- } else {
261- fileIcon .setImageDrawable (MimeTypeUtil .getFileTypeIcon (file .getMimeType (), file .getFileName (),
262- context ));
263- }
264- }
217+ if (MimeTypeUtil .isImageOrVideo (previewObject .getMimeType ())) {
218+ int placeholder = R .drawable .file ;
219+ Glide .with (context ).using (new CustomGlideStreamLoader ()).load (previewObject .getSource ()).
220+ placeholder (placeholder ).error (placeholder ).into (imageView );
265221 } else {
266- // Folder
267- if ( isDetailView ) {
268- fileIcon . setVisibility ( View . GONE );
222+ if ( MimeTypeUtil . isFolder ( previewObject . getMimeType ())) {
223+ imageView . setImageDrawable (
224+ MimeTypeUtil . getDefaultFolderIcon ( context ) );
269225 } else {
270- fileIcon .setImageDrawable (
271- MimeTypeUtil .getFolderTypeIcon (file .isSharedWithMe () || file .isSharedWithSharee (),
272- file .isSharedViaLink (), file .isEncrypted (), file .getMountType (), context ));
226+ imageView .setImageDrawable (MimeTypeUtil .getFileTypeIcon (previewObject .getMimeType (), "" , context ));
273227 }
274228 }
229+
230+ return imageView ;
275231 }
276232
277233 private void downloadIcon (String icon , ImageView itemViewType ) {
@@ -312,12 +268,12 @@ private SpannableStringBuilder addClickablePart(RichElement richElement) {
312268 idx2 = idx1 + name .length ();
313269 ssb .setSpan (new ClickableSpan () {
314270 @ Override
315- public void onClick (View widget ) {
271+ public void onClick (@ NonNull View widget ) {
316272 activityListInterface .onActivityClicked (richObject );
317273 }
318274
319275 @ Override
320- public void updateDrawState (TextPaint ds ) {
276+ public void updateDrawState (@ NonNull TextPaint ds ) {
321277 ds .setUnderlineText (false );
322278 }
323279 }, idx1 , idx2 , 0 );
@@ -366,7 +322,7 @@ private int getThumbnailDimension() {
366322 return d .intValue ();
367323 }
368324
369- protected CharSequence getHeaderDateString (Context context , long modificationTimestamp ) {
325+ CharSequence getHeaderDateString (Context context , long modificationTimestamp ) {
370326 if ((System .currentTimeMillis () - modificationTimestamp ) < DateUtils .WEEK_IN_MILLIS ) {
371327 return DisplayUtils .getRelativeDateTimeString (context , modificationTimestamp , DateUtils .DAY_IN_MILLIS ,
372328 DateUtils .WEEK_IN_MILLIS , 0 );
@@ -383,7 +339,7 @@ protected class ActivityViewHolder extends RecyclerView.ViewHolder {
383339 private final TextView dateTime ;
384340 private final GridLayout list ;
385341
386- protected ActivityViewHolder (View itemView ) {
342+ ActivityViewHolder (View itemView ) {
387343 super (itemView );
388344 activityIcon = itemView .findViewById (R .id .activity_icon );
389345 subject = itemView .findViewById (R .id .activity_subject );
@@ -397,7 +353,7 @@ protected class ActivityViewHeaderHolder extends RecyclerView.ViewHolder {
397353
398354 private final TextView title ;
399355
400- protected ActivityViewHeaderHolder (View itemView ) {
356+ ActivityViewHeaderHolder (View itemView ) {
401357 super (itemView );
402358 title = itemView .findViewById (R .id .title_header );
403359
0 commit comments