package com.cheikh.lazywaimai.ui; import android.content.Intent; import android.net.Uri; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.NavUtils; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import com.cheikh.lazywaimai.model.bean.Order; import com.cheikh.lazywaimai.ui.activity.FavoritesActivity; import com.cheikh.lazywaimai.ui.activity.FeedbackActivity; import com.cheikh.lazywaimai.ui.activity.RemarkActivity; import com.cheikh.lazywaimai.ui.fragment.SetNicknameFragment; import com.cheikh.lazywaimai.ui.fragment.SetUsernameFragment; import com.cheikh.lazywaimai.ui.fragment.UserProfileFragment; import com.google.common.base.Preconditions; import com.cheikh.lazywaimai.R; import com.cheikh.lazywaimai.model.bean.Address; import com.cheikh.lazywaimai.model.bean.Business; import com.cheikh.lazywaimai.ui.activity.AddressesActivity; import com.cheikh.lazywaimai.ui.activity.BusinessActivity; import com.cheikh.lazywaimai.ui.activity.LoginActivity; import com.cheikh.lazywaimai.ui.activity.MainActivity; import com.cheikh.lazywaimai.ui.activity.OrderDetailActivity; import com.cheikh.lazywaimai.ui.activity.PaymentActivity; import com.cheikh.lazywaimai.ui.activity.RegisterActivity; import com.cheikh.lazywaimai.ui.activity.SettingActivity; import com.cheikh.lazywaimai.ui.activity.SettleActivity; import com.cheikh.lazywaimai.ui.activity.UpdateAddressActivity; import com.cheikh.lazywaimai.ui.activity.UserProfileActivity; import com.cheikh.lazywaimai.ui.fragment.RegisterFirstStepFragment; import com.cheikh.lazywaimai.ui.fragment.RegisterSecondStepFragment; import com.cheikh.lazywaimai.ui.fragment.RegisterThirdStepFragment; import com.cheikh.lazywaimai.util.MainTab; import com.cheikh.lazywaimai.util.RegisterStep; public class Display { public static final String PARAM_ID = "_id"; public static final String PARAM_OBJ = "_obj"; private final AppCompatActivity mActivity; public Display(AppCompatActivity activity) { mActivity = Preconditions.checkNotNull(activity, "activity cannot be null"); } /** * 设置app bar上的主标题 * @param title */ public void setActionBarTitle(CharSequence title) { ActionBar ab = mActivity.getSupportActionBar(); if (ab != null) { ab.setTitle(title); } } /** * 设置app bar上的子标题 * @param title */ public void setActionBarSubtitle(CharSequence title) { ActionBar ab = mActivity.getSupportActionBar(); if (ab != null) { ab.setSubtitle(title); } } /** * 显示向上导航的按钮 * @param isShow */ public void showUpNavigation(boolean isShow) { final ActionBar ab = mActivity.getSupportActionBar(); if (ab != null) { ab.setDisplayHomeAsUpEnabled(isShow); ab.setHomeButtonEnabled(isShow); if (isShow) { ab.setHomeAsUpIndicator(R.drawable.ic_back); } } } /** * 判断当前activity是否已经嵌套了fragment * @return */ public boolean hasMainFragment() { return getBackStackFragmentCount() > 0; } /** * 获取回退栈里fragment的数量 * @return */ public int getBackStackFragmentCount() { return mActivity.getSupportFragmentManager().getBackStackEntryCount(); } /** * 弹出回退栈里最顶上的fragment * 如果栈里只有一个fragment的话,则在弹出的同时并结束掉当前的activity * @return */ public boolean popTopFragmentBackStack() { final FragmentManager fm = mActivity.getSupportFragmentManager(); final int backStackCount = fm.getBackStackEntryCount(); if (backStackCount > 1) { fm.popBackStack(); return true; } return false; } /** * 弹出回退栈里的所有fragment * @return */ public boolean popEntireFragmentBackStack() { final FragmentManager fm = mActivity.getSupportFragmentManager(); final int backStackCount = fm.getBackStackEntryCount(); for (int i = 0; i < backStackCount; i++) { fm.popBackStack(); } return backStackCount > 0; } /** * 回退 * @return */ public void navigateUp() { final Intent intent = NavUtils.getParentActivityIntent(mActivity); if (intent != null) { NavUtils.navigateUpTo(mActivity, intent); } else { finishActivity(); } } public void finishActivity() { mActivity.finish(); } /** * 拨打电话 * @param phone */ public void callPhone(String phone) { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone)); mActivity.startActivity(intent); } public void showMain(MainTab mainTab) { Intent intent = new Intent(mActivity, MainActivity.class); intent.putExtra(PARAM_OBJ, mainTab); mActivity.startActivity(intent); } public void showBusiness(Business business) { Intent intent = new Intent(mActivity, BusinessActivity.class); intent.putExtra(PARAM_OBJ, business); mActivity.startActivity(intent); } public void showLogin() { Intent intent = new Intent(mActivity, LoginActivity.class); mActivity.startActivity(intent); } public void showRegister() { Intent intent = new Intent(mActivity, RegisterActivity.class); mActivity.startActivity(intent); } public void showUserProfile() { Intent intent = new Intent(mActivity, UserProfileActivity.class); mActivity.startActivity(intent); } public void showRemark(String remark, int requestCode) { Intent intent = new Intent(mActivity, RemarkActivity.class); intent.putExtra(PARAM_OBJ, remark); mActivity.startActivityForResult(intent, requestCode); } public void showPayment(Order order) { Intent intent = new Intent(mActivity, PaymentActivity.class); intent.putExtra(PARAM_OBJ, order); mActivity.startActivity(intent); } public void showOrderDetail(Order order) { Intent intent = new Intent(mActivity, OrderDetailActivity.class); intent.putExtra(PARAM_ID, order.getId()); mActivity.startActivity(intent); } public void showAddresses() { Intent intent = new Intent(mActivity, AddressesActivity.class); mActivity.startActivity(intent); } public void showFavorites() { Intent intent = new Intent(mActivity, FavoritesActivity.class); mActivity.startActivity(intent); } public void showChooseAddress() { Intent intent = new Intent(mActivity, AddressesActivity.class); intent.putExtra(PARAM_OBJ, true); mActivity.startActivity(intent); } public void showCreateAddress() { Intent intent = new Intent(mActivity, UpdateAddressActivity.class); mActivity.startActivity(intent); } public void showChangeAddress(Address address) { Intent intent = new Intent(mActivity, UpdateAddressActivity.class); intent.putExtra(PARAM_OBJ, address); mActivity.startActivity(intent); } public void showSettle() { Intent intent = new Intent(mActivity, SettleActivity.class); mActivity.startActivity(intent); } public void showSetting() { Intent intent = new Intent(mActivity, SettingActivity.class); mActivity.startActivity(intent); } public void showFeedback() { Intent intent = new Intent(mActivity, FeedbackActivity.class); mActivity.startActivity(intent); } public void showFragment(Fragment fragment) { mActivity.getSupportFragmentManager().beginTransaction() .setCustomAnimations(hasMainFragment() ? R.anim.right_in : 0, R.anim.left_out, R.anim.left_in, R.anim.right_out) .replace(R.id.fragment_main, fragment) .addToBackStack(null) .commit(); } public void showUserProfileFragment() { showFragment(new UserProfileFragment()); } public void showSetUsernameFragment() { showFragment(new SetUsernameFragment()); } public void showSetNicknameFragment() { showFragment(new SetNicknameFragment()); } public void showRegisterStep(RegisterStep step, String mobile) { switch (step) { case STEP_FIRST: showFragment(new RegisterFirstStepFragment()); break; case STEP_SECOND: showFragment(RegisterSecondStepFragment.create(mobile)); break; case STEP_THIRD: showFragment(RegisterThirdStepFragment.create(mobile)); break; } } }