package com.xiaomi.xms.sales.ui;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import com.xiaomi.xms.sales.R;
import com.xiaomi.xms.sales.activity.OrderEditActivity;
import com.xiaomi.xms.sales.adapter.BaseDataAdapter;
import com.xiaomi.xms.sales.adapter.OrderListAdapter;
import com.xiaomi.xms.sales.loader.BasePageLoader;
import com.xiaomi.xms.sales.loader.BaseResult;
import com.xiaomi.xms.sales.loader.OrderEditListLoader;
import com.xiaomi.xms.sales.model.OrderPreview;
import com.xiaomi.xms.sales.util.Constants;
import com.xiaomi.xms.sales.widget.BaseListView;
import com.xiaomi.xms.sales.widget.EmptyLoadingView;
import com.xiaomi.xms.sales.widget.PageScrollListener;
public class OrderEditListFragment extends BaseFragment {
private final static int ORDERLIST_LOADER = 0;
private BaseListView mListView;
private EmptyLoadingView mLoadingView;
private BaseDataAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.order_list_fragment, container, false);
mListView = (BaseListView) view.findViewById(android.R.id.list);
mListView.setOnScrollListener(mOnScrollListener);
mAdapter = new OrderListAdapter(getActivity());
mListView.setAdapter(mAdapter);
mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading);
mLoadingView.setEmptyText(R.string.order_list_empty);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mLoader = (BasePageLoader) getLoader(ORDERLIST_LOADER);
mLoader.setProgressNotifiable(mLoadingView);
mListView.setOnItemClickListener(mItemClickListener);
}
@Override
public void onResume() {
super.onResume();
getActivity().setTitle(R.string.order_edit_list_title);
}
public BasePageLoader getLoader() {
return (BasePageLoader) mLoader;
}
private Loader<BaseResult> getLoader(int loaderId) {
LoaderManager loaderManager = getLoaderManager();
Loader<BaseResult> loader = loaderManager.getLoader(loaderId);
if (loader == null) {
loaderManager.initLoader(loaderId, null, mListCallback);
loader = loaderManager.getLoader(loaderId);
}
return loader;
}
private OnScrollListener mOnScrollListener = new PageScrollListener(new Runnable() {
@Override
public void run() {
if (mLoader != null && !mLoader.isLoading() && ((BasePageLoader) mLoader).hasNextPage()) {
mLoader.forceLoad();
}
}
});
private OnItemClickListener mItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View item, int position, long id) {
Bundle bundle = new Bundle();
OrderPreview order = (OrderPreview) mAdapter.getItem(position);
bundle.putString(Constants.Intent.EXTRA_PAYMENT_ORDER_ID, order.getOrderId());
bundle.putString(Constants.Intent.EXTRA_ORDER_EDIT_ACTION, "EDIT");
((OrderEditActivity) getActivity()).showFragment(
OrderEditActivity.TAG_EDIT_DETAIL_FRAGMENT, bundle, true);
}
};
private LoaderCallbacks<BaseResult> mListCallback = new LoaderCallbacks<BaseResult>() {
@Override
public Loader onCreateLoader(int id, Bundle arg1) {
mLoader = new OrderEditListLoader(getActivity());
mLoader.setProgressNotifiable(mLoadingView);
return mLoader;
}
@Override
public void onLoadFinished(Loader<BaseResult> loader, BaseResult data) {
mAdapter.updateData(((OrderEditListLoader.Result) data).mOrderList);
}
@Override
public void onLoaderReset(Loader<BaseResult> loader) {
}
};
}