32 extends AppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback
34 @Override
protected void onCreate(Bundle savedInstanceState)
36 super.onCreate(savedInstanceState);
37 setContentView(R.layout.activity_settings);
42 if (getSupportActionBar() !=
null)
44 getSupportActionBar().setDisplayHomeAsUpEnabled(
true);
47 if (savedInstanceState ==
null)
49 getSupportFragmentManager()
51 .replace(R.id.settings_fragment_container,
new MainFragment())
56 @Override
public boolean onSupportNavigateUp()
58 if (getSupportFragmentManager().getBackStackEntryCount() > 0)
60 getSupportFragmentManager().popBackStack();
70 public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref)
72 PreferenceFragmentCompat fragment =
73 (PreferenceFragmentCompat)getSupportFragmentManager().getFragmentFactory().instantiate(
74 getClassLoader(), pref.getFragment());
75 fragment.setArguments(pref.getExtras());
77 getSupportFragmentManager()
79 .replace(R.id.settings_fragment_container, fragment)
94 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
96 setPreferencesFromResource(R.xml.settings_app_headers, rootKey);
104 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
106 setPreferencesFromResource(R.xml.settings_app_client, rootKey);
112 public static class UiFragment extends PreferenceFragmentCompat
114 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
116 setPreferencesFromResource(R.xml.settings_app_ui, rootKey);
117 ListPreference theme = findPreference(getString(R.string.pref_key_theme));
119 theme.setOnPreferenceChangeListener((p, v) -> {
120 AppCompatDelegate.setDefaultNightMode(nightModeFor((String)v));
121 requireActivity().recreate();
131 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
133 setPreferencesFromResource(R.xml.settings_app_power, rootKey);
141 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
143 setPreferencesFromResource(R.xml.settings_app_security, rootKey);
145 Preference clearCache =
146 findPreference(getString(R.string.preference_key_security_clear_certificate_cache));
147 if (clearCache !=
null)
148 clearCache.setOnPreferenceClickListener(pref -> {
149 showClearCacheDialog();
154 private void showClearCacheDialog()
157 .Builder(requireContext())
159 .setTitle(R.string.dlg_title_clear_cert_cache)
160 .setMessage(R.string.dlg_msg_clear_cert_cache)
161 .setPositiveButton(android.R.string.ok,
163 clearCertificateCache();
166 .setNegativeButton(android.R.string.cancel, (d, w) -> d.dismiss())
167 .setIcon(android.R.drawable.ic_delete)
171 private boolean deleteDirectory(File dir)
173 if (dir.isDirectory())
175 String[] children = dir.list();
176 for (String file : children)
178 if (!deleteDirectory(
new File(dir, file)))
185 private void clearCertificateCache()
187 Context context = requireContext();
188 File dir =
new File(context.getFilesDir() +
"/.freerdp");
191 if (deleteDirectory(dir))
192 Toast.makeText(context, R.string.info_reset_success, Toast.LENGTH_LONG).show();
194 Toast.makeText(context, R.string.info_reset_failed, Toast.LENGTH_LONG).show();
198 Toast.makeText(context, R.string.info_reset_success, Toast.LENGTH_LONG).show();
203 public static SharedPreferences
get(Context context)
205 Context appContext = context.getApplicationContext();
206 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_client,
false);
207 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_power,
false);
208 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_security,
false);
209 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_ui,
false);
210 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(appContext);
212 final String key = context.getString(R.string.preference_key_client_name);
213 final String value = preferences.getString(key,
"");
216 final String android_id =
UUID.randomUUID().toString();
217 final String defaultValue = context.getString(R.string.preference_default_client_name);
218 final String name = defaultValue +
"-" + android_id;
219 preferences.edit().putString(key, name.substring(0, 31)).apply();
225 public static int getDisconnectTimeout(Context context)
227 SharedPreferences preferences =
get(context);
228 return preferences.getInt(
229 context.getString(R.string.preference_key_power_disconnect_timeout), 0);
232 public static boolean getKeepScreenOnWhenConnected(Context context)
234 SharedPreferences preferences =
get(context);
235 return preferences.getBoolean(
236 context.getString(R.string.preference_key_power_keep_screen_on_when_connected),
false);
239 public static boolean getHideStatusBar(Context context)
241 SharedPreferences preferences =
get(context);
242 return preferences.getBoolean(context.getString(R.string.preference_key_ui_hide_status_bar),
246 public static boolean getHideNavigationBar(Context context)
248 SharedPreferences preferences =
get(context);
249 return preferences.getBoolean(
250 context.getString(R.string.preference_key_ui_hide_navigation_bar),
false);
253 public static boolean getFitRoundedCorners(Context context)
255 SharedPreferences preferences =
get(context);
256 return preferences.getBoolean(
257 context.getString(R.string.preference_key_ui_fit_rounded_corners),
false);
260 public static boolean getUseBackAsAltf4(Context context)
262 SharedPreferences preferences =
get(context);
263 return preferences.getBoolean(
264 context.getString(R.string.preference_key_ui_use_back_as_altf4),
false);
267 public static boolean getAcceptAllCertificates(Context context)
269 SharedPreferences preferences =
get(context);
270 return preferences.getBoolean(
271 context.getString(R.string.preference_key_accept_certificates),
false);
274 public static boolean getSwapMouseButtons(Context context)
276 SharedPreferences preferences =
get(context);
277 return preferences.getBoolean(
278 context.getString(R.string.preference_key_ui_swap_mouse_buttons),
false);
281 public static boolean getInvertScrolling(Context context)
283 SharedPreferences preferences =
get(context);
284 return preferences.getBoolean(
285 context.getString(R.string.preference_key_ui_invert_scrolling),
false);
288 public static boolean getAskOnExit(Context context)
290 SharedPreferences preferences =
get(context);
291 return preferences.getBoolean(context.getString(R.string.preference_key_ui_ask_on_exit),
295 public static boolean getAutoScrollTouchPointer(Context context)
297 SharedPreferences preferences =
get(context);
298 return preferences.getBoolean(
299 context.getString(R.string.preference_key_ui_auto_scroll_touchpointer),
false);
302 public static String getClientName(Context context)
304 SharedPreferences preferences =
get(context);
305 return preferences.getString(context.getString(R.string.preference_key_client_name),
"");
308 public static int getNightMode(Context context)
311 get(context).getString(context.getString(R.string.pref_key_theme),
"auto"));
314 private static int nightModeFor(String value)
319 return AppCompatDelegate.MODE_NIGHT_NO;
321 return AppCompatDelegate.MODE_NIGHT_YES;
323 return AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;