package com.cheikh.lazywaimai.base;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v7.widget.Toolbar;
import butterknife.Bind;
import butterknife.ButterKnife;
import com.cheikh.lazywaimai.R;
import com.cheikh.lazywaimai.util.ContentView;
import com.cheikh.lazywaimai.ui.Display;
import com.cheikh.lazywaimai.widget.LoadingDialog;
/**
* author: cheikh.wang on 17/1/5
* email: wanghonghi@126.com
*/
public abstract class BaseActivity<UC> extends CoreActivity<UC> {
@Nullable
@Bind(R.id.toolbar)
Toolbar mToolbar;
private LoadingDialog mLoading;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButterKnife.bind(this);
initializeToolbar();
handleIntent(getIntent(), getDisplay());
initializeViews(savedInstanceState);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleIntent(intent, getDisplay());
}
@Override
public void onDestroy() {
super.onDestroy();
ButterKnife.unbind(this);
}
protected int getLayoutId() {
for (Class c = getClass(); c != Context.class; c = c.getSuperclass()) {
ContentView annotation = (ContentView) c.getAnnotation(ContentView.class);
if (annotation != null) {
return annotation.value();
}
}
return 0;
}
private void initializeToolbar() {
if (mToolbar != null) {
mToolbar.setTitle(getTitle());
setSupportActionBar(mToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
protected void handleIntent(Intent intent, Display display) {}
protected void initializeViews(Bundle savedInstanceState) {}
@Override
public void setTitle(CharSequence title) {
if (mToolbar != null) {
mToolbar.setTitle(title);
}
}
@Override
public void setTitle(@StringRes int titleResId) {
if (mToolbar != null) {
mToolbar.setTitle(titleResId);
}
}
protected final void showLoading(@StringRes int textResId) {
showLoading(getString(textResId));
}
protected final void showLoading(String text) {
cancelLoading();
if (mLoading == null) {
mLoading = new LoadingDialog(this);
mLoading.setCancelable(false);
mLoading.setCanceledOnTouchOutside(false);
}
mLoading.setTitle(text);
mLoading.show();
}
protected final void cancelLoading() {
if (mLoading != null && mLoading.isShowing()) {
mLoading.dismiss();
}
}
}