mirror of
https://github.com/oxen-io/session-android.git
synced 2025-10-25 13:58:40 +00:00
Use Glide for all contact photo caching
// FREEBIE
This commit is contained in:
@@ -18,6 +18,8 @@ import android.view.View;
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
|
||||
import org.thoughtcrime.securesms.scribbles.viewmodel.Font;
|
||||
import org.thoughtcrime.securesms.scribbles.viewmodel.Layer;
|
||||
@@ -48,22 +50,24 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
|
||||
private ScribbleToolbar toolbar;
|
||||
private ScribbleView scribbleView;
|
||||
private MasterSecret masterSecret;
|
||||
private GlideRequests glideRequests;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState, @NonNull MasterSecret masterSecret) {
|
||||
setContentView(R.layout.scribble_activity);
|
||||
|
||||
this.masterSecret = masterSecret;
|
||||
this.scribbleView = (ScribbleView) findViewById(R.id.scribble_view);
|
||||
this.toolbar = (ScribbleToolbar) findViewById(R.id.toolbar);
|
||||
this.colorPicker = (VerticalSlideColorPicker) findViewById(R.id.scribble_color_picker);
|
||||
this.masterSecret = masterSecret;
|
||||
this.glideRequests = GlideApp.with(this);
|
||||
this.scribbleView = findViewById(R.id.scribble_view);
|
||||
this.toolbar = findViewById(R.id.toolbar);
|
||||
this.colorPicker = findViewById(R.id.scribble_color_picker);
|
||||
|
||||
this.toolbar.setListener(this);
|
||||
this.toolbar.setToolColor(Color.RED);
|
||||
|
||||
scribbleView.setMotionViewCallback(motionViewCallback);
|
||||
scribbleView.setDrawingMode(false);
|
||||
scribbleView.setImage(getIntent().getData(), masterSecret);
|
||||
scribbleView.setImage(masterSecret, glideRequests, getIntent().getData());
|
||||
|
||||
colorPicker.setOnColorChangeListener(this);
|
||||
colorPicker.setVisibility(View.GONE);
|
||||
@@ -214,7 +218,7 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity implem
|
||||
|
||||
@Override
|
||||
public void onSave() {
|
||||
ListenableFuture<Bitmap> future = scribbleView.getRenderedImage();
|
||||
ListenableFuture<Bitmap> future = scribbleView.getRenderedImage(glideRequests);
|
||||
|
||||
future.addListener(new ListenableFuture.Listener<Bitmap>() {
|
||||
@Override
|
||||
|
||||
@@ -35,11 +35,13 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||
|
||||
public class StickerSelectFragment extends Fragment implements LoaderManager.LoaderCallbacks<String[]> {
|
||||
|
||||
private RecyclerView recyclerView;
|
||||
private String assetDirectory;
|
||||
private RecyclerView recyclerView;
|
||||
private GlideRequests glideRequests;
|
||||
private String assetDirectory;
|
||||
private StickerSelectionListener listener;
|
||||
|
||||
public static StickerSelectFragment newInstance(String assetDirectory) {
|
||||
@@ -67,6 +69,7 @@ public class StickerSelectFragment extends Fragment implements LoaderManager.Loa
|
||||
public void onActivityCreated(Bundle bundle) {
|
||||
super.onActivityCreated(bundle);
|
||||
|
||||
this.glideRequests = GlideApp.with(this);
|
||||
this.assetDirectory = getArguments().getString("assetDirectory");
|
||||
|
||||
getLoaderManager().initLoader(0, null, this);
|
||||
@@ -80,7 +83,7 @@ public class StickerSelectFragment extends Fragment implements LoaderManager.Loa
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<String[]> loader, String[] data) {
|
||||
recyclerView.setAdapter(new StickersAdapter(getActivity(), data));
|
||||
recyclerView.setAdapter(new StickersAdapter(getActivity(), glideRequests, data));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -94,12 +97,12 @@ public class StickerSelectFragment extends Fragment implements LoaderManager.Loa
|
||||
|
||||
class StickersAdapter extends RecyclerView.Adapter<StickersAdapter.StickerViewHolder> {
|
||||
|
||||
private final Context context;
|
||||
private final GlideRequests glideRequests;
|
||||
private final String[] stickerFiles;
|
||||
private final LayoutInflater layoutInflater;
|
||||
|
||||
StickersAdapter(@NonNull Context context, @NonNull String[] stickerFiles) {
|
||||
this.context = context;
|
||||
StickersAdapter(@NonNull Context context, @NonNull GlideRequests glideRequests, @NonNull String[] stickerFiles) {
|
||||
this.glideRequests = glideRequests;
|
||||
this.stickerFiles = stickerFiles;
|
||||
this.layoutInflater = LayoutInflater.from(context);
|
||||
}
|
||||
@@ -113,10 +116,9 @@ public class StickerSelectFragment extends Fragment implements LoaderManager.Loa
|
||||
public void onBindViewHolder(StickerViewHolder holder, int position) {
|
||||
holder.fileName = stickerFiles[position];
|
||||
|
||||
GlideApp.with(context)
|
||||
.load(Uri.parse("file:///android_asset/" + holder.fileName))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.into(holder.image);
|
||||
glideRequests.load(Uri.parse("file:///android_asset/" + holder.fileName))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.into(holder.image);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -127,7 +129,7 @@ public class StickerSelectFragment extends Fragment implements LoaderManager.Loa
|
||||
@Override
|
||||
public void onViewRecycled(StickerViewHolder holder) {
|
||||
super.onViewRecycled(holder);
|
||||
GlideApp.with(context).clear(holder.image);
|
||||
glideRequests.clear(holder.image);
|
||||
}
|
||||
|
||||
private void onStickerSelected(String fileName) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/**
|
||||
/*
|
||||
* Copyright (C) 2016 Open Whisper Systems
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
@@ -36,7 +36,7 @@ import com.bumptech.glide.request.target.Target;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||
import org.thoughtcrime.securesms.scribbles.widget.entity.MotionEntity;
|
||||
import org.thoughtcrime.securesms.scribbles.widget.entity.TextEntity;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
@@ -77,18 +77,17 @@ public class ScribbleView extends FrameLayout {
|
||||
initialize(context);
|
||||
}
|
||||
|
||||
public void setImage(@NonNull Uri uri, @NonNull MasterSecret masterSecret) {
|
||||
public void setImage(@NonNull MasterSecret masterSecret, @NonNull GlideRequests glideRequests, @NonNull Uri uri) {
|
||||
this.imageUri = uri;
|
||||
this.masterSecret = masterSecret;
|
||||
|
||||
GlideApp.with(getContext())
|
||||
.load(new DecryptableUri(masterSecret, uri))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.fitCenter()
|
||||
.into(imageView);
|
||||
glideRequests.load(new DecryptableUri(masterSecret, uri))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.fitCenter()
|
||||
.into(imageView);
|
||||
}
|
||||
|
||||
public @NonNull ListenableFuture<Bitmap> getRenderedImage() {
|
||||
public @NonNull ListenableFuture<Bitmap> getRenderedImage(@NonNull GlideRequests glideRequests) {
|
||||
final SettableFuture<Bitmap> future = new SettableFuture<>();
|
||||
final Context context = getContext();
|
||||
final boolean isLowMemory = Util.isLowMemory(context);
|
||||
@@ -110,13 +109,12 @@ public class ScribbleView extends FrameLayout {
|
||||
height = 768;
|
||||
}
|
||||
|
||||
return GlideApp.with(context)
|
||||
.asBitmap()
|
||||
.load(new DecryptableUri(masterSecret, imageUri))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.into(width, height)
|
||||
.get();
|
||||
return glideRequests.asBitmap()
|
||||
.load(new DecryptableUri(masterSecret, imageUri))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.skipMemoryCache(true)
|
||||
.into(width, height)
|
||||
.get();
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
Log.w(TAG, e);
|
||||
return null;
|
||||
@@ -143,9 +141,9 @@ public class ScribbleView extends FrameLayout {
|
||||
private void initialize(@NonNull Context context) {
|
||||
inflate(context, R.layout.scribble_view, this);
|
||||
|
||||
this.imageView = (ImageView) findViewById(R.id.image_view);
|
||||
this.motionView = (MotionView) findViewById(R.id.motion_view);
|
||||
this.canvasView = (CanvasView) findViewById(R.id.canvas_view);
|
||||
this.imageView = findViewById(R.id.image_view);
|
||||
this.motionView = findViewById(R.id.motion_view);
|
||||
this.canvasView = findViewById(R.id.canvas_view);
|
||||
}
|
||||
|
||||
public void setMotionViewCallback(MotionView.MotionViewCallback callback) {
|
||||
|
||||
Reference in New Issue
Block a user