OSDN Git Service

Split remote folder settings into home and drawer sections
[android-x86/packages-apps-Trebuchet.git] / src / com / android / launcher3 / OverviewSettingsPanel.java
1 package com.android.launcher3;
2
3 import android.content.res.Resources;
4 import android.database.Cursor;
5 import android.database.MatrixCursor;
6 import android.widget.ListView;
7 import com.android.launcher3.list.PinnedHeaderListView;
8 import com.android.launcher3.list.SettingsPinnedHeaderAdapter;
9
10 import java.util.ArrayList;
11 import java.util.Arrays;
12
13 public class OverviewSettingsPanel {
14     public static final String ANDROID_SETTINGS = "com.android.settings";
15     public static final String ANDROID_PROTECTED_APPS =
16             "com.android.settings.applications.ProtectedAppsActivity";
17     public static final int HOME_SETTINGS_POSITION = 0;
18     public static final int DRAWER_SETTINGS_POSITION = 1;
19     public static final int APP_SETTINGS_POSITION = 2;
20
21     private Launcher mLauncher;
22     private SettingsPinnedHeaderAdapter mSettingsAdapter;
23     private PinnedHeaderListView mListView;
24
25     OverviewSettingsPanel(Launcher launcher) {
26         mLauncher = launcher;
27     }
28
29     // One time initialization of the SettingsPinnedHeaderAdapter
30     public void initializeAdapter() {
31         // Settings pane Listview
32         mListView = (PinnedHeaderListView) mLauncher
33                 .findViewById(R.id.settings_home_screen_listview);
34         mListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER);
35         Resources res = mLauncher.getResources();
36         String[] headers = new String[] {
37                 res.getString(R.string.home_screen_settings),
38                 res.getString(R.string.drawer_settings),
39                 res.getString(R.string.app_settings)};
40
41         String[] valuesApp = new String[] {
42                 res.getString(R.string.larger_icons_text),
43                 res.getString(R.string.protected_app_settings),
44                 res.getString(R.string.allow_rotation_title)};
45
46         mSettingsAdapter = new SettingsPinnedHeaderAdapter(mLauncher);
47         mSettingsAdapter.setHeaders(headers);
48         mSettingsAdapter.addPartition(false, true);
49         mSettingsAdapter.addPartition(false, true);
50         mSettingsAdapter.addPartition(false, true);
51         mSettingsAdapter.mPinnedHeaderCount = headers.length;
52
53         mSettingsAdapter.changeCursor(HOME_SETTINGS_POSITION,
54                 createCursor(headers[0], getValuesHome()));
55         mSettingsAdapter.changeCursor(DRAWER_SETTINGS_POSITION,
56                 createCursor(headers[1], getValuesDrawer()));
57         mSettingsAdapter.changeCursor(APP_SETTINGS_POSITION, createCursor(headers[2], valuesApp));
58         mListView.setAdapter(mSettingsAdapter);
59     }
60
61     private Cursor createCursor(String header, String[] values) {
62         MatrixCursor cursor = new MatrixCursor(new String[]{"_id", header});
63         int count = values.length;
64         for (int i = 0; i < count; i++) {
65             cursor.addRow(new Object[]{i, values[i]});
66         }
67         return cursor;
68     }
69
70     private String[] getValuesHome() {
71         Resources res = mLauncher.getResources();
72         ArrayList<String> values = new ArrayList<String>(Arrays.asList(new String[]{
73                 res.getString(R.string.home_screen_search_text),
74                 res.getString(R.string.icon_labels),
75                 res.getString(R.string.scrolling_wallpaper),
76                 res.getString(R.string.grid_size_text)}));
77
78         // Add additional external settings.
79         RemoteFolderManager.onInitializeHomeSettings(values, mLauncher);
80
81         String[] valuesArr = new String[values.size()];
82         values.toArray(valuesArr);
83         return valuesArr;
84     }
85
86     private String[] getValuesDrawer() {
87         Resources res = mLauncher.getResources();
88         ArrayList<String> values = new ArrayList<String>(Arrays.asList(new String[]{
89                 res.getString(R.string.icon_labels),
90                 res.getString(R.string.app_drawer_style),
91                 res.getString(R.string.app_drawer_color),
92                 res.getString(R.string.fast_scroller),
93                 res.getString(R.string.fast_scroller_type),
94                 res.getString(R.string.home_screen_search_text)}));
95
96         // Add additional external settings.
97         RemoteFolderManager.onInitializeDrawerSettings(values, mLauncher);
98
99         String[] valuesArr = new String[values.size()];
100         values.toArray(valuesArr);
101         return valuesArr;
102     }
103
104     public void notifyDataSetInvalidated() {
105         mSettingsAdapter.notifyDataSetInvalidated();
106     }
107 }