package com.xiaomi.xms.sales.ui; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; 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.FullScreenImageActivity; import com.xiaomi.xms.sales.activity.ProductActivity; import com.xiaomi.xms.sales.activity.ProductDetailsActivity; import com.xiaomi.xms.sales.model.HomeInfo; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.util.LogUtil; import com.xiaomi.xms.sales.xmsf.account.LoginManager; public abstract class HomeBaseListItem extends BaseListItem<HomeInfo> { private static final String TAG = "HomeListItem"; public HomeBaseListItem(Context context, AttributeSet attrs) { super(context, attrs); } public static void viewProductDetail(Context context, HomeInfo homeInfo, boolean fullScreen) { if (homeInfo != null && context != null) { int itemType = homeInfo.getItemType(); LogUtil.d(TAG, "itemType: " + itemType); if (HomeInfo.ITEM_TYPE_AD == itemType) { if (!LoginManager.getInstance().hasLogin()) { ((BaseActivity) context).gotoAccount(); return; } LogUtil.d(TAG, "AD url is: " + homeInfo.getActivityUrl()); String url = homeInfo.getActivityUrl(); if (!TextUtils.isEmpty(url)) { Intent intent = transIntentFromUrl(context, url, homeInfo.getProductName()); if (intent != null) { context.startActivity(intent); } } } else if (HomeInfo.ITEM_TYPE_FULLSCREEN_AD == itemType) { if (!LoginManager.getInstance().hasLogin()) { ((BaseActivity) context).gotoAccount(); return; } LogUtil.d(TAG, "AD url is: " + homeInfo.getActivityUrl()); ((BaseActivity) context).startCampaignActivityWithAnimation(homeInfo .getActivityUrl()); } else { LogUtil.d(TAG, "Goods id is:" + homeInfo.getProductId()); if (!TextUtils.isEmpty(homeInfo.getProductId())) { Intent intent = null; if (HomeInfo.ITEM_TYPE_PRODUCT == itemType) { if (fullScreen) { intent = new Intent(context, FullScreenImageActivity.class); intent.putExtra(Constants.Intent.EXTRA_GO_TO_FRAGMENT, FullScreenImageActivity.TAG_PRODUCT_DETAIL_FULL_SCREEN_FRAGMENT); } else { intent = new Intent(context, ProductDetailsActivity.class); } } else if (HomeInfo.ITEM_TYPE_MIPHONE == itemType) { intent = new Intent(context, ProductDetailsActivity.class); intent.putExtra(Constants.Intent.EXTRA_IS_MIPHONE, true); intent.putExtra(Constants.Intent.EXTRA_MIPHONE_NAME, homeInfo.getProductName()); } intent.putExtra(Constants.Intent.EXTRA_PRODUCT_ID, homeInfo.getProductId()); context.startActivity(intent); } } } } /** * 根据URL解析应该跳转的activity * * @param url * @param name * @return */ private static Intent transIntentFromUrl(Context context, String url, String name) { Uri uri = Uri.parse(url.replace(Constants.MobileWebUri.FRAGMENT_SEPARATOR, Constants.MobileWebUri.QUERY_SEPARATOR)); Log.d(TAG, "query:" + uri.getQuery()); Intent intent = null; if (TextUtils.equals(uri.getQueryParameter(Constants.MobileWebUri.QUERY_PARAM_ACTION), Constants.MobileWebUri.QUERY_PARAM_ACTION_PRODUCT)) { if (TextUtils.equals(uri.getQueryParameter(Constants.MobileWebUri.QUERY_PARAM_OPTION), Constants.MobileWebUri.QUERY_PARAM_OPTION_LIST)) { String cateId = uri .getQueryParameter(Constants.MobileWebUri.QUERY_PARAM_OPTION_LIST_ID); if (!TextUtils.isEmpty(cateId)) { intent = new Intent(context, ProductActivity.class); intent.putExtra(Constants.Intent.EXTRA_CATEGORY_ID, cateId); name = TextUtils.isEmpty(name) ? context.getResources().getString( R.string.category_default_name) : name; intent.putExtra(Constants.Intent.EXTRA_CATEGORY_NAME, name); return intent; } } else if (TextUtils.equals( uri.getQueryParameter(Constants.MobileWebUri.QUERY_PARAM_OPTION), Constants.MobileWebUri.QUERY_PARAM_OPTION_VIEW)) { String productId = uri .getQueryParameter(Constants.MobileWebUri.QUERY_PARAM_OPTION_VIEW_ID); if (!TextUtils.isEmpty(productId)) { intent = new Intent(context, ProductDetailsActivity.class); intent.putExtra(Constants.Intent.EXTRA_PRODUCT_ID, productId); return intent; } } } if (intent == null) { // intent = new Intent(context, CampaignActivity.class); // intent.putExtra(Constants.Intent.EXTRA_COMPAIGN_URL, url); CampaignActivity.startActivityStandard((BaseActivity) context, url); } return intent; } }