package com.jdroid.android.navdrawer;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import com.jdroid.android.application.AbstractApplication;
import com.jdroid.android.R;
import com.jdroid.android.activity.AbstractFragmentActivity;
import com.jdroid.android.context.SecurityContext;
import com.jdroid.android.domain.User;
import java.util.List;
public abstract class DefaultNavDrawer extends NavDrawer {
private NavigationView navigationView;
private List<NavDrawerItem> navDrawerItems;
public DefaultNavDrawer(AbstractFragmentActivity activity, Toolbar appBar) {
super(activity, appBar);
navDrawerItems = createNavDrawerItems();
}
@Override
public View createContentView() {
navigationView = getActivity().findView(R.id.drawer);
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
DefaultNavDrawer.this.onNavigationItemSelected(menuItem);
menuItem.setChecked(true);
getDrawerLayout().closeDrawers();
return true;
}
});
NavDrawerHeader navDrawerHeader = new NavDrawerHeader(navigationView);
initNavDrawerHeader(navDrawerHeader);
return navigationView;
}
protected void onNavigationItemSelected(MenuItem menuItem) {
findNavDrawerByMenu(menuItem).startActivity(getActivity());
}
@Override
public void onResume() {
super.onResume();
checkMenuItem();
}
protected void checkMenuItem() {
for (int i = 0; i < navigationView.getMenu().size(); i++) {
MenuItem menuItem = navigationView.getMenu().getItem(i);
NavDrawerItem navDrawerItem = findNavDrawerByMenu(menuItem);
menuItem.setChecked(navDrawerItem.matchesActivity(AbstractApplication.get().getCurrentActivity()));
}
}
private NavDrawerItem findNavDrawerByMenu(MenuItem menuItem) {
for (NavDrawerItem each: navDrawerItems) {
if (each.getItemId().equals(menuItem.getItemId())) {
return each;
}
}
return null;
}
protected abstract List<NavDrawerItem> createNavDrawerItems();
protected void initNavDrawerHeader(NavDrawerHeader navDrawerHeader) {
User user = SecurityContext.get().getUser();
if (user != null) {
navDrawerHeader.setBackground(user.getCoverPictureUrl(), User.PROFILE_PICTURE_TTL);
navDrawerHeader.setMainImage(user.getProfilePictureUrl(), User.PROFILE_PICTURE_TTL);
navDrawerHeader.setTitle(user.getFullname());
navDrawerHeader.setSubTitle(user.getEmail());
} else {
navDrawerHeader.setMainImage(AbstractApplication.get().getLauncherIconResId());
navDrawerHeader.setTitle(getActivity().getString(R.string.jdroid_appName));
String website = AbstractApplication.get().getAppContext().getWebsite();
if (website != null) {
navDrawerHeader.setSubTitle(website.replaceAll("http://", ""));
}
}
}
}