OSDN Git Service

Update to SDK 28 + remove SDK 25 compat support
[android-x86/packages-apps-Taskbar.git] / app / src / main / java / com / farmerbb / taskbar / fragment / GeneralFragment.java
1 /* Copyright 2016 Braden Farmer
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16 package com.farmerbb.taskbar.fragment;
17
18 import android.annotation.TargetApi;
19 import android.content.ActivityNotFoundException;
20 import android.content.Intent;
21 import android.content.SharedPreferences;
22 import android.os.Build;
23 import android.os.Bundle;
24 import android.preference.Preference;
25 import android.provider.Settings;
26 import android.support.v7.app.ActionBar;
27 import android.support.v7.app.AppCompatActivity;
28
29 import com.farmerbb.taskbar.BuildConfig;
30 import com.farmerbb.taskbar.R;
31 import com.farmerbb.taskbar.activity.SelectAppActivity;
32 import com.farmerbb.taskbar.activity.dark.SelectAppActivityDark;
33 import com.farmerbb.taskbar.util.Blacklist;
34 import com.farmerbb.taskbar.util.TopApps;
35 import com.farmerbb.taskbar.util.U;
36
37 public class GeneralFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
38
39     @Override
40     public void onCreate(Bundle savedInstanceState) {
41         finishedLoadingPrefs = false;
42
43         super.onCreate(savedInstanceState);
44
45         // Add preferences
46         addPreferencesFromResource(R.xml.pref_general);
47
48         // Set OnClickListeners for certain preferences
49         findPreference("blacklist").setOnPreferenceClickListener(this);
50         findPreference("notification_settings").setOnPreferenceClickListener(this);
51
52         if(U.canEnableFreeform()
53                 && !U.isChromeOs(getActivity())
54                 && !U.isOverridingFreeformHack(getActivity()))
55             findPreference("hide_taskbar").setSummary(R.string.hide_taskbar_disclaimer);
56
57         bindPreferenceSummaryToValue(findPreference("start_menu_layout"));
58         bindPreferenceSummaryToValue(findPreference("scrollbar"));
59         bindPreferenceSummaryToValue(findPreference("position"));
60         bindPreferenceSummaryToValue(findPreference("anchor"));
61         bindPreferenceSummaryToValue(findPreference("alt_button_config"));
62         bindPreferenceSummaryToValue(findPreference("show_search_bar"));
63         bindPreferenceSummaryToValue(findPreference("hide_when_keyboard_shown"));
64
65         if(U.isChromeOs(getActivity()))
66             bindPreferenceSummaryToValue(findPreference("chrome_os_context_menu_fix"));
67         else
68             getPreferenceScreen().removePreference(findPreference("chrome_os_context_menu_fix"));
69
70         finishedLoadingPrefs = true;
71     }
72
73     @Override
74     public void onActivityCreated(Bundle savedInstanceState) {
75         super.onActivityCreated(savedInstanceState);
76
77         AppCompatActivity activity = (AppCompatActivity) getActivity();
78         activity.setTitle(R.string.pref_header_general);
79         ActionBar actionBar = activity.getSupportActionBar();
80         if(actionBar != null)
81             actionBar.setDisplayHomeAsUpEnabled(true);
82     }
83
84     @Override
85     public void onResume() {
86         super.onResume();
87
88         int size = Blacklist.getInstance(getActivity()).getBlockedApps().size();
89         String summary = size == 1 ? getString(R.string.app_hidden) : getString(R.string.apps_hidden, size);
90
91         size = TopApps.getInstance(getActivity()).getTopApps().size();
92         summary = summary + "\n" + (size == 1 ? getString(R.string.top_app) : getString(R.string.top_apps, size));
93
94         Preference blacklistPref = findPreference("blacklist");
95         if(blacklistPref != null) {
96             blacklistPref.setSummary(summary);
97         }
98     }
99
100     @TargetApi(Build.VERSION_CODES.O)
101     @Override
102     public boolean onPreferenceClick(final Preference p) {
103         final SharedPreferences pref = U.getSharedPreferences(getActivity());
104
105         switch(p.getKey()) {
106             case "blacklist":
107                 Intent intent = null;
108
109                 switch(pref.getString("theme", "light")) {
110                     case "light":
111                         intent = new Intent(getActivity(), SelectAppActivity.class);
112                         break;
113                     case "dark":
114                         intent = new Intent(getActivity(), SelectAppActivityDark.class);
115                         break;
116                 }
117
118                 startActivity(intent);
119                 break;
120             case "notification_settings":
121                 Intent intent2 = new Intent();
122                 intent2.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
123
124                 if(Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1)
125                     intent2.putExtra(Settings.EXTRA_APP_PACKAGE, BuildConfig.APPLICATION_ID);
126                 else {
127                     intent2.putExtra("app_package", BuildConfig.APPLICATION_ID);
128                     intent2.putExtra("app_uid", getActivity().getApplicationInfo().uid);
129                 }
130
131                 try {
132                     startActivity(intent2);
133                     restartNotificationService = true;
134                 } catch (ActivityNotFoundException e) { /* Gracefully fail */ }
135                 break;
136         }
137
138         return true;
139     }
140 }