package com.ijoomer.common.classes; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.Toast; import com.ijoomer.custom.interfaces.CustomClickListner; import com.ijoomer.custom.interfaces.FilterListener; import com.ijoomer.customviews.IjoomerButton; import com.ijoomer.customviews.IjoomerCheckBox; import com.ijoomer.customviews.IjoomerEditText; import com.ijoomer.customviews.IjoomerRadioButton; import com.ijoomer.customviews.IjoomerTextView; import com.ijoomer.src.R; import com.smart.framework.ItemView; import com.smart.framework.SmartActivity; import com.smart.framework.SmartListAdapterWithHolder; import com.smart.framework.SmartListItem; import java.util.ArrayList; /** * This Class Contains All Method Related To FilterVIew. * * @author tasol * NOTE : currently this class not used,future development */ public class FilterVIew { private PopupWindow filterPopUp; private Context mContext; private int filterHeight; private int filterWidth; private ArrayList<FilterItem> filterItems; private ListView lstFilterData; private LinearLayout lnrFilterItems; private IjoomerButton btnApplyl; private IjoomerButton btnReset; private LinearLayout lnrMultiSelection; private IjoomerButton btnAll; private IjoomerButton btnNone; private ArrayList<SmartListItem> filterListData; private int currentSelectedItemIndex = 0; private FilterListener local; private LinearLayout lnrList; private LinearLayout lnrDate; private IjoomerEditText edtStartDate; private IjoomerEditText edtEndDate; private LinearLayout lnrTime; private IjoomerEditText edtStartTime; private IjoomerEditText edtEndTime; private LinearLayout lnrLocation; public static final int DATE = 1; public static final int TIME = 2; public static final int LOCATION = 3; public FilterVIew(Context mContext) { this.mContext = mContext; filterItems = new ArrayList<FilterItem>(); filterListData = new ArrayList<SmartListItem>(); filterHeight = ((SmartActivity) mContext).getDeviceWidth(); filterWidth = ((SmartActivity) mContext).getDeviceHeight(); } public void setOnFilterListener(FilterListener filterListener) { local = filterListener; } public int getFilterHeight() { return filterHeight; } public void setFilterHeight(int filterHeight) { this.filterHeight = filterHeight; } public int getFilterWidth() { return filterWidth; } public void setFilterWidth(int filterWidth) { this.filterWidth = filterWidth; } public void addFilterItem(String itemCaption, Drawable itemIconNormal, Drawable itemIconActive, String defaultItem, ArrayList<String> dataToFilter, boolean allowMultiSelection) { FilterItem filterItem = new FilterItem(); filterItem.setItemCaption(itemCaption); filterItem.setItemIconNormal(itemIconNormal); filterItem.setItemIconActive(itemIconActive); filterItem.setDefaultItem(defaultItem); filterItem.setItemData(dataToFilter); ArrayList<String> selected = new ArrayList<String>(); if (allowMultiSelection) { if (defaultItem.trim().length() <= 0) { selected.addAll(dataToFilter); } else { selected.add(defaultItem); } } else { selected.add(defaultItem); } filterItem.setSelectedItems(selected); filterItem.setAllowMultipleSelection(allowMultiSelection); filterItem.setHasChange(false); filterItems.add(filterItem); } public void addFilterItem(String itemCaption, Drawable itemIconNormal, Drawable itemIconActive, int type) { FilterItem filterItem = new FilterItem(); filterItem.setItemCaption(itemCaption); filterItem.setItemIconNormal(itemIconNormal); filterItem.setItemIconActive(itemIconActive); filterItem.setHasChange(false); filterItem.setType(type); filterItems.add(filterItem); } @SuppressWarnings("deprecation") public void showFilter() { if (filterItems.size() <= 0) { Toast.makeText(mContext, "please add filterItems", Toast.LENGTH_SHORT).show(); } else { try { LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = layoutInflater.inflate(R.layout.smart_filter, null); filterPopUp = new PopupWindow(mContext); filterPopUp.setContentView(layout); filterPopUp.setWidth(getFilterWidth()); filterPopUp.setHeight(getFilterHeight()); filterPopUp.setFocusable(true); filterPopUp.setBackgroundDrawable(new BitmapDrawable(mContext.getResources())); filterPopUp.showAtLocation(layout, Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0); lnrLocation = (LinearLayout) layout.findViewById(R.id.lnrLocation); lnrList = (LinearLayout) layout.findViewById(R.id.lnrList); lstFilterData = (ListView) layout.findViewById(R.id.lstFilterData); lnrFilterItems = (LinearLayout) layout.findViewById(R.id.lnrFilterItems); btnReset = (IjoomerButton) layout.findViewById(R.id.btnReset); btnApplyl = (IjoomerButton) layout.findViewById(R.id.btnApply); btnAll = (IjoomerButton) layout.findViewById(R.id.btnAll); btnNone = (IjoomerButton) layout.findViewById(R.id.btnNone); lnrMultiSelection = (LinearLayout) layout.findViewById(R.id.lnrMultiSelection); lnrDate = (LinearLayout) layout.findViewById(R.id.lnrDate); edtStartDate = (IjoomerEditText) layout.findViewById(R.id.edtStartDate); edtEndDate = (IjoomerEditText) layout.findViewById(R.id.edtEndDate); edtEndDate.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { IjoomerUtilities.getDateDialog(((IjoomerEditText) v).getText().toString(), false, new CustomClickListner() { @Override public void onClick(String value) { ((IjoomerEditText) v).setText(value); } }); } }); edtStartDate.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { IjoomerUtilities.getDateDialog(((IjoomerEditText) v).getText().toString(), false, new CustomClickListner() { @Override public void onClick(String value) { ((IjoomerEditText) v).setText(value); } }); } }); lnrTime = (LinearLayout) layout.findViewById(R.id.lnrTime); edtStartTime = (IjoomerEditText) layout.findViewById(R.id.edtStartTime); edtEndTime = (IjoomerEditText) layout.findViewById(R.id.edtEndTime); edtEndTime.setOnClickListener(new OnClickListener() { @SuppressWarnings("unused") @Override public void onClick(final View v) { int h; int m; if (((IjoomerEditText) v).getText().toString() != null && ((IjoomerEditText) v).getText().toString().length() > 0) { h = Integer.parseInt(((IjoomerEditText) v).getText().toString().split(":")[0]); m = Integer.parseInt(((IjoomerEditText) v).getText().toString().split(":")[1]); } IjoomerUtilities.getTimeDialog("", new CustomClickListner() { @Override public void onClick(String value) { ((IjoomerEditText) v).setText(value); } }); } }); edtStartTime.setOnClickListener(new OnClickListener() { @SuppressWarnings("unused") @Override public void onClick(final View v) { int h; int m; if (((IjoomerEditText) v).getText().toString() != null && ((IjoomerEditText) v).getText().toString().length() > 0) { h = Integer.parseInt(((IjoomerEditText) v).getText().toString().split(":")[0]); m = Integer.parseInt(((IjoomerEditText) v).getText().toString().split(":")[1]); } IjoomerUtilities.getTimeDialog("", new CustomClickListner() { @Override public void onClick(String value) { ((IjoomerEditText) v).setText(value); } }); } }); btnApplyl.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (local != null) { local.onFilterApply(filterItems); } } }); btnAll.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { filterItems.get(currentSelectedItemIndex).getSelectedItems().clear(); filterItems.get(currentSelectedItemIndex).getSelectedItems().addAll(filterItems.get(currentSelectedItemIndex).getItemData()); prepareFilterList(filterItems.get(currentSelectedItemIndex)); lstFilterData.setAdapter(getFilterListAdapter()); invalidateView(); } }); btnNone.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { filterItems.get(currentSelectedItemIndex).getSelectedItems().clear(); prepareFilterList(filterItems.get(currentSelectedItemIndex)); lstFilterData.setAdapter(getFilterListAdapter()); invalidateView(); } }); btnReset.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { filterPopUp.dismiss(); } }); currentSelectedItemIndex = 0; prepareFilterItem(filterItems.get(0)); int size = filterItems.size(); for (int i = 0; i < size; i++) { View v = layoutInflater.inflate(R.layout.filter_tab_item, null); final FilterItem filterItem = filterItems.get(i); ((IjoomerTextView) v.findViewById(R.id.btnItem)).setText(filterItem.getItemCaption()); final LinearLayout lnrItem = (LinearLayout) v.findViewById(R.id.lnrItem); lnrItem.setTag(i); lnrFilterItems.addView(v, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); lnrItem.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { currentSelectedItemIndex = (Integer) v.getTag(); prepareFilterItem(filterItems.get(currentSelectedItemIndex)); invalidateView(); if (!filterItem.getItemCaption().equalsIgnoreCase(filterItems.get(currentSelectedItemIndex).getItemCaption())) { } } }); } invalidateView(); } catch (Throwable e) { e.printStackTrace(); } } } private SmartListAdapterWithHolder getFilterListAdapter() { final SmartListAdapterWithHolder adapterWithHolder = new SmartListAdapterWithHolder(mContext, R.layout.filter_list_item, filterListData, new ItemView() { @Override public View setItemView(final int position, View v, SmartListItem item, ViewHolder holder) { holder.txtFilterString = (IjoomerTextView) v.findViewById(R.id.txtFilterString); holder.rdbSelectItem = (IjoomerRadioButton) v.findViewById(R.id.rdbSelectItem); holder.chkSelectItem = (IjoomerCheckBox) v.findViewById(R.id.chkSelectItem); final String strFilter = item.getValues().get(0).toString(); final Boolean isSelected = (Boolean) item.getValues().get(1); holder.txtFilterString.setText(strFilter); if (filterItems.get(currentSelectedItemIndex).isAllowMultipleSelection()) { holder.chkSelectItem.setVisibility(View.VISIBLE); holder.rdbSelectItem.setVisibility(View.GONE); if (isSelected) { holder.chkSelectItem.setChecked(true); } else { holder.chkSelectItem.setChecked(false); } } else { holder.rdbSelectItem.setVisibility(View.VISIBLE); holder.chkSelectItem.setVisibility(View.GONE); if (isSelected) { holder.rdbSelectItem.setChecked(true); } else { holder.rdbSelectItem.setChecked(false); } } holder.txtFilterString.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { performItemClick(strFilter); } }); holder.chkSelectItem.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { performItemClick(strFilter); } }); holder.rdbSelectItem.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { performItemClick(strFilter); } }); return v; } @Override public View setItemView(int position, View v, SmartListItem item) { return null; } }); return adapterWithHolder; } private void prepareFilterList(FilterItem filterItem) { filterListData.clear(); filterItem.setHasChange(false); if (filterItem.isAllowMultipleSelection()) { if (filterItem.getDefaultItem() == null || filterItem.getDefaultItem().trim().length() <= 0) { if ((filterItem.getSelectedItems().size() < filterItem.getItemData().size())) { filterItem.setHasChange(true); } } else if (filterItem.getSelectedItems().size() > 1 || filterItem.getSelectedItems().size() <= 0) { filterItem.setHasChange(true); } else if (filterItem.getSelectedItems().size() == 1 && !(filterItem.getSelectedItems().contains(filterItem.getDefaultItem()))) { filterItem.setHasChange(true); } } else { if (filterItem.getSelectedItems().contains(filterItem.getDefaultItem())) { filterItem.setHasChange(false); } else { filterItem.setHasChange(true); } } int size = filterItem.getItemData().size(); for (int i = 0; i < size ; i++) { SmartListItem item = new SmartListItem(); item.setItemLayout(R.layout.filter_list_item); ArrayList<Object> obj = new ArrayList<Object>(); obj.add(filterItem.getItemData().get(i)); if (filterItem.getDefaultItem().trim().length() <= 0 && filterItem.getSelectedItems().size() == filterItem.getItemData().size()) { obj.add(true); } else { if (filterItem.getSelectedItems().contains(filterItem.getItemData().get(i))) { obj.add(true); } else { obj.add(false); } } item.setValues(obj); filterListData.add(item); } } private void prepareFilterItem(FilterItem filterItem) { if (filterItem.getType() == DATE) { lnrDate.setVisibility(View.VISIBLE); lnrList.setVisibility(View.GONE); lnrTime.setVisibility(View.GONE); lnrLocation.setVisibility(View.GONE); } else if (filterItem.getType() == TIME) { lnrDate.setVisibility(View.GONE); lnrList.setVisibility(View.GONE); lnrTime.setVisibility(View.VISIBLE); lnrLocation.setVisibility(View.GONE); } else if (filterItem.getType() == LOCATION) { lnrDate.setVisibility(View.GONE); lnrList.setVisibility(View.GONE); lnrTime.setVisibility(View.GONE); lnrLocation.setVisibility(View.VISIBLE); } else { lnrDate.setVisibility(View.GONE); lnrList.setVisibility(View.VISIBLE); lnrTime.setVisibility(View.GONE); lnrLocation.setVisibility(View.GONE); prepareFilterList(filterItem); lstFilterData.setAdapter(getFilterListAdapter()); } } @SuppressWarnings("deprecation") private void invalidateView() { if (filterItems.get(currentSelectedItemIndex).isAllowMultipleSelection()) { lnrMultiSelection.setVisibility(View.VISIBLE); } else { lnrMultiSelection.setVisibility(View.GONE); } int size = filterItems.size(); for (int j = 0; j < size; j++) { if (j == currentSelectedItemIndex) { if (filterItems.get(j).isHasChange()) { ((LinearLayout) lnrFilterItems.getChildAt(j).findViewById(R.id.lnrItem)).setBackgroundDrawable(mContext.getResources().getDrawable( R.drawable.filter_selected_haschange)); } else { ((LinearLayout) lnrFilterItems.getChildAt(j).findViewById(R.id.lnrItem)).setBackgroundDrawable(mContext.getResources().getDrawable( R.drawable.filter_selected_nochange)); } ((ImageView) ((LinearLayout) lnrFilterItems.getChildAt(j).findViewById(R.id.lnrItem)).findViewById(R.id.imgItemIcon)).setImageDrawable(filterItems.get(j) .getItemIconActive()); } else { if (filterItems.get(j).isHasChange()) { ((LinearLayout) lnrFilterItems.getChildAt(j).findViewById(R.id.lnrItem)).setBackgroundDrawable(mContext.getResources().getDrawable( R.drawable.filter_default_haschange)); } else { ((LinearLayout) lnrFilterItems.getChildAt(j).findViewById(R.id.lnrItem)).setBackgroundDrawable(mContext.getResources().getDrawable( R.drawable.filter_default_nochange)); } ((ImageView) ((LinearLayout) lnrFilterItems.getChildAt(j).findViewById(R.id.lnrItem)).findViewById(R.id.imgItemIcon)).setImageDrawable(filterItems.get(j) .getItemIconNormal()); } } } private void performItemClick(String strFilter) { if (filterItems.get(currentSelectedItemIndex).isAllowMultipleSelection()) { if (filterItems.get(currentSelectedItemIndex).getSelectedItems().contains(strFilter)) { filterItems.get(currentSelectedItemIndex).getSelectedItems().remove(strFilter); } else { filterItems.get(currentSelectedItemIndex).getSelectedItems().add(strFilter); } prepareFilterList(filterItems.get(currentSelectedItemIndex)); lstFilterData.setAdapter(getFilterListAdapter()); } else { filterItems.get(currentSelectedItemIndex).getSelectedItems().clear(); filterItems.get(currentSelectedItemIndex).getSelectedItems().add(strFilter); prepareFilterList(filterItems.get(currentSelectedItemIndex)); lstFilterData.setAdapter(getFilterListAdapter()); } invalidateView(); } }