SettingsActivity.java :  » Remote » premotedroid » org » pierre » remotedroid » client » activity » Android Open Source

Android Open Source » Remote » premotedroid 
premotedroid » org » pierre » remotedroid » client » activity » SettingsActivity.java
package org.pierre.remotedroid.client.activity;

import org.pierre.remotedroid.client.R;
import org.pierre.remotedroid.client.app.PRemoteDroid;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuItem;

public class SettingsActivity extends PreferenceActivity
{
  private static final String[] tabFloatPreferences = {
          "control_sensitivity", "control_acceleration", "control_immobile_distance", "screenCapture_cursor_size", "buttons_size", "wheel_bar_width"
  };
  private static final String[] tabIntPreferences = {
          "control_click_delay", "control_hold_delay"
  };
  
  private static final int resetPreferencesMenuItemId = 0;
  
  private PRemoteDroid application;
  private SharedPreferences preferences;
  
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    
    this.addPreferencesFromResource(R.xml.settings);
    
    this.application = (PRemoteDroid) this.getApplication();
    this.preferences = this.application.getPreferences();
  }
  
  protected void onPause()
  {
    super.onPause();
    
    this.checkPreferences();
  }
  
  public boolean onCreateOptionsMenu(Menu menu)
  {
    menu.add(Menu.NONE, resetPreferencesMenuItemId, Menu.NONE, this.getResources().getString(R.string.text_reset_preferences));
    
    return super.onCreateOptionsMenu(menu);
  }
  
  public boolean onOptionsItemSelected(MenuItem item)
  {
    switch (item.getItemId())
    {
      case resetPreferencesMenuItemId:
        this.resetPreferences();
        break;
    }
    
    return super.onOptionsItemSelected(item);
  }
  
  private void checkPreferences()
  {
    Editor editor = this.preferences.edit();
    
    for (String s : tabFloatPreferences)
    {
      try
      {
        Float.parseFloat(this.preferences.getString(s, null));
      }
      catch (NumberFormatException e)
      {
        this.application.debug(e);
        editor.remove(s);
      }
    }
    
    for (String s : tabIntPreferences)
    {
      try
      {
        Integer.parseInt(this.preferences.getString(s, null));
      }
      catch (NumberFormatException e)
      {
        this.application.debug(e);
        editor.remove(s);
      }
    }
    
    editor.commit();
    
    PreferenceManager.setDefaultValues(this, R.xml.settings, true);
  }
  
  private void resetPreferences()
  {
    this.setPreferenceScreen(null);
    
    Editor editor = this.preferences.edit();
    editor.clear();
    editor.commit();
    
    PreferenceManager.setDefaultValues(this, R.xml.settings, true);
    
    this.addPreferencesFromResource(R.xml.settings);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.