/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android; import android.content.Context; import android.database.Cursor; import android.util.DisplayMetrics; import android.util.FloatMath; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import com.galaxy.meetup.client.android.common.EsCompositeCursorAdapter; import com.galaxy.meetup.client.android.common.Recyclable; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.ui.view.ColumnGridView; import com.galaxy.meetup.client.android.ui.view.SquareListItemView; /** * * @author sihai * */ public class SquareCardAdapter extends EsCompositeCursorAdapter { private static boolean sInitialized; private static int sInvitationMinHeight; private static int sItemMargin; private static float sLargeDisplayTypeSizeCutoff = 6.9F; private static int sMinHeight; private static int sMinWidth; private static int sScreenDisplayType; protected EsAccount mAccount; private int mCardType; private ColumnGridView mColumnGridView; private LayoutInflater mInflater; private boolean mLandscape; protected SquareListItemView.OnItemClickListener mOnItemClickListener; public SquareCardAdapter(Context context, EsAccount esaccount, SquareListItemView.OnItemClickListener onitemclicklistener, ColumnGridView columngridview) { super(context); boolean flag = true; mCardType = 0; int i; boolean flag1; if(!sInitialized) { sInitialized = flag; WindowManager windowmanager = (WindowManager)context.getSystemService("window"); DisplayMetrics displaymetrics = new DisplayMetrics(); windowmanager.getDefaultDisplay().getMetrics(displaymetrics); float f = (float)displaymetrics.widthPixels / displaymetrics.xdpi; float f1 = (float)displaymetrics.heightPixels / displaymetrics.ydpi; int j; if(FloatMath.sqrt(f * f + f1 * f1) >= sLargeDisplayTypeSizeCutoff) j = ((flag) ? 1 : 0); else j = 0; sScreenDisplayType = j; sItemMargin = (int)(context.getResources().getDimension(R.dimen.card_margin_percentage) * (float)Math.min(displaymetrics.widthPixels, displaymetrics.heightPixels)); sMinWidth = context.getResources().getDimensionPixelSize(R.dimen.square_card_min_width); sMinHeight = context.getResources().getDimensionPixelSize(R.dimen.square_card_min_height); sInvitationMinHeight = context.getResources().getDimensionPixelSize(R.dimen.square_card_invitation_min_height); } mAccount = esaccount; mOnItemClickListener = onitemclicklistener; mColumnGridView = columngridview; addPartition(false, false); addPartition(false, false); mInflater = LayoutInflater.from(context); i = context.getResources().getConfiguration().orientation; flag1 = false; if(i == 2) flag1 = flag; mLandscape = flag1; if(mLandscape) { columngridview.setOrientation(1); columngridview.setColumnCount(-1); columngridview.setMinColumnWidth(sMinHeight); } else { columngridview.setOrientation(2); if(sScreenDisplayType != 0) columngridview.setColumnCount(2); else columngridview.setColumnCount(1); } columngridview.setItemMargin(sItemMargin); columngridview.setPadding(sItemMargin, sItemMargin, sItemMargin, sItemMargin); columngridview.setRecyclerListener(new ColumnGridView.RecyclerListener() { public final void onMovedToScrapHeap(View view) { if(view instanceof Recyclable) ((Recyclable)view).onRecycle(); } }); } private boolean showTallDescriptionHeader() { boolean flag = true; if(!mLandscape && sScreenDisplayType != 1) flag = false; return flag; } protected final void bindView(View view, int i, Cursor cursor, int j) { int k; int l; k = -2; l = 1; if(0 == i) { int i1 = mColumnGridView.getColumnCount(); if(!mLandscape) l = 2; if(mLandscape) k = sMinWidth; view.setLayoutParams(new ColumnGridView.LayoutParams(l, k, i1, i1)); } else if(1 == i) { if(cursor.getPosition() < getCount(l)) { SquareListItemView squarelistitemview = (SquareListItemView)view; boolean flag; int j1; boolean flag1; int k1; int l1; if(mCardType != 3) flag = true; else flag = false; j1 = mCardType; flag1 = false; if(j1 == 2) flag1 = true; squarelistitemview.init(cursor, mOnItemClickListener, flag, flag1); if(mLandscape) k1 = l; else k1 = 2; if(mLandscape) l1 = sMinWidth; else l1 = k; view.setLayoutParams(new ColumnGridView.LayoutParams(k1, l1, l, l)); } } } public final void changeDescriptionHeaderCursor(Cursor cursor) { super.changeCursor(0, cursor); } public final void changeSquaresCursor(Cursor cursor, int i) { super.changeCursor(1, cursor); if(mCardType != i) { mCardType = i; if(mLandscape) { ColumnGridView columngridview = mColumnGridView; int j; if(mCardType == 1) j = sInvitationMinHeight; else j = sMinHeight; columngridview.setMinColumnWidth(j); } mColumnGridView.setSelectionToTop(); } } protected final int getItemViewType(int i, int j) { int k = 1; if(0 == i) { if(showTallDescriptionHeader()) k = 3; else k = 2; } else { if(mCardType != k) k = 0; } return k; } public final int getViewTypeCount() { return 4; } protected final View newView(Context context, int partion, Cursor cursor, int position, ViewGroup parent) { View view = null; if(0 == partion) { if(showTallDescriptionHeader()) view = mInflater.inflate(R.layout.square_description_header_tall, parent, false); else view = mInflater.inflate(R.layout.square_description_header, parent, false); } else if(1 == partion) { if(mCardType == 1) view = mInflater.inflate(R.layout.square_list_invitation_view, parent, false); else view = mInflater.inflate(R.layout.square_list_item_view, parent, false); } return view; } }