|
Packit Service |
fa4841 |
/*
|
|
Packit Service |
fa4841 |
Application Settings Activity
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
Packit Service |
fa4841 |
If a copy of the MPL was not distributed with this file, You can obtain one at
|
|
Packit Service |
fa4841 |
http://mozilla.org/MPL/2.0/.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
package com.freerdp.freerdpcore.presentation;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
import android.annotation.TargetApi;
|
|
Packit Service |
fa4841 |
import android.content.Context;
|
|
Packit Service |
fa4841 |
import android.content.DialogInterface;
|
|
Packit Service |
fa4841 |
import android.content.SharedPreferences;
|
|
Packit Service |
fa4841 |
import android.content.res.Configuration;
|
|
Packit Service |
fa4841 |
import android.os.Build;
|
|
Packit Service |
fa4841 |
import android.os.Bundle;
|
|
Packit Service |
fa4841 |
import android.preference.EditTextPreference;
|
|
Packit Service |
fa4841 |
import android.preference.Preference;
|
|
Packit Service |
fa4841 |
import android.preference.PreferenceFragment;
|
|
Packit Service |
fa4841 |
import android.preference.PreferenceManager;
|
|
Packit Service |
fa4841 |
import android.preference.PreferenceScreen;
|
|
Packit Service |
fa4841 |
import android.support.v7.app.AlertDialog;
|
|
Packit Service |
fa4841 |
import android.widget.Toast;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
import com.freerdp.freerdpcore.R;
|
|
Packit Service |
fa4841 |
import com.freerdp.freerdpcore.utils.AppCompatPreferenceActivity;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
import java.io.File;
|
|
Packit Service |
fa4841 |
import java.util.List;
|
|
Packit Service |
fa4841 |
import java.util.UUID;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public class ApplicationSettingsActivity extends AppCompatPreferenceActivity
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
private static boolean isXLargeTablet(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
return (context.getResources().getConfiguration().screenLayout &
|
|
Packit Service |
fa4841 |
Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@Override protected void onCreate(Bundle savedInstanceState)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
super.onCreate(savedInstanceState);
|
|
Packit Service |
fa4841 |
setupActionBar();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
private void setupActionBar()
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
android.app.ActionBar actionBar = getActionBar();
|
|
Packit Service |
fa4841 |
if (actionBar != null)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
actionBar.setDisplayHomeAsUpEnabled(true);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@Override public boolean onIsMultiPane()
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
return isXLargeTablet(this);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@Override
|
|
Packit Service |
fa4841 |
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
Packit Service |
fa4841 |
public void onBuildHeaders(List<Header> target)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
loadHeadersFromResource(R.xml.settings_app_headers, target);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
protected boolean isValidFragment(String fragmentName)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
return PreferenceFragment.class.getName().equals(fragmentName) ||
|
|
Packit Service |
fa4841 |
ClientPreferenceFragment.class.getName().equals(fragmentName) ||
|
|
Packit Service |
fa4841 |
UiPreferenceFragment.class.getName().equals(fragmentName) ||
|
|
Packit Service |
fa4841 |
PowerPreferenceFragment.class.getName().equals(fragmentName) ||
|
|
Packit Service |
fa4841 |
SecurityPreferenceFragment.class.getName().equals(fragmentName);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
Packit Service |
fa4841 |
public static class ClientPreferenceFragment
|
|
Packit Service |
fa4841 |
extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
@Override public void onCreate(Bundle savedInstanceState)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
super.onCreate(savedInstanceState);
|
|
Packit Service |
fa4841 |
addPreferencesFromResource(R.xml.settings_app_client);
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(getActivity());
|
|
Packit Service |
fa4841 |
preferences.registerOnSharedPreferenceChangeListener(this);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@Override
|
|
Packit Service |
fa4841 |
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
if (isAdded())
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
final String clientNameKey = getString(R.string.preference_key_client_name);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
get(getActivity());
|
|
Packit Service |
fa4841 |
if (key.equals(clientNameKey))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
final String clientNameValue = sharedPreferences.getString(clientNameKey, "");
|
|
Packit Service |
fa4841 |
EditTextPreference pref = (EditTextPreference)findPreference(clientNameKey);
|
|
Packit Service |
fa4841 |
pref.setText(clientNameValue);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
Packit Service |
fa4841 |
public static class UiPreferenceFragment extends PreferenceFragment
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
@Override public void onCreate(Bundle savedInstanceState)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
super.onCreate(savedInstanceState);
|
|
Packit Service |
fa4841 |
addPreferencesFromResource(R.xml.settings_app_ui);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
Packit Service |
fa4841 |
public static class PowerPreferenceFragment extends PreferenceFragment
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
@Override public void onCreate(Bundle savedInstanceState)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
super.onCreate(savedInstanceState);
|
|
Packit Service |
fa4841 |
addPreferencesFromResource(R.xml.settings_app_power);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
Packit Service |
fa4841 |
public static class SecurityPreferenceFragment extends PreferenceFragment
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
@Override public void onCreate(Bundle savedInstanceState)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
super.onCreate(savedInstanceState);
|
|
Packit Service |
fa4841 |
addPreferencesFromResource(R.xml.settings_app_security);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
@Override
|
|
Packit Service |
fa4841 |
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
|
|
Packit Service |
fa4841 |
Preference preference)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
final String clear =
|
|
Packit Service |
fa4841 |
getString(R.string.preference_key_security_clear_certificate_cache);
|
|
Packit Service |
fa4841 |
if (preference.getKey().equals(clear))
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
showDialog();
|
|
Packit Service |
fa4841 |
return true;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
else
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
return super.onPreferenceTreeClick(preferenceScreen, preference);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
private void showDialog()
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
new AlertDialog.Builder(getActivity())
|
|
Packit Service |
fa4841 |
.setTitle(R.string.dlg_title_clear_cert_cache)
|
|
Packit Service |
fa4841 |
.setMessage(R.string.dlg_msg_clear_cert_cache)
|
|
Packit Service |
fa4841 |
.setPositiveButton(android.R.string.ok,
|
|
Packit Service |
fa4841 |
new DialogInterface.OnClickListener() {
|
|
Packit Service |
fa4841 |
@Override
|
|
Packit Service |
fa4841 |
public void onClick(DialogInterface dialog, int which)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
clearCertificateCache();
|
|
Packit Service |
fa4841 |
dialog.dismiss();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
})
|
|
Packit Service |
fa4841 |
.setNegativeButton(android.R.string.cancel,
|
|
Packit Service |
fa4841 |
new DialogInterface.OnClickListener() {
|
|
Packit Service |
fa4841 |
@Override
|
|
Packit Service |
fa4841 |
public void onClick(DialogInterface dialog, int which)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
dialog.dismiss();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
})
|
|
Packit Service |
fa4841 |
.setIcon(android.R.drawable.ic_delete)
|
|
Packit Service |
fa4841 |
.show();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
private boolean deleteDirectory(File dir)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
if (dir.isDirectory())
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
String[] children = dir.list();
|
|
Packit Service |
fa4841 |
for (String file : children)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
if (!deleteDirectory(new File(dir, file)))
|
|
Packit Service |
fa4841 |
return false;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
return dir.delete();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
private void clearCertificateCache()
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
Context context = getActivity();
|
|
Packit Service |
fa4841 |
if ((new File(context.getFilesDir() + "/.freerdp")).exists())
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
if (deleteDirectory(new File(context.getFilesDir() + "/.freerdp")))
|
|
Packit Service |
fa4841 |
Toast.makeText(context, R.string.info_reset_success, Toast.LENGTH_LONG).show();
|
|
Packit Service |
fa4841 |
else
|
|
Packit Service |
fa4841 |
Toast.makeText(context, R.string.info_reset_failed, Toast.LENGTH_LONG).show();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
else
|
|
Packit Service |
fa4841 |
Toast.makeText(context, R.string.info_reset_success, Toast.LENGTH_LONG).show();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static SharedPreferences get(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
Context appContext = context.getApplicationContext();
|
|
Packit Service |
fa4841 |
PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_client, false);
|
|
Packit Service |
fa4841 |
PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_power, false);
|
|
Packit Service |
fa4841 |
PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_security, false);
|
|
Packit Service |
fa4841 |
PreferenceManager.setDefaultValues(appContext, R.xml.settings_app_ui, false);
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(appContext);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
final String key = context.getString(R.string.preference_key_client_name);
|
|
Packit Service |
fa4841 |
final String value = preferences.getString(key, "");
|
|
Packit Service |
fa4841 |
if (value.isEmpty())
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
final String android_id = UUID.randomUUID().toString();
|
|
Packit Service |
fa4841 |
final String defaultValue = context.getString(R.string.preference_default_client_name);
|
|
Packit Service |
fa4841 |
final String name = defaultValue + "-" + android_id;
|
|
Packit Service |
fa4841 |
preferences.edit().putString(key, name.substring(0, 31)).apply();
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
return preferences;
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static int getDisconnectTimeout(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getInt(
|
|
Packit Service |
fa4841 |
context.getString(R.string.preference_key_power_disconnect_timeout), 0);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getHideStatusBar(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(context.getString(R.string.preference_key_ui_hide_status_bar),
|
|
Packit Service |
fa4841 |
false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getHideActionBar(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(context.getString(R.string.preference_key_ui_hide_action_bar),
|
|
Packit Service |
fa4841 |
false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getAcceptAllCertificates(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(
|
|
Packit Service |
fa4841 |
context.getString(R.string.preference_key_accept_certificates), false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getHideZoomControls(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(
|
|
Packit Service |
fa4841 |
context.getString(R.string.preference_key_ui_hide_zoom_controls), false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getSwapMouseButtons(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(
|
|
Packit Service |
fa4841 |
context.getString(R.string.preference_key_ui_swap_mouse_buttons), false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getInvertScrolling(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(
|
|
Packit Service |
fa4841 |
context.getString(R.string.preference_key_ui_invert_scrolling), false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getAskOnExit(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(context.getString(R.string.preference_key_ui_ask_on_exit),
|
|
Packit Service |
fa4841 |
false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static boolean getAutoScrollTouchPointer(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getBoolean(
|
|
Packit Service |
fa4841 |
context.getString(R.string.preference_key_ui_auto_scroll_touchpointer), false);
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
public static String getClientName(Context context)
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
SharedPreferences preferences = get(context);
|
|
Packit Service |
fa4841 |
return preferences.getString(context.getString(R.string.preference_key_client_name), "");
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
}
|