Add option to configure shown navigation drawer items
This commit is contained in:
parent
cc3ecdd5f5
commit
e86f82ba4c
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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[
|
||||
|
|
|
@ -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"/>
|
||||
|
|
Loading…
Reference in New Issue