package io.github.droidkaigi.confsched.model; import android.support.v4.app.Fragment; import android.view.MenuItem; import io.github.droidkaigi.confsched.R; import io.github.droidkaigi.confsched.fragment.AboutFragment; import io.github.droidkaigi.confsched.fragment.MapFragment; import io.github.droidkaigi.confsched.fragment.MyScheduleFragment; import io.github.droidkaigi.confsched.fragment.SessionsFragment; import io.github.droidkaigi.confsched.fragment.SettingsFragment; import io.github.droidkaigi.confsched.fragment.SponsorsFragment; /** * @author KeishinYokomaku */ public enum Page { ALL_SESSIONS(R.id.nav_all_sessions, R.string.all_sessions, false, SessionsFragment.class.getSimpleName()) { @Override public Fragment createFragment() { return SessionsFragment.newInstance(); } }, MY_SCHEDULE(R.id.nav_my_schedule, R.string.my_schedule, false, MyScheduleFragment.class.getSimpleName()) { @Override public Fragment createFragment() { return MyScheduleFragment.newInstance(); } }, MAP(R.id.nav_map, R.string.map, true, MapFragment.class.getSimpleName()) { @Override public Fragment createFragment() { return MapFragment.newInstance(); } }, SETTINGS(R.id.nav_settings, R.string.settings, true, SettingsFragment.class.getSimpleName()) { @Override public Fragment createFragment() { return SettingsFragment.newInstance(); } }, SPONSORS(R.id.nav_sponsors, R.string.sponsors, true, SponsorsFragment.class.getSimpleName()) { @Override public Fragment createFragment() { return SponsorsFragment.newInstance(); } }, ABOUT(R.id.nav_about, R.string.about, true, AboutFragment.class.getSimpleName()) { @Override public Fragment createFragment() { return AboutFragment.newInstance(); } }; private final int menuId; private final int titleResId; private final boolean toggleToolbar; private final String pageName; Page(int menuId, int titleResId, boolean toggleToolbar, String pageName) { this.menuId = menuId; this.titleResId = titleResId; this.toggleToolbar = toggleToolbar; this.pageName = pageName; } public static Page forMenuId(MenuItem item) { int id = item.getItemId(); return forMenuId(id); } public static Page forMenuId(int id) { for (Page page : values()) { if (page.menuId == id) { return page; } } throw new AssertionError("no menu enum found for the id. you forgot to implement?"); } public static Page forName(Fragment fragment) { String name = fragment.getClass().getSimpleName(); for (Page page : values()) { if (page.pageName.equals(name)) { return page; } } throw new AssertionError("no menu enum found for the id. you forgot to implement?"); } public int getMenuId() { return menuId; } public boolean shouldToggleToolbar() { return toggleToolbar; } public int getTitleResId() { return titleResId; } public String getPageName() { return pageName; } public abstract Fragment createFragment(); }