package com.dreamspace.uucampus.ui.base;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
import com.dreamspace.uucampus.R;
import com.dreamspace.uucampus.common.VaryViewHelperController;
import com.dreamspace.uucampus.common.utils.CommonUtils;
import butterknife.ButterKnife;
import retrofit.RetrofitError;
/**
* Created by Administrator on 2015/7/25 0025.
*/
public abstract class AbsActivity extends AppCompatActivity {
protected Toolbar mToolBar;
private VaryViewHelperController mVaryViewHelperController = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
initToolBar();
if (null != getLoadingTargetView()) {
mVaryViewHelperController = new VaryViewHelperController(getLoadingTargetView());
}
prepareDatas();
initViews();
}
protected abstract int getContentView();
protected abstract void prepareDatas();
protected abstract void initViews();
protected abstract View getLoadingTargetView();
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
protected void initToolBar() {
mToolBar = (Toolbar) findViewById(R.id.tl_custom);
setSupportActionBar(mToolBar);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ButterKnife.bind(this);
}
/**
* startActivity
*
* @param clazz
*/
protected void readyGo(Class<?> clazz) {
Intent intent = new Intent(this, clazz);
startActivity(intent);
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
}
/**
* startActivity with bundle
*
* @param clazz
* @param bundle
*/
protected void readyGo(Class<?> clazz, Bundle bundle) {
Intent intent = new Intent(this, clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivity(intent);
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
}
/**
* startActivity then finish
*
* @param clazz
*/
protected void readyGoThenKill(Class<?> clazz) {
Intent intent = new Intent(this, clazz);
startActivity(intent);
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
finish();
}
/**
* startActivity with bundle then finish
*
* @param clazz
* @param bundle
*/
protected void readyGoThenKill(Class<?> clazz, Bundle bundle) {
Intent intent = new Intent(this, clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivity(intent);
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
finish();
}
/**
* startActivityForResult
*
* @param clazz
* @param requestCode
*/
protected void readyGoForResult(Class<?> clazz, int requestCode) {
Intent intent = new Intent(this, clazz);
startActivityForResult(intent, requestCode);
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
}
/**
* startActivityForResult with bundle
*
* @param clazz
* @param requestCode
* @param bundle
*/
protected void readyGoForResult(Class<?> clazz, int requestCode, Bundle bundle) {
Intent intent = new Intent(this, clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivityForResult(intent, requestCode);
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
}
/**
* show toast
*
* @param msg
*/
protected void showToast(String msg) {
if (null != msg && !CommonUtils.isEmpty(msg)) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
// Snackbar.make(getWindow().getDecorView(), msg, Snackbar.LENGTH_SHORT).show();
}
}
protected void showNetWorkError() {
showToast(getResources().getString(R.string.network_error_tips));
}
protected void showInnerError(RetrofitError error) {
if (error != null)
if(error.getBody() == null){
showToast(getString(R.string.request_time_out));
}else{
showToast(CommonUtils.getErrorInfo(error).getReason());
}
}
/**
* toggle show loading
*
* @param toggle
*/
protected void toggleShowLoading(boolean toggle, String msg) {
if (null == mVaryViewHelperController) {
throw new IllegalArgumentException("You must return a right target view for loading");
}
if (toggle) {
mVaryViewHelperController.showLoading(msg);
} else {
mVaryViewHelperController.restore();
}
}
/**
* toggle show empty
*
* @param toggle
*/
protected void toggleShowEmpty(boolean toggle, String msg, View.OnClickListener onClickListener) {
if (null == mVaryViewHelperController) {
throw new IllegalArgumentException("You must return a right target view for loading");
}
if (toggle) {
mVaryViewHelperController.showEmpty(msg, onClickListener);
} else {
mVaryViewHelperController.restore();
}
}
/**
* toggle show error
*
* @param toggle
*/
protected void toggleShowError(boolean toggle, String msg, View.OnClickListener onClickListener) {
if (null == mVaryViewHelperController) {
throw new IllegalArgumentException("You must return a right target view for loading");
}
if (toggle) {
mVaryViewHelperController.showError(msg, onClickListener);
} else {
mVaryViewHelperController.restore();
}
}
/**
* toggle show network error
*
* @param toggle
*/
protected void toggleNetworkError(boolean toggle, View.OnClickListener onClickListener) {
if (null == mVaryViewHelperController) {
throw new IllegalArgumentException("You must return a right target view for loading");
}
if (toggle) {
mVaryViewHelperController.showNetworkError(onClickListener);
} else {
mVaryViewHelperController.restore();
}
}
protected void toggleRestore(){
mVaryViewHelperController.restore();
}
@Override
protected void onDestroy() {
super.onDestroy();
ButterKnife.unbind(this);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
}
}