Allow bitmap thumbnails

This commit is contained in:
RichyHBM 2017-11-27 20:54:08 +00:00
parent 85f1a86b5d
commit df3ff7536c
5 changed files with 47 additions and 20 deletions

View file

@ -142,19 +142,19 @@ public class Entry {
try {
this.digits = jsonObj.getInt(JSON_DIGITS);
} catch(JSONException e) {
} catch(Exception e) {
this.digits = TokenCalculator.TOTP_DEFAULT_DIGITS;
}
try {
this.type = OTPType.valueOf(jsonObj.getString(JSON_TYPE));
} catch(JSONException e) {
} catch(Exception e) {
this.type = DEFAULT_TYPE;
}
try {
this.algorithm = TokenCalculator.HashAlgorithm.valueOf(jsonObj.getString(JSON_ALGORITHM));
} catch (JSONException e) {
} catch (Exception e) {
this.algorithm = TokenCalculator.DEFAULT_ALGORITHM;
}
@ -164,13 +164,13 @@ public class Entry {
for(int i = 0; i < tagsArray.length(); i++) {
this.tags.add(tagsArray.getString(i));
}
} catch (JSONException e) {
} catch (Exception e) {
e.printStackTrace();
}
try {
this.thumbnail = EntryThumbnail.EntryThumbnails.values()[jsonObj.getInt(JSON_THUMBNAIL)];
} catch(JSONException e) {
this.thumbnail = EntryThumbnail.EntryThumbnails.valueOf(jsonObj.getString(JSON_THUMBNAIL));
} catch(Exception e) {
this.thumbnail = EntryThumbnail.EntryThumbnails.Default;
}
}
@ -183,7 +183,7 @@ public class Entry {
jsonObj.put(JSON_DIGITS, getDigits());
jsonObj.put(JSON_TYPE, getType().toString());
jsonObj.put(JSON_ALGORITHM, algorithm.toString());
jsonObj.put(JSON_THUMBNAIL, getThumbnail().ordinal());
jsonObj.put(JSON_THUMBNAIL, getThumbnail().name());
JSONArray tagsArray = new JSONArray();
for(String tag : tags){

View file

@ -9,19 +9,34 @@ import android.graphics.drawable.Drawable;
import org.shadowice.flocke.andotp.R;
public class EntryThumbnail {
private enum AssetType {
Bitmap,
Vector
}
public enum EntryThumbnails {
Default(R.mipmap.ic_launcher_round),
Github(R.drawable.ic_github);
private int resource;
private AssetType assetType;
EntryThumbnails(int resource) {
this.resource = resource;
this.assetType = AssetType.Vector;
}
EntryThumbnails(int resource, AssetType assetType) {
this.resource = resource;
this.assetType = assetType;
}
public int getResource() {
return resource;
}
public AssetType getAssetType() {
return assetType;
}
}
public static Bitmap getThumbnailGraphic(Context context, String label, int size, EntryThumbnails thumbnail) {
@ -31,13 +46,17 @@ public class EntryThumbnail {
}
try {
Drawable drawable = context.getResources().getDrawable(thumbnail.getResource());
Bitmap bitmap = Bitmap.createBitmap(drawable.getMinimumWidth(), drawable.getMinimumHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
drawable.draw(canvas);
return bitmap;
} catch(Exception e) {
if(thumbnail.getAssetType() == AssetType.Vector) {
Drawable drawable = context.getResources().getDrawable(thumbnail.getResource());
Bitmap bitmap = Bitmap.createBitmap(drawable.getMinimumWidth(), drawable.getMinimumHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
drawable.draw(canvas);
return bitmap;
} else {
return BitmapFactory.decodeResource(context.getResources(), thumbnail.getResource());
}
} catch (Exception e) {
e.printStackTrace();
}

View file

@ -284,7 +284,8 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
int marginSmall = context.getResources().getDimensionPixelSize(R.dimen.activity_margin_small);
int marginMedium = context.getResources().getDimensionPixelSize(R.dimen.activity_margin_medium);
final ThumbnailSelectionAdapter thumbnailAdapter = new ThumbnailSelectionAdapter(context);
int realIndex = getRealIndex(pos);
final ThumbnailSelectionAdapter thumbnailAdapter = new ThumbnailSelectionAdapter(context, entries.get(realIndex).getLabel());
final EditText input = new EditText(context);
input.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
@ -306,7 +307,7 @@ public class EntriesCardAdapter extends RecyclerView.Adapter<EntryViewHolder>
GridView grid = new GridView(context);
grid.setAdapter(thumbnailAdapter);
grid.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
grid.setColumnWidth(context.getResources().getDimensionPixelSize(R.dimen.card_thumbnail_size_small));
grid.setColumnWidth(context.getResources().getDimensionPixelSize(R.dimen.card_thumbnail_size));
grid.setNumColumns(GridView.AUTO_FIT);
grid.setVerticalSpacing(context.getResources().getDimensionPixelSize(R.dimen.activity_margin_medium));
grid.setHorizontalSpacing(context.getResources().getDimensionPixelSize(R.dimen.activity_margin_medium));

View file

@ -148,6 +148,12 @@ public class EntryViewHolder extends RecyclerView.ViewHolder
tags.setTextSize(TypedValue.COMPLEX_UNIT_PT, size - 2);
}
public void setThumbnailSize(int size) {
thumbnailImg.getLayoutParams().height = size;
thumbnailImg.getLayoutParams().width = size;
thumbnailImg.requestLayout();
}
public void setLabelScroll(boolean active) {
if (active) {
label.setEllipsize(TextUtils.TruncateAt.MARQUEE);

View file

@ -21,11 +21,12 @@ import java.util.List;
public class ThumbnailSelectionAdapter extends BaseAdapter {
private Context context;
private List items;
private String label = "Example";
ThumbnailSelectionAdapter(Context context) {
ThumbnailSelectionAdapter(Context context, String label) {
items = new ArrayList(EntryThumbnail.EntryThumbnails.values().length);
Collections.addAll(items, EntryThumbnail.EntryThumbnails.values());
this.label = label;
this.context = context;
}
@ -60,7 +61,7 @@ public class ThumbnailSelectionAdapter extends BaseAdapter {
@NonNull
@Override
public View getView(int i, View view, @NonNull ViewGroup viewGroup) {
int size = context.getResources().getDimensionPixelSize(R.dimen.card_thumbnail_size_small);
int size = context.getResources().getDimensionPixelSize(R.dimen.card_thumbnail_size);
ImageView imageView;
if (view == null) {
imageView = new ImageView(context);
@ -71,7 +72,7 @@ public class ThumbnailSelectionAdapter extends BaseAdapter {
EntryThumbnail.EntryThumbnails thumb = (EntryThumbnail.EntryThumbnails)getItem(i);
imageView.setImageBitmap(EntryThumbnail.getThumbnailGraphic(context, thumb.name(), size, thumb));
imageView.setImageBitmap(EntryThumbnail.getThumbnailGraphic(context, label, size, thumb));
return imageView;
}
}