30 extends AppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback
32 @Override
protected void onCreate(Bundle savedInstanceState)
34 super.onCreate(savedInstanceState);
35 setContentView(R.layout.activity_settings);
40 if (getSupportActionBar() !=
null)
42 getSupportActionBar().setDisplayHomeAsUpEnabled(
true);
45 if (savedInstanceState ==
null)
47 getSupportFragmentManager()
49 .replace(R.id.settings_fragment_container,
new MainFragment())
54 @Override
public boolean onSupportNavigateUp()
56 if (getSupportFragmentManager().getBackStackEntryCount() > 0)
58 getSupportFragmentManager().popBackStack();
68 public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref)
70 PreferenceFragmentCompat fragment =
71 (PreferenceFragmentCompat)getSupportFragmentManager().getFragmentFactory().instantiate(
72 getClassLoader(), pref.getFragment());
73 fragment.setArguments(pref.getExtras());
75 getSupportFragmentManager()
77 .replace(R.id.settings_fragment_container, fragment)
92 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
94 setPreferencesFromResource(R.xml.settings_app_headers, rootKey);
102 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
104 setPreferencesFromResource(R.xml.settings_app_client, rootKey);
110 public static class UiFragment extends PreferenceFragmentCompat
112 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
114 setPreferencesFromResource(R.xml.settings_app_ui, rootKey);
122 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
124 setPreferencesFromResource(R.xml.settings_app_power, rootKey);
132 @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
134 setPreferencesFromResource(R.xml.settings_app_security, rootKey);
136 Preference clearCache =
137 findPreference(getString(R.string.preference_key_security_clear_certificate_cache));
138 if (clearCache !=
null)
139 clearCache.setOnPreferenceClickListener(pref -> {
140 showClearCacheDialog();
145 private void showClearCacheDialog()
148 .Builder(requireContext())
150 .setTitle(R.string.dlg_title_clear_cert_cache)
151 .setMessage(R.string.dlg_msg_clear_cert_cache)
152 .setPositiveButton(android.R.string.ok,
154 clearCertificateCache();
157 .setNegativeButton(android.R.string.cancel, (d, w) -> d.dismiss())
158 .setIcon(android.R.drawable.ic_delete)
162 private boolean deleteDirectory(File dir)
164 if (dir.isDirectory())
166 String[] children = dir.list();
167 for (String file : children)
169 if (!deleteDirectory(
new File(dir, file)))
176 private void clearCertificateCache()
178 Context context = requireContext();
179 File dir =
new File(context.getFilesDir() +
"/.freerdp");
182 if (deleteDirectory(dir))
183 Toast.makeText(context, R.string.info_reset_success, Toast.LENGTH_LONG).show();
185 Toast.makeText(context, R.string.info_reset_failed, Toast.LENGTH_LONG).show();
189 Toast.makeText(context, R.string.info_reset_success, Toast.LENGTH_LONG).show();
194 public static SharedPreferences
get(Context context)
196 Context appContext = context.getApplicationContext();
197 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_client,
false);
198 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_power,
false);
199 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_security,
false);
200 PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_ui,
false);
201 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(appContext);
203 final String key = context.getString(R.string.preference_key_client_name);
204 final String value = preferences.getString(key,
"");
207 final String android_id =
UUID.randomUUID().toString();
208 final String defaultValue = context.getString(R.string.preference_default_client_name);
209 final String name = defaultValue +
"-" + android_id;
210 preferences.edit().putString(key, name.substring(0, 31)).apply();
216 public static int getDisconnectTimeout(Context context)
218 SharedPreferences preferences =
get(context);
219 return preferences.getInt(
220 context.getString(R.string.preference_key_power_disconnect_timeout), 0);
223 public static boolean getKeepScreenOnWhenConnected(Context context)
225 SharedPreferences preferences =
get(context);
226 return preferences.getBoolean(
227 context.getString(R.string.preference_key_power_keep_screen_on_when_connected),
false);
230 public static boolean getHideStatusBar(Context context)
232 SharedPreferences preferences =
get(context);
233 return preferences.getBoolean(context.getString(R.string.preference_key_ui_hide_status_bar),
237 public static boolean getHideNavigationBar(Context context)
239 SharedPreferences preferences =
get(context);
240 return preferences.getBoolean(
241 context.getString(R.string.preference_key_ui_hide_navigation_bar),
false);
244 public static boolean getHideActionBar(Context context)
246 SharedPreferences preferences =
get(context);
247 return preferences.getBoolean(context.getString(R.string.preference_key_ui_hide_action_bar),
251 public static boolean getUseBackAsAltf4(Context context)
253 SharedPreferences preferences =
get(context);
254 return preferences.getBoolean(
255 context.getString(R.string.preference_key_ui_use_back_as_altf4),
false);
258 public static boolean getAcceptAllCertificates(Context context)
260 SharedPreferences preferences =
get(context);
261 return preferences.getBoolean(
262 context.getString(R.string.preference_key_accept_certificates),
false);
265 public static boolean getSwapMouseButtons(Context context)
267 SharedPreferences preferences =
get(context);
268 return preferences.getBoolean(
269 context.getString(R.string.preference_key_ui_swap_mouse_buttons),
false);
272 public static boolean getInvertScrolling(Context context)
274 SharedPreferences preferences =
get(context);
275 return preferences.getBoolean(
276 context.getString(R.string.preference_key_ui_invert_scrolling),
false);
279 public static boolean getAskOnExit(Context context)
281 SharedPreferences preferences =
get(context);
282 return preferences.getBoolean(context.getString(R.string.preference_key_ui_ask_on_exit),
286 public static boolean getAutoScrollTouchPointer(Context context)
288 SharedPreferences preferences =
get(context);
289 return preferences.getBoolean(
290 context.getString(R.string.preference_key_ui_auto_scroll_touchpointer),
false);
293 public static String getClientName(Context context)
295 SharedPreferences preferences =
get(context);
296 return preferences.getString(context.getString(R.string.preference_key_client_name),
"");