package at.maui.flopsydroid.android.adapter;
import android.app.Activity;
import android.content.Context;
import android.support.wearable.view.GridPagerAdapter;
import android.support.wearable.view.ImageReference;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import at.maui.flopsydroid.android.Utils;
import at.maui.flopsydroid.android.widgets.WearButton;
/**
* Created by maui on 04.07.2014.
*/
public class MenuGridViewPagerAdapter extends GridPagerAdapter {
private Context mContext;
private Menu mMenu;
private int mBackroundRes;
private OnItemClickListener mListener;
public MenuGridViewPagerAdapter(Context ctx, Menu menu) {
mMenu = menu;
mContext = ctx;
}
public MenuGridViewPagerAdapter(Activity activity, int menuResource) {
mMenu = Utils.newMenuInstance(activity);
activity.getMenuInflater().inflate(menuResource, mMenu);
mContext = activity;
}
@Override
public ImageReference getBackground(int row, int column) {
return mBackroundRes == 0 ? ImageReference.NONE : ImageReference.forDrawable(mBackroundRes);
}
@Override
public int getRowCount() {
return 1;
}
@Override
public int getColumnCount(int i) {
return mMenu.size();
}
@Override
protected Object instantiateItem(ViewGroup viewGroup, int row, int col) {
final MenuItem item = mMenu.getItem(col);
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
ll.setPadding(40, 40, 40, 40);
if(item.getIcon() != null) {
WearButton button = new WearButton(mContext);
button.setImageDrawable(item.getIcon());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 0);
lp.weight = 1;
lp.setMargins(45,0,45,45);
ll.addView(button, lp);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mListener != null) {
mListener.onItemClicked(v, item);
}
}
});
}
TextView tv = new TextView(mContext);
tv.setText(item.getTitle());
tv.setTextAppearance(mContext, android.R.style.TextAppearance_Medium);
tv.setGravity(Gravity.CENTER);
ll.addView(tv);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
ll.setTag(item.getItemId());
viewGroup.addView(ll, lp);
return item;
}
@Override
protected void destroyItem(ViewGroup viewGroup, int i, int i2, Object o) {
}
@Override
public boolean isViewFromObject(View view, Object o) {
MenuItem item = (MenuItem) o;
int tag = (Integer)view.getTag();
return item.getItemId() == tag;
}
public int getBackroundRes() {
return mBackroundRes;
}
public void setBackroundRes(int backroundRes) {
this.mBackroundRes = backroundRes;
}
public OnItemClickListener getOnItemClickedListener() {
return mListener;
}
public void setOnItemClickedListener(OnItemClickListener mListener) {
this.mListener = mListener;
}
public interface OnItemClickListener {
public void onItemClicked(View v, MenuItem item);
}
}