OSDN Git Service

969e51f4872ed5b54d95230a4ae2ae2e7fcf0e89
[android-x86/packages-apps-Taskbar.git] / app / src / main / java / com / farmerbb / taskbar / fragment / DesktopModeFragment.java
1 /* Copyright 2020 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.ComponentName;
21 import android.content.Intent;
22 import android.content.SharedPreferences;
23 import android.content.pm.PackageManager;
24 import android.os.Bundle;
25 import android.preference.CheckBoxPreference;
26 import android.preference.Preference;
27 import android.provider.Settings;
28
29 import androidx.appcompat.app.ActionBar;
30 import androidx.appcompat.app.AppCompatActivity;
31
32 import com.farmerbb.taskbar.R;
33 import com.farmerbb.taskbar.activity.HSLActivity;
34 import com.farmerbb.taskbar.activity.HSLConfigActivity;
35 import com.farmerbb.taskbar.activity.SecondaryHomeActivity;
36 import com.farmerbb.taskbar.util.U;
37
38 public class DesktopModeFragment extends SettingsFragment {
39
40     @Override
41     public void onCreate(Bundle savedInstanceState) {
42         finishedLoadingPrefs = false;
43
44         super.onCreate(savedInstanceState);
45
46         // Add preferences
47         addPreferencesFromResource(R.xml.tb_pref_desktop_mode);
48
49         // Set OnClickListeners for certain preferences
50         findPreference("desktop_mode").setOnPreferenceClickListener(this);
51         findPreference("set_launcher_default").setOnPreferenceClickListener(this);
52         findPreference("primary_launcher").setOnPreferenceClickListener(this);
53
54         SharedPreferences pref = U.getSharedPreferences(getActivity());
55         if(pref.getBoolean("launcher", false))
56             findPreference("desktop_mode").setEnabled(false);
57         else
58             bindPreferenceSummaryToValue(findPreference("desktop_mode"));
59
60         bindPreferenceSummaryToValue(findPreference("display_density"));
61
62         boolean writeSecureSettings = U.hasWriteSecureSettingsPermission(getActivity());
63         findPreference("display_density").setEnabled(writeSecureSettings);
64         findPreference("auto_hide_navbar").setEnabled(writeSecureSettings);
65
66         finishedLoadingPrefs = true;
67     }
68
69     @Override
70     public void onActivityCreated(Bundle savedInstanceState) {
71         super.onActivityCreated(savedInstanceState);
72
73         AppCompatActivity activity = (AppCompatActivity) getActivity();
74         activity.setTitle(R.string.tb_pref_header_desktop_mode);
75         ActionBar actionBar = activity.getSupportActionBar();
76         if(actionBar != null)
77             actionBar.setDisplayHomeAsUpEnabled(true);
78     }
79
80     @Override
81     public void onResume() {
82         super.onResume();
83
84         Preference primaryLauncherPref = findPreference("primary_launcher");
85         if(primaryLauncherPref != null) {
86             SharedPreferences pref = U.getSharedPreferences(getActivity());
87             String primaryLauncherName = pref.getString("hsl_name", "null");
88             String primaryLauncherPackage = pref.getString("hsl_id", "null");
89
90             boolean primaryLauncherValid = true;
91             try {
92                 getActivity().getPackageManager().getPackageInfo(primaryLauncherPackage, 0);
93             } catch (PackageManager.NameNotFoundException e) {
94                 primaryLauncherValid = false;
95             }
96
97             primaryLauncherPref.setSummary(primaryLauncherValid
98                     ? primaryLauncherName
99                     : getString(R.string.tb_icon_pack_none)
100             );
101         }
102     }
103
104     @TargetApi(29)
105     @Override
106     public boolean onPreferenceClick(final Preference p) {
107         switch(p.getKey()) {
108             case "desktop_mode":
109                 ComponentName component = new ComponentName(getActivity(), SecondaryHomeActivity.class);
110                 getActivity().getPackageManager().setComponentEnabledSetting(component,
111                         ((CheckBoxPreference) p).isChecked()
112                                 ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
113                                 : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
114                         PackageManager.DONT_KILL_APP);
115
116                 ComponentName component2 = new ComponentName(getActivity(), HSLActivity.class);
117                 getActivity().getPackageManager().setComponentEnabledSetting(component2,
118                         ((CheckBoxPreference) p).isChecked()
119                                 ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
120                                 : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
121                         PackageManager.DONT_KILL_APP);
122
123                break;
124             case "set_launcher_default":
125                 try {
126                     startActivity(new Intent(Settings.ACTION_HOME_SETTINGS));
127                 } catch (ActivityNotFoundException e) {
128                     U.showToastLong(getActivity(), R.string.tb_unable_to_set_default_home);
129                 }
130
131                 break;
132             case "primary_launcher":
133                 Intent intent = new Intent(getActivity(), HSLConfigActivity.class);
134                 intent.putExtra("return_to_settings", true);
135                 startActivity(intent);
136
137                 break;
138         }
139
140         return super.onPreferenceClick(p);
141     }
142 }