package de.tum.in.tumcampusapp.auxiliary;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import de.tum.in.tumcampusapp.R;
import de.tum.in.tumcampusapp.activities.CafeteriaActivity;
import de.tum.in.tumcampusapp.activities.CalendarActivity;
import de.tum.in.tumcampusapp.activities.ChatRoomsActivity;
import de.tum.in.tumcampusapp.activities.CurriculaActivity;
import de.tum.in.tumcampusapp.activities.GradesActivity;
import de.tum.in.tumcampusapp.activities.LecturesPersonalActivity;
import de.tum.in.tumcampusapp.activities.NewsActivity;
import de.tum.in.tumcampusapp.activities.OpeningHoursListActivity;
import de.tum.in.tumcampusapp.activities.OrganisationActivity;
import de.tum.in.tumcampusapp.activities.PersonsSearchActivity;
import de.tum.in.tumcampusapp.activities.PlansActivity;
import de.tum.in.tumcampusapp.activities.RoomFinderActivity;
import de.tum.in.tumcampusapp.activities.StudyRoomsActivity;
import de.tum.in.tumcampusapp.activities.SurveyActivity;
import de.tum.in.tumcampusapp.activities.TransportationActivity;
import de.tum.in.tumcampusapp.activities.TuitionFeesActivity;
public class DrawerMenuHelper implements NavigationView.OnNavigationItemSelectedListener {
private static final SideNavigationItem[] MY_TUM = {
new SideNavigationItem(R.string.schedule, R.drawable.ic_calendar, CalendarActivity.class, true, false),
new SideNavigationItem(R.string.my_lectures, R.drawable.ic_my_lectures, LecturesPersonalActivity.class, true, false),
new SideNavigationItem(R.string.chat_rooms, R.drawable.ic_comment, ChatRoomsActivity.class, true, true),
new SideNavigationItem(R.string.my_grades, R.drawable.ic_my_grades, GradesActivity.class, true, false),
new SideNavigationItem(R.string.tuition_fees, R.drawable.ic_money, TuitionFeesActivity.class, true, false),
};
private static final SideNavigationItem[] COMMON_TUM = {
new SideNavigationItem(R.string.menues, R.drawable.ic_cutlery, CafeteriaActivity.class, false, false),
new SideNavigationItem(R.string.news, R.drawable.ic_rss, NewsActivity.class, false, false),
new SideNavigationItem(R.string.mvv, R.drawable.ic_mvv, TransportationActivity.class, false, false),
new SideNavigationItem(R.string.plans, R.drawable.ic_plans, PlansActivity.class, false, false),
new SideNavigationItem(R.string.roomfinder, R.drawable.ic_place, RoomFinderActivity.class, false, false),
new SideNavigationItem(R.string.study_rooms, R.drawable.ic_group_work, StudyRoomsActivity.class, false, false),
new SideNavigationItem(R.string.opening_hours, R.drawable.ic_time, OpeningHoursListActivity.class, false, false),
new SideNavigationItem(R.string.quiz_title, R.drawable.ic_pie_chart, SurveyActivity.class, true, false),
new SideNavigationItem(R.string.person_search, R.drawable.ic_users, PersonsSearchActivity.class, true, false),
new SideNavigationItem(R.string.organisations, R.drawable.ic_organisations, OrganisationActivity.class, true, false),
new SideNavigationItem(R.string.study_plans, R.drawable.ic_study_plans, CurriculaActivity.class, false, false)
};
private final Context mContext;
private final DrawerLayout mDrawerLayout;
public DrawerMenuHelper(Context context, DrawerLayout drawerLayout) {
mContext = context;
mDrawerLayout = drawerLayout;
}
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
Intent intent = menuItem.getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
mContext.startActivity(intent);
return true;
}
public void populateMenu(Menu navigationMenu) {
boolean hasTUMOAccess = new AccessTokenManager(mContext).hasValidAccessToken();
boolean chatEnabled = Utils.getSettingBool(mContext, Const.GROUP_CHAT_ENABLED, false);
if (hasTUMOAccess) {
SubMenu myTumMenu = navigationMenu.addSubMenu(R.string.my_tum);
for (SideNavigationItem item : MY_TUM) {
if (!(item.needsChatAccess && !chatEnabled)) {
myTumMenu.add(item.titleRes).setIcon(item.iconRes).setIntent(new Intent(mContext, item.activity));
}
}
}
SubMenu commonTumMenu = navigationMenu.addSubMenu(R.string.tum_common);
for (SideNavigationItem item : COMMON_TUM) {
if (!(item.needsTUMOAccess && !hasTUMOAccess)) {
commonTumMenu.add(item.titleRes).setIcon(item.iconRes).setIntent(new Intent(mContext, item.activity));
}
}
}
public static class SideNavigationItem {
final int titleRes;
final int iconRes;
final Class<? extends Activity> activity;
final boolean needsTUMOAccess;
final boolean needsChatAccess;
public SideNavigationItem(int titleRes, int iconRes, Class<? extends Activity> activity, boolean needsTUMOAccess, boolean needsChatAccess) {
this.titleRes = titleRes;
this.iconRes = iconRes;
this.activity = activity;
this.needsTUMOAccess = needsTUMOAccess;
this.needsChatAccess = needsChatAccess;
}
}
}