mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-30 12:32:17 -05:00
Cache input file thumbnail.
This commit is contained in:
parent
1ebb92b336
commit
b206b6d351
@ -38,9 +38,13 @@ import org.sufficientlysecure.keychain.R;
|
|||||||
import org.sufficientlysecure.keychain.helper.FileHelper;
|
import org.sufficientlysecure.keychain.helper.FileHelper;
|
||||||
import org.sufficientlysecure.keychain.helper.OtherHelper;
|
import org.sufficientlysecure.keychain.helper.OtherHelper;
|
||||||
import org.sufficientlysecure.keychain.provider.TemporaryStorageProvider;
|
import org.sufficientlysecure.keychain.provider.TemporaryStorageProvider;
|
||||||
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class EncryptFileFragment extends Fragment implements EncryptActivityInterface.UpdateListener {
|
public class EncryptFileFragment extends Fragment implements EncryptActivityInterface.UpdateListener {
|
||||||
public static final String ARG_URIS = "uris";
|
public static final String ARG_URIS = "uris";
|
||||||
@ -55,6 +59,7 @@ public class EncryptFileFragment extends Fragment implements EncryptActivityInte
|
|||||||
private View mShareFile;
|
private View mShareFile;
|
||||||
private View mEncryptFile;
|
private View mEncryptFile;
|
||||||
private SelectedFilesAdapter mAdapter = new SelectedFilesAdapter();
|
private SelectedFilesAdapter mAdapter = new SelectedFilesAdapter();
|
||||||
|
private final Map<Uri, Bitmap> thumbnailCache = new HashMap<Uri, Bitmap>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Activity activity) {
|
public void onAttach(Activity activity) {
|
||||||
@ -237,6 +242,14 @@ public class EncryptFileFragment extends Fragment implements EncryptActivityInte
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNotifyUpdate() {
|
public void onNotifyUpdate() {
|
||||||
|
// Clear cache if needed
|
||||||
|
for (Uri uri : new HashSet<Uri>(thumbnailCache.keySet())) {
|
||||||
|
if (!mEncryptInterface.getInputUris().contains(uri)) {
|
||||||
|
Log.d(Constants.TAG, "Removed thumbnail for uri: "+uri);
|
||||||
|
thumbnailCache.remove(uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mAdapter.notifyDataSetChanged();
|
mAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,14 +271,15 @@ public class EncryptFileFragment extends Fragment implements EncryptActivityInte
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View getView(final int position, View convertView, ViewGroup parent) {
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
||||||
|
Uri inputUri = mEncryptInterface.getInputUris().get(position);
|
||||||
View view;
|
View view;
|
||||||
if (convertView == null) {
|
if (convertView == null) {
|
||||||
view = getActivity().getLayoutInflater().inflate(R.layout.file_list_entry, null);
|
view = getActivity().getLayoutInflater().inflate(R.layout.file_list_entry, null);
|
||||||
} else {
|
} else {
|
||||||
view = convertView;
|
view = convertView;
|
||||||
}
|
}
|
||||||
((TextView) view.findViewById(R.id.filename)).setText(FileHelper.getFilename(getActivity(), mEncryptInterface.getInputUris().get(position)));
|
((TextView) view.findViewById(R.id.filename)).setText(FileHelper.getFilename(getActivity(), inputUri));
|
||||||
long size = FileHelper.getFileSize(getActivity(), mEncryptInterface.getInputUris().get(position));
|
long size = FileHelper.getFileSize(getActivity(), inputUri);
|
||||||
if (size == -1) {
|
if (size == -1) {
|
||||||
((TextView) view.findViewById(R.id.filesize)).setText("");
|
((TextView) view.findViewById(R.id.filesize)).setText("");
|
||||||
} else {
|
} else {
|
||||||
@ -278,7 +292,10 @@ public class EncryptFileFragment extends Fragment implements EncryptActivityInte
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
int px = OtherHelper.dpToPx(getActivity(), 48);
|
int px = OtherHelper.dpToPx(getActivity(), 48);
|
||||||
Bitmap bitmap = FileHelper.getThumbnail(getActivity(), mEncryptInterface.getInputUris().get(position), new Point(px, px));
|
if (!thumbnailCache.containsKey(inputUri)) {
|
||||||
|
thumbnailCache.put(inputUri, FileHelper.getThumbnail(getActivity(), inputUri, new Point(px, px)));
|
||||||
|
}
|
||||||
|
Bitmap bitmap = thumbnailCache.get(inputUri);
|
||||||
if (bitmap != null) {
|
if (bitmap != null) {
|
||||||
((ImageView) view.findViewById(R.id.thumbnail)).setImageBitmap(bitmap);
|
((ImageView) view.findViewById(R.id.thumbnail)).setImageBitmap(bitmap);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user