/* * Copyright (c) 2016 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.samples.apps.iosched.navigation; import com.google.samples.apps.iosched.BuildConfig; import com.google.samples.apps.iosched.navigation.NavigationModel.NavigationItemEnum; import java.util.ArrayList; import java.util.List; /** * Configuration file for items to show in the {@link AppNavigationView}. This is used by the {@link * NavigationModel}. */ public class NavigationConfig { private final static NavigationItemEnum[] COMMON_ITEMS_AFTER_CUSTOM = new NavigationItemEnum[]{NavigationItemEnum.VIDEO_LIBRARY, NavigationItemEnum.SETTINGS, NavigationItemEnum.ABOUT }; public final static NavigationItemEnum[] NAVIGATION_ITEMS_LOGGEDIN_ATTENDING = concatenateItems(new NavigationItemEnum[]{NavigationItemEnum.MY_SCHEDULE, NavigationItemEnum.IO_LIVE, NavigationItemEnum.EXPLORE, NavigationItemEnum.MAP}, COMMON_ITEMS_AFTER_CUSTOM); public final static NavigationItemEnum[] NAVIGATION_ITEMS_LOGGEDIN_REMOTE = concatenateItems(new NavigationItemEnum[]{NavigationItemEnum.MY_SCHEDULE, NavigationItemEnum.IO_LIVE, NavigationItemEnum.EXPLORE}, COMMON_ITEMS_AFTER_CUSTOM); public final static NavigationItemEnum[] NAVIGATION_ITEMS_LOGGEDOUT_ATTENDING = concatenateItems(new NavigationItemEnum[]{NavigationItemEnum.SIGN_IN, NavigationItemEnum.IO_LIVE, NavigationItemEnum.EXPLORE, NavigationItemEnum.MAP}, COMMON_ITEMS_AFTER_CUSTOM); public final static NavigationItemEnum[] NAVIGATION_ITEMS_LOGGEDOUT_REMOTE = concatenateItems(new NavigationItemEnum[]{NavigationItemEnum.SIGN_IN, NavigationItemEnum.IO_LIVE, NavigationItemEnum.EXPLORE}, COMMON_ITEMS_AFTER_CUSTOM); private static NavigationItemEnum[] concatenateItems(NavigationItemEnum[] first, NavigationItemEnum[] second) { NavigationItemEnum[] items = new NavigationItemEnum[first.length + second.length]; for (int i = 0; i < first.length; i++) { items[i] = first[i]; } for (int i = 0; i < second.length; i++) { items[first.length + i] = second[i]; } return items; } public static NavigationItemEnum[] appendItem(NavigationItemEnum[] first, NavigationItemEnum second) { return concatenateItems(first, new NavigationItemEnum[]{second}); } public static NavigationItemEnum[] filterOutItemsDisabledInBuildConfig( NavigationItemEnum[] items) { List<NavigationItemEnum> enabledItems = new ArrayList<NavigationItemEnum>(); for (int i = 0; i < items.length; i++) { boolean includeItem = true; switch (items[i]) { case MY_SCHEDULE: includeItem = BuildConfig.ENABLE_MYSCHEDULE_IN_NAVIGATION; break; case IO_LIVE: includeItem = BuildConfig.ENABLE_IOLIVE_IN_NAVIGATION; break; case EXPLORE: includeItem = BuildConfig.ENABLE_EXPLORE_IN_NAVIGATION; break; case MAP: includeItem = BuildConfig.ENABLE_MAP_IN_NAVIGATION; break; case VIDEO_LIBRARY: includeItem = BuildConfig.ENABLE_VIDEOLIB_IN_NAVIGATION; break; case SIGN_IN: includeItem = BuildConfig.ENABLE_SIGNIN_IN_NAVIGATION; break; case SETTINGS: includeItem = BuildConfig.ENABLE_SETTINGS_IN_NAVIGATION; break; case ABOUT: includeItem = BuildConfig.ENABLE_ABOUT_IN_NAVIGATION; break; case DEBUG: includeItem = BuildConfig.DEBUG; break; } if (includeItem) { enabledItems.add(items[i]); } } return enabledItems.toArray(new NavigationItemEnum[enabledItems.size()]); } }