package com.ericliudeveloper.sharedbillhelper.ui.activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import com.ericliudeveloper.sharedbillhelper.R;
import com.ericliudeveloper.sharedbillhelper.util.CustomEvents;
import de.greenrobot.event.EventBus;
/**
* Created by liu on 6/06/15.
*/
public class BaseActivity extends AppCompatActivity {
protected android.support.v4.widget.DrawerLayout mDrawerLayout;
protected Toolbar mToolbar;
protected ActionBarDrawerToggle actionBarDrawerToggle;
protected ViewPager mViewPager;
protected TabLayout mTabLayout;
protected NavigationView mNavigationView;
protected static final int NAVDRAWER_ITEM_INVALID = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mTabLayout = (TabLayout) findViewById(R.id.tabs);
mNavigationView = (NavigationView) findViewById(R.id.nav_view);
if (mToolbar != null) {
setupToolbar();
}
if (mDrawerLayout != null) {
setupNavigationDrawer();
}
if (mNavigationView != null) {
setupNavigationView();
}
if (mToolbar != null && mDrawerLayout != null) {
setupDrawerToggle();
}
if (mViewPager != null) {
setupViewPager(mViewPager);
}
if (mTabLayout != null && mViewPager != null) {
mTabLayout.setupWithViewPager(mViewPager);
}
}
/**
* Returns the navigation drawer item that corresponds to this Activity. Subclasses
* of BaseActivity override this to indicate what nav drawer item corresponds to them
* Return NAVDRAWER_ITEM_INVALID to mean that this Activity should not have a Nav Drawer.
*/
protected int getSelfNavDrawerItem() {
return NAVDRAWER_ITEM_INVALID;
}
private void setupNavigationView() {
final int selfItem = getSelfNavDrawerItem();
if (selfItem == NAVDRAWER_ITEM_INVALID) {
// Navigation drawer not available
return;
}
// select the correct nav menu item
MenuItem currentItem = mNavigationView.getMenu().findItem(selfItem);
currentItem.setEnabled(false);
currentItem.setChecked(true);
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
int id = menuItem.getItemId();
switch (id) {
case R.id.nav_home:
Intent mainIntent = new Intent(BaseActivity.this, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mainIntent);
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
case R.id.nav_calculator:
Intent calculatorIntent = new Intent(BaseActivity.this, CalculationParameterActivity.class);
calculatorIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(calculatorIntent);
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
default:
break;
}
return false;
}
});
}
private void setupDrawerToggle() {
actionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.app_name, R.string.app_name);
actionBarDrawerToggle.syncState();
}
protected void setupToolbar() {
// mToolbar.setTitle(R.string.app_name);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
private void setupNavigationDrawer() {
mDrawerLayout.setDrawerListener(actionBarDrawerToggle);
}
/**
* For subclasses which have Viewpagers,
* they should override this method to setup the Pager Adapter
*/
protected void setupViewPager(ViewPager pager) {
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
default: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
EventBus
.getDefault()
.postSticky(new CustomEvents.ReadContactPermissionGrantedEvent());
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
}