package cw.kop.autobackground;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.PorterDuff;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.Collections;
import cw.kop.autobackground.files.FileHandler;
import cw.kop.autobackground.settings.AppSettings;
/**
* Created by TheKeeperOfPie on 4/11/2015.
*/
public class AdapterNavigation extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = AdapterNavigation.class.getCanonicalName();
private static final int HEADER = 0;
private static final int NAVIGATION_ITEM = 1;
private Activity activity;
private ArrayList<String> fragmentList;
private int[] iconImages = new int[] {
R.drawable.ic_view_list_white_24dp,
R.drawable.ic_now_wallpaper_white_24dp,
R.drawable.ic_file_download_white_24dp,
R.drawable.ic_account_circle_white_24dp,
R.drawable.ic_filter_white_24dp,
R.drawable.ic_notifications_white_24dp,
R.drawable.ic_watch_white_24dp,
R.drawable.ic_settings_white_24dp,
R.drawable.ic_history_white_24dp,
R.drawable.ic_info_white_24dp};
private int colorFilterInt;
private NavigationClickListener clickListener;
private float headerHeight;
public AdapterNavigation(Activity activity, String[] nameArray, NavigationClickListener clickListener) {
this.activity = activity;
this.clickListener = clickListener;
Configuration configuration = activity.getResources().getConfiguration();
headerHeight = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
Math.min(180, (configuration.screenWidthDp - 56) / 16f * 9),
activity.getResources().getDisplayMetrics()));
fragmentList = new ArrayList<>();
Collections.addAll(fragmentList, nameArray);
colorFilterInt = AppSettings.getColorFilterInt(activity);
}
@Override
public int getItemViewType(int position) {
return position == 0 ? HEADER : NAVIGATION_ITEM;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == HEADER) {
return new ViewHolderHeader(LayoutInflater.from(parent.getContext()).inflate(R.layout.nav_header, parent, false));
}
return new ViewHolderNavigation(LayoutInflater.from(parent.getContext()).inflate(R.layout.nav_row, parent, false));
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ViewHolderHeader) {
ViewHolderHeader viewHolderHeader = (ViewHolderHeader) holder;
Picasso.with(activity).load(FileHandler.getCurrentBitmapFile()).fit().centerCrop().into(viewHolderHeader.imageHeader);
Log.d(TAG, "Loaded header image");
}
else if (holder instanceof ViewHolderNavigation) {
position--;
ViewHolderNavigation viewHolderNavigation = (ViewHolderNavigation) holder;
viewHolderNavigation.fragmentImage.setImageResource(iconImages[position]);
viewHolderNavigation.fragmentTitle.setText(fragmentList.get(position));
}
}
@Override
public int getItemCount() {
return fragmentList.size() + 1;
}
public void loadNavPicture() {
notifyItemChanged(0);
}
protected class ViewHolderHeader extends RecyclerView.ViewHolder {
protected final ImageView imageHeader;
public ViewHolderHeader(View itemView) {
super(itemView);
imageHeader = (ImageView) itemView.findViewById(R.id.image_header);
itemView.getLayoutParams().height = (int) headerHeight;
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LiveWallpaperService.OPEN_IMAGE);
clickListener.sendIntent(intent);
}
});
itemView.requestLayout();
}
}
protected class ViewHolderNavigation extends RecyclerView.ViewHolder {
protected final ImageView fragmentImage;
protected final TextView fragmentTitle;
public ViewHolderNavigation(View itemView) {
super(itemView);
fragmentImage = (ImageView) itemView.findViewById(R.id.fragment_image);
fragmentTitle = (TextView) itemView.findViewById(R.id.fragment_title);
fragmentImage.setColorFilter(colorFilterInt, PorterDuff.Mode.MULTIPLY);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickListener.onItemClick(getPosition() - 1);
}
});
}
}
public interface NavigationClickListener {
void onItemClick(int position);
void sendIntent(Intent intent);
}
}