Blame client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/presentation/ApplicationSettingsActivity.java

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
}