package com.xiaomi.xms.sales.ui;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemClickListener;
import com.xiaomi.xms.sales.R;
import com.xiaomi.xms.sales.activity.BaseActivity;
import com.xiaomi.xms.sales.activity.CampaignActivity;
import com.xiaomi.xms.sales.activity.ProductDetailsActivity;
import com.xiaomi.xms.sales.adapter.ProductAdapter;
import com.xiaomi.xms.sales.loader.SearchResultLoader;
import com.xiaomi.xms.sales.loader.SearchResultLoader.Result;
import com.xiaomi.xms.sales.model.ProductInfo;
import com.xiaomi.xms.sales.model.Tags;
import com.xiaomi.xms.sales.util.Constants;
import com.xiaomi.xms.sales.widget.BaseGridView;
import com.xiaomi.xms.sales.widget.EmptyLoadingView;
import com.xiaomi.xms.sales.widget.PageScrollListener;
public class SearchResultFragment extends BaseFragment implements
LoaderCallbacks<SearchResultLoader.Result> {
private final static int SEARCH_RESULT_LOADER = 1;
private EmptyLoadingView mLoadingView;
private BaseGridView mGridView;
private ProductAdapter mSearchProductAdapter;
public String mCategoryId;
private String mKeyWord;
private String mShowWord;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.product_fragment, container, false);
mGridView = (BaseGridView) view.findViewById(R.id.grid_view);
mSearchProductAdapter = new ProductAdapter(getActivity(), false);
mGridView.setAdapter(mSearchProductAdapter);
mGridView.setOnItemClickListener(mGridItemClickListner);
mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading);
mGridView.setOnScrollListener(mOnScrollListener);
mLoadingView.setEmptyText(R.string.search_result_is_null);
Bundle bundle = getArguments();
if (bundle != null) {
mKeyWord = bundle.getString(Constants.Intent.EXTRA_SEARCH_RESULT_KEYWORD);
mCategoryId = bundle.getString(Constants.Intent.EXTRA_CATEGORY_ID);
}
mShowWord = "";
if (mKeyWord != null) {
if (mKeyWord.length() > 8) {
mShowWord = mKeyWord.substring(0, 8) + "...";
} else {
mShowWord = mKeyWord;
}
}
getActivity().setTitle(getString(R.string.search_title, mShowWord));
return view;
}
private OnScrollListener mOnScrollListener = new PageScrollListener(new Runnable() {
@Override
public void run() {
if (!mLoader.isLoading()) {
if (((SearchResultLoader) mLoader).hasNextPage()) {
mLoader.forceLoad();
}
}
}
});
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(SEARCH_RESULT_LOADER, null, this);
}
@SuppressWarnings("unchecked")
@Override
public Loader<Result> onCreateLoader(int id, Bundle arg1) {
if (id == SEARCH_RESULT_LOADER) {
mLoader = new SearchResultLoader(getActivity(), mCategoryId, mKeyWord);
mLoader.setProgressNotifiable(mLoadingView);
return (Loader<SearchResultLoader.Result>) mLoader;
}
return null;
}
@Override
public void onLoadFinished(Loader<Result> arg0, Result data) {
mSearchProductAdapter.updateData(data.mProductInfos);
if (!TextUtils.isEmpty(data.mTotalCount)) {
getActivity().setTitle(
getString(R.string.search_result_title, mShowWord, data.mTotalCount));
} else {
getActivity().setTitle(getString(R.string.search_result_title, mShowWord, "0"));
}
}
@Override
public void onLoaderReset(Loader<Result> arg0) {
}
private OnItemClickListener mGridItemClickListner = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ProductInfo mProductInfo = (ProductInfo) mSearchProductAdapter.getItem(position);
Intent intent = new Intent();
// 浏览器打开
if (Tags.Product.DISPLAY_BROWSER.equals(mProductInfo.getDisplayType())) {
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mProductInfo.getUrl()));
} else if (Tags.Product.DISPLAY_WEB.equals(mProductInfo.getDisplayType())) {
// 应用中的Web界面打开
intent.setClass(getActivity(), CampaignActivity.class);
intent.putExtra(Constants.Intent.EXTRA_COMPAIGN_URL, mProductInfo.getUrl());
CampaignActivity.startActivityStandard((BaseActivity) getActivity(),
mProductInfo.getUrl());
return;
} else if (!TextUtils.isEmpty(mProductInfo.getProductId())) {
// 本地应用打开
intent.setClass(getActivity(), ProductDetailsActivity.class);
if (mProductInfo.isIsBatched()) {
intent.putExtra(Constants.Intent.EXTRA_CONTAIN_ID, mProductInfo.getContainId());
}
intent.putExtra(Constants.Intent.EXTRA_PRODUCT_ID, mProductInfo.getProductId());
intent.putExtra(Constants.Intent.EXTRA_P_ID, mProductInfo.getPid());
if (!TextUtils.isEmpty(mProductInfo.getUrl())) {
intent.putExtra(Constants.Intent.EXTRA_IS_MIPHONE, true);
intent.putExtra(Constants.Intent.EXTRA_MIPHONE_NAME,
mProductInfo.getProductName());
}
}
getActivity().startActivity(intent);
}
};
}