/*
* Copyright 2015 Priyesh Patel
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.chromium.fontinstaller.ui.fontlist;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.support.v4.util.LruCache;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.chromium.fontinstaller.R;
import com.chromium.fontinstaller.models.FontPackage;
import com.chromium.fontinstaller.models.Style;
import com.chromium.fontinstaller.ui.install.FontActivity;
import com.chromium.fontinstaller.util.FileUtils;
import java.util.ArrayList;
public final class FontListAdapter extends RecyclerView.Adapter<FontListAdapter.ViewHolder> {
private boolean mEnableTrueFont;
private ArrayList<String> mFontNames;
private LruCache<String, Typeface> mFontCache;
/* package */ FontListAdapter(Context context, ArrayList<String> fontNames, boolean enableTrueFont) {
mFontNames = fontNames;
mFontCache = new LruCache<>(FileUtils.getMaxCacheSize(context));
mEnableTrueFont = enableTrueFont;
setHasStableIds(true);
}
@Override public FontListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.font_list_item, parent, false);
return new ViewHolder(view);
}
@Override public void onBindViewHolder(ViewHolder holder, int position) {
final String currentFontName = mFontNames.get(position);
holder.fontName.setText(currentFontName);
if (mEnableTrueFont) {
Typeface currentFont = mFontCache.get(currentFontName);
if (currentFont == null) {
currentFont = new FontPackage(currentFontName).getTypeface(Style.REGULAR);
mFontCache.put(currentFontName, currentFont);
}
holder.fontName.setTypeface(currentFont);
}
}
@Override public long getItemId(int position) {
return mFontNames.get(position).hashCode();
}
@Override public int getItemCount() {
return mFontNames.size();
}
public final class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
final TextView fontName;
public ViewHolder(View view) {
super(view);
view.setOnClickListener(this);
fontName = (TextView) view.findViewById(R.id.font_name);
}
@Override public void onClick(View view) {
final Context context = view.getContext();
final String fontName = mFontNames.get(getLayoutPosition());
final Intent intent = FontActivity.getLaunchIntent(context, fontName);
context.startActivity(intent);
}
}
}