package com.mozu.mozuandroidinstoreassistant.app.order.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.mozu.mozuandroidinstoreassistant.app.R;
import com.mozu.mozuandroidinstoreassistant.app.data.IData;
import com.mozu.mozuandroidinstoreassistant.app.data.order.BottomRowItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentColumnHeader;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentDividerRowItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentFulfilledDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentMoveToDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentPackageDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FulfillmentPickupItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.FullfillmentCategoryHeaderDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.PickupFulfillmentTitleDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.ShipmentFulfillmentTitleDataItem;
import com.mozu.mozuandroidinstoreassistant.app.data.order.TopRowItem;
import com.mozu.mozuandroidinstoreassistant.app.layout.IRowLayout;
import com.mozu.mozuandroidinstoreassistant.app.layout.order.FulfillmentMoveToRow;
import com.mozu.mozuandroidinstoreassistant.app.layout.order.FulfillmentMoveToRow.MoveToListener;
import com.mozu.mozuandroidinstoreassistant.app.layout.order.FulfillmentPickupItemRow;
import java.util.ArrayList;
import java.util.List;
public class OrderDetailFullfillmentAdapter extends BaseAdapter {
private final MoveToListener mListener;
List<IData> mData = new ArrayList<>();
private FulfillmentPickupItemRow.MarkPickupAsFulfilledListener mFulfillListener;
public OrderDetailFullfillmentAdapter(Context context, List<IData> data, MoveToListener listener, FulfillmentPickupItemRow.MarkPickupAsFulfilledListener fulfilledListener) {
mData = data;
mListener = listener;
mFulfillListener = fulfilledListener;
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
public int getCount() {
return mData.size();
}
public RowType getRowType(int position) {
IData dataItem = getItem(position);
if (dataItem instanceof FullfillmentCategoryHeaderDataItem) {
return RowType.CATEGORY_ROW;
} else if (dataItem instanceof ShipmentFulfillmentTitleDataItem) {
return RowType.SHIPMENT_TITLE_ROW;
} else if (dataItem instanceof PickupFulfillmentTitleDataItem) {
return RowType.PICKUP_TITLE_ROW;
} else if (dataItem instanceof FulfillmentDataItem) {
return RowType.ITEM_ROW;
} else if (dataItem instanceof FulfillmentPackageDataItem) {
return RowType.PACKAGE_ROW;
} else if (dataItem instanceof TopRowItem) {
return RowType.TOP_ROW;
} else if (dataItem instanceof BottomRowItem) {
return RowType.BOTTOM_ROW;
} else if (dataItem instanceof FulfillmentPickupItem) {
return RowType.PICKUP_ITEM_ROW;
} else if (dataItem instanceof FulfillmentDividerRowItem) {
return RowType.DIVIDER_ROW;
} else if (dataItem instanceof FulfillmentColumnHeader) {
return RowType.COLUMN_ROW;
} else if (dataItem instanceof FulfillmentMoveToDataItem) {
return RowType.MOVE_TO;
} else if (dataItem instanceof FulfillmentFulfilledDataItem) {
return RowType.FULFILLED_ROW;
} else {
return RowType.EMPTY_ROW;
}
}
@Override
public int getItemViewType(int position) {
return getRowType(position).ordinal();
}
@Override
public int getViewTypeCount() {
return RowType.values().length;
}
@Override
public IData getItem(int i) {
return mData.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
if (convertView == null) {
RowType rowType = getRowType(position);
switch (rowType) {
case SHIPMENT_TITLE_ROW:
convertView = inflater.inflate(R.layout.order_fullfilment_title, null);
break;
case PICKUP_TITLE_ROW:
convertView = inflater.inflate(R.layout.order_pickup_fullfillment_title, null);
break;
case CATEGORY_ROW:
convertView = inflater.inflate(R.layout.fullfillment_sub_header, null);
break;
case PACKAGE_ROW:
convertView = inflater.inflate(R.layout.fullfillment_package_item, null);
break;
case ITEM_ROW:
convertView = inflater.inflate(R.layout.fullfilment_ship_item, null);
break;
case TOP_ROW:
convertView = inflater.inflate(R.layout.top_row_layout, null);
break;
case BOTTOM_ROW:
convertView = inflater.inflate(R.layout.bottom_row, null);
break;
case PICKUP_ITEM_ROW:
convertView = inflater.inflate(R.layout.fulfillment_pickup_item, null);
((FulfillmentPickupItemRow) convertView).setMarkAsFulfilledListener(mFulfillListener);
break;
case DIVIDER_ROW:
convertView = inflater.inflate(R.layout.order_fullfillment_divider_row, null);
break;
case COLUMN_ROW:
convertView = inflater.inflate(R.layout.fullfillment_column_header, null);
break;
case MOVE_TO:
convertView = inflater.inflate(R.layout.fulfillment_move_to_row, null);
((FulfillmentMoveToRow) convertView).setResponseListener(mListener);
break;
case FULFILLED_ROW:
convertView = inflater.inflate(R.layout.fulfillment_fulfilled_row, null);
break;
}
}
IRowLayout rowItem = (IRowLayout) convertView;
if (rowItem != null)
rowItem.bindData(getItem(position));
return convertView;
}
public void setData(List<IData> data) {
mData = data;
}
public enum RowType {
SHIPMENT_TITLE_ROW,
PICKUP_TITLE_ROW,
CATEGORY_ROW,
ITEM_ROW,
PACKAGE_ROW,
PICKUP_ITEM_ROW,
EMPTY_ROW,
TOP_ROW,
BOTTOM_ROW,
DIVIDER_ROW,
COLUMN_ROW,
MOVE_TO,
FULFILLED_ROW
}
}