package com.xiaomi.xms.sales.ui; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; 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.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.LinearLayout.LayoutParams; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.activity.BaseActivity; import com.xiaomi.xms.sales.activity.MiHomeBuyActivity; import com.xiaomi.xms.sales.loader.ImageLoader; import com.xiaomi.xms.sales.loader.MihomeCheckLoader; import com.xiaomi.xms.sales.loader.RequestLoader; import com.xiaomi.xms.sales.loader.RequestLoader.Result; import com.xiaomi.xms.sales.model.Image; import com.xiaomi.xms.sales.model.MiHomeCheckInfo; import com.xiaomi.xms.sales.model.Tags; import com.xiaomi.xms.sales.request.HostManager; import com.xiaomi.xms.sales.request.Request; import com.xiaomi.xms.sales.request.HostManager.Parameters; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.util.Device; import com.xiaomi.xms.sales.util.ToastUtil; import com.xiaomi.xms.sales.widget.EmptyLoadingView; import com.xiaomi.xms.sales.widget.SelfBindView; import com.xiaomi.xms.sales.widget.SelfBindView.SelfBindViewInteface; import com.xiaomi.xms.sales.zxing.ScannerActivity; import org.json.JSONException; public class MiHomeCheckFragment extends BaseFragment implements LoaderCallbacks<MihomeCheckLoader.Result> { public static final int MIHOMELOADER = 0; public static final int MIHOMECHECKINLOADER = 1; private Bundle mBundle; private String mMihomeId; private String mClientMihomeId; private Button mMihomeCheckView; private Button mMihomeBuyProductView; private TextView mMihomeNameView; private TextView mMihomeCheckCountView; private LinearLayout mMihomeLogoContainer; private SelfBindView mMihomeLogo; private View mMihomeBg; private View mContainer; private EmptyLoadingView mLoadingView; private MiHomeCheckInfo mMiHomeCheckInfo; private RequestLoader mCheckInLoader; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.mihome_check_fragment, container, false); mLoadingView = (EmptyLoadingView) view.findViewById(R.id.loading); mContainer = view.findViewById(R.id.container); mMihomeBg = view.findViewById(R.id.mihome_bg_color); mMihomeNameView = (TextView) view.findViewById(R.id.mihome_name); mMihomeCheckCountView = (TextView) view.findViewById(R.id.mihomecheck_count); mMihomeCheckView = (Button) view.findViewById(R.id.mihome_check_btn); mMihomeCheckView.setOnClickListener(mClickListener); mMihomeBuyProductView = (Button) view.findViewById(R.id.mihome_buy_btn); mMihomeBuyProductView.setOnClickListener(mClickListener); mMihomeLogoContainer = (LinearLayout) view.findViewById(R.id.container_logo); initImageContainer(); mBundle = getArguments(); if (mBundle != null) { mMihomeId = mBundle.getString(Constants.Intent.EXTRA_MIHOME_BUY); } return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (mLoader == null) { getLoaderManager().initLoader(MIHOMELOADER, null, this); mLoader.setNeedDatabase(false); } } @Override public Loader onCreateLoader(int id, Bundle arg1) { if (id == MIHOMELOADER) { mLoader = new MihomeCheckLoader(getActivity(), mMihomeId); mLoader.setProgressNotifiable(mLoadingView); return mLoader; } // mLoader.setProgressNotifiable(mLoadingView); return null; } private void initImageContainer() { LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); final LinearLayout parentView = (LinearLayout) layoutInflater.inflate(R.layout.selfbind_container, null); mMihomeLogo = (SelfBindView) parentView.findViewById(R.id.selfbind_image); mMihomeLogo.SelfBindViewCallBack = new SelfBindViewInteface() { @Override public void bindView(ImageView view, Bitmap bitmap, Image image) { parentView.setLayoutParams(new LayoutParams( android.view.ViewGroup.LayoutParams.MATCH_PARENT, bitmap.getHeight() * Device.DISPLAY_WIDTH / bitmap.getWidth())); view.setImageBitmap(image.proccessImage(bitmap)); } }; mMihomeLogoContainer.addView(parentView); } @Override public void onLoadFinished(Loader<MihomeCheckLoader.Result> loader, MihomeCheckLoader.Result data) { mMiHomeCheckInfo = data.mMiHomeCheckInfo; if (mMiHomeCheckInfo != null) { mClientMihomeId = mMiHomeCheckInfo.getMihomeId(); mContainer.setVisibility(View.VISIBLE); String color = TextUtils.isEmpty(mMiHomeCheckInfo.getColor()) ? "#fff05000" : mMiHomeCheckInfo.getColor(); mMihomeBg.setBackgroundColor(Color.parseColor(color)); mMihomeNameView.setText(mMiHomeCheckInfo.getMihomeName()); mMihomeCheckCountView.setText(getString(R.string.mihome_check_count, mMiHomeCheckInfo.getCheckInCount())); mMihomeCheckCountView.setTextColor(Color.argb(155, 0, 0, 0)); // 文字透明度 ImageLoader.getInstance().loadImage(mMihomeLogo, mMiHomeCheckInfo.getImage(), R.drawable.default_pic_large); } else { Bundle bundel = new Bundle(); bundel.putString(Constants.Intent.EXTRA_MIHOME_ERROR_RESULT, mMihomeId); ((BaseActivity)getActivity()).showFragment(MiHomeBuyActivity.TAG_MIHOME_BUY_ERROR_FRAGMENT, bundel, false); } } @Override public void onLoaderReset(Loader<MihomeCheckLoader.Result> arg0) { } private OnClickListener mClickListener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.mihome_check_btn: mihomeCheckIn(); break; case R.id.mihome_buy_btn: gotoScannerProduct(); break; default: break; } } }; private void gotoScannerProduct() { Intent intent = new Intent(getActivity(), ScannerActivity.class); intent.putExtra(Constants.Intent.EXTRA_MIHOME_BUY, mClientMihomeId); intent.setAction(Constants.Intent.ACTION_PRODUCT_SCANNER); startActivity(intent); } private void mihomeCheckIn() { getLoaderManager().initLoader(MIHOMECHECKINLOADER, null, mCheckInCallback); if (mCheckInLoader != null) { Request request = new Request(HostManager.getMihomeSignin()); request.addParam(Parameters.Keys.MIHOME_ID, mClientMihomeId); mCheckInLoader.load(MIHOMECHECKINLOADER, request); } } private LoaderCallbacks<RequestLoader.Result> mCheckInCallback = new LoaderCallbacks<RequestLoader.Result>() { @Override public Loader<Result> onCreateLoader(int id, Bundle arg1) { mCheckInLoader = new RequestLoader(getActivity()); return mCheckInLoader; } @Override public void onLoadFinished(Loader<Result> loader, Result result) { getLoaderManager().destroyLoader(MIHOMECHECKINLOADER); if (result != null) { if (Tags.isJSONResultOK(result.mData)) { try { String count = result.mData.getJSONObject(Tags.DATA).getString( Tags.MihomeCheckInfo.SIGNIN_COUNT); if (!TextUtils.isEmpty(count)) { mMihomeCheckCountView.setText(getString(R.string.mihome_check_count, count)); ToastUtil.show(getActivity(), R.string.mihome_checkin_success); } } catch (JSONException e) { e.printStackTrace(); } } else { ToastUtil.show(getActivity(), R.string.mihome_already_checkin); } } } @Override public void onLoaderReset(Loader<Result> arg0) { } }; }