Add option to configure shown navigation drawer items

This commit is contained in:
Synced Synapse 2015-11-10 22:05:07 +00:00
parent cc3ecdd5f5
commit e86f82ba4c
6 changed files with 79 additions and 33 deletions

View File

@ -17,6 +17,8 @@ package org.xbmc.kore;
import android.text.format.DateUtils;
import java.util.Set;
/**
* Interface that contains various constants and the keys for settings stored in shared preferences
*/
@ -96,4 +98,5 @@ public interface Settings {
public static final String KEY_PREF_CHECKED_EVENT_SERVER_CONNECTION = "checked_event_server_connection";
public static final boolean DEFAULT_PREF_CHECKED_EVENT_SERVER_CONNECTION = false;
public static final String KEY_PREF_NAV_DRAWER_ITEMS = "pref_nav_drawer_items";
}

View File

@ -40,11 +40,17 @@ import android.widget.ListView;
import android.widget.TextView;
import org.xbmc.kore.R;
import org.xbmc.kore.Settings;
import org.xbmc.kore.host.HostInfo;
import org.xbmc.kore.host.HostManager;
import org.xbmc.kore.ui.hosts.HostManagerActivity;
import org.xbmc.kore.utils.LogUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* Fragment used for managing interactions for and presentation of a navigation drawer.
* See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
@ -135,40 +141,51 @@ public class NavigationDrawerFragment extends Fragment {
HostInfo hostInfo = HostManager.getInstance(getActivity()).getHostInfo();
String hostName = (hostInfo != null) ? hostInfo.getName() : getString(R.string.xbmc_media_center);
DrawerItem items[] = new DrawerItem[]{
new DrawerItem(DrawerItem.TYPE_HOST, ACTIVITY_HOSTS, hostName,
styledAttributes.getResourceId(ACTIVITY_HOSTS, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_REMOTE,
getString(R.string.remote),
styledAttributes.getResourceId(ACTIVITY_REMOTE, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_MOVIES,
getString(R.string.movies),
styledAttributes.getResourceId(ACTIVITY_MOVIES, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_TVSHOWS,
getString(R.string.tv_shows),
styledAttributes.getResourceId(ACTIVITY_TVSHOWS, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_MUSIC,
getString(R.string.music),
styledAttributes.getResourceId(ACTIVITY_MUSIC, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_PVR,
getString(R.string.tv_radio),
styledAttributes.getResourceId(ACTIVITY_PVR, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_FILES,
getString(R.string.files),
styledAttributes.getResourceId(ACTIVITY_FILES, 0)),
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_ADDONS,
getString(R.string.addons),
styledAttributes.getResourceId(ACTIVITY_ADDONS, 0)),
new DrawerItem(), // Divider
new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_SETTINGS,
getString(R.string.settings),
styledAttributes.getResourceId(ACTIVITY_SETTINGS, 0)),
};
Set<String> shownItems = PreferenceManager
.getDefaultSharedPreferences(getActivity())
.getStringSet(Settings.KEY_PREF_NAV_DRAWER_ITEMS,
new HashSet<>(Arrays.asList(getResources().getStringArray(R.array.entry_values_nav_drawer_items))));
ArrayList<DrawerItem> items = new ArrayList<>(15);
items.add(new DrawerItem(DrawerItem.TYPE_HOST, ACTIVITY_HOSTS, hostName,
styledAttributes.getResourceId(ACTIVITY_HOSTS, 0)));
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_REMOTE,
getString(R.string.remote),
styledAttributes.getResourceId(ACTIVITY_REMOTE, 0)));
if (shownItems.contains(String.valueOf(ACTIVITY_MOVIES)))
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_MOVIES,
getString(R.string.movies),
styledAttributes.getResourceId(ACTIVITY_MOVIES, 0)));
if (shownItems.contains(String.valueOf(ACTIVITY_TVSHOWS)))
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_TVSHOWS,
getString(R.string.tv_shows),
styledAttributes.getResourceId(ACTIVITY_TVSHOWS, 0)));
if (shownItems.contains(String.valueOf(ACTIVITY_MUSIC)))
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_MUSIC,
getString(R.string.music),
styledAttributes.getResourceId(ACTIVITY_MUSIC, 0)));
if (shownItems.contains(String.valueOf(ACTIVITY_PVR)))
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_PVR,
getString(R.string.tv_radio),
styledAttributes.getResourceId(ACTIVITY_PVR, 0)));
if (shownItems.contains(String.valueOf(ACTIVITY_FILES)))
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_FILES,
getString(R.string.files),
styledAttributes.getResourceId(ACTIVITY_FILES, 0)));
if (shownItems.contains(String.valueOf(ACTIVITY_ADDONS)))
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_ADDONS,
getString(R.string.addons),
styledAttributes.getResourceId(ACTIVITY_ADDONS, 0)));
items.add(new DrawerItem()); // Divider
items.add(new DrawerItem(DrawerItem.TYPE_NORMAL_ITEM, ACTIVITY_SETTINGS,
getString(R.string.settings),
styledAttributes.getResourceId(ACTIVITY_SETTINGS, 0)));
styledAttributes.recycle();
mDrawerListView.setAdapter(new DrawerItemAdapter(
getActivity(),
R.layout.list_item_navigation_drawer,
items));
items.toArray(new DrawerItem[items.size()])));
return mDrawerListView;
}

View File

@ -67,9 +67,7 @@ public class SettingsFragment extends PreferenceFragment
// Update summaries
setupPreferences();
if (key.equals(Settings.KEY_PREF_THEME)) {
//String newTheme = sharedPreferences.getString(key, DEFAULT_PREF_THEME);
if (key.equals(Settings.KEY_PREF_THEME) || key.equals(Settings.KEY_PREF_NAV_DRAWER_ITEMS)) {
// Explicitly clear cache of resource ids that is maintained in the activity
UIUtils.playPauseIconsLoaded = false;

View File

@ -41,4 +41,24 @@
<!--<item>4</item>-->
</string-array>
<!-- Navigation Drawer items -->
<string-array name="entries_nav_drawer_items">
<item>@string/movies</item>
<item>@string/tv_shows</item>
<item>@string/music</item>
<item>@string/tv_radio</item>
<item>@string/files</item>
<item>@string/addons</item>
</string-array>
<!-- CAUTION: Keep this synced with the entries ids in NavigationDrawerFragment.java -->
<string-array translatable="false" name="entry_values_nav_drawer_items">
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
</string-array>
</resources>

View File

@ -314,6 +314,7 @@
<string name="show_notification">Show notification while playing</string>
<string name="use_hardware_volume_keys">Use volume keys to control volume</string>
<string name="vibrate_on_remote">Vibrate on remote button press</string>
<string name="nav_drawer_items">Side menu shortcuts</string>
<string name="about">About</string>
<string name="about_desc"><![CDATA[

View File

@ -44,6 +44,13 @@
android:title="@string/vibrate_on_remote"
android:defaultValue="false"/>
<MultiSelectListPreference
android:key="pref_nav_drawer_items"
android:title="@string/nav_drawer_items"
android:entries="@array/entries_nav_drawer_items"
android:entryValues="@array/entry_values_nav_drawer_items"
android:defaultValue="@array/entry_values_nav_drawer_items"/>
<Preference
android:key="pref_about"
android:title="@string/about"/>