|
@@ -20,17 +20,30 @@
|
|
package com.owncloud.android.ui.adapter;
|
|
package com.owncloud.android.ui.adapter;
|
|
|
|
|
|
import android.content.Context;
|
|
import android.content.Context;
|
|
|
|
+import android.graphics.drawable.PictureDrawable;
|
|
|
|
+import android.net.Uri;
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
|
+import android.text.TextUtils;
|
|
import android.view.LayoutInflater;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageView;
|
|
import android.widget.ImageView;
|
|
import android.widget.TextView;
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
+import com.bumptech.glide.GenericRequestBuilder;
|
|
|
|
+import com.bumptech.glide.Glide;
|
|
|
|
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
|
|
|
+import com.bumptech.glide.load.model.StreamEncoder;
|
|
|
|
+import com.bumptech.glide.load.resource.file.FileToStreamDecoder;
|
|
|
|
+import com.caverock.androidsvg.SVG;
|
|
import com.owncloud.android.R;
|
|
import com.owncloud.android.R;
|
|
import com.owncloud.android.lib.resources.notifications.models.Notification;
|
|
import com.owncloud.android.lib.resources.notifications.models.Notification;
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
|
|
+import com.owncloud.android.utils.svg.SvgDecoder;
|
|
|
|
+import com.owncloud.android.utils.svg.SvgDrawableTranscoder;
|
|
|
|
+import com.owncloud.android.utils.svg.SvgSoftwareLayerSetter;
|
|
|
|
|
|
|
|
+import java.io.InputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
@@ -66,7 +79,32 @@ public class NotificationListAdapter extends RecyclerView.Adapter<NotificationLi
|
|
holder.message.setText(notification.getMessage());
|
|
holder.message.setText(notification.getMessage());
|
|
|
|
|
|
// Todo set proper action icon (to be clarified how to pick)
|
|
// Todo set proper action icon (to be clarified how to pick)
|
|
- holder.activityIcon.setImageResource(R.drawable.ic_notification);
|
|
|
|
|
|
+ if (!TextUtils.isEmpty(notification.getIcon())) {
|
|
|
|
+ downloadIcon(notification.getIcon(), holder.activityIcon);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void downloadIcon(String icon, ImageView itemViewType) {
|
|
|
|
+ GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder = Glide.with(context)
|
|
|
|
+ .using(Glide.buildStreamModelLoader(Uri.class, context), InputStream.class)
|
|
|
|
+ .from(Uri.class)
|
|
|
|
+ .as(SVG.class)
|
|
|
|
+ .transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
|
|
|
|
+ .sourceEncoder(new StreamEncoder())
|
|
|
|
+ .cacheDecoder(new FileToStreamDecoder<>(new SvgDecoder()))
|
|
|
|
+ .decoder(new SvgDecoder())
|
|
|
|
+ .placeholder(R.drawable.ic_notification)
|
|
|
|
+ .error(R.drawable.ic_notification)
|
|
|
|
+ .animate(android.R.anim.fade_in)
|
|
|
|
+ .listener(new SvgSoftwareLayerSetter<Uri>());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Uri uri = Uri.parse(icon);
|
|
|
|
+ requestBuilder
|
|
|
|
+ .diskCacheStrategy(DiskCacheStrategy.SOURCE)
|
|
|
|
+ .load(uri)
|
|
|
|
+ .into(itemViewType);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|