1ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri/*
2ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * Copyright (C) 2016 The Android Open Source Project
3ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri *
4ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * Licensed under the Apache License, Version 2.0 (the "License");
5ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * you may not use this file except in compliance with the License.
6ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * You may obtain a copy of the License at
7ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri *
8ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri *      http://www.apache.org/licenses/LICENSE-2.0
9ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri *
10ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * Unless required by applicable law or agreed to in writing, software
11ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * distributed under the License is distributed on an "AS IS" BASIS,
12ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * See the License for the specific language governing permissions and
14ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri * limitations under the License.
15ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri */
16ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
17ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiripackage com.example.android.leanback;
18ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
19ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiriimport android.os.Bundle;
20def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.widget.Toast;
21def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
22ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.preference.LeanbackPreferenceFragment;
23ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.preference.LeanbackSettingsFragment;
24ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.preference.Preference;
25def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.preference.PreferenceFragment;
26ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.preference.PreferenceScreen;
27ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
28ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiriimport java.util.Arrays;
29ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
30ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
31ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
32ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiripublic class SettingsFragment extends LeanbackSettingsFragment {
33ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
34ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
35ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    private static final int sPreferenceResId = R.xml.prefs;
36ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
37ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    @Override
38ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    public void onPreferenceStartInitialScreen() {
39ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        startPreferenceFragment(buildPreferenceFragment(null));
40ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    }
41ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
42ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    @Override
43ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    public boolean onPreferenceStartFragment(PreferenceFragment preferenceFragment,
44ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                                             Preference preference) {
45ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        return false;
46ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    }
47ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
48ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    @Override
49ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    public boolean onPreferenceStartScreen(PreferenceFragment preferenceFragment,
50ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                                           PreferenceScreen preferenceScreen) {
51ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        PreferenceFragment frag = buildPreferenceFragment(preferenceScreen.getKey());
52ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        frag.setTargetFragment(preferenceFragment, 0);
53ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        startPreferenceFragment(frag);
54ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        return true;
55ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    }
56ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
57ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
58ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    private PreferenceFragment buildPreferenceFragment(String rootKey) {
59ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        PreferenceFragment fragment = new PrefFragment();
60ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        Bundle args = new Bundle();
61ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        args.putString(PreferenceFragment.ARG_PREFERENCE_ROOT, rootKey);
62ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        fragment.setArguments(args);
63ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        return fragment;
64ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    }
65ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
66ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    public static class PrefFragment extends LeanbackPreferenceFragment {
67ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
68ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        @Override
69ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        public void onCreate(Bundle savedInstanceState) {
70ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri            super.onCreate(savedInstanceState);
71ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        }
72ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
73ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        @Override
74ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        public void onCreatePreferences(Bundle bundle, String rootKey) {
75ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri            setPreferencesFromResource(sPreferenceResId, rootKey);
76ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        }
77ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
78ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        @Override
79ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        public boolean onPreferenceTreeClick(Preference preference) {
80ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri            final String[] keys = {"prefs_wifi_connect_wps", "prefs_date", "prefs_time",
81ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                    "prefs_date_time_use_timezone", "app_banner_sample_app", "pref_force_stop",
82ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                    "pref_uninstall", "pref_more_info"};
83ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri            if (Arrays.asList(keys).contains(preference.getKey())) {
84ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                Toast.makeText(getActivity(), "Implement your own action handler.",
85ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                        Toast.LENGTH_SHORT).show();
86ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri                return true;
87ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri            }
88ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri            return super.onPreferenceTreeClick(preference);
89ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri        }
90ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri
91ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri    }
92ad3b46937808b5bf0afde9b5500af0d1f7e13149Keyvan Amiri}
93