1 /* Copyright 2016 Braden Farmer
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
7 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package com.farmerbb.taskbar.fragment;
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;
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;
37 public class GeneralFragment extends SettingsFragment implements Preference.OnPreferenceClickListener {
40 public void onCreate(Bundle savedInstanceState) {
41 finishedLoadingPrefs = false;
43 super.onCreate(savedInstanceState);
46 addPreferencesFromResource(R.xml.pref_general);
48 // Set OnClickListeners for certain preferences
49 findPreference("blacklist").setOnPreferenceClickListener(this);
50 findPreference("notification_settings").setOnPreferenceClickListener(this);
52 if(U.canEnableFreeform()
53 && !U.isChromeOs(getActivity())
54 && !U.isOverridingFreeformHack(getActivity()))
55 findPreference("hide_taskbar").setSummary(R.string.hide_taskbar_disclaimer);
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"));
65 if(U.isChromeOs(getActivity()))
66 bindPreferenceSummaryToValue(findPreference("chrome_os_context_menu_fix"));
68 getPreferenceScreen().removePreference(findPreference("chrome_os_context_menu_fix"));
70 finishedLoadingPrefs = true;
74 public void onActivityCreated(Bundle savedInstanceState) {
75 super.onActivityCreated(savedInstanceState);
77 AppCompatActivity activity = (AppCompatActivity) getActivity();
78 activity.setTitle(R.string.pref_header_general);
79 ActionBar actionBar = activity.getSupportActionBar();
81 actionBar.setDisplayHomeAsUpEnabled(true);
85 public void onResume() {
88 int size = Blacklist.getInstance(getActivity()).getBlockedApps().size();
89 String summary = size == 1 ? getString(R.string.app_hidden) : getString(R.string.apps_hidden, size);
91 size = TopApps.getInstance(getActivity()).getTopApps().size();
92 summary = summary + "\n" + (size == 1 ? getString(R.string.top_app) : getString(R.string.top_apps, size));
94 Preference blacklistPref = findPreference("blacklist");
95 if(blacklistPref != null) {
96 blacklistPref.setSummary(summary);
100 @TargetApi(Build.VERSION_CODES.O)
102 public boolean onPreferenceClick(final Preference p) {
103 final SharedPreferences pref = U.getSharedPreferences(getActivity());
107 Intent intent = null;
109 switch(pref.getString("theme", "light")) {
111 intent = new Intent(getActivity(), SelectAppActivity.class);
114 intent = new Intent(getActivity(), SelectAppActivityDark.class);
118 startActivity(intent);
120 case "notification_settings":
121 Intent intent2 = new Intent();
122 intent2.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
124 if(Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1)
125 intent2.putExtra(Settings.EXTRA_APP_PACKAGE, BuildConfig.APPLICATION_ID);
127 intent2.putExtra("app_package", BuildConfig.APPLICATION_ID);
128 intent2.putExtra("app_uid", getActivity().getApplicationInfo().uid);
132 startActivity(intent2);
133 restartNotificationService = true;
134 } catch (ActivityNotFoundException e) { /* Gracefully fail */ }