package eu.ttbox.androgister.ui.admin.catalog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import de.greenrobot.dao.query.LazyList;
import de.greenrobot.dao.query.QueryBuilder;
import eu.ttbox.androgister.R;
import eu.ttbox.androgister.domain.Catalog;
import eu.ttbox.androgister.domain.CatalogDao;
import eu.ttbox.androgister.domain.CatalogDao.Properties;
import eu.ttbox.androgister.ui.core.crud.EntityLazyListFragment;
public class CatalogListFragment extends EntityLazyListFragment<Catalog, CatalogDao> {
private static final String TAG = "CatalogListFragment";
public static final int PRODUCT_EDIT_REQUEST_CODE = 111;
private static final Long UNSET_ID = Long.MIN_VALUE;
private static final Long ADD_ID = Long.MAX_VALUE;
// Binding
ListView listView;
// Listener
private OnSelectCatalogListener onSelectCatalogListener;
// ===========================================================
// Listener
// ===========================================================
public void setOnSelectCatalogListener(OnSelectCatalogListener onSelectCatalogListener) {
this.onSelectCatalogListener = onSelectCatalogListener;
}
public interface OnSelectCatalogListener {
void onSelectCalalogId(Long catalogId);
}
// ===========================================================
// Constructor
// ===========================================================
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.admin_calatog_list, container, false);
// Binding
listView = (ListView) v.findViewById(R.id.calalog_list);
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Catalog item = (Catalog) parent.getItemAtPosition(position);
Long entityId = item != null ? item.getId() : null;
if (item != null && !UNSET_ID.equals(entityId) && !ADD_ID.equals(entityId)) {
onEntityEditClick(item.getId());
return true;
} else {
return false;
}
}
});
// ListView Header
View listViewHeader = inflater.inflate(R.layout.admin_calatog_list_item, container, false);
Catalog headerData = new Catalog();
headerData.setId(UNSET_ID);
String allLabel = getString(R.string.all);
headerData.setName(allLabel);
((TextView) listViewHeader).setText(allLabel);
listView.addHeaderView(listViewHeader, headerData, true);
// ListView Footer
View listViewFooter = inflater.inflate(R.layout.admin_footer_list_item_add, container, false);
Catalog footerData = new Catalog();
footerData.setId(ADD_ID);
String addLabel = getString(R.string.add);
footerData.setName(addLabel);
listView.addFooterView(listViewFooter, footerData, true);
return v;
}
public AdapterView<ListAdapter> getAdapterContainer() {
return listView;
}
// ===========================================================
// Service
// ===========================================================
@Override
public CatalogDao getEntityDao() {
return getDaoSession().getCatalogDao();
}
@Override
public QueryBuilder<Catalog> createSearchQuery(CatalogDao entityDao) {
QueryBuilder<Catalog> query = entityDao.queryBuilder() //
.orderAsc(Properties.Name); //
return query;
}
@Override
public CatalogListAdapter createListAdapter(LazyList<Catalog> lazyList) {
return new CatalogListAdapter(getActivity(), lazyList);
}
// ===========================================================
// Action
// ===========================================================
protected void onEntityEditClick(Long entityId) {
if (!UNSET_ID.equals(entityId) && !ADD_ID.equals(entityId)) {
Intent intent = new Intent(getActivity(), CatalogEditActivity.class);
intent.setAction(Intent.ACTION_EDIT);
intent.putExtra(Intent.EXTRA_UID, entityId);
startActivityForResult(intent, ENTITY_EDIT_REQUEST_CODE);
}
}
@Override
public void onEntityClick(Long catalogId) {
Log.d(TAG, "onSelectTagId : " + catalogId);
if (ADD_ID.equals(catalogId)) {
// Add
Intent intent = new Intent(getActivity(), CatalogEditActivity.class);
intent.setAction(Intent.ACTION_EDIT);
// intent.putExtra(Intent.EXTRA_UID, entityId);
startActivityForResult(intent, ENTITY_EDIT_REQUEST_CODE);
} else if (onSelectCatalogListener != null) {
Long entityId = catalogId;
if (UNSET_ID.equals(entityId)) {
entityId = null;
}
onSelectCatalogListener.onSelectCalalogId(entityId);
}
}
}