package com.fastaccess.ui.base;
import android.os.Bundle;
import android.support.annotation.DrawableRes;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.fastaccess.BuildConfig;
import com.fastaccess.R;
import com.fastaccess.helper.AppHelper;
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
import com.fastaccess.ui.widgets.dialog.MessageDialogView;
import butterknife.BindView;
import butterknife.ButterKnife;
import icepick.Icepick;
/**
* Created by Kosh on 24 May 2016, 8:48 PM
*/
public abstract class BaseActivity<V, P extends BasePresenter<V>> extends AppCompatActivity implements
MessageDialogView.MessageDialogViewActionCallback {
@LayoutRes protected abstract int layout();
@Nullable @BindView(R.id.toolbar) Toolbar toolbar;
@NonNull protected abstract P getPresenter();
protected abstract boolean isTransparent();
protected abstract boolean canBack();
@Override protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Icepick.saveInstanceState(this, outState);
}
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (layout() != 0) {
setContentView(layout());
ButterKnife.bind(this);
}
Icepick.setDebug(BuildConfig.DEBUG);
if (savedInstanceState != null && !savedInstanceState.isEmpty()) {
Icepick.restoreInstanceState(this, savedInstanceState);
}
setupToolbarAndStatusBar();
}
@Override public boolean onOptionsItemSelected(MenuItem item) {
if (canBack()) {
if (item.getItemId() == android.R.id.home) {
supportFinishAfterTransition();
}
}
return super.onOptionsItemSelected(item);
}
@Override protected void onDestroy() {
//noinspection ConstantConditions
if (getPresenter() != null) getPresenter().onDestroy();
super.onDestroy();
}
@Override public void onDialogDismissed() {
}//pass
@Override public void onMessageDialogActionClicked(boolean isOk, int requestCode) {
}//pass
private void setupToolbarAndStatusBar() {
if (AppHelper.isLollipopOrHigher()) {
changeAppColor();
}
if (toolbar != null) {
setSupportActionBar(toolbar);
if (canBack()) {
if (getSupportActionBar() != null) {
if (toolbar != null) {
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
supportFinishAfterTransition();
}
});
}
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
}
}
protected void setToolbarIcon(@DrawableRes int res) {
if (getSupportActionBar() != null) {
getSupportActionBar().setHomeAsUpIndicator(res);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
@RequiresApi(value = 21) protected void changeAppColor() {
if (AppHelper.isLollipopOrHigher()) {
if (!isTransparent()) {
getWindow().setStatusBarColor(ContextCompat.getColor(this, R.color.primary_dark));
}
}
}
}